机器学习每日之路

1.绪论

1.1 基本术语
【2022.2.7】西瓜书
一条记录是关于一个事件或者对象的描述,称为一个示例(instance)或样本(sample)。

反映事件或对象在某方面的表现或性质的事项,称为属性(attribute)或特征(feature)。

属性的取值称为属性值(attribute value)。

属性张成的空间称为属性空间(attribute space)、样本空间(sample space)或输入空间。

空间中的每个点对应一个坐标向量,一个示例也称为一个特征向量(feature vector)。

从数据中学得模型的过程称为学习(learning)或训练(training)。

学得模型对应了关于数据的某种潜在规律,因此称为假设(hypothesis),潜在规律则称为真相或真实(ground-truth)。

关于示例结果的信息称为标记(lable),拥有了标记信息的示例,则称为样例(example)。

所有标记的集合称为标记空间(lable space)或输出空间。

若预测的是离散值,此类学习任务称为分类(classfication)。若预测的是连续值,此类学习任务称为回归(regression)。

学得模型后,使用其进行预测的过程称为测试(testing)。

将训练集中的样本分为若干组的过程,称为聚类(clustering),其中每一个组称为一个簇(cluster)。

根据训练数据是否拥有标记信息,学习任务可大致分为监督学习(supervised learning)和无监督学习(unsupervised learning)。

学得模型适用于新样本的能力,称为泛化(generalization)能力。

1.2 假设空间
归纳(induction)是从特殊到一般的泛化过程,演绎(deduction)是从一般到特殊的特化(specialization)过程。

归纳学习(induction learning)有狭义和广义之分,广义的归纳学习大体相当于从样例中学习,而狭义的归纳学习则要求从训练数据中学得概念(concept),因此又称为概念学习或概念形成。

学习过程可以看做一个在所有假设组成的空间中进行搜索的过程,搜索目标是找到与训练集匹配(fit)的假设。

可能有多个假设与训练集一致,即存在一个与训练集一致的假设集合,称之为版本空间(version space)。

1.3 归纳偏好
机器学习算法在学习过程中对某种类型假设的偏好,称为 归纳偏好(inductive bias),或者简称为偏好。

奥卡姆剃刀(Occam’s razor)原则:若有多个假设与观察一致,则选择最简单的那个。

【2023.5.30】
统计学习三要素
在这里插入图片描述

在这里插入图片描述
0-1损失函数只告诉你当前对不对,没有告诉你与目标的差距有多大。后面三种都可以

在这里插入图片描述
结构风险加了一个正则化,防止模型学的太好就过过拟合了。

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd20082ce8c34257b666a7055914fdce.png

2.1 经验误差与过拟合

错误率error rate:分类错误的样本数占总数的比例;
精度accuracy:分类正确的样本数占总数的比例,显然,。错误率+精度=1;
误差error:学习器的实际预测输出与样本的真实输出之间的差异;
训练误差training error/经验误差empirical error:学习器在训练集上的误差;
泛化误差generalization error:学习器在新样本上的误差;

一般来说,即使得到了一个这样的模型:对于所有训练数据集,其精度为100%。这样的学习器在多数情况下的表现都不好。
过拟合overfitting:学习器把训练样本学得“太好”,把训练样本自身的一些特点,当成了所有潜在样本都会具有的一般性质,导致泛化能力下降;
欠拟合underfitting:对于训练样本的一般性质都没有学习好。
欠拟合易于克服;过拟合难以克服,且无法彻底避免。

2.2 评估方法
在使用不同的算法(例如十大经典算法),可以从数据集得到不同的模型。从这些模型中,选择最恰当的一个,就是机器学习领域的“模型选择”问题。通常,用户会评估候选模型的泛化误差,然后选择泛化误差最小的那一个模型。

因此,除了给定一个训练集用于学习模型,还要给定一个测试集用于测试学习器。一般来说,通过对数据集采用一定的划分方法,可以将之分为训练集和测试集。对于深度学习而言,还有一个验证集。

留出法就是简单的三七分,二八分。
交叉验证法:就是均分之后交替选择验证测试。
2.3 性能度量
上面讲到了,用测试集的方法,来评估一个模型的泛化能力;而衡量泛化能力的标准,就是性能度量performance measure。
不同的性能度量标准,会带来不同的评判结果。因此,什么样的模型是好的,不仅取决于算法和模型,也要取决于任务需求。
评价指标:
T F为预测对没对,PN为预测的是正还是负。
TP:真实值为Positive,预测值为Positive,即真的正例;
FP:真实值为Negative,预测值为Positive,即假的正例;
FN:真实值为Positive,预测值为Negative,即假的负例;
TN:真实值为Negative,预测值为Negative,即真的负例。
在这里插入图片描述

①准确率(正确率)Accuracy:最经常用的ACC
②精确率(查准率)Precision:将正类预测正确为正类的个数÷预测为正类的总数(预测对的正样本的+预测错为正样本的)=TP/(TP+FP)。
③召回率(查全率)Recall :将正类预测为正类 ÷ 原本正类总数(预测对为正样本的+预测错为负样本的) = TP/(TP+FN)
提升精确率是为了不错报、提升召回率是为了不漏报;未来一周中前2天是地震(正例)模型作预测任务,模型1 为了精确率高,不会瞎预测地震了(只预测最可能的) 说第一天会地震(1个TP),说其余六天不会地震(1个FN、5个TN)(此时精确率1/1=100%,召回率1/2=50%),模型2 为了召回率高,多预测会地震(地震的时候都要预测出来) 说未来前5天全会地震(2个TP,3个FP,2个TN)(精确率为2/7=29%,召回率2/2=100%)。因此在这个任务中我们应该着重提升召回率。

④F1-score:反映了模型的稳健性
在这里插入图片描述
举个总体例子应对面试:

【2.12】ROC曲线和AUC值
【2023.6.18】
当样本不均衡时上面所有指标均失效,不均衡的比例为4:1;因此采用ROC和AUC评价模型。
ROC(全称为Receiver operating characteristic,意为受试者特征曲线)

TPR = TP/(TP+FN) 代表原来为正例的样本被预测为正例的比例,也就是召回率(看的是正例多少被预测对了)
FPR = FP/(FP+TN) 代表原来为反例的样本被预测为正例的比例。(看的是反例多少被预测错了:所有的女都被预测为男了)
在这里插入图片描述
左顶点:TPR所有为正例的样本都预测100%预测为正例,FPR所有为反例的样本0%预测为正例。

AUC(Area Under Curve)是曲线与横向轴围成的面积 ,是一个得到的值,只能用于二分类模型的评价;
曲线越靠近左上方AUC值越大,分类器效果越好。
在样本不平衡的情况下,依然能够对分类器做出合理的评价

见个人博客:https://blog.csdn.net/bucan804228552/article/details/118912573

感知机

函数间隔和几何间隔:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在感知机中使用的是负样本驱动的方法(目的是使的所有样本都分类正确),用的是函数间隔,以后所有方法基本上都是几何间隔。

线性模型

包含普通线性回归模型和广义线性模型
一般都要加上偏置b,为了使得线不必过原点。

普通线性回归模型

包含一元线性回归和多元线性回归

广义线性模型

在这里插入图片描述

岭回归(Ridge)

岭回归是线性回归的正则化版本,即在原来的线性回归的cost function中添加正则项(regularization term)
\alpha \sum_{i=1}^{n} \theta_{i}^{2}在这里插入图片描述

Lasso回归

在这里插入图片描述

弹性网络Elastic Net

在这里插入图片描述

逻辑回归LR:

【6.8】
如何用线性模型做分类?其实我们自需要找一个单调可微函数,将分类任务的真实标记
与线性回归模型的预测值联系起来。就可以达到这一点。你也许会想到单位阶跃函数,将连续值变换为离散量。但是单位阶跃函数不连续,因此希望找到一个函数来替代它。对数几率函数(logistic function),是一种Sigmoid函数能做到这一点。逻辑回归是分类,是线性回归+sigmod函数进行二分类。其函数表达形式如下所示:
在这里插入图片描述

具有如下优点:

无需像贝叶斯那样假设数据分布,直接对分类可能性进行建模,避免假设不准带来的偏差。
得到的是一个概率,比单纯的正例或者反例所含的信息量要大。
对率回归求解的目标函数是任意阶可导的凸函数,具有很好的性质,现有的许多数值优化算法都可以直接用于求解。

K近邻

根据的我的邻居判断类别在这里插入图片描述
K近邻没有显式的训练过程,拿到测试集后就可以直接计算与训练集的样本。K一般取奇数,通过最近的K个进行投票表决。
切比雪夫距离:也叫棋盘距离
https://zhuanlan.zhihu.com/p/374627115
在这里插入图片描述

朴素贝叶斯

概率定义为次数为无限次时发生一件事的可能性。
·联合概率:包含多个条件,且所有条件同时成立的概率
。记作:P(A, B)
。例如:P(程序员,匀称),P(程序员,超重|喜欢)
·条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
。记作:P(AB)
。例如:P(程序员|喜欢),P(程序员,超重|喜欢)
·相互独立︰如果P(A, B)= P(A)P(B),则称事件A与事件B相互独立。

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

朴素:假设特征与特征之间是相互独立的。
朴素贝叶斯就相当于朴素加上贝叶斯。
这样在算联合概率时就可以直接做概率相乘。
应用场景:文本分类,假设词与词之间是相互独立的。
公式为:
在这里插入图片描述
拉普拉斯平滑系数:
优点:
(1) 算法逻辑简单,易于实现
(2)分类过程中时空开销小
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

https://blog.csdn.net/qq_39763246/article/details/119865167
在这里插入图片描述

3.决策树:

【2023.5.8】
决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法
决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树
从根节点走到叶子节点一步一步决策的树。其节点选择的特征前后顺序非常重要,改变顺序会改变结果;可以做分类(通过熵或者gini系数评价)也可以做回归(通过方差或者mse来评价)任务。

3.1决策树的分类

决策树分为两大类,分类树和回归树。
分类树用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面;
回归树用于预测实数值,如明天的温度、用户的年龄、网页的相关程度;

两者的区别:
分类树的结果不能进行加减运算,晴天 晴天没有实际意义;
回归树的结果是预测一个数值,可以进行加减运算,例如 20 岁 3 岁=23 岁。

3.2分类决策树怎么样选择特征?

----依次选择不同的特征作为根节点,然后衡量分类结果的熵,与原来熵相差最大的即是信息增益最大的作为根节点。
①信息:消除随机不确定的东西
②熵:衡量物体内部混乱程度,越混乱熵值越大。用在这里插入图片描述
pi表示概率;pi约接近于1,H(X)越小,因为概率越确定熵越小。
信息增益:= 原来的熵 - 知道某个条件后现在的熵。
信息增益率:=信息增益/属性固有值
在这里插入图片描述
在这里插入图片描述
**加粗样式**

其余方法有:ID3(信息增益 最大的准则;如果各个属性的值的个数差异较大,会发现信息增益偏向值个数多的属性)C4.5(信息增益比/率 最大的准则;既然信息增益偏向值个数多的属性,那我们就给值多的属性进行"惩罚"。) CART(基尼系数)

基尼系数:表示样本集的不纯度,不只有熵;在决策树分支处理方法CART中引入了基尼系数来表示样本集的不纯度
在这里插入图片描述
条件基尼系数表示在一个条件下,随机变量的不确定性。
基尼系数增益:基尼系数 - 条件基尼系数。表示在一个条件下,信息不确定性减少的程度。
在这里插入图片描述

3.4 优缺点

分类决策树的优势:
1、便于理解和解释。树的结构可视化
2、训练需要的数据少,其他机器学习模型通常需要数据规范化,比如构建虚拟变量和移除缺失值
3、由于训练决策树的数据点的数量导致了决策树的使用开销呈指数分布(训练树模型的时间复杂度是参加训练数据点的对数值)
4、能够处理数值型数据和分类数据,其他的技术通常只能用来专门分析某一种的变量类型的数据集;
5、能够处理多路输出问题;
6、使用白盒模型。如果某种给定的情况在模型中是可以观察的,那么就可以轻易的通过布尔逻辑来解释这种情况,相比之下在黑盒模型中的结果就是很难说明清楚了;
7、可以通过数值统计测试来验证该模型。这对解释验证该模型的可靠性成为可能
8、即使是该模型假设的结果越真实模型所提供的数据有些违反,其表现依旧良好

决策树的缺点:
1、决策树模型容易产生一个过于复杂的模型,这样的模型对数据的泛化性能会很差。这就是所谓的过拟合,一些策略像剪枝、设置叶节点所需要的最小样本数或者设置数的最大深度就是避免出现该问题的最有效的方法。(剪枝:在机器学习经典算法中,决策树算法的重要性想必大家都是知道的。不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确了。由于完全决策树对训练样本的特征描述得“过于精确” ,无法实现对新样本的合理分析, 所以此时它不是一棵分析新数据的最佳决策树。解决这个问题的方法就是对决策树进行剪枝,剪去影响预测精度的分支。常见的剪枝策略有预剪枝(pre -pruning)技术和后剪枝(post -pruning )技术两种。预剪枝技术主要是通过建立某些规则限制决策树的充分生长, 后剪枝技术则是待决策树充分生长完毕后再进行剪枝。)
2、决策树可能是不稳定的,因为在数据中的微小变化可能会导致完全不同的树生成。这个问题可以通过决策树的集成来得到缓解;
3、在多方面性能最优和简单化概念的要求下,学习一颗最优决策树通常是一个NP难问题(关于NP问题:https://blog.csdn.net/csshuke/article/details/74909562 )
因此,实际的决策树学习算法是基于启发式算法,例如在每个节点进行局部最优决策的贪心算法,这样的算法不能保证返回全局最有决策树,这个问题可以通过集成学习来训练多颗决策树来缓解,这多棵决策树一般通过对特征和样本又放回的随机采样来生成;
4、有些概念很难被决策树学习到,因为决策树很难清楚的表述那些概念,例如XOR,奇偶或者复用器问题;
5、如果某些类在问题中占主导地位会使得创始的决策树有偏差,因此建议在拟合前先对数据集进行平衡。

【2023.6.20】
CART剪枝
出现过拟合了,需要剪枝,原因有:原因1:噪声、样本冲突,即错误的样本数据。。原因2:特征即属性不能完全作为分类标准。。原因3:巧合的规律性,数据量不够大。
剪枝方法:
(1)预剪枝:边分裂边剪枝,通过验证这个节点分裂前后的精度,如果精度下降此节点就不分裂;这样有一个缺点就是,在分裂的过程中如果只是短暂精度下降再提升的情况没有被考虑。
优点:思想简单,算法高效,采用了贪心的思想,适合大规模问题。
缺点:提前停止生长,有可能存在欠拟合的风险。
(2)后剪枝:后是先从训练集生成一颗完整的决策树,然后自底向上的对决策树进行剪枝,与预剪枝最大的不同就是:
决策树是否生长完整。
决策树的生成是学习局部的模型,后剪枝则是学习整体的模型。
优点:可以最大限度的保留树的各个节点,避免了欠拟合的风险。
缺点:相较于预剪枝的时间开销巨大
【7.21】

3.4 回归决策树

回归决策树的目标是预测连续数值型的输出,而不是离散的类别标签。

步骤:
1.选择最佳的特征来划分数据集。常用的划分准则包括平方误差(Mean Squared Error, MSE)和平均绝对误差(Mean Absolute Error, MAE)等。目标是选择划分后的子集使得预测值与实际值之间的误差最小化。
2.构建决策树:
通过递归地选择最佳的特征和划分点,不断地划分数据集,直到满足终止条件。终止条件可以是达到最大深度、节点中的样本数量达到阈值等。
3.叶节点的预测值:
当停止划分时,每个叶节点上都有一个预测值,表示在该区域中的样本的输出值的预测。可以选择样本在该区域中的平均值作为叶节点的预测值。
4.预测:
使用构建好的回归决策树来进行预测。给定一个新的输入特征向量,通过沿着树的路径进行判断,最终到达叶节点并得到预测值。

优点:
回归决策树具有可解释性强、能够处理非线性关系和高维数据等优点。
缺点:
它也容易过拟合,对噪声和异常值敏感。
优化方法:
可以使用剪枝技术、集成方法(如随机森林)等来改进回归决策树的性能。

4.集成学习:让单个学习效果不好的分类器模型进行增添数量打到好的效果

个体学习器称为“基学习器”,基学习器有时也被直接称为弱学习器;多个弱学习器组合成一个强学习器。
关注基学习器的两点:①如何训练得到(通过改变样本权重还是样本概率分布) ②如何将个体组合在一起
一般来说集成学习可以分为三大类:
①用于减少方差的bagging;是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。
②用于减少偏差的boosting;是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成的序列化方法,代表算法是boosting系列算法。
③用于提升预测结果的stacking

在这里插入图片描述
集成学习之结合策略:
(1)平均法:对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。一般而言,在个体学习器的性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。
(2)投票法:对于分类问题的预测,我们通常使用的是投票法。
最简单的投票法是相对多数投票法(plurality voting),也就是我们常说的少数服从多数,也就是 t个弱学习器的对样本x的预测结果中,数量最多的类别 c为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。

稍微复杂的投票法是绝对多数投票法(majority voting),也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。

更加复杂的是加权投票法(weighted voting),和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

(3)学习法:上两节的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

4.1Bagging:

基于自助采样法(bootstrap sampling)=随机采样(bootstrap sample)从n个数据点中有放回地重复随机抽取一个样本(即同一个样本可被多次抽取),共抽取n次。然后训练多个分类器后取平均。典型代表是随机森林。

4.1.1随机森林:

通过集成学习的Bagging思想将多棵树集成的一种算法,它的基本单元就是决策树。随机森林的名称中有两个关键词,一个是“随机”,对输入的数据和特征进行随机采样。一个就是“森林”,一棵叫做树,那么成百上千棵就可以叫做森林。
优点:
随机森林能处理很高维度的数据(也就是很多特征的数据),并且不用做特征选择。
在训练完之后,随机森林能给出哪些特征比较重要,可解释性强。
训练速度快,容易做成并行化方法(训练时,树与树之间是相互独立的)。
在训练过程中,能够检测到feature之间的影响。
对于不平衡数据集来说,随机森林可以平衡误差。当存在分类不平衡的情况时,随机森林能提供平衡数据集误差的有效方法。
如果有很大一部分的特征遗失,用RF算法仍然可以维持准确度。
随机森林算法有很强的抗干扰能力(具体体现在上面两点)。所以当数据存在大量的数据缺失,用RF也是不错的。
随机森林抗过拟合能力比较强(虽然理论上说随机森林不会产生过拟合现象,但是在现实中噪声是不能忽略的,增加树虽然能够减小过拟合,但没有办法完全消除过拟合,无论怎么增加树都不行,再说树的数目也不可能无限增加的。)
随机森林能够解决分类与回归两种类型的问题,并在这两方面都有相当好的估计表现。(虽然RF能做回归问题,但通常都用RF来解决分类问题)。
在创建随机森林时候,对generlization error(泛化误差)使用的是无偏估计模型,泛化能力强。

缺点:
随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
对于许多统计建模者来说,随机森林给人的感觉就像一个黑盒子,你无法控制模型内部的运行。只能在不同的参数和随机种子之间进行尝试。
可能有很多相似的决策树,掩盖了真实的结果。
对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。
执行数据虽然比boosting等快(随机森林属于bagging),但比单只决策树慢多了

【5.15】

4.2 Boosting:

就是将弱分离器 f_i(x) 组合起来形成强分类器 F(x) 的一种方法
假设预测Y=1000,A预测900,B预测目标是1000-900,然后B预测为80,C的预测目标是1000-900-80。后加入的一定要在原来的基础上增强了,否则不加入。
在这里插入图片描述

4.2.0 GBDT:

GBDT 的全称是 Gradient Boosting Decision Tree,梯度提升决策树。
基于梯度提升算法的学习器叫做 GBM(Gradient Boosting Machine)。理论上,GBM 可以选择各种不同的学习算法作为基学习器。GBDT 实际上是 GBM 的一种情况。
决策树算法相比于其他的算法需要更少的特征工程,比如可以不用做特征标准化,可以很好的处理字段缺失的数据,也可以不用关心特征间是否相互依赖等。决策树能够自动组合多个特征。
不过,单独使用决策树算法时,有容易过拟合缺点。所幸的是,通过各种方法,抑制决策树的复杂性,降低单颗决策树的拟合能力,再通过梯度提升的方法集成多个决策树,最终能够很好的解决过拟合的问题。由此可见,梯度提升方法和决策树学习算法可以互相取长补短,是一对完美的搭档。

至于抑制单颗决策树的复杂度的方法有很多,比如限制树的最大深度、限制叶子节点的最少样本数量、限制节点分裂时的最少样本数量、吸收 bagging 的思想对训练样本采样(subsample),在学习单颗决策树时只使用一部分训练样本、借鉴随机森林的思路在学习单颗决策树时只采样一部分特征、在目标函数中添加正则项惩罚复杂的树结构等。

缺点:
GBDT ->预排序方法(pre-sorted)
(1)空间消耗大。
这样的算法需要保存数据的特征值,还保存了特征排序的结果(例如排序后的索引,为了后续快速的计算分割点),这里需要消耗训练数据两倍的内存。
(2)时间上也有较大的开销。
在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。
(3)对内存(cache)优化不友好。
在预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化。
同时,在每一层长树的时候,需要随机访问一个行索引到叶子索引的数组,并且不同特征访问的顺序也不一样,也会造成较大的cache miss。

4.2.1AdaBoost:

AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,应用于二分类问题,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。A将一些样本a分错了,下个B会将错误样本a的权重增加,分类时多注意a。最后将AB结果相加求平均。

Adaboost算法可以简述为三个步骤:
(1)首先,是初始化训练数据的权值分布D1。假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:w1=1/N。
(2)然后,训练弱分类器hi。具体训练过程中是:如果某个训练样本点,被弱分类器hi准确地分类,那么在构造下一个训练集中,它对应的权值要减小;相反,如果某个训练样本点被错误分类,那么它的权值就应该增大(如下图:相当于将上一轮分类错的样本个数增多,在本轮会多关注样本多的也就是上轮错误的)。权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
(3)最后,将各个训练得到的弱分类器组合成一个强分类器:各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决策作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决策作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
【5.26】
几个要点:
在这里插入图片描述

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

优点
(1)Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。
(2)Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。
(3)Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。
(4)Adaboost对同一个训练样本集训练不同的弱分类器,按照一定的方法把这些弱分类器集合起来,构造一个分类能力很强的强分类器,即“三个臭皮匠赛过一个诸葛亮”。

缺点:
在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。

Adaboost算法的某些特性是非常好的,这里主要介绍Adaboost的两个特性。(1)是训练的错误率上界,随着迭代次数的增加,会逐渐下降;(2)是Adaboost算法即使训练次数很多,也不会出现过拟合的问题。

4.2.2XGboost

XGBoost 是陈天奇等人开源的一个机器学习项目,高效地实现了 GBDT 算法并进行了算法和工程上的许多改进。
对目标函数进行了改进,在过去,我们总是先建立效果优异的模型,再依赖于手动剪枝来调节树模型的复杂度,但在XGBoost中,精确性与复杂度会在训练的每一步被考虑到。主要体现在:XGBoost为损失函数L(y,y)加入结构风险项,构成目标函数O(y,y)。
在这里插入图片描述
GBDT在每一次迭代的时候,都需要遍历整个训练数据多次(计算特征分位数来寻找最佳分裂点),生成所有的叶子结点,然后计算目标函数求得最优的信息增益叶子,最后生成这棵树。

树的复杂度计算:
在这里插入图片描述

4.2.3 LightGBM

GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。

优点
这部分主要总结下 LightGBM 相对于 XGBoost 的优点,从内存和速度两方面进行介绍。
在这里插入图片描述

(1)速度更快
LightGBM 采用了直方图算法将遍历样本转变为遍历直方图,极大的降低了时间复杂度,只需要在最开始计算一遍;
LightGBM 在训练过程中采用单边梯度算法过滤掉梯度小的样本,减少了大量的计算;
LightGBM 采用了基于 Leaf-wise 算法的增长策略构建树,减少了很多不必要的计算量;
LightGBM 采用优化后的特征并行、数据并行方法加速计算,当数据量非常大的时候还可以采用投票并行的策略;
LightGBM 对缓存也进行了优化,增加了缓存命中率;
在这里插入图片描述

(2)内存更小
XGBoost使用预排序后需要记录特征值及其对应样本的统计值的索引,而 LightGBM 使用了直方图算法将特征值转变为 bin 值,且不需要记录特征到样本的索引,将空间复杂度从
降低为
,极大的减少了内存消耗;
LightGBM 采用了直方图算法将存储特征值转变为存储 bin 值,降低了内存消耗;
LightGBM 在训练过程中采用互斥特征捆绑算法减少了特征数量,降低了内存消耗。

缺点
可能会长出比较深的决策树,产生过拟合。因此LightGBM在Leaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合;
Boosting族是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行权重调整,所以随着迭代不断进行,误差会越来越小,模型的偏差(bias)会不断降低。由于LightGBM是基于偏差的算法,所以会对噪点较为敏感;
在寻找最优解时,依据的是最优切分变量,没有将最优解是全部特征的综合这一理念考虑进去;

直方图算法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结 将样本特征进行分箱(默认256),这样避免了XGboost的对所有样本的预排序,仅对256进行排序就可以了;当节点分裂成两个时,右边的直方图等于父节点减左节点的直方图;大大减少了计算量。

在这里插入图片描述

GOSS单边梯度采样:
通过对样本采样的方法来减少计算目标函数增益时候的复杂度。
GOSS算法中,梯度更大的样本点在计算信息增益时会占有更重要的作用,当我们对样本进行下采样的时候保留这些梯度较大的样本点,并随机去掉梯度小的样本。为了避免只要大的梯度样本改变数据分布,真正的流程是首先把样本按照梯度排序,选出梯度最大的a%个样本,然后在剩下小梯度数据中随机选取b%个样本,在计算信息增益的时候,将选出来的b%小梯度样本的信息增益扩大1 - a / b 的倍数。

4.2.4 Catboost

CatBoost(categorical boosting)是一种能够很好地处理类别型特征的梯度提升算法库。
CatBoost 是一种基于 对称决策树(oblivious trees 从第二层开始分裂的指标是共同的)为基学习器实现的参数较少、支持类别型变量和高准确性的GBDT框架,主要解决的痛点是高效合理地处理类别型特征,这一点从它的名字中可以看出来,CatBoost 是由 Categorical 和 Boosting 组成。此外,CatBoost 还通过ordered解决了梯度偏差(Gradient Bias)以及预测偏移(Prediction shift)的问题,从而减少过拟合的发生,进而提高算法的准确性和泛化能力。

对于类别特征的改进,如果类别数目不多,可以使用onehot编码。但如果类别数量成百上千,使用onehot编码会导致特征数量爆炸。CatBoost设计了一种基于预测目标统计值的方法可以将类别特征转化为数值特征。以风控领域的预测信贷用户是否会违约为例,假设有一个类别特征是根据身份证号码解析出来的用户所出生的城市。全国有几百个城市,转化为onehot编码会造成特征维数爆炸。一种非常make sense 的方式是我们用某个城市用户的平均逾期率来作为该城市的数值特征编码。

4.3Stacking
  1. 在训练数据上训练并使用多个模型进行预测,得到多组预测结果,也就是我们所说的超特征(Meta Features);同时我们也对测试数据使用这些模型进行预测,得到测试数据的超特征。

  2. 使用一个新的模型,对这些超特征再进行训练,训练一个从超特征到真实值(ground-truth)的模型;再将测试数据的超特征输入这些模型,得到最后的结果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bu volcano

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值