监督学习(三)

朴素贝叶斯分类器:
所谓朴素贝叶斯分类器中的“朴素”体现在每个属性独立地对分类结果产生影响,其基本原理是基于贝叶斯公式。如果每个属性在类别之外最多依赖一个其他属性,则其转化为半朴素贝叶斯分类器。此处只讨论朴素贝叶斯分类器,其基本原理基于贝叶斯公式。
EFQwcV.png
其中d为属性数目,Xi为x在第i个属性上的取值。
朴素贝叶斯分类器的目标就是
EFQd10.png
实例计算转到《机器学习》150页。
如果在测试集测试的过程中发现有属性未在训练集中出现过,则使用拉普拉斯修正。令N表示训练集D中可能的类别数,Ni表示第i个属性可能的取值数。
EFQapq.png
优点:计算速度快,可解释性好。
缺点:仅适用于类别变量;仅能应用于分类问题

决策树:
简单来说决策树就是直观的问答问题,将当前测试用例中的属性和训练集中已经运算出的属性进行匹配,比如身高是否大于180,如果大于则进入右子树,小于进入左子树,最后到达叶节点,成功分类。但是决策树存在为尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这样就导致了过拟合,对于过拟合,决策树采用了“预剪枝”和“后剪枝”。所谓预剪枝就是看当前选择的属性是否能产生更好的效果,而后剪枝就是从叶节点开始移除属性,计算其移除前后的精度变化。

随机森林:
随机森林是Bagging的一种扩展变体,Bagging是并行式集成学习方法中最著名的代表,它采用自助采样法(boostrap sampling)
EFQDnU.png
从上面这个图可以看出右边后两行都采样自左边的最后一行,这就是该方法的特点,自助采样法在数据集较小以及难以有效划分出训练/测试集时很有效果。而在Bagging中采用自助采样法的原因,个人认为在于基学习器数量多,则在数据分配上如果各学习器的数据分配类似则倾向很可能相同,而自主采样会保证有样本从未被选取的几率是36.8%。计算方法:
EFQNhn.png
这样每个基学习器只使用了初始训练集中的越63.2%的数据,剩下的数据可以用于验证集,对集成学习的泛化性能进行“包外估计”。
而随机森林就是采用了决策树作为基学习器的Bagging方法,它由众多的决策树组成,对于测试样本来说,它进入每个决策树,然后由每个决策树独立输出自己的预测,最后可以通过平均法、加权平均法或者投票法对每个决策树的结果进行汇总,得出最终的预测。

Boosting算法和Adaboost:
如果说上面说到的Bagging是并行式集成学习方法,那么Boosting就是个体学习器之间存在强依赖关系、必须串行生成的序列化方法,其中最有代表性的就是Adaboost。众所周知,决策树一般来说会将众多属性集成起来用于决策,但是在Adaboost中的个体基本上都是只使用一个属性,每一个个体被称为stump
EFQ0XT.png
这样的选择使得个体学习器的构建比较简单,达到“弱学习器”的效果。另外在随机森林中,各个决策树之间是相互不影响的,都会独立的给出自己的预测,并且在默认情况下每个决策树的权重相同,但是在Adaboost方法下,某些决策树的权重大于另外的决策树;最后还有一点每个弱学习器的构建都依赖于前一个学习器,新的学习器会将之前学习器的错误率纳入到考虑范围。以上就是Adaboost算法用在随机森林中时的特点。

梯度提升回归树(GBDT):
GBDT作为集成学习的一个重要算法,在被提出之初就和SVM一起被认为是泛化能力较强的算法。具体而言,GDBT是一种迭代的决策树算法,它基于集成学习中的boosting思想,每次迭代都在减少残差的梯度方向新建立一颗决策树,迭代多少次就会生成多少颗决策树。对于分类情况,由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。为了解决这个问题,主要有两个方法,一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值的差来拟合损失。

核支持向量机:
之前有介绍过线性支持向量机,但是现实情况中有很多训练样本并不是线性可分的,对于这样的问题,可将样本从原始空间映射到一个更高维的特征空间中,这样使得样本在该空间中线性可分。但是将样本从本身的空间映射到特征空间后,其内积的计算难度非常高,所以使用一个函数使得样本1和2在特征空间中的内积等于它们在原始样本空间中通过函数计算的结果,这样就省去了在特征空间中计算的问题,这样的函数被称为核函数,这样的支持向量机被称为核支持向量机。