精华内容
下载资源
问答
  • 简介:本文主要介绍针对用户反馈的文本情报,如何利用机器学习的方法来提高大量用户数据的处理效率、尽可能实现自动化的解题思路。 背景 作为国内领先的出行大数据公司,高德地图拥有众多的用户和合作厂商,这为...

    简介: 本文主要介绍针对用户反馈的文本情报,如何利用机器学习的方法来提高大量用户数据的处理效率、尽可能实现自动化的解题思路。

    背景

    作为国内领先的出行大数据公司,高德地图拥有众多的用户和合作厂商,这为高德带来了海量的出行数据,同时通过各个渠道,这些用户也在主动地为我们提供大量的反馈信息,这些信息是需要我们深入挖掘并作用于产品的,是高德地图不断进步和持续提升服务质量的重要手段。

    本文将主要介绍针对用户反馈的文本情报,如何利用机器学习的方法来提高大量用户数据的处理效率、尽可能实现自动化的解题思路。

    先来解释一下重点名词。

    情报:是一种文本、图片或视频等信息,用来解决高德地图生产或者导航中的具体问题,本质上是指与道路或交通相关的知识或事实,通过一定空间和时间通知给特定用户。

    用户反馈:是指用户借助一定的媒介,对所使用的软件等提供一些反馈信息,包括情报、建议和投诉等。

    典型的用户反馈类型和选项如下图所示:

     

    image.png

    问题及解法

    用户反馈的方式可以通过手机的 Amap 端、PC 端等进行上报,上报时选择一些选择项以及文本描述来报告问题,以下是一个用户反馈的示例,其中问题来源、大类型、子类型和道路名称是选择项,用户描述是填写项,一般为比较短的文本。这些也是我们可以使用的主要特征。

     

    image.png

    每个用户在上报了问题之后,均希望在第一时间内问题能够得到解决并及时收到反馈。但是高德每天的用户反馈量级在几十万,要想达到及时反馈这个目标非常的不容易。

    针对这些用户反馈信息,当前的整体流程是先采用规则进行分类,其中与道路相关的每条反馈都要经过人工核实,找到用户上报的问题类型和问题发生的地点,及时更新道路数据,作用于导航。

    针对一条反馈的操作需要经过情报识别、情报定位、情报验证等环节:

    情报识别主要是判断问题类型即给情报打标签:①分析用户上报的信息包括问题来源、大类型、子类型和用户描述等,②查看上传的图片资料,包括手机自动截图和用户拍照;

    情报定位主要是找到问题发生的位置信息即定位坐标:

    • 分析用户反馈问题时戳的位置点即戳点的有效性,
    • 查看用户上报问题时车辆行驶的位置即自车位置,
    • 分析用户使用高德软件过程中的规划和实走轨迹等日志信息;

    情报验证:通过以上两步确定了情报标签和位置坐标,此环节需要验证情报标签(含道路名称):①分析影像和大数据热力图或路网基础数据,②查看用户上传的资料和采集的多媒体图片资料。

    整个业务处理流程如下图所示:

     

    image.png

    在处理用户反馈问题整个过程秉持的原则是完全相信用户的问题存在。若用户上报的信息不足以判断问题类型和问题发生地点,则会尽量通过用户规划和实走轨迹等日志信息进行推理得出偏向用户的结论。

    目前整个用户反馈问题处理流程存在的主要问题有:规则分发准确率低,人工核实流程复杂、技能要求高且效率低,去无效误杀严重等。

    为了解决以上问题,我们希望引入机器学习的方法,以数据驱动的方式提高作业能力。在进行机器学习化的探索过程中,我们首先对业务进行了拆解及层级化分类,其次使用算法来替代规则进行情报分类,再次工程化拆解人工核实作业流程为情报识别、情报定位和情报验证等步骤,实现单人单技能快速作业,最后将工程化拆解后的情报识别步骤使用算法实现其自动化。

    机器学习解题

    业务梳理与流程层级化拆解

    原始的用户反馈问题经由规则分类后,再进行人工情报识别、定位和验证,最终确认问题及其所在是属于近百种小分类项中的哪一个,进而确定上一级分类以及整个层级的对应关系。

    由此可以看出,整个问题处理流程只有一个步骤,处理过程相当复杂,对人工的技能要求很高,且效率低下。而且一千个人眼中就有一千个哈姆雷特,个人的主观性也会影响对问题的判断。

    针对这种情况,我们对原有业务流程进行梳理和拆解,希望能够利用机器学习和流程自动化等方式解决其中某些环节,提升整体问题处理的效率。

    首先进行有效情报和无效情报的分类即去无效,接着将整个流程拆解为六个层级,包括业务一级、业务二级、业务三级、情报识别、情报定位和情报验证。

     

    image.png

    如上图所示,拆解后的前三个级别为情报分类环节,只有后三个级别需要部分人工干预,其他级别均直接自动化处理。这样通过层级化、自动化和专人专职等方法极大地简化了问题同时提高了效率。

    业务与模型适配

    我们可以看到用户反馈中既有选择项又有输入项,其中选择项如问题来源等都是有默认值的,需要点击后选择相应细分项,用户不一定有耐心仔细选择,有耐心的用户可能会由于不知道具体分类标准而无法选择正确的分类。而用户描述,是需要用户手动输入的内容,是用户表达真实意图的主要途径,是一条用户反馈当中最有价值的内容。

    用户描述一般分为三种情况:无描述、有描述但无意义的、有描述且有意义的。前两种称之为无效描述,后一种称之为有效描述。

    根据业务拆解结果,业务流程第一步即为去无效,在这之后,我们将有效、无效描述的用户反馈进行区分,分别建立相应的流程进行处理。

    • 有效描述的用户反馈,逐级分类,第一级分为数据、产品、转发三类,其中产品和转发两类直接进行自动化处理,数据类别会在第二级中分为道路和专题,专题是指非道路类的限行、步导、骑行等。
    • 无效描述的用户反馈,进行同样的分类,并走一样的流程,但是样本集和模型是不同的,并且最后没有算法处理的步骤,直接走人工或者规则处理。
    • 最终根据实际业务需要进行层层拆解后形成了下图所示的业务与模型适配的结构。

     

    image.png

    由以上分析可见,情报分类和情报识别均为多分类的文本分类问题,我们针对各自不同的数据特点,进行相应的操作:

    情报分类,每一级类别虽不同,但是模型架构却是可以复用的,只需要有针对性的做微小改动即可。且有以前人工核实过(包含情报识别、情报定位、情报验证等过程)具有最终结果作为分类标签的历史数据集作为真值,样本集获得相对容易。

    情报识别,其分类标签是在情报验证之前的中间结果,只能进行人工标注,并且需要在保证线上正常生产的前提下,尽量分配人力进行标注,资源非常有限。所以我们先在情报分类数据集上做 Finetuning 来训练模型。然后等人工标注样本量积累到一定量级后再进行情报识别上的应用。

    模型选择

    首先,将非结构化的文本用户描述表示成向量形式即向量空间模型,传统的做法是直接使用离散特征 one-hot 表示,即用 tf-idf 值表示词,维度为词典大小。但是这种表示方式当统计样本数量比较大时就会出现数据稀疏和维度爆炸的问题。

    为了避免类似问题,以及更好的体现词语之间的关系如语义相近、语序相邻等,我们使用 word embedding 的方式表示,即 Mikolov 提出的 word2vec 模型,此模型可以通过词的上下文结构信息,将词的语义映射到一个固定的向量空间中,其在向量空间上的相似度可以表示出文本语义上的相似度,本质上可以看作是语境特征的一种抽象表示。

    其次,也是最重要的就是模型选择,相对于传统的统计学习方法复杂的特征工程步骤,深度学习方法更受青睐,NLP 中最常用的是循环神经网络 RNN,RNN 将状态在自身网络中循环传递,相对于前馈神经网络可以接受更广泛的时间序列结构输入,更好的表达上下文信息,但是其在训练过程中会出现梯度消失或梯度爆炸等问题,而长短时记忆网络 LSTM 可以很好的解决这个问题。

    模型架构

    将每个用户反馈情报的词向量结果作为 LSTM 的输入,接着将 LSTM 的最后一个单元的结果作为文本特征,与其他用户选择项问题一起 merge 后作为模型输入,然后经过全连接层后使用 softmax 作为输出层进行分类,得到的 0~1 之间的实数即为分类的依据。多分类的网络架构如下图所示:

     

    image.png

    实战经验总结

    理清业务逻辑、确定解题步骤、确认样本标注排期并跑通了初版的模型后,我们觉得终于可以松一口气,问题应该已经解决过半了,剩下的就是做做模型调参和优化、坐等样本积累,训练完模型就可以轻松上线了。

    但实际情况却是面临着比预想更多的问题和困难,训练数据量不够、单个模型效果不好、超参设置不理想等问题接踵而至,漫长而艰难的优化和迭代过程才刚刚开始。

    Fine-tuning

    选定了模型之后,情报识别首先面临的问题是样本量严重不足,我们采用 Fine-tuning 的办法将网络上已经训练过的模型略加修改后再进行训练,用以提升模型的效果,随着人工标注样本逐渐增加,在不同大小的数据集上都可以取得大约 3 个百分点的提升。

    调参

    模型的调参是个修炼内功炼制金丹的过程,实际上取得的效果却不一定好。我们一共进行了近 30 组的调参实验,得出了以下饱含血泪的宝贵经验:

    • 初始化,一定要做的,我们选择 SVD 初始化。
    • dropout 也是一定要用的,有效防止过拟合,还有 Ensemble 的作用。对于 LSTM,dropout 的位置要放到 LSTM 之前,尤其是 bidirectional LSTM 是一定要这么做的,否则直接过拟合。
    • 关于优化算法的选择,我们尝试了 Adam、RMSprop、SGD、AdaDelta 等,实际上 RMSprop 和 Adam 效果相差不多,但基于 Adam 可以认为是 RMSprop 和 Momentum 的结合,最终选择了 Adam
    • batch size 一般从 128 左右开始调整,但并不是越大越好。对于不同的数据集一定也要试试 batch size 为 64 的情况,没准儿会有惊喜。
    • 最后一条,一定要记住的一条,尽量对数据做 shuffle

    Ensemble

    针对单个模型精度不够的问题,我们采用 Ensemble 方式解决,进行了多组试验后,最终选定了不同参数设定时训练得到的最好模型中的 5 个通过投票的方式做 Ensemble,整体准确率比单个最优模型提高 1.5 个百分点。

    另外为了优化模型效果,后续还尝试了模型方面的调整比如双向 LSTM 和不同的 Padding 方式,经过对比发现在情报识别中差异不大,经分析是每个用户描述问题的方式不同且分布差异不明显所致。

    置信度区分

    当情报识别多分类模型本身的结构优化和调参都达到一定瓶颈后,发现模型最终的效果离自动化有一定的差距,原因是特征不全且某些特征工程化提取的准确率有限、类别不均衡、单个类别的样本数量不多等。

    为了更好的实现算法落地,我们尝试进行类别内的置信度区分,主要使用了置信度模型和按类别设定阈值两种办法,最终选择了简单高效的按类别设定阈值的方法。

    置信度模型是利用分类模型的标签输出结果作为输入,每个标签的样本集重新分为训练集和验证集做二分类,训练后得到置信度模型,应用高置信的结果。

    在置信度模型实验中,尝试了 Binary 和 Weighted Crossentropy、Ensemble 的方式进行置信度模型实验,Weighted Crossentropy 的公式为:

     

    image.png

    为了避免溢出,将公式改为:

     

    image.png

    其中,表示:

     

    image.png

    实验的结果是 Binary 方式没有明显效果提升, Ensemble 在 95% 置信度上取得了较高的召回率,但是没有达到 98% 置信度的模型。

    借鉴了情报分类算法模型落地时按照各个类别设定不同 softmax 阈值的方式做高置信判断即按类别设定阈值的方式,在情报识别中也使用类似的方法,取得的效果超过了之前做的高置信模型效果,所以最终选择了此种方式,这部分可以很大地提高作业员的作业效率。同时为了减少作业员的操作复杂性,我们还提供了低置信部分的 top N 推荐,最大程度节省作业时间。

    算法效果及应用成果

    情报分类

    算法效果:根据实际的应用需求,情报分类算法的最终效果产品类准确率 96% 以上、数据类召回率可达 99%。

    应用成果:与其他策略共同作用,整体自动化率大幅提升。在通过规则优化后实际应用中取得的效果,作业人员大幅度减少,单位作业成本降低 4/5,解决了用户反馈后端处理的瓶颈。

    情报识别

    算法效果:根据使用时高置信部分走自动化,低置信走人工进行标注的策略,情报识别算法的最终效果是有效描述准确率 96% 以上。

    应用成果:完成情报标签分类模型接入平台后通过对高低置信标签的不同处理,最终提升作业人员效率 30% 以上。

    总结与展望

    通过此项目我们形成了一套有效解决复杂业务问题的方法论,同时积累了关于 NLP 算法与业务紧密结合解题的实战经验。目前这些方法与经验已在其他项目中很好的付诸实施,并且在持续的积累和完善中。在不断提升用户满意度的前提下尽可能的高效自动化的处理问题,是我们坚持不懈的愿景和目标。

    展开全文
  • 这一系列博文将介绍一下机器学习中的数据预处理问题,以UCI数据集为例详细介绍缺失值处理、连续特征离散化,特征归一化及离散特征的编码等问题,同时会附上处理的Matlab程序代码,这篇博文先介绍缺失值的处理,要点...

    首页图
    摘要:在机器学习中,我们的数据集往往存在各种各样的问题,如果不对数据进行预处理,模型的训练和预测就难以进行。这一系列博文将介绍一下机器学习中的数据预处理问题,以 U C I \color{#4285f4}{U}\color{#ea4335}{C}\color{#fbbc05}{I} UCI数据集为例详细介绍缺失值处理、连续特征离散化,特征归一化及离散特征的编码等问题,同时会附上处理的 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab程序代码,这篇博文先介绍下缺失值处理,其目录如下:

    点 击 跳 转 至 博 文 涉 及 的 全 部 文 件 下 载 页 \color{#4285f4}{点}\color{#ea4335}{击}\color{#fbbc05}{跳}\color{#4285f4}{转}\color{#34a853}{至}\color{#ea4335}{博}\color{#4285f4}{文}\color{#ea4335}{涉}\color{#fbbc05}{及}\color{#4285f4}{的}\color{#34a853}{全}\color{#ea4335}{部}\color{#fbbc05}{文}\color{#4285f4}{件}\color{#34a853}{下}\color{#ea4335}{载}\color{#fbbc05}{页}


    前言

      学习和研究了几年机器学习的一些算法,在这些日子的探索中我深深地体会到数据预处理的重要性。这几年机器学习大热,有的时候我们一股脑投入到算法的研究改进之中,为提升的那一点点准确率欣喜若狂,但往往那个我们时常不太在意的数据处理部分稍不注意便对算法结果影响巨大甚至可能颠覆我们原本的结论。

      虽然 P y t h o n \color{#4285f4}{P}\color{#ea4335}{y}\color{#fbbc05}{t}\color{#4285f4}{h}\color{#34a853}{o}\color{#ea4335}{n} Python在数据处理和深度学习中表现出色,我本人也特别喜欢并经常使用这门编程语言,但其实机器学习的一些教学机构以及个人研究者还是有很多人使用 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab。毕竟如果只是轻量级的学习MATLAB还是很方便的,不用像Python那样来回倒腾各种包了,还有就是一介绍机器学习网上各种介绍用Python处理的,这里给大家换换口味总结下如何用MATLAB进行数据处理。

      这篇博文我会以机器学习中经常使用的 U C I \color{#4285f4}{U}\color{#ea4335}{C}\color{#fbbc05}{I} UCI数据集为例进行介绍。关于 U C I \color{#4285f4}{U}\color{#ea4335}{C}\color{#fbbc05}{I} UCI数据集的介绍和整理,在我前面的两篇博文:UCI数据集详解及其数据处理(附148个数据集及处理代码)UCI数据集整理(附论文常用数据集)都有详细介绍,有兴趣的读者可以点过去了解一下。


    1. 缺失值处理

      由于各种各样原因,现实中的许多数据集包含缺失数据,这样的数据是无法直接用于训练的,比如UCI数据集中的Adult数据集Annealing数据集Lung-Cancer数据集等都存在个别数据缺失,对此我们需要对缺失值进行处理。

    处理缺失值的方法

      处理缺失值的方法有很多并且没有统一的较好处理方式,对于缺失值的处理方法下图给出了较为详细的解答。最简单粗暴的方法就是把含有缺失值的样本丢弃,这样可以避免人为填充带来的噪声。但这样做可能会丢失一些很重要的信息,特别是数据量不多或者数据价值很高的数据来说,直接丢弃就太浪费了。因此我们可以旋转某种合适的策略对缺失值进行适当的填充。
    缺失值处理方法
       一般来说,我们可以使用平均值、中值、分位数、众数等替代。 如果想要更好的填充效果,可以考虑利用无缺失值的数据建立模型,通过模型来选择一个最适合的填充值,但如果缺失的属性对于模型可有可无,那么得出来的填充值也将不准确。我们还可以使用KNN来选择最相似的样本进行填充。除此以外,缺失信息也可以作为一种特殊的特征表达,例如人的性别,男、女、不详可能各自有着不同的含义。

    读取数据集文件

      光这么说可能太宽泛,这里以一个简单的数据集:Lung-Cancer为例,从官网地址下载该数据集并将文件“lung-cancer.data”保存在自定义文件夹下,用 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab打开文件部分数据截图如下图所示:

    lung-cancer数据截图
      仔细观察上面的文本数据可以发现部分数据缺失,UCI数据集对于缺失数据用“”,这是为了保持文本数据中的格式统一性。首先我们先去读取数据集中的属性和标签数据,在该目录下新建 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab文件“read_dataset.m”并在编辑器中键入如下代码:

    % author:思绪无限, date:2020.2.29, website:https://wuxian.blog.csdn.net
    % lung-cancer
    clear;
    clc;
    
    data_name = 'lung-cancer';
    fprintf('读取数据集: %s ...\n', data_name);
    
    n_entradas= 56; % 数据集属性个数
    n_clases= 3;    % 类别数
    n_fich= 1;      % 文件个数
    fich{1}= 'lung-cancer.data'; % 文件路径
    n_patrons(1)= 32; % 数据量
    
    n_max= max(n_patrons);
    x = zeros(n_max, n_entradas); % 存储属性
    cl= zeros(n_max, n_fich); % 存储标签
    
    % 用于显示进度
    n_patrons_total = sum(n_patrons); 
    n_iter=0;
    
    for i_fich=1:n_fich
        f=fopen(fich{i_fich}, 'r'); % 打开文件
        if -1==f
            error('打开文件出错 %s\n', fich{i_fich});
        end
        for i=1:n_patrons(i_fich)
            % 显示进度
            n_iter=n_iter+1;
            fprintf('%5.1f%%\r', 100*n_iter/n_patrons_total);
            
            temp = fscanf(f,'%i',1) - 1; % 读取数据标签(这里标签从0开始,与原标签相差1cl(i, i_fich) = temp;
            
            % 读取每一列属性
            for j = 1:n_entradas
                fscanf(f,'%c',1); % 跳过各属性间的逗号
                t = fscanf(f,'%c',1); % 读取属性数值
                
                if t ~= '?' % 判断是否为缺失数据
                    fseek(f,-1,0); 
                    x(i,j) = fscanf(f, '%i',1);
                else
                    x(i,j) = NaN; % 缺失数据保存为空值
                  % x(i,j) = missing; % 缺失数据保存为空值(MATLAB R2019 可保存为missing)
                end
                
            end
            
        end
        fclose(f);
    end
    
    save('lung-cancer-raw.mat', 'x','cl') % 将读取出的数据保存
    

      以上代码通过循环调用scanf( )函数逐个读入文本文件中的每个数据,外循环代码(第28-51行)遍历每行数据,内循环(第37-49行)遍历一行中每一个属性数据,通过移动文件指针跳过两个属性间的逗号(第38行),最终得到纯数值数据。其中代码第41-47行判断每个属性数据是否为“”,由于Matlab中将缺失值保存为“NaN”(Matlab R2019a及以上还可保存为missing),这里加条件判断缺失数据赋值为NaN。代码最后将读取到的属性和标签数据(x, cl)保存在“lung-cancer-raw.mat”中,在命令行打印x的值部分截图如下:

    命令行显示x结果

    查找、替换缺失数据

      按照前面的介绍的方法这里使用各列属性的平均值替换缺失值,首先我们需要计算缺失数据所在属性的均值。这里可以先使用isnan( )指示缺失值位置进行查看,由于存在NaN数值,若直接使用Matlab内置函数mean( )计算将得到NaN的结果。常规思路是先找到NaN值的位置然后删去后计算均值,但其实许多 Matlab函数都可以忽略缺失值,我们不必首先显式定位、填充或删除它们。我们可以结合使用mean函数和’omitnan’选项来直接忽略和中的NaN,例如如下的代码和结果。

    >> xDouble=[0 1 1 3 nan 2]
    
    xDouble =
    
         0     1     1     3   NaN     2
    
    >> meanNan = mean(xDouble, 'omitnan')
    
    meanNan =
    
        1.4000
    

      对于缺失数据的填充 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab有专门的填充函数fillmissing函数,使用方法如下引用,更多功能可以访问fillmissing官方文档。这里我们使用F = fillmissing(A,‘constant’,v)为缺失值填充常量,常量v的值为上面计算得到的均值。需要注意的是,Lung-Cancer数据集的每列属性均为0-3的整数,为保持数据类型的统一性,这里先对计算得到的均值向下取值然后替换缺失值。

    fillmissing
    填充缺失值
    语法
    F = fillmissing(A,‘constant’,v)
    F = fillmissing(A,method)
    F = fillmissing(A,movmethod,window)
    说明
    F = fillmissing(A,‘constant’,v) 使用常量值 v 填充缺失的数组或表条目。
    F = fillmissing(A,method) 使用 method 指定的方法填充缺失的条目。
    F = fillmissing(A,movmethod,window) 使用窗口长度为 window 的移动窗口均值或中位数填充缺失条目。


    ——MATLAB官方文档

      根据上面的分析编写程序使用均值填充缺失值,在该目录下新建 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab文件“replace_missing.m”并在编辑器中键入如下代码:

    % 读取原始数据,采用均值填充
    clear;
    clc
    
    load('lung-cancer-raw.mat','x','cl'); % 导入数据
    nanData = x;
    TF = isnan(nanData); % 缺失数据位置
    
    meanData = mean(nanData, 'omitnan'); % 计算每列上数据的均值(忽略NaN)
    intMean = floor(meanData); % 由于lung-cancer数据的属性均为0-3的整数,这里对向下取值
    
    x = fillmissing(nanData,'constant',intMean); % 填充缺失数据为均值
    % x = fillmissing(nanData,'constant',0); % 也可填充缺失数据为0
    
    save('lung-cancer-fill.mat', 'x', 'cl'); % 保存填充后的数据
    

      以上代码最终将填充后的结果保存在文件“lung-cancer-fill.mat”中,再次输出x的值可以看到NaN的位置数据已替换为该列属性的均值,在命令行打印x的值部分截图如下。如此缺失值填充完成,当然处理方式并无最佳的统一方法,比较简单的方式还可以直接补0,如上代码第13行。

    命令行显示处理后的x结果
      处理完成后工作区的情况如下图:

    工作区结果显示


    2. 代码资源获取

      这里对博文中涉及的数据及代码文件做一个整理,本文涉及的代码文件如下图所示。所有代码均在 M a t l a b \color{#4285f4}{M}\color{#ea4335}{a}\color{#fbbc05}{t}\color{#4285f4}{l}\color{#34a853}{a}\color{#ea4335}{b} Matlab R 2 0 1 6 b \color{#4285f4}{R}\color{#ea4335}{2}\color{#fbbc05}{0}\color{#4285f4}{1}\color{#34a853}{6}\color{#ea4335}{b} R2016b中调试通过,点击即可运行。

    涉及的所有文件

    后续博文会继续分享数据处理系列的代码,敬请关注博主的机器学习数据处理分类专栏。

    【资源获取】

      若您想获得博文中介绍的填充缺失数据涉及的完整程序文件(包含数据集的原始文件、整理数据集程序代码文件及整理好的文件),可扫描以下二维码并关注公众号“AI技术研究与分享”,并且在后台回复“DP20200301”(建议复制红色字体)获取,后续系列的代码也会陆续分享打包在里面。

    公众号二维码
    该公众号持续分享大量人工智能资源,欢迎关注!

    【更多下载】

      更多的UCI数据及处理方式可在博主面包多网页下载获取,里面有大量的UCI数据集整理和数据处理代码,点击以下链接可以下载:

    下载地址:博主的面包多网站下载页


    结束语

      由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

    【参考文献】

    [1] https://ww2.mathworks.cn/help/matlab/data_analysis/missing-data-in-matlab.html
    [2] https://ww2.mathworks.cn/help/matlab/ref/fillmissing.html
    [3] https://ww2.mathworks.cn/help/matlab/matlab_prog/clean-messy-and-missing-data-in-tables.html

    展开全文
  • 图像处理-机器学习总结

    千次阅读 2016-03-26 17:51:58
    图像处理、矩阵论、模式识别、机器学习、最优化、凸优化、高性能计算 书单: 1、 数字图像处理的MATLAB实现(第2版)(国外计算机科学经典教材)(美)冈萨雷斯,(美)伍兹 著,阮秋琦 等译 /2011-06-01 /电子...
    一、课程及书单
    课程:
    图像处理、矩阵论、模式识别、机器学习、最优化、凸优化、高性能计算
    书单:
    1、    数字图像处理的MATLAB实现(第2版)(国外计算机科学经典教材)(美)冈萨雷斯,(美)伍兹 著,阮秋琦 等译 /2011-06-01 /电子工业出版社
    2、    数字图像处理(第三版)(美)冈萨雷斯 等著,阮秋琦 译 /2013-04-01 /清华大学出版社
    这两本书的知识点比较全面,可根据需求有针对性的看,比如,做分割的时候主要看分割的方法:阈值法,分水岭、水平集、区域生长法等。

    3、    矩阵论 (修订版) 第四版 程云鹏,徐仲 编著 /2013-09-01 /西北工业大学出版社
    图像处理中,范数、奇异值分解、矩阵求逆、广义逆等知识经常用。

    4、    模式识别(第三版)(新编《信息、控制与系统》系列教材)张学工 编著 /2010-08-01 /清华大学出版社
    上课的教程,很经典的教材。

    5、    统计学习方法 李航 编著  清华大学出版社   
    机器学习这方面的书非常多,选一本看看

    6、    最优化理论与算法(第2版)作者:陈宝林 编著 出版社:清华大学出版社 出版时间:2005年10月
    上课教程,个人感觉9-12章可重点学习。分别是:一维搜索、使用导数的最优化方法(最速下降、牛顿法、拟牛顿法、共轭梯度法、最小二乘等)、无约束最优化的直接方法、可行性方法

    7、    凸优化 鲍德 (Stephen Boyd) Lieven Vandenberghe 著,王书宁,许鋆,黄晓霖 译 /2013-01-01 /清华大学出版社
    有难度,可选课学习,北邮庄伯金老师这门课讲的不错

    8、    GPU高性能编程CUDA实战(美)桑德斯著,聂雪军等译 /2011-01-01 /机械工业出版社
    比较基础,易懂,书不厚

    二、课件、PPT
    1、上海交大 熊红凯教授 Digital Image Processing 
    http://ivm.sjtu.edu.cn/dip.html
    课件、参考书、参考代码等  很详细

    2、南京大学 周志华教授团队 李宇峰教授 数字图像处理   已下载
    http://cs.nju.edu.cn/liyf/dip15/dip.psp

    3、北邮 门爱东教授 图像处理课件PPT   已下载

    三、博客、代码工具箱
    特别多,取决于研究方向,以下列举自己看过的感觉比较好、有开源代码的。

    图像处理(重建、去噪)
    http://www4.comp.polyu.edu.hk/~cslzhang/  香港理工 Prof. Lei Zhang

    医学图像:
    http://research.rutgers.edu/~shaoting/index.html   Prof. Shaoting Zhang
    http://web.mst.edu/~yinz/ 
    http://www.bme.ufl.edu/labs/yang/research.html   Prof. Yang Lin
    http://www.albany.edu/celltracking/ 
    http://www.yelab.net/   Prof.  Jieping Ye

    水平集:
    http://www.engr.uconn.edu/~cmli/#Selected Publications      Prof. Chunming Li
    http://kaihuazhang.net/       Prof. Kaihua Zhang

    深度学习方面:
    http://www.cnblogs.com/tornadomeet/tag/Deep%20Learning/  中文博客

    http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B  DL学习教程
    http://www.csdn.net/article/2015-09-15/2825714   各种编程语言的深度学习库整理
    https://github.com/rasmusbergpalm/DeepLearnToolbox   工具箱matlab的
    https://github.com/happynear/caffe-windows  caffe

    稀疏表示、字典学习
    http://www.cs.technion.ac.il/~elad/software/     以色列 Michael Elad
    http://www.cs.technion.ac.il/~ronrubin/software.html  Dr. Ron Rubinstein

    四、数据集
    http://bioimage.ucsb.edu/research/bio-segmentation   细胞组织分割,带标签
    http://www.broadinstitute.org/bbbc/image_sets.html   生物图像分类、分割等,带标签
    https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI  肺癌CT数据,124G,带标签
    http://yann.lecun.com/exdb/mnist/  手写数字数据集
    展开全文
  • 智能信息处理系列研讨会:机器学习及其应用2004年11月5-7日,上海为了促进智能信息处理领域同行间的交流,陆汝钤院士发起组织了"智能信息处理系列研讨会",并于2002年12月在复旦大学智能信息处理开放实验室举行了...
     
      
       智能信息处理系列研讨会:机器学习及其应用
      
    2004年11月5-7日,上海

    为了促进智能信息处理领域同行间的交流,陆汝钤院士发起组织了"智能信息处理系列研讨会",并于2002年12月在复旦大学智能信息处理开放实验室举行了机器学习研讨会。由于研讨会取得了好的反响,实验室决定于2004年11月举行第二次"机器学习及其应用"研讨会,邀请了从事机器学习及相关领域研究的十余位专家前来做报告。

    该研讨会不征文,但欢迎机器学习及相关领域的学者、研究生前来旁听特邀报告并参加讨论。研讨会不收取注册费,但食宿费用需自理。关于食宿方面的问题,请与实验室联系。

    程序委员会主席:

    王 珏 中国科学院自动化所

    周志华 南京大学

    周傲英 复旦大学

    展开全文
  • 机器拿到数字图像如何提取感知信息(像小猫认识吃,判别危险,感知苍蝇的位置) 人眼感知信息:空间、色彩、形状、运动 1 机器人需要视觉感知 机器人(Robot)是一种能够半自主或全自主工作的智能机器,具有感知、...
  • 机器学习中缺失值的处理

    万次阅读 多人点赞 2018-08-03 22:24:30
    “无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常...工具包自动处理数据缺失不代表具体的算法可以处理缺失项 对于有缺失的数据:以决策树为原型的模型优于依...
  • 自然语言处理就是利用电子计算机为工具对人类特有的书面和口头形式的自然语言的信息进行各种类型处理和加工的技术。这种技术因为运用环境和发展潜力巨大,已经成为一门专门的边缘性交叉学科,涉及到语言学,计算机...
  • 可扩展机器学习——Spark分布式处理

    千次阅读 2015-12-01 13:12:59
    注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容...Spark分布式处理 线性回归(linear Regression) 梯度下降(Gradien
  • 图像处理--机器学习

    千次阅读 2017-12-06 21:12:12
    图像处理、矩阵论、模式识别、机器学习、最优化、凸优化、高性能计算 书单: 1、 数字图像处理的MATLAB实现(第2版)(国外计算机科学经典教材)(美)冈萨雷斯,(美)伍兹 著,阮秋琦 等译 /2011-06-01 /...
  •  数据挖掘从字面上就已经很好理解了,就是从一堆数据中,挖掘出一些有用的信息来的过程。比如说,我们的搜索数据,如果某个地区大部分人都在搜索MH370,表示他们在关注这个事情。我们就可以推荐一些安全知识,飞机...
  • 机器学习中的白化处理

    千次阅读 2019-03-04 19:19:16
    白化的目的是去除输入数据的冗余信息。假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的;白化的目的就是降低输入的冗余性。 输入数据集X,经过白化处理后,新的数据X’...
  • 机器学习中处理缺失值的9种方法

    千次阅读 2020-10-31 11:01:04
    它是任何数据科学或机器学习项目的关键。在大多数情况下,当我们从不同的资源收集数据或从某处下载数据时,几乎有95%的可能性我们的数据中包含缺失的值。我们不能对包含缺失值的数据进行分析或训练机器学习模型。这...
  • 一般认为机器视觉“是通过光学装置和非接触传感器自动地接受和处理一个真实场景的图像,通过分析图像获得所需信息或用于控制机器运动的装置”,可以看出智能图像处理技术在机器视觉中占有举足轻重的位置。...
  • 机器学习之离散值处理

    千次阅读 2018-08-18 11:51:31
    前面我们学习了分类决策树,下面我们以周志华的机器学习书上的西瓜数据作为训练集练习以下,数据集如下。 X = [ ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑'], ['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', ...
  • 机器视觉与图像处理研究必备

    千次阅读 2018-03-09 11:03:56
    机器视觉和图像处理的研究工作,做到以下两点非常重要: 1、把握国际最前沿的内容 2、所做的工作具备很高的实用性 上述两点的解决方法分别为:找到这个方向公认成就最高的几个超级专家;找到实际应用的项目,边做...
  • 《数字图像处理机器视觉》学习读书笔记!
  • 机器学习缺失值处理方法汇总

    万次阅读 多人点赞 2017-11-26 19:44:48
    缺失值处理方法综述缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。缺失值的产生的原因多种多样,主要分为机械原因和人为原因。 机械...
  • 干货|机器学习-稀疏矩阵的处理

    万次阅读 2019-01-20 18:08:06
    几乎所有的自然机器学习算法都要求数据矩阵事先存在于内存中,也就是说,当数据矩阵不能完全存入内存中时,机器学习过程就会中断。将稠密矩阵转换成稀疏矩阵的好处之一就是在多数情况下,稀疏矩阵可以被压缩到能适应...
  • 机器学习中数据缺失值处理方法

    千次阅读 2018-06-17 22:48:00
    这时如果手工处理非常低效,如果舍弃缺失记录,则会丢失大量信息,使不完全观测数据与完全观测数据间产生系统差异,对这样的数据进行分析,很可能会得出错误的结论。 造成数据缺失的原因 缺失值处理的方法 ...
  • 在我的理解里,要实现计算机视觉必须有图像处理的...计算机视觉(computervision):用计算机来模拟人的视觉机理获取和处理信息的能力。就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一...
  • 机器学习之NLP自然语言处理

    千次阅读 2018-08-25 21:59:27
    本文将分八大步骤来介绍如何用机器学习处理文本数据。从最简单的方法开始,逐一讲解,然后分析更具体的方案细节,如特征工程、词向量和深度学习。你可以把本文看作是标准方法的高度概括。 代码链接: ...
  • 数据挖掘和机器学习是进行数据处理的非常有用的工具,当代的好多数据都使用这两种方法。但是这两种方法却包含很多模型和方法,对于初学者来说,面对这些模型总是无从下手。因此,后面的论述主要以处理数据的流程入手...
  • 机器学习中的文本处理

    千次阅读 2018-05-22 00:55:39
    为了在文本文档中执行机器学习,我们首先需要将文本内容转换为数字特征向量。 词袋模型 简单有效,通过以下步骤将文本转化为数值向量 -> (分词,计数,规范化和加权) 局限性: 不能涵盖词语间的...
  • 模式识别,计算机视觉,智能控制,信号处理,语音识别,知识处理机器学习,数据挖掘之间的联系。
  • 在我的理解里,要实现计算机视觉必须有图像处理的帮助,而图像...计算机视觉(computervision),用计算机来模拟人的视觉机理获取和处理信息的能力。就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器
  •  本文主要对机器学习进行科普,包括机器学习的定义、范围、方法,包括机器学习的研究领域:模式识别、计算机视觉、语音识别、自然语言处理、统计学习和数据挖掘.这是一篇非常好的文章,尤其感学原文作者~
  • 算算时间,从开始到现在,做机器学习算法也将近八个月了。虽然还没有达到融会贯通的地步,但至少在熟悉了算法的流程后,我在算法的选择和创造能力上有了不小的提升。实话说,机器学习很难,非常难,要做到完全了解...
  • 机器学习笔记之信息熵、信息增益和决策树(ID3算法)
  • 机器学习笔记(7)——C4.5决策树中的缺失值处理

    万次阅读 多人点赞 2018-11-12 23:07:05
    机器学习笔记(5)——C4.5决策树中的连续值处理和Python实现 机器学习笔记(6)——C4.5决策树中的剪枝处理和Python实现 现实任务中,通常会遇到大量不完整的样本,如果直接放弃不完整样本,对数据是极大的浪费,...
  • 机器学习脑电图.edf格式数据处理 最近做了一个关于脑电图进行癫痫检测的项目,其中我用了CNN和SVM进行检测,刚开始就遇到了小问题,就是怎样获得.csv数据,水平不高,但是解决了问题下面给个简单的教程。 我这里介绍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 786,169
精华内容 314,467
关键字:

处理信息的机器