大师兄的数据分析学习笔记(十三):特征预处理(四)

大师兄的数据分析学习笔记(十二):特征预处理(三)
大师兄的数据分析学习笔记(十四):机器学习与数据建模

五、特征降维

  • 在探索性数据分析中,特征降维的方法通常分为线性降维非线性降维
  • 而在这里,我们将特征降维的方法分为无监督监督学习方法:
1. 无监督方法
  • 通常可以考虑采取PCA变换奇异值分解等方式。
  • PCA变换奇异值分解都属于无监督的降维方法,即不会考虑标注,而是让特征与特征间的相关性强弱来决定降维后的分布形态。
  • PCA变化的流程如下:
  • 求特征协方差矩阵;
  • 求协方差的特征值和特征向量;
  • 将特征值按照从大到小的顺序排列,选择其中最大的k个;
  • 将样本点投影到选取的特征向量上
2. 监督学习方法
  • 非线性降维通常采取LDA降维(Linear Discriminant Analysis, 线性判别式分析)。
  • LDA的核心思想:投影变换后,同一标准内距离尽可能小;不同标注间距离尽可能大。
  • 方法如下:
  • 首先计算每个标注下,每个特征的均值:
  • 接下来最大化一个函数,函数变量为参数:J(\omega) = \frac{||\vec{\omega}_0^T(\vec{X}_0-\mu_0)-\vec{\omega}_1^T(\vec{X}_1-\mu_1)||^2}{\vec{\omega}_0^T(\vec{X}_0-\mu_0)(\vec{X}_0-\mu_0)^T\vec{\omega}_0+ \vec{\omega}_1^T(\vec{X}_1-\mu_1)(\vec{X}_1-\mu_1)^T\vec{\omega}_1}
  • 为了解决两个子矩阵尺寸大小不一致的情况,需要将公式进行等效:
  • 计算出后,就确定了新的空间下,分离程度最大的方向:
>>>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 ]]

六、特征衍生

  • 因为通过采集得到的特征,未必能够反应数据的全部信息,所以需要通过数据组合来发现新的含义。
  • 特征衍生就是对现有的特征进行组合,形成某个新的有含义的特征。
  • 特征衍生常见方法如下:
  • 加减乘除
  • 求导或高阶求导
  • 人工归纳,也就是引入常识性相关的特征因素。

你可能感兴趣的:(大师兄的数据分析学习笔记(十三):特征预处理(四))