在机器学习中,我们有个最基本的假设:训练集和测试及数据是独立同分布的。但现实生活中我们的数据通常会出现某些问题:
(1)不完整:缺乏某些属性,属性值,或者只有一些汇总后的数据
设备故障,与其他记录数据不一致而被删除,由于误解而未输入数据,某些数据在输入时可能不被视为重要,不记录数据的历史或变化
解决办法:
插补:
1. 忽视有缺失的数据:当label缺失的时候常用,当缺失值的比例变化很大时无效
2. 手动填写缺失数据:很麻烦并且有的时候不可行
3. 自动补充:补充为缺失值,平均值(可能会改变原数据的关系),和数据有相同属性的平均值,最有可能出现的值(用贝叶斯公式,决策树或者最近的邻居决定之类的),矩阵分解方法,期望最大化,使用适当的模型估算缺失值(例如使用分类器/回归 模型来预测缺失值,重复几次取均值)
(2) Noisy: 数据包含噪音,误差,或异常值
(3) Inconsistent: 数据在某些编码或名称方面不一致
(4) 故意的错误: 由于有些数据的缺失,找了错误的替代数据上去
数据缩减
获得数据集的缩减表示,该表示的数量要小得多,但仍会产生相同(或几乎相同)的分析结果。
缩减原因:一个数据库可能存储数 TB 的数据,复杂的数据分析可能需要很长时间才能在完整的数据集上运行。
缩减方法:
(1) 降维,例如 删除不重要的属性:Wavelet transforms, PCA, 特征子集选取
消除无关特征的影响和减少噪音,减少需要的时间和空间,可视化更简单
(2) 数量减少:回归和对数线性模型,直方图、聚类、采样,数据立方体聚合 数据压缩。
PCA步骤(仅对数值型输入起作用):
(1) 归一化输入数据,使它们落在一个数据范围内
(2) 计算k个正交的单位向量(主成分),所有的输入的向量都是这k个正交向量的线性组合
(3) 主成分按照显著性降序排列(由于对成分进行了排序,因此可以通过消除弱成分,即方差较小的成分来减小数据的大小(即使用最强的主成分,可以重建原始数据的良好近似值))
特征选择:计算两个特征之间的相关系数,相关性很大的特征之间可以考虑只留一个。
特征选择中的先验查找(方法):独立假设下的最佳单一属性,最佳逐步特征选择,逐步特征消除,最佳组合属性选择和消除,最优分支定界
Relief特征选择:结果是一个权重向量,表示每个特征的重要性。
Wrappers:生成特征的子集并评估分类器在该子集上的性能,从子集中添加或删除属性,看看分类器的性能是否有所提高
噪音数据
变量的随机误差或方差
处理方法:
(1)分档:将数据按照大小分到不同的部分,然后用每一部分数据的均值,中位数或者是分界值去替代之前的数据
(2)通过将数据拟合到回归函数中来平滑
(3)集群然后删掉异常值
数据转换
(1)去除噪音
(2)通过已有属性构建一个新的属性(如人均GDP之类的)
(3)归一化数据
(4)概念层次攀登
数据离散化
(1)分档
(2)直方图分析
(3)集群分析
(4)决策树分析
(5)相关性分析
不平衡数据(不平衡的labels)
如果原数据中某个分类的数量远多于另一个,分类器很有可能过多的往那个分类预测。
解决方法:
重取样:
(1) 从多数类中随机删除实例(丢失数据,可能会造成偏差)
(2) 从少数类中随机添加更多实例(不会丢失数据,但是有过度拟合的风险)
基于集群的过采样:
独立地聚类正例和负例,然后将过采样或欠采样技术应用于每个单个集群
合成少数过采样技术(SMOTE):
在少数类中找到彼此最接近的实例对,在这些实例之间创建一个新实例,将其分配给少数类
总结
(1)预处理是机器学习和数据分析的重要组成部分
(2)缺失值可能由各种原因导致,具体取决于原因,必须以不同的方式处理它们 存在各种插补方法,它们使用其他实例和值的信息来插补缺失值 例如,可以通过分箱、聚类或回归处理噪声数据 (3)特征选择可用于减少冗余和不重要特征的数量
(4)不平衡的数据集可能是评估和分类器的问题
(5)抽样可用于克服类别不平衡问题