数据处理与特征工程

扶醉桌前 提交于 2020-02-06 21:05:29

机器如何学习?

  1. 数据预处理(数据清洗、数据集成、数据采样)
  2. 特征工程(特征编码、特征选择、特征降维、规范化)
  3. 数据建模(回归问题、分类问题、聚类问题、其他问题)
  4. 结果评估(拟合度量、查准率、查全率、F1值、PR曲线、ROC曲线)

数据预处理

数据清洗:对各种脏数据进行对应方式的处理,得到标准、干净、连续的数据、提供给数据统计、数据挖掘等使用

  • 数据的完整性
  • 数据的合法性(例如获取的数据与常识不符)
  • 数据的一致性
  • 数据的唯一性
  • 数据的权威性

数据采样:

  • 数据不平衡——指数据集的类别分布不均(例如:一个二分类问题,100个训练样本,比较理想的情况是正类、父类相差不多;而如果正类样本有99个,父类样本仅1个,则意味存在类不平衡),此时预测时就算全部为正,准确率也为99%,这并不能反映模型的好坏
    解决方法
    ——过采样:通过随机复制少类来增加其中的实例数量,从而可增加样本中少数类的代表性。
    ——欠采样:通过随机的消除占多数的类的样本来平衡类分布;直到多数类和少数类的实例实现平衡

数据集拆分
机器学习中将数据划分为三份

  • 训练数据集:用来构建机器学习模型
  • 验证数据集:辅助构建模型,用于在构建过程中评估模型,提供无偏估计,进而调整模型参数
  • 测试数据集:用来评估训练好的最终模型的性能

常用拆分方法

  • 留出法:直接将数据集划分为互斥的集合,如通常选择70%数据作为训练集,30%作为测试集。需注意的是保持划分后集合数据分布的一致性,避免划分过程中引入额外的偏差而对最终结果产生影响
  • K-折交叉验证法:将数据集划分为k个大小相似的互斥子集,并且尽量保证每个子集数据分布的一致性。这样,就获取了K组训练-测试集,从而进行k次训练和测试,k通常取值为10.

特征工程

特征编码:数据集中经常会出现字符串信息,例如男女、高中低等,这类信息不能直接用于算法计算,需要将这些数据转化为数据形式进行编码,便于后期进行建模

  • one-hot编码:采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并在任意时候只有一位有效(例如:统计商业大楼是否有无电梯,可以用01、10表示有无电梯
  • 语义编码:one-hot编码无法体现数据见的语义关系,对于一些有关联的文本信息来说,无法真正体现出数据关联(对于这类信息通常采用词嵌入的方式是比较好的选择,词嵌入信息可以编码语义信息,生成特征语义表示)

特征降维:特征选择完成后,可能由于特征矩阵过大,导致计算量大、训练时间长,因此降低特征矩阵维度也是必不可少的

  • 主成分分析:将原始特征空间映射到彼此正交的特征向量空间,在非满秩的情况下使用SVD分解来构建特征向量
  • 线性判别分析:给出一个标注了类别的数据集投影到了一条直线之后,能够使得点尽量的按类别区分开

机器学习方法分类

分类问题

  • 决策树
  • 贝叶斯
  • 支持向量机
  • 逻辑回归
  • 集成学习

回归问题

  • 线性回归
  • 岭回归
  • Lasso回归

聚类问题

  • K-means
  • 高斯混合聚类
  • 密度聚类
  • 层次聚类
  • 谱聚类

其他问题

  • 隐马尔可夫模型
  • LDA主题模型
  • 条件随机场
  • 神经网略
  • 深度学习
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!