特征处理
连续型变量处理(二)
多特征
- 降维
-
PCA
PCA是一种常见的数据分析方式,通过数据分解,将高维数据降低为低维数据,同时最大程度保持数据中保存的信息。from sklearn.decomposition import PCA A = np.array([[84,65,61,72,79,81],[64,77,77,76,55,70],[65,67,63,49,57,67],[74,80,69,75,63,74],[84,74,70,80,74,82]]) pca = PCA(n_components=2) pca.fit(A) pca.transform(A) array([[-16.14860528, -12.48396235], [ 10.61676743, 15.67317428], [ 23.40212697, -13.607117 ], [ -0.43966353, 7.77054621], [-17.43062559, 2.64735885]])
-
LDA
LDA是另一种常见的数据分解方法,与PCA不同的是,LDA算法的思想是将数据投影到低维空间之后,使得同一类数据尽可能的紧凑,在低维空间中保持紧凑。from gensim.models.ldamodel import LdaModel
-
- 特征选择
-
Filter:
-
相关系数:通过计算特征时间的相关系数,根据需要,去除冗余特征数据。
-
卡方检验:通过假设检验,计算卡方值,判断是否接受原假设,留下当前特征。
x_c^2 = \sum {\frac{(O_i - E_i)^2} {E_i}}
-
信息增益:计算加入各个特征的信息增益,来确定是否需要加入该特征。
g(D,A) = H(D)-H(D|A)
其中H(D)是训练集D的经验熵,H(D|A)是特征A给定条件的下D的经验条件熵。
-
-
Wrapper:通过目标函数来判断是否需要加入一个变量,通过迭代产生新的特征子集,并使用模型进行训练学习,得到评价结果
-
完全搜索:
- 广度优先搜索(Breadth First Search):主要采用完全搜索策略和距离度量评价函数。使用广度优先算法遍历所有可能的特征子集,选择出最优的特征子集。
- 分支界限搜索(Branch & Bound):主要采用完全搜索和距离度量。B&B从所有的特征上开始搜索,每次迭代从中去掉一个特征,每次给评价函数的值一个限制条件。因为评价函数满足单调性原理(一个特征子集不会好于所有包含这个特征子集的更大的特征子集),所以如果一个特征使得评价函数的值小于这个限制,那么就删除这个特征。类似于在穷举搜索中进行剪枝。
-
启发式搜索:通过增减数据中的特征,评估增减该特征对结果的影响,来评估是否需要保留该特征。
- 前向选择:通过随机选择其中一个特征,通过模型训练,保留最优解,后续通过不断增加特征,保留最优解,直至不再需要改进。
- 后向选择:通过随机减少一个特征,通过模型训练,保留最优解,后续通过减少特征,得到更优解,直至无法进行改进。
-
随机搜索
- LVF(Las Vegas Filter):使用一致性度量作为评价函数。使用拉斯维加斯算法随机搜索子集空间,这样可以很快达到最优解。
- LVW(Las Vegas Wrapper):使用误分类率作为评价函数。使用拉斯维加斯算法随机产生子集,然后计算在这个子集上的评价指标(计算学习器上的误差);
- 随机产生序列选择算法(RGSS , Random Generation plus Sequential Selection):使用误分类率作为评价函数。随机产生一个特征子集,然后在该子集上执行SFS和SBS算法,用于跳出局部最优值。
-
-
Embedded
- 正则化:L1,L2
- 决策树:信息增益
- 深度学习
-
特征生成
通过对于数据和具体场景的理解,构建新的变量,包括但不限于无关特征之间进行交叉组合,加减乘除等