《数据分析实战》总结二之分类算法:决策树,朴素贝叶斯,SVM,KNN,Adaboost

1 决策树

1.1 工作原理

把以前的经验总结出来,最后得到结果

比如打篮球,一般会根据“天气”、“温度”、“湿度”、“刮风”这几个条件来判断,最后得到结果:去打篮球?还是不去?
在这里插入图片描述
在做决策树的时候,会经历两个阶段:构造和剪枝。

1.2 构造

构造就是通过选择什么属性作为节点来生成一棵完整的决策树

节点类型:

  1. 根节点:就是树的最顶端,最开始的那个节点。在上图中,“天气”就是一个根节点;
  2. 内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;
  3. 叶节点:就是树最底部的节点,也就是决策结果。

需要解决三个重要问题:

  1. 选择哪个属性作为根节点;
  2. 选择哪些属性作为子节点;
  3. 什么时候停止并得到目标状态,即叶节点。

纯度:可以把决策树的构造过程理解成为寻找纯净划分的过程。数学上可以用纯度来表示,纯度换一种方式来解释就是让目标变量的分歧最小。

信息熵:表示了信息的不确定度,其计算公式为:
在这里插入图片描述
p(i|t) 代表了节点 t 为分类 i 的概率,其中 log2 为取以 2 为底的对数。
它能帮我们反映出来这个信息的不确定度。当不确定性越大时,它所包含的信息量也就越大,信息熵也就越高。

信息熵越大,纯度越低。
当集合中的所有样本均匀混合时,信息熵最大,纯度最低。

在构造决策树的时候,会基于纯度来构建。而经典的 “不纯度”的指标有三种,分别是:
信息增益(ID3 算法)、信息增益率(C4.5 算法)以及基尼指数(Cart 算法)。

ID3 算法计算的是信息增益:划分可以带来纯度的提高,信息熵的下降。
在这里插入图片描述
C4.5改进了ID3算法:

  1. 采用信息增益率

  2. 采用悲观剪枝

  3. 离散化处理连续属性

  4. 处理缺失值

CART请见下一节

1.3 剪枝

剪枝就是给决策树瘦身。

目的:不需要太多的判断,同样可以得到不错的结果。之所以这么做,是为了防止“过拟合”(Overfitting)现象的发生。

过拟合:指的就是模型的训练结果“太好了”,以至于在实际应用的过程中,会存在“死板”的情况,导致分类错误。

造成过拟合的原因:训练集中样本量较小

泛化能力:分类器通过训练集抽象出来的分类能力;
如果太依赖于训练集的数据,那么得到的决策树容错率就会比较低,泛化能力差;
因为训练集只是全部数据的抽样,并不能体现全部数据的特点;
如果决策树选择的属性过多,构造出来的决策树一定能够“完美”地把训练集中的样本分类,但是这样就会把训练集中一些数据的特点当成所有数据的特点,但这个特点不一定是全部数据的特点,这就使得这个决策树在真实的数据分类中出现错误,也就是模型的“泛化能力”差。

剪枝的方法:预剪树和后剪枝:

预剪枝是在决策树构造时就进行剪枝。
方法是:在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。

后剪枝就是在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。
方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类。

1.4 CART

CART 算法,英文全称叫做Classification And Regression Tree,中文叫做分类回归树。

ID3 和 C4.5 算法可以生成二叉树或多叉树,而 CART 只支持二叉树;
同时 CART 决策树比较特殊,既可以作分类树,又可以作回归树。

分类树和回归树:如下训练集,如果构造了一棵决策树,想要基于数据判断这个人的职业身份,这个就属于分类
树,因为是从几个分类中来做选择。如果是给定了数据,想要预测这个人的年龄,那就属于回归树
在这里插入图片描述
分类树可以处理离散数据,也就是数据种类有限的数据,它输出的是样本的类别;
回归树可以对连续型的数值进行预测,也就是数据在某个区间内都有取值的可能,它输出的是一个数值。

基尼系数本身反应了样本的不确定度。当基尼系数越小的时候,说明样本之间的差异性小,不确定程度低。

1.4.1 CART 分类树的工作流程

CART 分类树实际上是基于基尼系数来做属性划分的。

节点的 GINI 系数的计算公式为:
在这里插入图片描述
p(Ck|t) 表示节点 t 属于类别 Ck 的概率,节点 t 的基尼系数为 1 减去各类别 Ck 概率平方和。

假设属性 A 将节点 D 划分成了 D1 和 D2,则节点 D 的基尼系数等于子节点 D1 和 D2 的归一化基尼系数之和,用公式表示为:
在这里插入图片描述

1.4.2 如何使用 CART 算法来创建分类树

使用skleran

1.4.3 CART 回归树的工作流程

CART 回归树划分数据集的过程和分类树的过程是一样的,只是回归树得到的预测结果是连续值,而且评判“不纯度”的指标不同。

在 CART 分类树中采用的是基尼系数作为标准,在 CART 回归树中要根据样本的混乱程度,也就是样本的离散程度来评价“不纯度”。

样本的离散程度具体的计算方式:先计算所有样本的均值,然后计算每个样本值到均值的差值。
假设 x 为样本的个体,均值为 u。为了统计样本的离散程度,可以取差值的绝对值,或者方差。

差值的绝对值为样本值减去样本均值的绝对值:
在这里插入图片描述
方差为每个样本值减去样本均值的平方和除以样本个数:
在这里插入图片描述

1.4.4 如何使用 CART 回归树做预测

使用skleran

1.4.5 CART 决策树的剪枝

CART 决策树的剪枝主要采用的是 CCP 方法,它是一种后剪枝的方法,英文全称叫做cost-complexity prune,中文叫做代价复杂度。这种剪枝方式用到一个指标叫做节点的表面误差率增益值,以此作为剪枝前后误差的定义。用公式表示则是:
在这里插入图片描述
其中 Tt 代表以 t 为根节点的子树,C(Tt) 表示节点 t 的子树没被裁剪时子树 Tt 的误差,C(t) 表示节点 t 的子树被剪枝后节点 t 的误差,|Tt|代子树 Tt 的叶子数,剪枝后,T 的叶子数减少了|Tt|-1。

1.5 流程

在这里插入图片描述
模型准确率需要考虑是否有测试集的实际结果可以做对比,当测试集没有真实结果可以对比时,需要使用 K 折交叉验证 cross_val_score;
原理是拿出大部分样本进行训练,少量的用于分类器的验证。K 折交叉验证,就是做 K 次交叉验证,每次选取 K 分之一的数据作为验证,其余作为训练。轮流 K 次,取平均值。

2 朴素贝叶斯

2.1 贝叶斯原理

概念:

先验概率:通过经验来判断事情发生的概率

后验概率:发生结果之后,推测原因的概率

条件概率:事件 A 在另外一个事件 B 已经发生条件下的发生概率,表示为 P(A|B)

似然(可能性)函数:把概率模型的训练过程理解为求参数估计的过程,此函数就是关于统计参数的函数

贝叶斯公式:
在这里插入图片描述

  • 贝叶斯原理、贝叶斯分类和朴素贝叶斯这三者之间的关系

贝叶斯原理是最大的概念,它解决了概率论中“逆向概率”的问题,在这个理论基础上,人们设计出了贝叶斯分类器,朴素贝叶斯分类是贝叶斯分类器中的一种,也是最简单,最常用的分类器。朴素贝叶斯之所以朴素是因为它假设属性是相互独立的,因此对实际情况有所约束,如果属性之间存在关联,分类准确率会降低。
在这里插入图片描述

2.2 朴素贝叶斯

思想:对于给出的未知物体想要进行分类,就需要求解在这个未知物体出现的条件下各个类别出现的概率,哪个最大,就认为这个未知物体属于哪个分类。

此算法假设每个输入变量是独立的,这是一个强硬的假设,实际情况并不一定

朴素贝叶斯模型由两种类型的概率组成:

每个类别的概率P(Cj)

每个属性的条件概率P(Ai|Cj)

在朴素贝叶斯中要统计的是属性的条件概率

2.3 朴素贝叶斯分类工作原理

离散变量:直接使用贝叶斯公式进行计算

连续变量:假设变量为正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值

2.4 朴素贝叶斯分类工作流程

朴素贝叶斯分类常用于文本分类,其工作流程为:
在这里插入图片描述

3 SVM

英文叫 Support Vector Machine,中文名为支持向量机,是常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型。

有监督的学习模型:指的是工程师需要事先对数据打上分类标签,这样机器就知道这个数据属于哪个分类。

SVM 作为有监督的学习模型,通常可以帮我们模式识别、分类以及回归分析。

作用:比如桌子上放了红色和蓝色两种球,要用一根棍子将这两种颜色的球分开,那么用SVM计算的过程就是找到这个超平面(棍子)的过程,这个超平面就是 SVM 分类器,能将不同的样本划分开,同时使得样本集中的点到这个分类超平面的最小距离(即下文所说的分类间隔)最大化。
在这里插入图片描述
会有不同的划分方法,这里引入一个 SVM 特有的概念:分类间隔

在保证决策面不变,且分类不产生错误的情况下,我们可以移动决策面 C,直到产生两个极限的位置:如图中的决策面 A 和决策面 B。极限的位置是指,如果越过了这个位置,就会产生分类错误。这样的话,两个极限位置 A 和 B 之间的分界线 C 就是最优决策面。极限位置到最优决策面 C 之间的距离,就是“分类间隔”,英文叫做 margin,拥有“最大间隔”(max margin)的决策面就是 SVM 要找的最优解。

在这里插入图片描述
点到超平面的距离公式:
在这里插入图片描述
定义某类样本集到超平面的距离是这个样本集合内的样本到超平面的最短距离;
用 di 代表点 xi 到超平面 wxi+b=0 的欧氏距离,因此我们要求 的是di 的最小值,用它来代表这个样本到超平面的最短距离,其公式为:||w||为超平面的范数
在这里插入图片描述
概念:
硬间隔指的就是完全分类准确,不能存在分类错误的情况;
软间隔,就是允许一定量的样本分类错误,一般情况都是软间隔;
如果样本集是个非线性的数据,那么需要引入核函数这个概念:它可以将样本从原始空间映射到一个更高维的特质空间中,使得样本在新的空间中线性可分;
软间隔和核函数的提出,都是为了方便对上面超平面公式中的 w* 和 b* 进行求解,从而得到最大分类间隔的超平面。

SVM 如何解决多分类问题:SVM 本身是一个二值分类器,最初是为二分类问题设计的,因此可以将多个二分类器组合起来形成一个多分类器,常见的有“一对多法”和“一对一法”两种。

4 KNN

KNN 的英文叫 K-Nearest Neighbor,其工作原理分为三步:

1 计算待分类物体与其他物体之间的距离

2 统计距离最近的 K 个邻居

3 对于 K 个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪一类。

K如何确定?K 值应该是个实践出来的结果,在工程上一般采用交叉验证的方式选取 K 值:

把样本集中的大部分样本作为训练集,剩余的小部分样本用于预测,来验证分类模型的准确性。

所以一般会把 K 值选取在较小的范围内,同时把验证集上准确率最高的那一个最终确定作为 K 值。

距离如何计算?有五种:

1 欧氏距离

n维空间中:

在这里插入图片描述

2 曼哈顿距离:等于两个点在坐标系上绝对轴距总和

在这里插入图片描述

3 闵可夫斯基距离

4 切比雪夫距离不是一个距离,而是一组距离的定义。对于 n 维空间中的两个点 x(x1,x2,…,xn) 和 y(y1,y2,…,yn) , x 和 y 两点之间的闵可夫斯基距离为:

在这里插入图片描述

其中 p 代表空间的维数,当 p=1 时,就是曼哈顿距离;当 p=2 时,就是欧氏距离;当p→∞时,就是切比雪夫距离。

两个点之间的切比雪夫距离就是这两个点坐标数值差的绝对值的最大值,用数学表示就是:max(|x1-y1|,|x2-y2|)。

5 余弦距离

搜索关键词推荐中经常使用

KD树:KNN 的计算过程是大量计算样本点之间的距离。为了减少计算距离次数,提升 KNN 的搜索效率,人们提出了 KD树(二叉树结构)

KNN 不仅可以做分类,还可以做回归:

对于一个新点,需要找出这个点的 K 个最近邻居,然后将这些邻居的属性的平均值赋给该点,就可以得到该点的属性。

不同邻居的影响力权重可以设置为不同的大小

5 AdaBoost

在数据挖掘中,分类算法可以说是核心算法,其中AdaBoost 算法与随机森林算法一样都属于分类算法中的集成算法。

集成:集思广益,博取众长

集成算法通常有两种方式,分别是投票选举(bagging)和再学习(boosting),一个是选,一个是加强

投票选举的场景类似把专家召集到一个会议桌前,当做一个决定的时候,让 K 个专家(K 个模型)分别进行分类,然后选择出现次数最多的那个类作为最终的分类结果。

再学习相当于把 K 个专家(K 个分类器)进行加权融合,形成一个新的超级专家(强分类器),让这个超级专家做判断。

AdaBoost算法的工作原理:英文全称是 Adaptive Boosting,中文含义是自适应提升算法,是对 Boosting 算法的一种实现。

公式:
在这里插入图片描述

每个弱分类器在强分类器中的权重是如何计算的?
在这里插入图片描述
如何在每次训练迭代的过程中选择最优的弱分类器?

AdaBoost 会判断每次训练的样本是否正确分类;
对于正确分类的样本,降低它的权重,对于被错误分类的样本,增加它的权重,再基于上一次得到的分类准确率,来确定这次训练样本中每个样本的权重,然后将修改过权重的新数据集传递给下一层的分类器进行训练。

这样做的好处:通过每一轮训练样本的动态权重,可以让训练的焦点集中到难分类的样本上,最终得到的弱分类器的组合更容易得到更高的分类准确率。

用Dk+1 代表第 k+1 轮训练中,样本的权重集合,其中 Wk+1,1代表第 k+1 轮中第一个样本的权重,以此类推 Wk+1,N代表第 k+1 轮中第 N 个样本的权重,因此用公式表示为:
在这里插入图片描述

经过指定的轮数训练后,将得出的弱分类器的权重相加,就得到了最终的强分类器

随机森林:英文是 Random Forest,英文简写是 RF。
实际上是一个包含多个决策树的分类器,每一个子分类器都是一棵 CART 分类回归树。所以随机森林既可以做分类,又可以做回归。
当它做分类的时候,输出结果是每个子分类器的分类结果中最多的那个,可以理解是每个分类器都做投票,取投票最多的那个结果。
当它做回归的时候,输出结果是每棵 CART 树的回归结果的平均值。

发布了235 篇原创文章 · 获赞 264 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41594698/article/details/102768627