【cs229-Lecture10】特征选择

本节课要点:

  • VC维:
  • 模型选择算法

特征选择


vc维:个人还是不太理解。个人的感觉就是为核函数做理论依据,低维线性不可分时,映射到高维就可分,那么映射到多高呢?我把可分理解为“打散”。

参考的资料:http://www.cnblogs.com/boostable/p/iage_VC_dimension.html?utm_source=tuicool(前面的讲解很不错)

http://www.svms.org/vc-dimension/

http://www.tnove.com/?p=423&utm_source=tuicool


模型选择

选择过于简单的模型,可能会导致欠拟合;

选择过于复杂的模型,可能会导致过拟合。

那么问题来了?

如何选择适合的模型呢?

摘自http://blog.csdn.net/stdcoutzyx:机器学习的模型有很多,如何在多个模型中选择最好的一个?即便对于同一个模型来说,又如何选择最好的参数?这就是本节要解决的问题。具体举几个例子,比如多项式模型如何选择阶数?svm 模型如何选择惩罚参数 C 和正则化项?局部加权回归如何选择带宽参数?如何从神经网络与 svm 模型中选择一个较好的模型?等等。

我们希望能够找到一个自动选择模型的方法。

两种方法:保留交叉验证和特征选择。

保留交叉验证:

对于一个给定的训练集合,将其随机地划分成两个子集:训练集和保留交叉验证集。

之后用训练集训练模型,用保留交叉验证集进行测试。最后选择具有最小测试误差的模型作为最后的结果。

变种1:K重交叉验证:把数据集合分成k份。从第一份数据开始,保留第一份数据的(k-1)/k进行训练,用剩下的1/k进行测试。这样会得到k个误差,然后再取平均。

k取10比较常见。这样做的优点:只需要留出更少的数据用于测试;缺点:需要大量的计算。

变种2:留1交叉验证:划分的数目和样本的数目一样多。留出第一个样本进行测试,用剩下的进行训练;留出第二个样本进行测试,用剩下的进行训练;留出第三个样本进行测试,用剩下的进行训练……

数据少的时候可以采用。

特征选择:

假设有n个特征,则有2^n个子集。我们要在这2^n个子集中选用一个集合,需要采用不同的启发式搜索算法。

1、前向搜索算法(前向选择算法):从1~n,尝试将特征i加入到集合,并进行交叉验证。筛选出最好的特征F。计算量大。

2、封装特征选择,后向选择算法:F初始为全部特征,然后从1~n,尝试逐个删除特征i,然后再进行交叉验证。

3、过滤特征选择算法:对于每个特征i,衡量其对y的影响。计算与y的相关度。比如在文本分类问题中,我们常用的停用词,就是和y不相关,所以可以直接删掉。取相关度最大的前k个的特征,k多大,可以用交叉验证来计算。

上一篇:Effective C++ ——实现


下一篇:ReactiveCocoa的一些使用