美文网首页算法机器学习机器学习与数据挖掘
机器学习应用的实现步骤二:准备数据

机器学习应用的实现步骤二:准备数据

作者: 林杰Jim | 来源:发表于2020-02-05 12:11 被阅读0次

    前一篇文章《机器学习应用的实现步骤一:构建问题》中介绍了如何将一个现实的问题分析、描述、转换成机器学习可以解决的问题。在明白问题与其局限性和解决的目标之后,下一步需要为模型准备燃料,即数据。本文章将介绍机器学习应用的实现步骤中的第二步:准备数据

    构建问题 -> 准备数据 -> 建立模型 -> 上线应用

    为何要预处理数据?

    为了训练一个好的模型,数据预处理十分重要,甚至占据了大部分时间与精力。就如一位数据科学家所说的:“我们经常花80%的时间来收集和处理数据,然后用20%的时间来抱怨数据不够干净”。这句话显然是玩笑,但足以说明数据在机器学习中的地位。用更加贴切的表述是:

    数据和特征决定了机器学习的上限,而模型和算法的应用知识让我们逼近这个上限。

    数据的表现形式多样,可以是图片、文字、坐标和数字等。我们从现实世界中采样得到的数据往往不适合直接给机器解读,因此我们需要做一些转换。原始数据可能存在一些问题,如数据的某些属性值缺失或异常、数据的含义不够严谨和准确。数据预处理就是去解决这些问题,让输入的属性值对模型来说更具有意义。步骤有如下:

    1. 数据收集
    2. 数据清洗
    3. 数据集成
    4. 数据变换
    5. 数据规约
    6. 特征工程
    7. 数据管理

    分解步骤

    准备数据可以拆分为以下步骤,通常可以线性执行下去。先得到数据,再规范数据、删减数据、合成数据,最后将处理完的数据统一管理,保存用于准备训练模型。

    1. 数据收集

    常见收集数据的途径有三个。

    方式 特点 来源
    开放数据集 结构化信息 数据竞赛网、非营利性组织、政府官网、行业信息
    自行采集 网络爬虫获取多个渠道和不同类型的信息 自主获取互联网上的公开信息
    数据提供方 根据业务需要委托第三方代劳 业务部门、数据公司

    三种方式应该权衡所需的开销(时间、金钱)和数据质量。开放数据集一般有特定的目的和使用场景,需要注意数据集是否表示力足够。网络爬虫可以根据需要获取海量信息,缺点是信息往往是非结构化的,需要花更多时间在预处理上。数据提供方可以根据业务需要提供有针对性的数据集或者API接口,针对性最强。

    除了考虑数据的“量”,数据的质量也需要考虑进入。可以参考“4R”标准来衡量:

    4R 说明
    关联度(Relevancy) 数据能合理表示场景特点
    时效性(Recency) 数据不因过时而失效
    完整度(Range) 数据的范围完整
    可信度(Reliability) 数据的标签是否无误

    2. 数据清洗

    数据处理让数据变得更加规整和结构化,更加有利于计算机进行处理。这一步中需要对数据进行校验,确保输出的数据完整、统一、规范、无误。

    数据清洗步骤 方法
    格式化数据 将同一属性列中的所有数据项格式标准化,如“日期”使用同一种规范表示
    纠正错误数据 将不符合格式范围内的数据改正
    填补缺失数据 将缺失的字段填补上,如使用总体的平均值或者用算法推算。
    清理异常数据 将超出正常范围值的数据删除
    删除重复数据 将特征值相同的记录合并为一条

    在填补缺失数据和处理异常数据时,可以使用机器学习的方法推测缺失值,复制其他特征值相似的数据段。目的是让不良数据的影响降到最低。

    3. 数据集成

    当样本数据来源于多个数据源的时候,需要将他们合成归纳到一张表中,并统一存储起来。需要解决命名差异、数据冗余和数据值冲突问题。

    4. 数据变换

    数据量大时,需要考虑模型的训练时间。数据变换的目的是提高模型的准确率,将无意义的数据表示得更加准确,帮助计算机更好地“理解”数据的含义。常见的数据变化方法如下:

    数据变换方法 特点
    标准化(Standardization) 缩小数据的区间范围。不改变原始数据的分布。
    归一化(Normalization) 将数据各特征值都缩放到同一区间如 [0, 1],平均各特征的影响权重。改变了原始数据的分布
    正则化(Regularization) 将正则项加入到损失函数中,防止模型的过拟合。如使用L1、L2正则项。
    二值化(Binarization) 将数据特征转化成布尔型,即用0或1表示。

    实际使用时需根据数据特点选择合适的变换方法。

    5. 数据规约

    通过数据规约的方式获得比原始数据集精简的数据集。去除了冗余数据后可以减少模型的训练时间,同时提高精度。

    6. 特征工程

    通过特征工程可以让原始数据转换成更加有代表性意义的数据,挖掘特征之间的关系来构建高级特征。主要包括三步:特征构建、特征提取、特征选择。

    特征工程的方法
    特征构建 通过组合运算原始特征来产生新的特征。可以使用人工经验或机器学习的方法。
    特征提取 从大量的特征中提取对结果起决定性作用的关键特征,降低数据维度。常见方法有PCA和LDA。
    特征选择 从构建好和提取好的特征中再挑选最有效的特征。常见的方法有Fliter, Wrapper, Embedded.

    特征选择是非常具有挑战性的,需要深刻理解问题、结合有效方法和一些灵感。正如Andrew Ng所说:

    “挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”( Andrew Ng )

    7. 数据管理

    当上面的步骤都执行完后,我们应该得到了一个包含了能够提供给模型训练的数据集。下一步就是为建立模型做准备的,即把数据集拆分几分,用于模型训练、校验和测试。拆分的比例可以是6:2:2,也可以是5:2.5:2.5,可根据数据量大小划分。

    数据集 目的
    训练集(Training Set) 用于训练模型
    验证集(Validation Set) 用于调节超参数
    测试集(Test Set) 用于测试模型性能

    对于数据量小的数据集,可以使用k折交叉验证法(k-fold cross validation)。将N个样本打乱并等分为K份,每次使用前K-1份训练,最后一份用作测试。

    总结

    本文描述了机器学习应用实现步骤中的第二步:准备数据。这一步是至关重要的也是花费时间最长的一步,需要思考如何将实际生活中的信息转换成机器可以有效处理和解读的数据。除了数据清洗、转换和删减外,还能使用使用特征工程来将零散的特征组合成更加信息熵更大的具有代表性的高阶特征,从而精简数据集并提高模型准确率。

    引用

    相关文章

      网友评论

        本文标题:机器学习应用的实现步骤二:准备数据

        本文链接:https://www.haomeiwen.com/subject/letsxhtx.html