【机器学习算法】13、决策树与随机森林(非常的全面讲解和实践)(一)

简介: 【机器学习算法】13、决策树与随机森林(非常的全面讲解和实践)(一)

1.简介


  决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。


   决策树常用的算法:ID3、C4.5与CART算法。


2.数学基础部分


2.1、熵(Entropy)

熵表示随机变量不确定性的度量,随机变量X的熵定义如下:

熵越大代表随机变量的不确定性就越大。


2.2、条件熵(Conditional Entropy)

设有随机变量(X,Y),其联合概率分布为:

   条件熵H(Y|X)表示在已知随机变量X 的条件下,随机变量Y的不确定度。随机变量X给定的情况下随机变量Y的条件熵H(Y|X)定义为X给定条件下Y的条件概率分布的熵对X 的数学期望:

   当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵(empirical entropy)经验条件熵(empirical conditional entropy)


2.3、信息增益(Information Gain)

   信息增益表示得知特征A的信息而使得类D的信息的不确定性减少的程度。


   特征A对训练数据集D的信息增益g(D,A),定义为集合D 的经验熵H(D)与特征A 给定条件下D的经验条件熵H(D|A)之差,即:

bdaa4a75cad5a277d7dd8f0277911a66.png

   一般地,熵H(D)与条件熵H(D|A)之差称为互信息(Mutual Information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。


   决策树学习应用信息增益准则选择特征。给定训练数据集D和特征A,经验熵H(D)表示对数据集D进行分类的不确定性。而经验条件熵H(D|A)表示在特征A 给定的条件下对数据集D进行分类的不确定性,那么它们的差,即信息增益,就表示由于特征A而使得对数据集D的分类的不确定性减少的程度。不同的特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力。


 缺点:信息增益偏向取值较多的特征

原因:当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较 偏向取值较多的特征。

 

2.4、信息增益比(Information Gain Ratio)

   信息增益比本质:是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。

信息增益比 = 惩罚参数 * 信息增益

   特征A对训练数据集D 的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D 关于特征A的值的熵HA(D)之比,即:

144058fffb4f7ddd28d6fde9d10a2c01.png

   其中的HA(D),对于样本集合D,将当前特征A作为随机变量(取值是特征A的各个特征值),求得的经验熵。


惩罚参数:数据集D以特征A作为随机变量的熵的倒数,即:将特征A取值相同的样本划分到同一个子集中(之前所说数据集的熵是依据类别进行划分的)

985adaa605a04510ff7ef5e39e76ae6c.png

缺点:信息增益比偏向取值较少的特征;  

原因:当特征取值较少时HA(D)的值较小,因此其倒数较大,因而信息增益比较大。因而偏向取值较少的特征。


使用信息增益比:基于以上缺点,并不是直接选择信息增益率最大的特征,而是现在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征。


2.5、Gini指数(Gini Index)

   定义:基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。

基尼指数= 样本被选中的概率 * 样本被分错的概率

   分类问题中,假设有K个类,样本点属于第k类的概率为pk,则概率分布的基尼指数定义为:

e3eb9928c96bb1428d0a54b4a3667739.png

说明:

   1. pk表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-pk);

   2. 样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和;

   3. 当为二分类是,Gini(P) = 2p(1-p);


   对于给定的样本集合D,其基尼指数为(假设集合中有K个类别):

757c4562023c3f5179db9e1e1dd35216.png

如果样本集合D 可以根据特征A是否取某一可能值a被分割成D1、D2两部分,即:

20480fd922d5e2ec4606a9a10e7c9d1e.png

则在特征A的条件下,集合D的基尼指数定义为:

2144507808fb5dd43b7209770003dd1f.png

   基尼指数Gini(D)表示集合D的不确定度,基尼指数Gini(D,A)表示经A=a分割后集合D的不确定度。基尼指数越大,样本集合的不确定度也就越大,这一点与熵很相似。

相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
24 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
12天前
|
算法
树的遍历算法有哪些?
不同的遍历算法适用于不同的应用场景。深度优先搜索常用于搜索、路径查找等问题;广度优先搜索则在图的最短路径、层次相关的问题中较为常用;而二叉搜索树的遍历在数据排序、查找等方面有重要应用。
21 2
|
28天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
16天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
34 0
|
27天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
12天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
13天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
14天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。
|
13天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。

热门文章

最新文章