甲乙小朋友的房子

甲乙小朋友很笨,但甲乙小朋友不会放弃

0%

特征选择与正则化

特征选择:很重要

tip:冗余特征(redundant feature): - 本特征能被其它特征中推演出来。它不一定有坏处,但也不一定有好处。例如:考虑立方体对象,若已有特征“长”、“宽”,则“底面积”是冗余特征。 - 冗余特征在很多时候不起作用,会增加学习过程的负担。 - 但如果学习目标是估算立方体体积,则“底面积”特征会对学习更好。

结论:如果某冗余特征恰好对应完成学习任务所需的“中间概念”,则该冗余特征是有益的。

子集搜索与评价

特征选取时,若没有任何领域知识进行先验假设,只能遍历所有可能子集。-->不可取!

可行做法: 产生个“候选子集”,评价它的好坏,基于评价结果产生下一个候选子集。

问题一,如何评价结果获取下一个候选特征子集?

子集搜索

  1. 前向搜索
  • 给定特征集合\({a_1,a_2,...,a_d}\),将每个特征看做一个候选子集。对d个候选单特征子集进行评价,假定\({a_2}\)最优,将\({a_2}\)做为第一轮选定集;
  • 加入一个新特征,构成包含两个特征的候选子集,假定在这\(d-1\)个候选两特征子集中\({a_2,a_4}\)最优,则将\({a_2,a_4}\)作为本轮选定集;
  • ...
  • k+1轮时,不再更好,停止迭代
  1. 后向搜索 每次都删除掉一个特征

问题二,如何评价候选特征子集?

信息增益

  • 给定数据集\(D\),假定\(D\)中第\(i\)类样本所占的比例为\(p_i(i=1,2,...,|Y|)\).
  • 假定所有样本属性均为离散型
  • 对属性子集\(A\),假定根据其取值将\(D\)分成了\(V\)个子集\({D^1,D^2,...,D^V}\),每个子集中的样本在A上取值相同,则属性子集\(A\)的信息增益为:

\[Gain(A)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v)\]

其中信息熵定义为:

\[Ent(D)=-\sum_{k=1}^{|y|}p_klog_2p_k\]

信息增益\(Gain(A)\)越大,特征子集A包含的有助于分类的信息越多。

总结

特征选择方法=子集搜索+子集评价

常见特征选择方法: - 过滤式(filter) - 包裹式(wrapper) - 嵌入式(embedding)

过滤式选择(filter)

概念:先特征选择,再训练模型

特点:特征选择与模型学习无关

===来日填坑===

包裹式选择

概念:把最终将要使用的学习器的性能作为特征子集的评价准则

特点:需要多次训练学习器

===来日填坑===

嵌入式选择与L1正则化

概念:将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成

给定数据集\(D={(x_1,y_1),(x_2,y_2),...(x_m,y_m)}\),其中\(x\in R^d,y\in R\).

考虑最简单的线性回归,以平方误差为损失函数,则优化目标为:

\[min_w\sum_{i=1}^m(y_i-w^Tx_i)^2\]

当样本特征很多,而样本数较少时,上式很容易陷入过拟合。解决方案,正则化项。

\(L_2\)范数正则化(“岭回归”(redge regression)):

\[min_w\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda ||w||_2^2\]

\(L_1\)范数正则化:

\[min_w\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda ||w||_1\]

区别:\(L_2\)\(L_1\)更容易获得“稀疏”(sparse)解,即它求得的\(w\)会有更少的非零分量。 (这里一定要看一下西瓜书-253页的解释)

正则化的理解

以以下的拟合为例:

在图二中,明显是因为高次项的系数\(\theta_3,\theta_4\)过大造成的。

因此我们加入正则化项:

即给目标函数加一点东西。

现在,如果我们要最小化这个函数,那么为了最小化这个新的代价函数,我们要让\(θ3\)\(θ4\)尽可能小。因为,如果你在原有代价函数的基础上加上1000乘以\(θ3\)这一项,那么这个新的代价函数将变得很大,所以,当我们最小化这个新的代价函数时,我们将使\(θ3\)的值接近于0,同样\(θ4\)的值也接近于0,就像我们忽略了这两个值一样。如果我们做到这一点(\(θ3\)\(θ4\)接近0),那么我们将得到一个近似的二次函数。

更一般地:

\(L_2\)范数正则化:

\[min_w\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda ||w||_2^2 \] \[= min_w\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda\sqrt{\sum_{n=1}^nw_i^2}\]

(其中,m是数据个数,n是特征维度) 因此在正则化里,我们要做的事情,就是把减小我们的代价函数(例子中是线性回归的代价函数)所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。

因此,我们需要修改代价函数,在这后面添加一项,就像我们在方括号里的这项。当我们添加一个额外的正则化项的时候,我们收缩了每个参数。

\[ min_w\frac{1}{2m}[\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda\sqrt{\sum_{n=1}^nw_i^2}]\]

参考文献

  1. 机器学习之正则化(Regularization)