集成学习
- 格式:docx
- 大小:883.08 KB
- 文档页数:13
机器学习中的集成学习算法一、集成学习简介集成学习(Ensemble Learning)是机器学习中的一种重要算法。
它的主要思想是将多个弱学习算法集合起来形成一个强学习算法。
二、集成学习分类按照分类器的生成方式可将集成学习分类为Bagging算法、Boosting算法和Stacking算法。
1. Bagging算法Bagging全称为Bootstrap AGGregating,是自举聚合的缩写。
它的基本思想是采用自助法来产生k个新的训练集,在每个训练集上训练出一个基学习器,然后将这k个基学习器的结果进行平均或多数表决等方式来得到最终的结果。
2. Boosting算法Boosting算法基本思想是将一系列弱分类器相互结合,构成一个强分类器的过程。
它的主要特点是每一轮都学习一个新的分类器,并使得之前所有分类器的分类准确率加权相加。
3. Stacking算法Stacking算法是一种用来组合多个学习器的方法。
与传统的集成学习方法不同,Stacking算法通过加入一个“次级学习器”来对多个基学习器进行组合,从而构建出一个强学习器。
三、集成学习的优点1. 集成学习可显著提高机器学习算法的准确率和性能,并且对于许多不同类型的学习算法均有效。
2. 集成学习能够减轻模型过拟合问题,提高模型鲁棒性和泛化能力。
3. 集成学习能够减少各个单个模型产生的误差或者偏差,从而提高模型的精度。
四、集成学习案例1. 随机森林(Random Forest)随机森林是一种集成学习方法,它基于决策树算法创建多个随机子集的基学习器,最终将这些基学习器合并成一个强学习器。
2. AdaBoostAdaBoost是一种常见的Boosting算法,它通过不断调整训练样本的权重来训练机器学习模型,从而提高模型准确率。
3. Gradient Boosting Machines(GBM)GBM也是一种常见的Boosting算法,它采用一种梯度下降算法来学习弱学习器的加权。
集成学习方法在机器学习领域,集成学习方法是一种常用的技术,它通过结合多个基本模型的预测结果,来获得更好的预测性能。
集成学习方法通常能够降低模型的方差,提高模型的泛化能力,因此在实际应用中得到了广泛的应用。
本文将介绍集成学习的基本原理、常见的集成学习方法以及其在实际问题中的应用。
首先,我们来了解一下集成学习的基本原理。
集成学习通过结合多个基本模型的预测结果,来获得更好的预测性能。
这些基本模型可以是同质的,也可以是异质的。
同质的基本模型指的是使用相同的学习算法,但在不同的子数据集上进行训练得到的模型;而异质的基本模型则是使用不同的学习算法得到的模型。
通过对多个基本模型的预测结果进行组合,集成学习可以降低模型的方差,提高模型的泛化能力。
接下来,我们将介绍一些常见的集成学习方法。
首先是Bagging方法,它是一种并行式的集成学习方法,通过对训练集进行有放回的采样,得到多个子数据集,然后在每个子数据集上训练一个基本模型,最后将这些基本模型的预测结果进行平均或投票来得到最终的预测结果。
Bagging方法通常能够降低模型的方差,提高模型的泛化能力。
另一种常见的集成学习方法是Boosting方法,它是一种串行式的集成学习方法,通过对训练集进行加权,每次训练一个基本模型,然后根据基本模型的表现对训练样本进行调整,最终将多个基本模型进行加权组合得到最终的预测结果。
Boosting方法通常能够降低模型的偏差,提高模型的泛化能力。
除了Bagging和Boosting方法之外,还有一些其他的集成学习方法,如随机森林、AdaBoost、Gradient Boosting等,它们都在不同的场景下得到了广泛的应用。
最后,我们将介绍一些集成学习方法在实际问题中的应用。
在实际问题中,集成学习方法通常能够取得比单一模型更好的预测性能。
例如,在分类问题中,通过集成多个基本分类器,可以得到更准确的分类结果;在回归问题中,通过集成多个基本回归模型,可以得到更准确的预测结果。
机器学习的集成学习和迁移学习机器学习领域中,集成学习和迁移学习是两个重要的技术。
它们通过整合多个模型的预测结果和利用已有的知识来提高机器学习的性能。
本文将分别介绍集成学习和迁移学习的概念、方法和应用,帮助读者更好地理解和应用这两种学习方法。
1. 集成学习集成学习(Ensemble Learning)是一种将多个不同的机器学习模型组合在一起,通过投票、加权等方式来综合这些模型的预测结果的技术。
它的基本思想是通过将多个模型的预测结果进行集成,从而得到比单个模型更准确、更稳定的预测结果。
常见的集成学习方法包括投票法(Voting)、堆叠法(Stacking)、装袋法(Bagging)和提升法(Boosting)等。
投票法通过对多个模型的预测结果进行投票,选取得票最多的结果作为最终预测结果;堆叠法则是将多个模型的预测结果作为新的特征输入给另一个模型进行最终的预测;装袋法通过对训练集进行自助采样来得到多个不同的子训练集,再用这些子训练集分别训练不同的模型,并将它们的预测结果进行集成;提升法则是通过反复迭代训练多个模型,在每次迭代中都根据前一轮的预测错误来调整训练样本的权重,以产生一个更准确的预测模型。
集成学习在许多机器学习任务中都取得了显著的性能提升。
例如,在分类任务中,多个基分类器的集成可以减少分类误差、提高泛化性能;在回归任务中,集成模型可以减小预测误差、提高预测精度。
同时,集成学习也可以提高模型的鲁棒性,减少模型对训练数据的过拟合问题。
2. 迁移学习迁移学习(Transfer Learning)是一种将已学习的知识迁移到新任务中的学习方法。
它通过利用源领域的知识和数据来辅助目标领域的学习任务,从而提高目标任务的性能。
迁移学习的基本假设是,不同领域之间存在一定的相关性或共享的结构。
因此,通过将源领域的知识转移到目标领域,可以减少在目标领域收集大量数据的需求,缩短训练时间,并提高学习算法的泛化性能。
迁移学习主要有三种类型:基于实例的迁移学习、基于特征的迁移学习和基于模型的迁移学习。
集成学习算法总结1、集成学习概述1.1 集成学习概述集成学习在机器学习算法中具有较⾼的准去率,不⾜之处就是模型的训练过程可能⽐较复杂,效率不是很⾼。
⽬前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost、GBDT、XGBOOST、后者的代表算法主要是随机森林。
1.2 集成学习的主要思想集成学习的主要思想是利⽤⼀定的⼿段学习出多个分类器,⽽且这多个分类器要求是弱分类器,然后将多个分类器进⾏组合公共预测。
核⼼思想就是如何训练处多个弱分类器以及如何将这些弱分类器进⾏组合。
1.3、集成学习中弱分类器选择⼀般采⽤弱分类器的原因在于将误差进⾏均衡,因为⼀旦某个分类器太强了就会造成后⾯的结果受其影响太⼤,严重的会导致后⾯的分类器⽆法进⾏分类。
常⽤的弱分类器可以采⽤误差率⼩于0.5的,⽐如说逻辑回归、SVM、神经⽹络。
1.4、多个分类器的⽣成可以采⽤随机选取数据进⾏分类器的训练,也可以采⽤不断的调整错误分类的训练数据的权重⽣成新的分类器。
1.5、多个弱分类区如何组合基本分类器之间的整合⽅式,⼀般有简单多数投票、权重投票,贝叶斯投票,基于D-S证据理论的整合,基于不同的特征⼦集的整合。
2、Boosting算法2.1 基本概念Boosting⽅法是⼀种⽤来提⾼弱分类算法准确度的⽅法,这种⽅法通过构造⼀个预测函数系列,然后以⼀定的⽅式将他们组合成⼀个预测函数。
他是⼀种框架算法,主要是通过对样本集的操作获得样本⼦集,然后⽤弱分类算法在样本⼦集上训练⽣成⼀系列的基分类器。
他可以⽤来提⾼其他弱分类算法的识别率,也就是将其他的弱分类算法作为基分类算法放于Boosting 框架中,通过Boosting框架对训练样本集的操作,得到不同的训练样本⼦集,⽤该样本⼦集去训练⽣成基分类器;每得到⼀个样本集就⽤该基分类算法在该样本集上产⽣⼀个基分类器,这样在给定训练轮数 n 后,就可产⽣ n 个基分类器,然后Boosting框架算法将这 n个基分类器进⾏加权融合,产⽣⼀个最后的结果分类器,在这 n个基分类器中,每个单个的分类器的识别率不⼀定很⾼,但他们联合后的结果有很⾼的识别率,这样便提⾼了该弱分类算法的识别率。
掌握机器学习中的集成学习和深度强化学习算法集成学习和深度强化学习是机器学习领域中的两个重要研究方向。
本文将介绍集成学习和深度强化学习的基本概念、算法原理和应用领域。
一、集成学习集成学习(Ensemble Learning)是一种通过结合多个基学习器来提高机器学习算法性能的方法。
集成学习的基本思想是“三个臭皮匠,赛过诸葛亮”,通过将多个弱学习器集合在一起,形成一个强学习器,从而提高预测性能。
常见的集成学习方法包括投票法、平均法和Bagging、Boosting 等。
投票法是指通过多个弱学习器进行投票来决定最终的预测结果。
平均法则是将多个弱学习器的预测结果进行平均,作为最终的预测结果。
而Bagging和Boosting是将多个基学习器进行整合,分别通过并行和串行的方式进行训练,从而提高模型的泛化能力。
集成学习的应用非常广泛,其中最著名的应用之一是随机森林(Random Forest)。
随机森林是一种基于决策树的集成学习算法,通过多个决策树的投票或平均来进行分类或回归任务。
随机森林具有较强的鲁棒性和泛化能力,在各种实际应用中取得了良好的效果。
二、深度强化学习深度强化学习(Deep Reinforcement Learning)是结合深度学习和强化学习的一种方法。
强化学习是一种通过智能体在环境中执行动作并得到奖励信号,以达到最大化累积奖励的学习方法。
深度学习则是一种模仿人脑神经网络的学习方法,利用多层神经网络对输入特征进行高层抽象和表示学习。
深度强化学习的核心是使用深度神经网络来近似值函数或者策略函数。
一种经典的深度强化学习算法是深度Q网络(Deep Q-Network,DQN)。
DQN通过深度神经网络来逼近动作值函数(Q函数),从而实现智能体在环境中选取最优动作。
DQN具有较强的逼近能力和泛化能力,在很多领域,特别是游戏领域取得了非常好的效果。
深度强化学习在很多领域都有着广泛的应用。
例如,在机器人领域,深度强化学习可以用于实现机器人的自主导航和控制;在自然语言处理和机器翻译领域,深度强化学习可以用于语言模型的训练和优化;在金融领域,深度强化学习可以通过学习交易模式来进行股票交易。
机器学习中的集成学习机器学习是一种通过建立和优化模型来使机器能够自主学习和识别模式的方法。
在机器学习的发展过程中,集成学习逐渐成为一种重要的技术手段。
集成学习通过组合多个基本分类器或回归器的预测结果,从而提高模型的泛化能力和准确性。
本文将介绍机器学习中的集成学习以及其相关方法。
一、集成学习的概述集成学习是一种将多个基本分类器或回归器进行组合的方法,以达到更好的性能表现。
这些基本模型可以是相同类型的算法,也可以是不同类型的算法。
集成学习的关键思想是通过将多个模型的预测结果进行结合,以获得更准确的综合预测。
相比单个模型,集成模型能够降低泛化误差、提高分类准确率,并对噪声数据具有更好的鲁棒性。
二、常见的集成学习方法1. BaggingBagging(Bootstrap aggregating)是一种基于自助采样的集成学习方法。
其基本思想是通过从原始训练集中有放回地随机采样若干个子样本,然后利用这些子样本训练不同的基分类器。
最后将这些基分类器的预测结果进行投票或平均,得到集成模型的预测结果。
Bagging方法适用于分类和回归问题,如随机森林就是一种基于Bagging的集成学习算法。
2. BoostingBoosting是一种串行训练和集成的方法,它通过逐步训练多个弱学习器,将每个弱学习器的预测结果进行加权求和,得到最终的集成结果。
Boosting方法根据每个样本的权重调整训练样本的分布,使得那些被前一轮学习器误分类的样本在下一轮中得到更多的重视。
这样,Boosting能够通过不断地调整样本权重,训练出多个在不同样本分布下具有较好表现的弱学习器。
著名的AdaBoost和Gradient Boosting就是Boosting的代表算法。
3. StackingStacking是一种将多个基本模型进行级联的集成学习方法。
首先,将原始训练集分成训练集和验证集两部分,用训练集训练多个基本分类器或回归器。
然后,将验证集上的预测结果作为次级模型的输入,再训练一个次级模型。
介绍常用的集成学习方法及其应用场景集成学习是机器学习领域的一种重要技术,它通过结合多个基本模型的预测结果来提高整体的准确性和稳定性。
在实际应用中,集成学习方法可以在分类、回归和异常检测等任务中发挥重要作用。
本文将介绍几种常用的集成学习方法及其应用场景。
首先,我们先了解一下集成学习的基本原理。
集成学习将多个弱学习器组合成一个强学习器,其核心思想是“三个臭皮匠,胜过诸葛亮”。
具体来说,集成学习可以分为两种类型:bagging和boosting。
首先,我们来介绍一种被广泛应用的集成学习方法——随机森林(Random Forest)。
随机森林是一种基于决策树的集成学习算法,它通过构建多棵决策树来实现分类和回归任务。
随机森林的核心思想是通过随机抽样和属性随机选择来增加模型的多样性。
在随机森林中,每棵决策树都会基于随机选择的样本和特征进行构建,最终通过多数投票或平均预测结果来做出最终的决策。
随机森林具有良好的鲁棒性和高度的准确性,尤其适用于处理高维数据和噪声数据。
在金融行业中,随机森林被广泛应用于信用评分、风险评估和欺诈检测等任务。
接下来,我们介绍另一种常用的集成学习方法——Adaboost(Adaptive Boosting)。
Adaboost是一种迭代的集成学习算法,它通过调整样本权重来逐步学习和集成弱学习器。
在每一次迭代中,Adaboost会根据上一轮的错误率调整样本权重,使得那些被错误分类的样本在下一轮中具有更高的权重。
这样,Adaboost能够更加关注难以分类的样本。
最终,Adaboost通过对多个弱学习器的线性组合来产生最终的预测结果。
Adaboost具有良好的泛化性能和自适应能力,在人脸识别、目标检测和自然语言处理等领域有很好的应用效果。
此外,还有一种被广泛使用的集成学习方法是梯度提升(Gradient Boosting)。
梯度提升是一种迭代的集成学习算法,它通过拟合前一轮模型的残差来逐步学习和集成弱学习器。
机器学习知识:机器学习中的集成学习随着数据量的快速增长和计算能力的提高,机器学习技术已经成为各行各业的热门话题。
而在机器学习领域中,集成学习是一个备受关注的研究方向。
本文将详细介绍机器学习中的集成学习,包括其定义、目的、不同类型、优点和缺点等方面。
一、定义和目的集成学习是指将多个不同的分类器或回归器进行集成,以期望得到比单个分类器或回归器更好的效果的一种机器学习技术。
它的目的是通过将多个弱分类器或回归器组合起来形成一个强的分类器或回归器,来提高模型的泛化能力和准确率。
二、不同类型集成学习可以分为两种主要类型:基于单样本的集成学习和基于多样本的集成学习。
基于单样本的集成学习:在这种类型的集成学习中,不同的分类器或回归器是在同一样本上训练的,但是每个分类器或回归器采用不同的特征子集或参数组合。
具有代表性的算法包括随机森林和决策树。
基于多样本的集成学习:在这种类型的集成学习中,不同的分类器或回归器是在不同的样本上训练的,然后将它们的输出聚合到一起形成最终结果。
精细调整的算法包括AdaBoost和梯度提升树。
三、优点集成学习有以下优点:1.提高了预测性能由于集成学习将多个分类器或回归器组合在一起,因此它可以提高预测性能和准确性,特别是在处理复杂问题时。
2.减少过拟合过拟合是机器学习中一个严重的问题,它通常是由于模型过于复杂而导致的。
由于集成学习采用了不同的训练数据和算法,因此它可以减少过拟合的风险。
3.提高模型的鲁棒性集成学习可以通过提高模型的鲁棒性来应对数据噪声和异常值等问题。
由于它使用不同的分类器或回归器,因此可以减少随机误差对模型的影响。
四、缺点尽管集成学习在很多方面都表现出色,但仍然存在以下缺点:1.计算成本高由于集成学习需要将多个分类器或回归器组合在一起,因此会产生大量计算成本。
如果训练数据的规模非常大,那么这种计算成本将会非常高。
2.需要大量训练数据由于集成学习需要训练多个分类器或回归器,因此需要更多的训练数据。
集成学习1.集成学习简介1)通过构建并结合多个学习器来完成学习任务:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。
其中每个IL由一个现有的学习算法从训练数据中产生,如:C4.5决策树算法、BP神经网络等。
2)性能:集成学习器的能力和个体学习器有很大关系,个体学习器本身在具有一定“准确性”的同时,还要有“多样性”,学习器间要具有差异。
产生并结合“好而不同”的个体学习器恰恰是集成学习的核心3)基学习器第一种就是所有的个体学习器都是一个种类的,或者说是同质的。
比如都是决策树个体学习器,或者都是神经网络个体学习器。
第二种是所有的个体学习器不全是一个种类的,或者说是异质的。
本文所讲得Boosting和Bagging方法的基学习器都是同质的。
其中:Boosting方法的个体学习器间存在强依赖关系、必须串行生成的序列化方法。
集成方式一般为加权和,分类器权重并不相等,使用所有样本。
Bagging方法的个体学习器间不存在强依赖关系、可同时生成的并行化方法,集成方式“随机森林(Random Forest)”。
为投票,分类器权值是一样的,随机抽取部份样本。
如Bagging、2.Boosting和Bagging学习策略a.Boosting这是一族可将弱学习器提升为强学习器的算法工作机制:先从初始训练集中训练出来一个基学习器,然后根据表现,对训练样本进行调整,是基学习器之前做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此反复,直到基学习器数目达到事先指定的值T,最终将这T 个基学习器进行加权结合。
目前有很多种类,如AdaBoost、Generalized Boosted Models、XGBoost、lightgbm等。
b.Bagging1)从样本集D中用Bootstrap采样选出n个样本(有放回),执行m次,选出m个样本子集{D1,D2,...,Dm}2)在所有属性上,分别对应这m个样本子集建立m个学习器{h1(x),h2(x),...,hm(x)}3)将这m个学习器放在各自的训练数据上进行学习4)通过投票法或平均法对这m个学习器进行结合20.3.GBDT(梯度提升决策树)a特征该算法由多棵决策树组成,所有树的结论累加起来做最终答案。
GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。
b优势GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合。
业界中,Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高CTR 预估(Click-Through Rate Prediction)的准确性。
c分类树和回归树分类树使用信息增益或增益比率来划分节点;每个节点样本的类别情况投票决定测试样本的类别。
回归树使用最小均方差划分节点;每个节点样本的均值作为测试样本的回归预测值。
均方差:其中,y为标签,c为预测结果。
基尼指数:211=(1)1K K k kk k k G p p p ==-=-∑∑(p ),基尼指数越小,效果越好(当前分类样本的不确定性越小)。
d 提升树算法提升树是迭代多棵回归树来共同决策。
当采用平方误差损失函数时,每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树,残差的意义如公式:残差 = 真实值 - 预测值 。
提升树即是整个迭代过程生成的回归树的累加。
举例:训练集是4个人,A ,B ,C ,D 年龄分别是14,16,24,26。
样本中有购物金额、上网时长、经常到百度知道提问等特征。
提升树的过程如下:图(1)算法流程:其中,M 表示有M 个特征。
e.GBDT(Gradient Boosting Decision Tree)梯度提升决策树利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。
让损失函数持续下降,就能使得模型不断改性提升性能。
其中,m为第m棵树。
N表示样本个数。
j表示决策特征(例如图(1)中的第一棵树将购物金额是否大于1k为分割特征)。
算法1步获得使得损失函数最小的常数估计值,是一个只有根节点的树。
在2.1步计算损失函数的负梯度在当前模型的值,将它作为残差估计。
在2.2步估计回归树的叶结点区域,来拟合残差的近似值。
在2.3步利用线性搜索估计回归树叶结点区域的值,使损失函数最小化。
2.4更新回归树。
第3步获得输出的最终模型。
Eg:为什么损失函数是绝对值损失函数或huber函数,优化就变难了呢?当损失函数是MSE时,直接求出最优解需要满足X是列满秩的(X表示训练特征矩阵),而且求矩阵的逆比较慢,因此最小二乘法求解存在局限性,可以采用梯度下降法近似求解。
“残差= 真实值- 预测值” 只是负梯度在平方损失函数上的特例。
在别的损失函数上,残差就不是这么计算了。
4.AdaboostAdaBoost Algorithm:1、初始化样本权值分布2、基于分布Dt从数据集D中训练处分类器ht3、估计ht的误差 err.4、确定分类器ht的权重5、更新样本分布,其中Zt是规范化因子,以确保Dt+1是一个分布具体过程见《统计学习方法》P138AdaBoost应用:1)用于二分类或多分类的应用场景2)用于做分类任务的baseline:无脑化,简单,不会overfitting,不用调分类器3)用于特征选择(feature selection)4)Boosting用于对badcase的修正:只需要增加新的分类器,不需要变动原有分类器5)邮件过滤、文本分类、人脸识别Adaoost特性:1)训练的错误率上界,随着迭代次数的增加,会逐渐下降;2)adaboost算法即使训练次数很多,也不会出现过拟合的问题。
3)每次迭代改变的是样本的分布,而不是重复采样(re weight)4)样本分布的改变取决于样本是否被正确分类:总是分类正确的样本权值低,总是分类错误的样本权值高(通常是边界附近的样本)5)最终的结果是弱分类器的加权组合:权值表示该弱分类器的性能5.Xgboost与GBDT最主要的差异在于损失函数定义的不同:1)除了要计算L(y,f(x))外,Xgboost在后面添加了正则项和一个常数项。
2)GBDT的梯度下降只用了损失函数的一阶导数,在这里利用泰勒展开式添加了二阶导数的信息。
tip:下式中,y(t-1)+f(f)。
根据模型的生成方式:t时刻的树模型是之前树模型的和。
所以y^(t)等于y^(t-1)+f(f).残差实际就是下一阶段的f(x)上式等价于正则项Ω(f)定义为:其中,T为叶子结点的个数,w为叶子权重。
树中结点分割点的选择:采用贪心的思想。
遍历数据中所有的分割点,选择分割前后增益最大点:。
衡量方法:统一后的损失是指:j(1-T)表示的是每一个叶节点,里面可能有多个样本,则将样本按叶节点分块,计算。
每棵树所有叶子结点。
XGB是预剪枝。
就像上面所说的选择损失函数最小的进行分裂,此时就相当于对所有节点进行分裂,然后根据上面的述的,如果增益为负数就不分裂。
6.LightGBM(Light Gradient Boosted Tree)1)LightGBM相较XGBOOST的优化:基于直方图的决策树算法带深度限制的Leaf-wise的叶子生长策略直方图做差加速直接支持类别特征(Categorical Feature)Cache命中率优化多线程优化2)XGBoost工作特点及缺点首先,对所有特征都按照特征的数值进行预排序。
其次,在遍历分割点的时候用O(#data)的代价找到一个特征上的最好分割点。
最后,找到一个特征的分割点后,将数据分裂成左右子节点。
这样的预排序算法的优点是能精确地找到分割点。
3)基于Histogram的决策树算法直方图算法的基本思想:先把连续的特征值离散化成k个整数,同时构造一个宽度为k 的直方图。
遍历数据时,根据离散值作为索引在直方图中累积统计量,然后根据直方图的离散值,遍历寻找最优的分割点。
优点:空间消耗小:直方图算法不仅不需存储预排序的结果,而且可以只保存特征离散化后的值,而这个值一般用8位整型存储就足够了,内存消耗可以降低为原来的1/8。
计算代价小:计算上的代价也大幅降低,预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只需要计算k次(k可以认为是常数),时间复杂度从O(#data*#feature)优化到O(k*#features)做差加速特性(直方图-直方图=直方图):一个叶子的直方图可以由它的父亲节点的直方图与它兄弟的直方图做差得到。
通常构造直方图,需要遍历该叶子上的所有数据,但直方图做差仅需遍历直方图的k个桶。
利用这个方法,LightGBM可以在构造一个叶子的直方图后,可以用非常微小的代价得到它兄弟叶子的直方图,在速度上可以提升一倍。
效果分析:Histogram算法并不是完美的。
由于特征被离散化后,找到的并不是很精确的分割点,所以会对结果产生影响。
但在不同的数据集上的结果表明,离散化的分割点对最终的精度影响并不是很大,甚至有时候会更好一点。
原因是决策树本来就是弱模型,分割点是不是精确并不是太重要;较粗的分割点也有正则化的效果,可以有效地防止过拟合;即使单棵树的训练误差比精确分割的算法稍大,但在梯度提升(Gradient Boosting)的框架下没有太大的影响。
4)带深度限制的Leaf-wise的叶子生长策略(逐级树增长)Level-wise过一次数据可以同时分裂同一层的叶子,容易进行多线程优化,也好控制模型复杂度,不容易过拟合。
但实际上Level-wise是一种低效算法,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销,因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。
Leaf-wise则是一种更为高效的策略:每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。
因此同Level-wise相比,在分裂次数相同的情况下,Leaf-wise 可以降低更多的误差,得到更好的精度。
Leaf-wise的缺点:可能会长出比较深的决策树,产生过拟合。
因此LightGBM在Leaf-wise 之上增加了一个最大深度限制,在保证高效率的同时防止过拟合。
5)支持类别特征LightGBM优化了对类别特征的支持,可以直接输入类别特征,不需要额外的特征编码,并在决策树算法上增加了类别特征的决策规则。
在Expo数据集上的实验,相比0/1展开的方法,训练速度可以加速8倍,并且精度一致。
6)并行化特征:1. 每个worker在其特征子集上寻找最佳切分点2. worker之间互相通信,找到全局最佳切分点3. 每个worker根据全局最佳切分点进行节点分裂(而不是具有全局最佳切分特征的worker进行节点分裂,然后广播切分后左右子树的instance indices其他worker根据广播的instance indices进行节点分裂)优缺点:避免广播instance indices,减小网络通信量缺点:split finding计算复杂度没有减小。