您的位置:首页 > 其它

【斯坦福---机器学习】复习笔记之特征选择

2015-09-18 19:38 337 查看

本讲大纲:

1.VC维(VC dimension)

2.模型选择(model selection)

—交叉验证(cross validation)

—特征选择(feature selection)

1.VC维

给定猜想类

,定义VC维(Vapnik-Chervonenkis dimension),记作VC(H),表示能够被

分开的最大集合的尺寸(如果

能够分开任意大的集合,那么

).

例如,考虑下面几个的三个点:



在二维中线性分类器能够把它们分开吗(



)?显然是可以的. 事实上,任意这些点可能的八种标签情况,我们都能找到“零训练误差”的线性分类器.



但是,这个猜想不能分开四个点的集合,因此VC(H)=3.

注意,即使可能有大小为3的集合不能被分开,VC维依然为3. 例如,三个点在同一条线上时(左图),那么没有办法找到线性分隔器(右图).



在VC维的定义下,为了证明VC(H)至少是d,我们要证明H能分开至少一个大小为d的集合.

(在学习理论中最重要的定理!)

定理:假设有

,并且

,那么至少有概率为

,对所有的

,有



因此,



换句话来说,如果猜想有有限的VC维,当m足够大时会有一致收敛性. 跟之前一样,我们可以以


的形式给出

的边界.

推论:

对所有的

保持至少

的概率,满足


换句话说,用

训练好的训练样本数量和VC维是线性的.结果表明,对大部分的猜想类,vc维(假设合理的参数化)和参数的数量大致也是线性相关的.把这两个放到一起,可以说(对于最小化训练误差的算法来说)需要的训练样本的数量大致和参数的类型是线性的.



2.模型选择

假设我们有一个有限的模型集合

,我们要从这些模型中做出选择,例如我们要从SVM,神经网络或者是逻辑回归中做出选择,那么我们的模型集合就要包含这些模型.

交叉验证

假设有训练集S,根据经验风险最小化的知识,我们可能会想到通过ERM来进行模型选择:

1.在训练集S上训练每个模型Mi,得到猜想hi;

2.选择训练误差最小的猜想

但是这个算法是不行的.比如选择多项式的次数,次数越高的多项式,对数据集的拟合程度越好,训练误差也越小,因此这个方法选择的是高方差,高次的多项式模型,显然是一个很糟糕的模型.

保留交叉验证(hold-out cross validation),也称为simple cross validation.

1.随机把训练集S分成两个子集,

(70%)和

(30%).

称为保留交叉验证集.

2.用

训练每个模型,得到猜想hi.

3.选择在交叉验证集中有最小错误

的猜想.

通过在没有训练的交叉验证集测试,对每个猜想的真实泛化误差有了一个更好的估计,并且能够选择最小泛化误差的猜想. 一般来说,1/4-1/3的数据是用来做交叉验证的,30%是一个典型的选择.

视情况而定,第三步也可以替换成通过

选择模型Mi,然后用整个训练集训练Mi(一般情况下,这个效果是不错的,但是如果模型对数据敏感就不行了.)

交叉验证的缺点是浪费了30%的数据,即使我们最后用整个训练集去训练模型. 在数据充足并且很容易获得的情况下,这是好的,但是如果数据是很稀少的,我们需要采用另外一种方式了.

k-fold交叉验证(k-fold cross validation)

1.随机把S分成k个子集,每个有m/k个训练样本,为S1,…,Sk;

2.对每个模型,我们这样评价:



3.选择具有最低估计泛化误差的模型,并且用整个数据集对模型进行训练,最后输出的猜想就是我们的答

案.

一个对fold典型的选择是k=10.

留一交叉验证(leave-one-out cross validation)

当数据非常稀有时,极端的选择是把k=m,为了尽可能使留下来的数据少,这种情况下我们会用除了一个之外的数据集进行训练,剩下的用来测试,k个错误的平均值用来作为模型的估计泛化误差.

即使这在边说的是交叉验证用来进行模型选择,但是只有单个模型时也可以用来评价模型的好坏.

特征选择

有的时候,特征的数量是非常大的,但是可能只是很小一部分的特征跟学习任务是有关系的. 这个时候就需要特征选择算法减少特征的数量. 给定n个特征,有

种子集可能的选择,枚举所有的可能性代价太大,一般是要采用启发式搜索(heuristic search).

下面的搜索程序叫向前搜索(forward search):



外层循环当特征数等于n或者达到预先设定的阈值时终止.

上面描述的算法叫做包装模型特征选择(wrapper model feature selection).

除了向前搜索,还有向后搜索(backward search):

开始

,然后每次循环删除一个特征直到


包装特征选择算法经常效果很好,但是需要多次调用学习算法,计算的代价很大.

过滤特征选择(Filter feature selection)是启发式搜索,但是计算的代价小得多.

思想是计算根据每个特征对标签y的贡献得到一个分数,然后选择k个最大分数的特征.

可以根据xi和y的相关性计算分数. 但是在现实中,一个比较常见的做法是(尤其对于离散特征)选择S(i)为xi和y的**互信息(mutual information)**MI(xi,y):



(上面的等式假设可x和y是二元值,但是更常见的是在变量的定义域内)

mutual information也可以表示为Kullback-Leibler (KL) divergence:



如果xi和y是相互独立的随机变量,两个变量的分布的KL-divergence为0.

最后一个问题,根据分数选出k个特征,但是这个k是则呢确定的?一个标准的方式是用交叉验证去选择可能的k.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: