大师兄的数据分析学习笔记(十二):特征预处理(三)
大师兄的数据分析学习笔记(十四):机器学习与数据建模
五、特征降维
- 在探索性数据分析中,特征降维的方法通常分为线性降维和非线性降维。
- 而在这里,我们将特征降维的方法分为无监督和监督学习方法:
1. 无监督方法
- 通常可以考虑采取PCA变换和奇异值分解等方式。
- PCA变换和奇异值分解都属于无监督的降维方法,即不会考虑标注,而是让特征与特征间的相关性强弱来决定降维后的分布形态。
- PCA变化的流程如下:
- 求特征协方差矩阵;
- 求协方差的特征值和特征向量;
- 将特征值按照从大到小的顺序排列,选择其中最大的k个;
- 将样本点投影到选取的特征向量上
2. 监督学习方法
- 非线性降维通常采取LDA降维(Linear Discriminant Analysis, 线性判别式分析)。
- LDA的核心思想:投影变换后,同一标准内距离尽可能小;不同标注间距离尽可能大。
- 方法如下:
- 首先计算每个标注下,每个特征的均值:
- 接下来最大化一个函数,函数变量为参数:
- 为了解决两个子矩阵尺寸大小不一致的情况,需要将公式进行等效:
- 计算出后,就确定了新的空间下,分离程度最大的方向:
>>>import os
>>>import pandas as pd
>>>from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
>>>df = pd.read_csv(os.path.join(".", "data", "WA_Fn-UseC_-HR-Employee-Attrition.csv"))
>>>data = pd.concat([df.HourlyRate,df.Education,df.JobSatisfaction],axis=1)
>>>print(data)
HourlyRate Education JobSatisfaction
0 94 2 4
1 61 1 2
2 92 2 3
3 56 4 3
4 40 1 2
... ... ...
1465 41 2 4
1466 42 1 1
1467 87 3 2
1468 63 3 2
1469 82 3 3
>>>LDA = LinearDiscriminantAnalysis(n_components= 1 ).fit_transform(data,df.HourlyRate)
>>>print(LDA)
[[-0.6015412 ]
[-1.96727988]
[-0.80987762]
...
[-0.06914822]
[-0.06914822]
[ 0.1391882 ]]
六、特征衍生
- 因为通过采集得到的特征,未必能够反应数据的全部信息,所以需要通过数据组合来发现新的含义。
- 特征衍生就是对现有的特征进行组合,形成某个新的有含义的特征。
- 特征衍生常见方法如下:
- 加减乘除
- 求导或高阶求导
- 人工归纳,也就是引入常识性相关的特征因素。