常见机器学习算法

决策树

仍然是为了解决分类问题所提出的一种解决思路。即通过一颗树结构来从上而下地向下查询结果(这种解决方法也比较符合人类的思维)这种方法可以在训练数据集上达到100%的准确率。然后问题的关键即是每次选择什么样的属性作为“if-then”树节点的条件选择了。然后每次划分越“纯”的话,就越有利于我们通过几次查询来获得结果。

衡量纯不纯的是如下的几个准则,信息增益基尼增益方差度量

(1) 信息增益

该准则基于熵,熵的定义为:

$$E(p) = -\sum_{i=1}^N p_ilog(p_i)$$

其中N是一个集合中类别的总数,p_i则是第i类出现的概率。

对于一个有N个种类的集合D,该集合的熵定义为如下:

$$H(D) = -\sum_{i=1}^N p_ilog(p_i)$$

若此时将该集合D根据属性A划分一次,得到C1和C2的两个集合,则划分后的总熵为:

$$H(D|A) = \frac{C1}{D}C1-\sum_{i=1}^N1 p_ilog(p_i) – \frac{C2}{D}\sum_{i=1}^N2 p_ilog(p_i)$$

此时,定义信息增益如下:

$$Gain(D; A) = H(D) – H(D|A)$$

随着决策树的不断生长,会使得熵会不断减小,因此信息增益是一个正值。而信息增益越大代表该属性的划分能力越强

(2) Gini增益

该准则基于基尼指数,基尼指数定义为:

$$Gini(D) = 1 – \sum_{i=1}^{N} p_i^2$$

若将集合D按照属性划分为C1和C2,则此时的Gini指数为:

$$H(D|A) = \frac{C1}{D}C1\sum_{i=1}^{N} p_i^2 – \frac{C2}{D}\sum_{i=1}^{N} p_i^2$$

按照每个特征进行划分计算每个特征的Gini指数,然后选择最小的那个特征作为当前层的决策树。


AdaBoost

boosting是一种与bagging很类似的技术,将原始数据集选择S次后得到S个新数据集,新数据集与原始数据集大小相等,每个数据集都是通过在原始数据集中随机选择一个样本来替换得到的,这就意味着可以多次选择同一个样本。在S个数据集建好之后,将某个学习算法分别作用于每个数据集就得到了S个分类器,当我们要对新数据分类时,就可以用这S个分类器进行分类,选择分类器投票结果最多的类别作为最后分类结果。boosting通过集中关注被已有分类器错分的数据来获得新的分类器,boosting给每个分类器的权重不相等,每个权重代表的是对应的分类器在上一轮迭代中的成功度,分类结果是基于所有分类器的加权求和得到的。

是Adaptive Boosting方法的简称。其中Boosting是一种常见的思路,即我们在做决策的的时候,往往需要综合多个专家的意见去做决定。然后正如adaptive的意思自适应一样,我们通过不断调整不同弱分类器的加权系数alpha的值和每一个弱分类器的样本权重D来分别加权不同弱分类器和每个弱分类器中的样本权重(使得正确样本的权重降低,而错误分类的样本权重变高)并不断迭代直到训练错误率为0或者弱分类器的数目达到用户的指定值为止

https://www.jianshu.com/p/a6426f4c4e64

这个是几个算法之间的比较:https://blog.csdn.net/sinat_32547403/article/details/72911193

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注