数据挖掘:特征工程——特征提取与选择( 九 )


5.3.1.3 L2正则化(Ridge )
L2正则化同样将系数向量的L2范数添加到了损失函数中 。由于L2惩罚项中系数是二次方的,这使得L2和L1有着诸多差异,最明显的一点就是,L2正则化会让系数的取值变得平均 。对于关联特征,这意味着他们能够获得更相近的对应系数 。还是以Y=X1+X2为例,假设X1和X2具有很强的关联,如果用L1正则化,不论学到的模型是Y=X1+X2还是Y=2X1,惩罚都是一样的,都是2α 。但是对于L2来说,第一个模型的惩罚项是2α,但第二个模型的是4α 。可以看出,系数(待求参数)之和为常数时,各系数相等时惩罚是最小的,所以才有了L2会让各个系数趋于相同的特点 。
可以看出,L2正则化对于特征选择来说一种稳定的模型,不像L1正则化那样,系数会因为细微的数据变化而波动 。所以L2正则化和L1正则化提供的价值是不同的,L2正则化对于特征理解来说更加有用:表示能力强的特征对应的系数是非零 。
回过头来看看3个互相关联的特征的例子,分别以10个不同的种子随机初始化运行10次,来观察L1和L2正则化的稳定性 。
import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn.linear_model import Ridgesize = 100# We run the method 10 times with different random seedsfor i in range(5):print("Random seed %s" % i)np.random.seed(seed=i)X_seed = np.random.normal(0, 1, size)X1 = X_seed + np.random.normal(0, .1, size)X2 = X_seed + np.random.normal(0, .1, size)X3 = X_seed + np.random.normal(0, .1, size)Y = X1 + X2 + X3 + np.random.normal(0, 1, size)X = np.array([X1, X2, X3]).Tlr = LinearRegression()lr.fit(X, Y)print("Linear model:", pretty_print_linear(lr.coef_))ridge = Ridge(alpha=10)ridge.fit(X, Y)print("Ridge model:", pretty_print_linear(ridge.coef_))print()>>>Random seed 0Linear model: 0.728 * X0 + 2.309 * X1 + -0.082 * X2Ridge model: 0.938 * X0 + 1.059 * X1 + 0.877 * X2Random seed 1Linear model: 1.152 * X0 + 2.366 * X1 + -0.599 * X2Ridge model: 0.984 * X0 + 1.068 * X1 + 0.759 * X2Random seed 2Linear model: 0.697 * X0 + 0.322 * X1 + 2.086 * X2Ridge model: 0.972 * X0 + 0.943 * X1 + 1.085 * X2Random seed 3Linear model: 0.287 * X0 + 1.254 * X1 + 1.491 * X2Ridge model: 0.919 * X0 + 1.005 * X1 + 1.033 * X2Random seed 4Linear model: 0.187 * X0 + 0.772 * X1 + 2.189 * X2Ridge model: 0.964 * X0 + 0.982 * X1 + 1.098 * X2
可以看出,不同的数据上线性回归得到的模型(系数)相差甚远,但对于L2正则化模型来说,结果中的系数非常的稳定,差别较小,都比较接近于1,能够反映出数据的内在结构 。
对于SVM和逻辑回归,参数C控制稀疏性:C越小,则稀疏性越大,被选中的特征越少 。对于Lasso,参数alpha控制了稀疏性,如果alpha越小,则稀疏性越小,被选择的特征越多 。
5.3.2 基于树模型的特征选择
基于树的预测模型能够用来计算特征的重要程度,因此能用来去除不相关的特征(结合 ..) 。
随机森林具有准确率高、鲁棒性好、易于使用等优点,这使得它成为了目前最流行的机器学习算法之一 。随机森林提供了两种特征选择的方法:平均不纯度减少(mean) 和 平均精确率减少(mean) 。
5.3.2.1 平均不纯度减少
随机森林由多个决策树构成 。决策树中的每一个节点都是关于某个特征的条件,为的是将数据集按照不同的响应变量一分为二 。利用不纯度可以确定节点(最优条件),对于分类问题,通常采用 基尼不纯度或者信息增益,对于回归问题,通常采用的是 方差 或者最小二乘拟合 。当训练决策树的时候,可以计算出每个特征减少了多少树的不纯度 。对于一个决策树森林来说,可以算出每个特征平均减少了多少不纯度,并把它平均减少的不纯度作为特征选择的值 。把平均减少不纯度最多的特征作为最好的特征