Andrew Ng机器学习课程笔记(十)之学习理论之模型选择

Preface

主要内容:
Cross Validation(交叉验证)
Feature Selection(特征选择)

问题定义

对于一个实际问题,我们需要从模型集合 M = { M 1 , . . . , M d } 中选择一个恰当的模型 M i ,使得模型偏倚(bias)和方差(variance)之间寻求最佳的平衡点(在过拟合与欠拟合之间寻求最佳的平衡点)。

Cross Validation

Hold-out Cross Validation/Simple Cross Validation(保留交叉验证/简单交叉验证):

  • 对于一个给定的训练集,我们随机的将其划分为两个在自己的子集(训练子集、保留交叉验证子集)。
  • 使用训练子集进行训练模型,然后使用保留交叉验证子集进行测试。
  • 最后选择具有最小测试误差的模型。

对于保留交叉验证/简单交叉验证常常将训练子集、保留交叉验证子集按1:2或3:7等比例划分。

k- fold Cross Validation(k重交叉验证):

  • 将训练集 S 分成k份,分别记为 S 1 , S 2 , . . . , S k
  • 对于每一个模型 M i ,都执行如下过程:
    f o r j i n j = 1 , 2 , . . . , k
    S 1 , S 2 , . . . S j 1 , S j + 1 , . . . S k 上训练模型得到 h i j ,使用 S j 来验证,计算泛化误差。
    然后求得对于模型 M i 平均泛化误差。
  • 最后选择具有最小平均泛化误差的模型。

对于k重交叉验证常常将k设置为5,10。

Least-one-out Cross Validation(留一交叉验证):
这是一种特殊的k重交叉验证,即k=m(训练集样本数量)。

Feature Selection

回忆我们在贝叶斯估计中所讲述的垃圾邮件拦截的例子,里面的特征多到几万个,其中有许多无效特征(对最后结果几乎无影响),这就使得如何选取较少的特征成为我们需要思考的问题。
假设样本有n个特征,那么,其有 2 n 种可能的特征子集,如果特征选择需要去穷举所有种可能的特征子集,对于n比较大的情况,计算的代价太大,无法真正实现。因此可以通过一些启发式算法实现特征的选择。

Forward/Backward Search(正向搜索/反向搜索)

正向搜索
- Initialize F=Null
- Repeat{
(a) for i=1,…,n,如果i不属于F,就让i加入集合F
then 交叉验证评估特征集 (泛化误差最小的)
(b) 找出步骤(a)中最佳特征子集F
}
- 找出在整个搜索过程中最佳特征子集。

对于正向搜索我们可以这样理解我们初始化一个特征子集F,
Step1:第一层循环:循环K次(我们设置的特征集阈值)
Step2:第二层循环:循环特征总数量次数
Step3:每一次加入一个特征到F并使用交叉验证计算泛化误差
Step4:第二层结束
Step5:找到一个当前最小泛化误差的F
Step6:当F中的特征值大于阈值时结束

反向搜索,它是假设所有的特征都在集合内,逐步减少属性,直至找到(局部)最优属性集。

前向搜索和后向搜索属于封装特征选择(wrapper model feature selection),在执行的时候需要不断重复的调用你的学习算法。前向搜索和后向搜索都有两层循环,并且最坏情况下循环计数都到达 n 2 ,所以时间复杂度都为 O ( n 2 )

Filter Feature Selection Method(滤特征选择算法)

虽然我们可以使用正向搜索/反向搜索来解决贝叶斯估计中所讲述的垃圾邮件拦截的例子,但是由于特征太多会导致计算量过于巨大。这里我们将使用一种计算量较少的算法——滤特征选择算法。
滤特征选择算法:我们定义评价函数 S ( i ) ,用来评价第i个特征与标签y之间的影响关系。最后选择出 S ( i ) 得分高的 k 个特征。
对于评价函数 S ( i ) 我们这里退供一种思路:
定义 S ( i ) x i y 之间的联系程度,通常(对于离散值)采用Mutual Information(相互信息)来度量 x i y 之间的联系程度。

(1) MI ( x i , y ) = x i { 0 , 1 } y { 0 , 1 } p ( x i , y ) l o g p ( x i , y ) p ( x i ) p ( y )

上述公式中的 p ( x i , y ) , p ( x i ) , p ( y ) 可以有由训练样本计算出来。

在信息论中相互信息也被定义为KL距离,即为:

(2) MI ( x i , y ) = KL ( p ( x i , y ) | | p ( x i ) p ( y ) )

( p ( x i , y ) p ( x i ) p ( y ) ) 满足独立时,KL=0;这个结果的大小与 x i y 之间的相关程度成正比

最后,我们使用评价函数 S ( i ) 将特征按一定的规则从大到小排序,依次选取特征,利用交叉验证确定k的取值。

猜你喜欢

转载自blog.csdn.net/danerer/article/details/79980753