随机森林和决策树区别_机器学习算法:决策树、随机森林、k-means

一、决策树

1、原理:

决策数是非常常用的算法,算法原理比较容易理解,通过决策节点的条件进行判断,通过决策节点来判断走向,满足条件进入到下一个节点,决策树需要搜索到叶子节点才结束。它是一个预测模型,用于解决二分类问题。例如下图:

随机森林和决策树区别_机器学习算法:决策树、随机森林、k-means_第1张图片
决策树举例图

2、优化方法:

如何选择决策节点的顺序,方法是怎么样的?

每个决策节点可以有多种选择,比如上图中,在第一层除了“是否取健身房”我们还可以选择“是否有好看的电影”,那么我们应该按照什么样的规则来选择,让我们的预测结果更准确呢?选择的方法有很多,这里老师介绍了一种方法,优先选择增益信息最大的决策点来生产决策树,但它不一定是全局最优解,因为没办法证明

什么是信息增益?

信息增益=父节点熵-子节点加权熵(条件熵)

什么是熵、条件熵?

常用的决策树算法有ID3, C4.5和C5.0,生成树算法使用基于度量熵。这一度量是基于信息学理论中熵的概念。

熵:是一个实数值,范围是0-1之间,代表不确定性或混乱程度的指标,熵的值越大代表越不确定。

比如抛硬币,每次落地只会存在正面和反面两种可能,概率是50%,熵就是1,完全不确定。如果每次落地都是正面,那么熵就是0,完全确定。

熵的计算公式:

,其中P(x=i)为随机变量X取值为i的概率。

条件熵:是通过获得更多的信息来减小不确定性的。比如我们在硬币反面增加了重量,导致两面重量不平衡,可能增加了反面落地的几率,因此在此种条件下降低了不确定性。

条件熵的计算公式:

还可以选择将特征向量中连续性的数值转换为离散的类别值,更容易被决策树处理。

3、关于决策树的优缺点:

#优点

好理解、可以直接画出来,用于展示给客户

可支持非线性的问题解决

可以用于特征工程,特征响亮的选择

不需要数据归一化

对数据分布没有偏好,样本数据峰度和偏度可能较大,但几乎没有影响。

取得决策值后,可用SQL、IFELSE来实现,比较容易在关系型数据库或者SQL引擎实现。

#缺点:

容易出现过拟合

对类型不平衡的数据不友好,比如训练数据中类型A和类型B的数据比例偏差非常大

微小的数据改变会改变整个树的形状

训练过程是启发式生成,并不是全局最优解

二、随机森林

1、原理:

随机森林是决策树的集成学习(Ensemble Learning)实现,方法是同时训练多个决策树,综合考虑多个结果,最终得出预测结果。

回归的场景下求各个数的均值,比如3棵树,结果是99%、98%、97%,均值为98%。

分类的场景下做投票,所有树的结果中哪个类型得票数多取哪个。

随机性体现:

带放回的采样,每棵树训练都是从固定的训练集中带回放的随机取一个子集进行训练。

每一次选择分叉特征的时候,都是在随机选择的子集中寻找一个特征。

例如下图:

随机森林和决策树区别_机器学习算法:决策树、随机森林、k-means_第2张图片
随机森林举例

2、随机森林较决策树的优势:

1)、减少过拟合的情况

2)、减少预测的variance,预测值不会因为训练数据的大小变化而剧烈变化

3、课后问答

1)、除了用熵的方式外,可以用基尼系数来分,基尼系数是体现均匀性的方式,数据量比较大的情况下,随机森林算法两种方式效果差不多的。

2)、随机森林可以并行化的运行,训练时间很短。adaboost是一棵树的建立要取决与另一棵树,无法并行计算,训练时间比较长。

三、k-means

1、原理:

k-means数一种聚类算法,属于无监督学习范畴,预先输入一个分类的数量K(正整数),模型将训练数据分为K类,预测数据也属于这K类。

它的原理和计算计算流程大致如下:

1)、对所有训练数据,随机选择分类数量K,K是一个个向量的点。

2)、计算K附件的点到K点的距离(一般是欧氏距离),离哪个近就分为哪个类,直到全部的点分类完毕。

3)、重新计算每个类别的中心点K。

4)、重复过程2和3、直到最后K的位置不再发生变,算法结束。

时间复杂度较高,可以用mapreduce模型并行来计算,适合在集群化的分布式运算下对大数据量进行训练。

2、应用场景

用户分群、行为分群、把图像分成相同的区域、

3、关于K-MEANS几个问题:

1)、一定会收敛吗?

一定会收敛,函数是EM算法,结果会越来越好。它是非凸函数,是一个局部最优解,不是全局最优解。

2)、不同的初始化会得到不同的结果吗?

是,因为初始化的中心点是变化的,因为函数是局部最优解,所以会变化。

3)、它的目标函数是什么?

是EM函数,结果会越来越好。

3、如何选择K?

一种简单的取K方法:通过目标函数来选择K,随着K的增加,目标函数的值会越来越小,接近负无穷。选择目标函数值下降过程中第一个奇点作为K效果较好。如下图K=4。

随机森林和决策树区别_机器学习算法:决策树、随机森林、k-means_第3张图片
k的选择

4、关于k-means++

K-means可能会存在初始化的K个点会距离非常近,导致模型效果不理想。为了避免这个问题,出现了k-means++算法,大致思路是选择第一个初始化点后,选择另一个尽量远的点作为第二个K点。

一般会用该算法来替代k-means。

###########

后记

###########

时间关系,我没有仔细研究代码,如果有小伙伴感兴趣,我会在后面研究后放出来,至少需要研究k-means的目标函数如何实现、信息增益如何实现?

你可能感兴趣的:(随机森林和决策树区别)