Machine Learning: from Theory to Practice
Author: TSINGHUA Computer Science & Finance Shiying Zhang 2021011056
Chapter0 Definition and Terms
人工智能 / Artificial Intelligence
计算机科学领域,专注于开发通常需要人类智能的任务,例如策略博弈、自然语言处理等
机器学习 / Machine Learning
是人工智能的一个子集,基于训练的算法(training algorithm),即对数据集进行学习和模式识别,从而进行预测或决策,而非对问题进行直接的人为编程
监督学习 / Supervised Learning:用于训练的数据集是标签的(labeled data)
- 回归问题 / Regression:Trees (Random Forests, GBM, DT / Decision Trees 决策树), Linear / GLMS, Ensemble, Neural Networks
- 分类问题 / Classification:SVM (支撑向量机 / Support Vector Machines), Discriminant Analysis, GNB (高斯朴素贝叶斯分类 / Gaussian Naïve Bayes) , Nearest Neighbor
无监督学习 / Unsupervised Learning:用于训练的数据集没有预先标签(unlabeled data)
聚类 / Clustering:K-Means (K-均值聚类), Gaussian Mixture Model (高斯混合模型), Hierarchical, Neural Networks
半监督学习 / Semi-Supervised Learning:同时使用标签的和未标签的数据集进行训练(algorithm 用 labeled data 识别模式,用 unlabeled data 进一步学习和理解模式)
self-training, generative models, S3VMs, Graph based algorithms, Multiview algorithms
强化学习 / Reinforcement Learning:根据环境反馈进行决策,通过trial and error学习
Markov Decision Process (MDP), Monte-Carlo Simulation (蒙特卡洛模拟)
深度学习 / Deep Learning:使用Artificial Neural Network的特定领域
全连接神经网络,卷积神经网络,循环神经网络
除此之外,机器学习还可以分为基于模型学习和基于实例学习:
- 基于模型学习 / Model-based Learning:对数据进行整体归纳提炼(从实例中构建模型,用模型进行预测)
- 基于实例学习 / Instance-based Learning:未对数据进行整体归纳提炼(学习示例,然后用相似度度量新的实例和已经学习的实例的关系,从而泛化新实例)
机器学习过程的两个阶段是训练(train / fit)和推断(inference / predict)
Chapter1 启发式搜索 Search
寻找起点s
到终点g
的最短路(最短耗散值)
引入:宽度优先搜索(BFS)+ Dijkstra算法、深度优先搜索(DFS)
1.1 A* 算法
![image-20230529161546097](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230529161546097.png)
1. 伪代码及算法描述
优先扩展值最小的节点,直到(在当前CLOSED表中)最小
Notation:
:未被扩展的节点
:已被扩展的节点(OPEN表中)
:已被扩展且子节点也被扩展的节点(CLOSED表中)
:表示所有的子节点
![image-20230529162412086](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230529162412086.png)
算法:
举例:
![image-20230407175828789](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230407175828789.png)
当g(n)
更新时,算法的类节点要重新放回到表中,因此可能会多次重复扩展同一个节点,导致搜索效率下降
2. 算法分析
- 可采纳性定理:条件 保证了A*算法的正确性(只要存在起点
s
到重点g
的路径) - 启发信息定理:如果(目标节点除外),则
对启发函数 的评价方法:平均分叉数b*,越小,说明 越好
设共拓展了层节点,搜索了个节点,则有:
实验表明:是一个比较稳定的常数,同一问题基本不随问题规模变化
1.2 改进版A*算法
启发函数的单调性:如果所有节点和(其中是的子节点),满足:
则称启发函数是单调的
1. 伪代码及算法描述
Notation:
:到目前为止已扩展节点(即表中的节点)的最大值
![image-20230407191030869](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230407191030869.png)
算法:
举例:(注意,下例不满足启发函数单调性条件)
![image-20230407193400544](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230407193400544.png)
的选取其实相当于 ,此时 满足单调性
2. 算法分析
1.3 viterbi 算法
如何通俗地讲解 viterbi 算法?
维特比算法(英语:Viterbi algorithm)是一种动态规划算法,它用于寻找最有可能产生观测事件序列的维特比路径——隐含状态序列
其中,动态转移方程如下:
![image-20230407194225663](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230407194225663.png)
算法:
1. 汉字识别后处理
2. 拼音输入法
在拼音输入法的例子里,上式有,即识别信度为常数,因此问题转变为:
Chapter2 神经网络
神经网络的理论推导 + PyTorch语法实践
MLP / MultiLayer Perceptron(多层感知器神经网络): 由多层全连接神经网络(FCN / Fully-Connected Network)组成的 feed forward neural network,由 input layer,output layer 和 hidden layer 共同组成
CNN / Convolutional Neural Network(卷积神经网络):包含卷积计算且具有深度结构的 feed forward neural network,包括了input layer, convolutional layer, Relu layer, pooling layer and fully-connected / linear layer
RNN / Recurrent Neural Network(循环神经网络):以序列数据为输入,在序列的演进方向进行 recursion,且所有节点/循环单元按链式连接的 recursive neural network
- LSTM / Long Short-Term Memory(长短期记忆网络)
- GRU / Gated Recurrent Unit(门控循环单元)
2.1 全连接神经网络 MLP / FCN
结构:输入层(input layer)+ 若干隐含层(hidden layer)+ 输出层(output layer)
![image-20230530123601813](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530123601813.png)
激活函数 Activation Function
符号函数:,值域为
sigmoid函数:,值域为
双曲正切函数:,值域为,可以由sigmoid线性转换得到
ReLU / 线性整流函数:
Softmax函数:,满足
损失函数 Loss Function
梯度下降法 Gradient Descent
反向传播 Back Propagation
算法过程:
理论推导:
Notations:
:神经元j
(即那一层的第j
个神经元)的第i
个输入
:神经元j
(即那一层的第j
个神经元)的第i
个权重
:神经元j
计算的加权和,即
:即,过程见以下推导
:激活函数,即
输出层
隐含层
最靠近输出层的隐含层:
其它隐含层同上更新参数,
Softmax层:一般在输出层前采用Softmax函数转换为概率,可用于分类问题
2.2 卷积神经网络 CNN
结构:卷积层 + Relu层 + 池化层 + 全连接层等
【卷积层】一个的卷积核(代表一个feature)作用于一张图片,会产生一张feature map
- 卷积核的大小:卷积核的大小决定了其参数量,上例参数量为 ,其中表示偏置参数
- 步长:卷积核每次移动的距离
- 采用填充的方式:使得每层得到的结果和大小和输入一致(这也是为什么大小是奇数)
比如:3*3填充1,5*5填充2
- (输出)通道数:即卷积核的个数
(输入)通道数:即卷积核的厚度
运算逻辑:矩阵对应相乘,各元素之和取平均
结果直观理解:越接近表示与卷积核 feature 越匹配,接近表示没什么关联
![image-20230511014501712](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230511014501712.png)
【Relu层】非线性激活函数Relu()
:保留 feature map 中大于等于0的值,其余所有小于0的数值直接改写为0
![image-20230511014700830](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230511014700830.png)
【池化层】pooling:减少数据量的方式,一般分为最大池化(Max pooling)和平均池化(Average pooling)两种
例如,选择池化尺寸为,选出最大值更新进新的 feature map
![image-20230511014932641](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230511014932641.png)
【全连接层】Fully-Connected / Linear:相邻层的所有节点全部连接
举例:
LeNet神经网络(数字识别)
![image-20230530174340120](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530174340120.png)
VGG-16神经网络(彩色图像)
![image-20230530174524409](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530174524409.png)
神经网络遇到的两大问题:① 梯度消失问题,② 过拟合问题
TextCNN:自然语言处理 NLP
1. 词向量
2. 语言模型 & 词向量的训练
用神经网络(NNLM / Neural Network Language Model)实现语言模型
模型结构:计算一个句子概率的模型 => 训练得到的词向量
Notation:
:其中,表示之前的个词
:其中,表示与对应的维词向量
:第个词向量的边权(用于隐含层第个神经元的计算)
:隐含层的第个神经元,其使用激活函数中的参数表示偏置
:隐含层第个神经元和输出层第个神经元之间的边权
:输出层的第个神经元,其中加权和后的参数表示偏置,输出层共个神经元(对应词表长度)
![image-20230530180351782](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530180351782.png)
模型分析:实际上是用最大似然估计法在确定词向量(以及模型中的权重函数)
举例:
假定语料库有句话,窗口为:“计算机|科学”,“计算机|科学”,“计算机|工程”
则联合概率:,是关于的函数
希望上面的式子概率最大,得到
估计神经网络语言模型的参数:
表示:[给定神经网络参数和上下文窗口,语料库中的词为词表中第个词的概率]最大时的
存在问题
输出层神经元个数等于词表长度(很大)
个输入全连接参数多
word2vec模型
一种简化的神经网络语言模型
两种实现方式:① 连续词袋模型(CBOW),② 跳词模型(Skip-Gram Model)
CBOW模型的特点:
① 词表的数字是连续的
② 词袋中不考虑词语的顺序(是求和运算,无关乎顺序)
③ 霍夫曼树(Hierarchical Softmax)相当于NNLM中的隐含层 + 输出层
下面详细介绍CBOW模型:
Word2vec如何得到词向量-CSDN博客
CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量(one-hot),而输出是一棵哈夫曼树。
![image-20230530185934252](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530185934252.png)
2.3 循环神经网络 RNN
RNN采用反馈网络机制,擅长处理序列数据(数据先后有所联系)
结构:全连接神经网络CNN的基础上增加上一时刻隐藏层反馈算法
![image-20230530193003354](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530193003354.png)
![image-20230530193230433](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530193230433.png)
单向RNN存在的问题:序列前面的内容被后面的内容淹没
双向循环神经网络
![image-20230530193622081](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530193622081.png)
2.3.1 长短期记忆网络 LSTM
简单RNN存在的问题:
① 长期依赖问题(如:北京是一个美丽的(城市)vs 北京市一个美丽的(姑娘))
② 重点选择问题(不同任务词的重要性不同)
![image-20230530195517606](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530195517606.png)
2.3.2 GRU
相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率
结构:LSTM的基础上,使用更少的门达到同样的处理效果
Chapter3 对抗搜索
博弈问题:双人 + 一人一步交替进行 + 双方信息完备 + 零和博弈
场景(极小-极大模型):A和B对抗博弈,一方A以评分(score)大为优,另一方B以评分小为优
3.1 α-β剪枝算法
极大节点[]
的下界为α,极小节点()
的上界为β
剪枝条件:(注意,这里的“祖先”不只包括“父节点”)
后辈节点的β值≤祖先节点的α值(极小≤极大)时,α剪枝
后辈节点的α值≥祖先节点的β值时(极大≥极小)时,β剪枝
![image-20230530201348352](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530201348352.png)
注意:一次剪枝过程只得到一次走步
方法问题:需要大量的专家知识
3.2 蒙特卡洛方法 MCM
蒙特卡洛方法(Monte Carlo methods)通过随机抽样、基于大数定律近似计算出问题的解或者评估问题的概率分布。即当样本量足够大时,样本的统计特征会趋近于总体的真实特征。
优势:应用于各种复杂的数值计算和概率统计问题,不需要事先对问题进行严格的数学推导,只需要进行大量的随机抽样和分析
劣势:计算效率通常较低,需要大量的计算资源和时间
接下来介绍蒙特卡洛树搜索 MCTS / Monte Carlo Tree Search:
![蒙特卡洛树搜索- 维基百科,自由的百科全书](https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/MCTS_(English).svg/808px-MCTS_(English).svg.png)
一种简介的理解方式:
步骤:选择(Select) 扩展(Expand) 模拟(Stimulate) 回溯(BackPropagate) 决策(Decide)
之后介绍课本上的MCTS步骤
蒙特卡洛树搜索通常包括以下三个阶段:
选择(Selection):从当前状态开始,根据一定的策略选择一个子节点进行扩展,即上述代码中的
不停的遍历、扩展节点
- 对于尚未完全被拓展的节点,随机选取未被扩展的子节点进行扩展(
expand()
) - 对于完全被扩展的节点,选取最有希望的子节点(
bestChild()
)重复上述步骤
扩展(Expansion):对选定的子节点进行扩展,生成新的子节点
模拟(Simulation):通过随机模拟的方式,在新生成的子节点上进行多次完整的随机模拟或者游戏对局,即上述代码中的
回溯(Backpropagation):根据模拟的结果,更新从根节点到当前节点路径上的统计信息,如胜率、访问次数等即上述代码中的
注意:更新的过程每一层都要“转换身份 / 正负号”!
决策(Decision):当到了一定的迭代次数或者时间之后结束,选择根节点下最好的子节点作为本次决策的结果,即上述代码中的
以上叙述中,“节点”表示某个需要决策的局面,或者当前状态(status)
UCT:“最有希望”的子节点用什么准则描述?
UCB算法(Upper Confidence Bound,信心上限算法):
UCT算法(Upper Confidence Bound Apply to Tree,上限置信区间算法):UCB算法 + MCTS算法
注意:UCT和上述MCTS的叙述不同——UCT中节点标注“获胜次数 / 模拟总次数”中的“获胜次数”是从本节点角度说的(下图中黑色节点代表己方状态,白色节点代表对手状态)
![image-20230612174449916](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230612174449916.png)
AlphaGo原理
待补充
3.3 深度强化学习方法(围棋)
强化学习:学习“做什么才能使得收益最大化”的方法;学习者不会被告知如何做,必须自己通过尝试发现哪些动作会产生最大的收益
特征:试错和延迟收益(区别于监督学习)
深度强化学习:用深度学习(神经网络)实现的强化学习;关键在于损失函数的定义
三种实现方式:基于策略梯度的强化学习、基于价值评估的强化学习、基于演员-评价方法的强化学习
基于策略梯度的强化学习:学习到的是每个落子点获胜的概率
数据:自我博弈产生,
Notations:
:当前棋局
:棋局下在处行棋
:棋局下在处行棋的获胜概率
:胜负值,胜为1,负为-1
损失函数:
假设获胜者的行为都是正确的,负者行为都是不正确的
假设获负时对权重的修改量大小与获胜时一样,方向相反
![image-20230530205037686](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530205037686.png)
注意:
- 在强化学习过程中,每个样本只使用一次
- 基于策略梯度的强化学习方法学到的是在每个可落子点行棋的获胜概率(监督学习策略网络学到的是在某个可落子点行棋的概率)
基于价值评估的强化学习:学习到的是每个落子点获取最大收益的概率
对一个行棋点的价值,也就是收益进行评估
- 输入:当前棋局和行棋点
- 输出:取值在[-1,1]之间的估值
数据:自我博弈产生,
Notations:
:当前棋局
:棋局下在处行棋
:棋局下在处行棋时网络的输出
:胜负值,胜为1,负为-1
损失函数:
![image-20230519103720084](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230519103720084.png)
基于演员-评价方法的强化学习:学习到的是每个落子点获得最大收益增量的概率
![image-20230530205739796](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230530205739796.png)
![image-20230519104348703](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230519104348703.png)
收益增量评价一步棋的好坏:
Notations:
:当前棋局的预期收益,取值范围为
:棋局下在处行棋后的收益,取值范围为
:收益增量,取值范围为,越大越说明走了一步妙招
损失函数:
- 评价部分:
- 演员部分:,这里为棋局下在处行棋的
获胜概率 - 综合损失函数:
AlphaGo Zero 强化学习
待补充
Chapter4 统计机器学习
统计机器学习方法:学习算法根据训练集,从假设空间中选择一个最好的
![image-20230522153203459](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230522153203459.png)
三要素:模型、策略、算法
模型:学习什么样的模型(条件概率分布、决策函数)
策略:模型选择的准则(经验风险最小化、结构风险最小化)
算法:模型学习的算法(一般归结为一个最优化问题)
4.1 支撑向量机 SVM
SVM:Support Vector Machines,是一个二分类器——特征空间上的间隔最大化线性分类器,通过核技巧可以实现非线性分类
函数间隔:
几何间隔:
最优分界面:即间隔最大的超平面,满足
![image-20230522154959078](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230522154959078.png)
由于函数间隔是可缩放的,成比例变化不影响最优化问题,所以可取
转化为如下的凸二次规划问题:
1. SVM与对偶算法
原始问题:
定义拉格朗日函数:
拉格朗日函数与原始优化问题的关系:
求解对偶问题:对求偏导令其为并代入(下式为二维的情况)
由此可以解得 利用KKT条件,得到:
选择一个 其中,对应的样本称为支持向量
例题:
![image-20230612195649546](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230612195649546.png)
2. “线性不可分”支持向量机
某些点线性不可分,意味着这些点不满足函数间隔大于等于的条件。为此引入松弛变量,使得:
称为软间隔最大化。其中为惩罚参数,代表目标函数惩罚项的权重。
此时,Lagrange对偶函数为:
求解思路同前,但是的计算从变为:
选择一个 其中,对应的样本称为(软间隔的)支持向量:
- 若,则,在间隔边界上
- 若,,则分类正确,在间隔边界与分离超平面之间
- 若,,则在超平面上
- 若,,则位于误分一侧
![image-20230601115650717](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230601115650717.png)
![image-20230601120254270](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230601120254270.png)
线性可分时,最大间隔是取函数间隔为,软划分时,是
注意:即使是线性可分问题,如果选取不合适,也有可能存在软支持向量
3. 非线性支持向量机
设变换:,原空间的椭圆:,可以变换为新空间中的直线:。这样原空间的非线性可分问题,变为了新空间线性可分问题。
![image-20230601121612257](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230601121612257.png)
核技巧:通过一个非线性变换将输入空间X(欧式空间或者离散集合)对应于一个特征空间H(希尔伯特空间),使得在输入空间X的超曲面模型对应于特征空间H中的超平面模型(支持向量机)。分类问题的学习就可以通过在H空间中求解线性支持向量机完成。
非线性支持向量机的对偶问题:
核函数:设是输入空间,特征空间。如果存在映射函数
使得对所有,函数满足:
(内积) 则称为核函数,为映射函数。
注意:映射函数不唯一(甚至映射到的特征空间的维度也不唯一)
因此,非线性支持向量机的对偶问题化简为:
选择一个分量:分解超平面:或:决策函数: 正定核的充要条件
设,是定义在上的对称函数,则为正定核的充要条件是:对,,对应的Gram矩阵是半正定矩阵
常用的核函数
- 多项式核函数:
越大,函数分界超平面越复杂
- 高斯核函数:
可以认为是万能的核函数
超参过大可能造成欠拟合,过小可能造成过拟合
序列最小最优化算法 SMO / Sequential Minimal Optimization
抽象来说,每次取两个求最值,检验KKT条件,迭代求解
SVM用于求解多分类问题:
- 一对多:某类为正例,其余为负例;分类时将未知样本分类为具有最大分类函数值的那类(共构造个分类器);问题:样本不平衡
- 一对一:任意两类构造一个SVM(共构造个分类器),分类时采取投票法决定类别(效果最好,一般为默认情况)
- 层次法:所有类先分成两类
文本分类的特征抽取
文本表达为一个向量:,表示词项在文档中的权重
- 词频(表示第个词项在第个文档中的词频)权重作为
问题:只用词频不考虑具体内容的问题,如若想要抽取“清华”相关的新闻,则那些讨论“大学”(与分类无关的词语)的文章,“大学”一次反复出现会减弱“清华”的权重
- 权重
文档频率出现词项的文档数训练集的文档总数
逆文档频率,认为比较少的词汇才是对分类真正有用的
权重:,用逆文档频率加权(通常取)
4.2 决策树
给定训练集:,其中为输入实例,为特征个数,为类标记,,为样本容量
决策树学习就是从训练集中归纳出一组分类规则,得到一个与训练集矛盾较小的决策树的过程——是一个NPC问题,所以一般采用启发式方法得到一个近似解(损失函数最小作为优化目标)
特征选择:用信息增益选择特征
随机变量的熵:,其中,也记作,衡量一个样本集的“混乱程度”(如50-50男女的班级熵最高,20-80男女比例的班级熵比较低),其中表示个类别(二分类有);当概率由数据集估计得到时,记作
条件熵:,表示已知时的不确定性,其中表示特征有个取值
特征对数据集的信息增益定义为:,即某个特征对数据集进行分类的不确定性减少的程度,衡量特征分类能力的强弱
举例:设训练集,个类,特征有个不同的取值,的不同取值将划分为个子集,其中中属于类的样本的集合为,表示样本个数,则信息增益计算如下:
信息增益
1. ID3算法
选择一个最大信息增益的特征,如果它足够好(信息增益比较大),那么就按这个特征先分一次类,然后递归建树即可
输入:训练集,特征集,阈值
输出:决策树
- 若中所有实例属于同一类,则为单节点树,将作为该节点的类标记,返回
- 若为空,则为单节点树,将中实例数最大的类作为作为该节点的类标记,返回
- 否则计算中各特征对的信息增益,选择信息增益最大的特征
- 如果的信息增益小于阈值,则置为单节点树,将中实例数最大的类作为该节点的类标记,返回
- 否则,对的每一可能值,依将分割为若干子集,作为的子节点
- 对于的每个子节点,若为空,则将中实例最大的类作为标记,构建子节点(比如特征为头发长度,男女分类,没有中发,则该节点返回男女中较多的类别)
- 否则,以为训练集,以为特征集,递归地调用步1~步6,得到子树,返回
存在的问题:倾向于选择分支比较多的属性
![image-20230617135906181](https://cdn.jsdelivr.net/gh/Catherine0120/ics_image/image-20230617135906181.png)
2. C4.5算法
信息增益比:,其中
C4.5增加了对连续值属性的处理,对于连续值属性,找到一个属性值,将的划分到左子树,的划分到右子树
存在的问题:倾向于选择分割不均匀的特征
解决办法:先选择个信息增益大的特征,再从这个特征中选择信息增益比最大的特征
后来发展到了C5.0
3. 决策树的剪枝
后剪枝(先生成树再剪枝):为了防止出现过拟合,从已经生成的树上裁掉一些子树或者叶节点,将其父节点作为新的叶节点,用其实例数最大的类别作为标记。
当数据量小时,直接利用训练集进行剪枝
从下向上逐步剪枝;再验证集上测试性能,直到性能下降位置
剪枝的数学模型:当确定时,选择损失函数最小的模型
树的叶节点个数为,是树的叶节点,该节点有个样本,其中类的样本点有个(),为叶节点上的经验熵,为参数
表示模型对训练数据的预测误差,表示模型的复杂程度
损失函数:经验熵:记:有: 通俗理解:每个节点的经验熵该节点样本个个数整棵树规模的权重值
方法就是贪心,通过从树叶开始向上回溯,如果说损失函数减小,那么剪枝
4. 随机森林
随机森林是由多个决策树组成的分类器;通过投票机制改善决策树
单个决策树的生成:有放回的数据采样,属性(特征)的采样
集外数据的使用:单个决策树的未用到的数据