数据清洗
- 填写缺失值:忽略元组、手动填写遗漏值、自动填写
- 平滑噪声数据(识别并减少数据中的随机错误或异常波动),识别或删除离群点——盒状图
- 解决不一致问题(统一数据格式、编码和表示方式,消除数据矛盾):计算推理、替换
数据集成
仔细集成来自多个数据源,可能有助于减少/避免冗余和不一致的地方,并提高读取速度和质量
整合多个数据库,多维数据集或文件
- 模式集成:整合来自不同来源的元数据
- 实体识别集成:识别来自多个数据源的真实世界的实体
- 数据冲突检测和集成:对于同一个真实世界的实体,来自不同源的属性值。可能的原因:不同的表述,不同的尺度,例如,公制与英制单位
整合多个数据库经常发生数据冗余:
- Object identification:相同的属性或对象可能有不同的名字在不同的数据库中
- Derivable data:一个属性可能是“派生”的另一个表中的属性,例如,跑步能力
通过相关性分析(卡方检验(离散数据)、皮尔逊相关系数)和协方差分析可以检测到冗余的属性
皮尔逊相关系数
r
=
∑
i
=
1
n
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
∑
i
=
1
n
(
x
i
−
x
ˉ
)
2
⋅
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
r = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2} \cdot \sqrt{\sum_{i=1}^{n} (y_i - \bar{y})^2}}
r=∑i=1n(xi−xˉ)2⋅∑i=1n(yi−yˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
- 当r>0时,表示两变量正相关,r<0时,两变量为负相关。
- 当|r|=1时,表示两变量为完全线性相关,即为函数关系。
- 当r=0时,表示两变量间无线性相关关系。
- 当0<|r|<1时,表示两变量存在一定程度的线性相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱。
一般可按三级划分:|r|<0.4为低度线性相关;0.4≤Ir|<0.7为显著性相关;0.7≤Ir<1为高度线性相关。
协方差
Cov
(
X
,
Y
)
=
∑
i
=
1
n
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
n
\text{Cov}(X, Y) = \frac{\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{n}
Cov(X,Y)=n∑i=1n(xi−xˉ)(yi−yˉ)
r p , q = C o v ( x , y ) 1 n ∑ i = 1 n ( x i − x ˉ ) 2 ⋅ 1 n ∑ i = 1 n ( y i − y ˉ ) 2 r_{p,q} = \frac{Cov(x,y)}{\frac{1}{n}\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2} \cdot \frac{1}{n}\sqrt{\sum_{i=1}^{n} (y_i - \bar{y})^2}} rp,q=n1∑i=1n(xi−xˉ)2⋅n1∑i=1n(yi−yˉ)2Cov(x,y)
- 正相关:COV(p,q)>0
- 负相关:COV(p,q)<0
- 独立性:COVP(p,q)=0
协方差为0,但不一定独立。一些额外的假设(例如,数据是否服从多元正态分布,直方图呈现)做了协方差为0意味着独立。
数据规约
其主要目的是通过对原始数据进行一系列的处理和转换,减少数据的复杂性和冗余性,同时尽可能保留原始数据的完整性和关键特征
降维
- 为什么要降维?
类似神经网络的机器学习方法,主要需要学习各个特征的权值参数 。特征越多,需要学习的参数越多,则模型越复杂
机器学习训练集原则:模型越复杂,需要更多的训练集来学习模型参数,否则模型将欠拟合。
因此,如果数据集维度很高,而训练集数目很少,在使用复杂的机器学习模型的时候,首选先降维。
总结:需要降维的场景
- 数据稀疏,维度高
- 高维数据采用基于规则的分类方法
- 采用复杂模型,但是训练集数目较少
- 需要可视化
PCA主成分分析法
核心思想:数据中很多属性之间可能存在这样或那样的相关性,能不能找到一个方法,将多个相关性的属性组合仅仅形成一个属性
主成分分析就是设法将原来众多具有一定相关性的属性(比如p个属性),重新组合成一组相互无关的综合属性来代替原来属性。通常数学上的处理就是将原来 p个属性作线性组合,作为新的综合属性
线性变换等价于坐标旋转
变换的目的是为了使得n个样本点在y1轴方向上的离散程度最大,既y1的方差达最大。说明变量y1代表了原始数据的绝大部分信息,对y2忽略也无损大局,即由两个指标压缩成一个指标。
主成分分析几何意义:寻找主轴
正如二维椭圆有两个主轴,三维椭球有三个主轴一样,有几个变量,就有几个主成分。选择越少的主成分,降维就越好。什么是标准呢?那就是这些被选的主成分所代表的主轴的长度之和占了主轴长度总和的大部分。
从几何上看,找主成分的问题,就是找出P维空间中椭球体的主轴问题
从数学上可以证明,这些L系数矩阵的值分别是相关矩阵的m个较大的特征值所对应的特征向量
降数据——减少数据点的数量
简单随机抽样(Simple Random Sampling):不放回抽样、有放回抽样
分层抽样:每组按比例随机抽取用于偏斜数据
数据压缩:减小数据存储空间
数据转换和数据离散化
正常化:将数据缩放到特定范围(如0-1或均值为0,方差为1)
规范化
- 最小 - 最大规范化
- Z-得分正常化
- 小数定标规范化
离散化
数值数据离散化
部分数据挖掘算法只使用于离散数据(决策树、朴素贝叶斯等)
- 非监督离散化方法
- 等宽法:根据属性的值域来划分,使每个区间的宽度相等
- 等频法:根据取值出现的频数来划分,将属性的值域划分成个小区间,并且要求落在每个区间的样本数目相等
- 聚类:利用聚类将数据划分到不同的离散类别
- 有监督离散化方法
- 基于卡方分布离散化
- 基于熵的离散化
离散数据数值化
当数据中既有连续数据,又有离散数据时,当采用类似神经网络这种优化机器学习方法,则需要将离散数据特征进行数值化
离散数据特征哑编码(Dummy Encoding)是一种将分类变量(Categorical Variables)转换为数值型特征的技术,尤其适用于无序分类变量(如性别、颜色、职业等)。其核心思想是通过创建二进制(0/1)特征来表示每个类别是否存在,从而让机器学习模型能够处理非数值型数据。
核心原理
- 避免数值化误导
直接对分类变量赋值整数(如“男=1,女=2”)会引入虚假的顺序关系,而哑编码通过二进制特征消除这种误导,保留类别间的独立性 - 基准类别(Reference Category)
哑编码会省略一个基准类别(如“其他”),仅用剩余类别的哑变量表示。例如,性别有“男、女、其他”时,若选择“其他”为基准,则生成两列:性别_男
和性别_女
。当某样本的性别为“其他”时,两列值均为0
通常选择出现频率最高或最无代表性的类别作为基准(如“其他”)。
使用工具(如Python的pandas.get_dummies
)自动创建二进制特征:
import pandas as pd
data = pd.DataFrame({'性别': ['男', '女', '其他', '男']})
encoded = pd.get_dummies(data, columns=['性别'], drop_first=True)