关键词:
目录
1 lightGBM
1.1 lightGBM演进过程
1.2 AdaBoost算法
AdaBoost是一种提升树的方法,和三个臭皮匠,赛过诸葛亮的道理一样。
AdaBoost两个问题:
- (1) 如何改变训练数据的权重或概率分布
- 提高前一轮被弱分类器错误分类的样本的权重,降低前一轮被分对的权重
- (2) 如何将弱分类器组合成一个强分类器,亦即,每个分类器,前面的权重如何设置
- 采取”多数表决”的方法.加大分类错误率小的弱分类器的权重,使其作用较大,而减小分类错误率大的弱分类器的权重,使其在表决中起较小的作用。
1.3 GBDT算法以及优缺点
GBDT和AdaBosst很类似,但是又有所不同。
-
GBDT和其它Boosting算法一样,通过将表现一般的几个模型(通常是深度固定的决策树)组合在一起来集成一个表现较好的模型。
-
AdaBoost是通过提升错分数据点的权重来定位模型的不足, Gradient Boosting通过负梯度来识别问题,通过计算负梯度来改进模型,即通过反复地选择一个指向负梯度方向的函数,该算法可被看做在函数空间里对目标函数进行优化。
因此可以说 。
GradientBoosting=GradientDescent+BoostingGradientBoostin**g=GradientDescent+Boostin**g
缺点:
GBDT ->预排序方法(pre-sorted)
-
(1)
空间消耗大
。
- 这样的算法需要保存数据的特征值,还保存了特征排序的结果(例如排序后的索引,为了后续快速的计算分割点),这里需要消耗训练数据两倍的内存。
-
(2)
时间上也有较大的开销。
- 在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。
-
(3)
对内存(cache)优化不友好。
- 在预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化。
- 同时,在每一层长树的时候,需要随机访问一个行索引到叶子索引的数组,并且不同特征访问的顺序也不一样,也会造成较大的cache miss。
1.4 启发
常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。
而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。
如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。
尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。
LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。
2 什么是lightGBM
lightGBM是2017年1月,微软在GItHub上开源的一个新的梯度提升框架。
在开源之后,就被别人冠以“速度惊人”、“支持分布式”、“代码清晰易懂”、“占用内存小”等属性。
LightGBM主打的高效并行训练让其性能超越现有其他boosting工具。在Higgs数据集上的试验表明,LightGBM比XGBoost快将近10倍,内存占用率大约为XGBoost的1/6。
higgs数据集介绍:这是一个分类问题,用于区分产生希格斯玻色子的信号过程和不产生希格斯玻色子的信号过程。
3 lightGBM原理
lightGBM 主要基于以下方面优化,提升整体特特性:
- 基于Histogram(直方图)的决策树算法
- Lightgbm 的Histogram(直方图)做差加速
- 带深度限制的Leaf-wise的叶子生长策略
- 直接支持类别特征
- 直接支持高效并行
具体解释见下,分节介绍。
3.1 基于Histogram(直方图)的决策树算法
直方图算法的基本思想是
- 先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。
- 在遍历数据的时候,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。
Eg:
[0, 0.1) --> 0;
[0.1,0.3) --> 1;
…
使用直方图算法有很多优点。首先,**最明显就是内存消耗的降低,**直方图算法不仅不需要额外存储预排序的结果,而且可以只保存特征离散化后的值,而这个值一般用8位整型存储就足够了,内存消耗可以降低为原来的1/8。
然后在计算上的代价也大幅降低,预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只需要计算k次(k可以认为是常数),时间复杂度从O(#data*#feature)优化到O(k*#features)。
当然,Histogram算法并不是完美的。由于特征被离散化后,**找到的并不是很精确的分割点,所以会对结果产生影响。**但在不同的数据集上的结果表明,离散化的分割点对最终的精度影响并不是很大,甚至有时候会更好一点。原因是决策树本来就是弱模型,分割点是不是精确并不是太重要;较粗的分割点也有正则化的效果,可以有效地防止过拟合;即使单棵树的训练误差比精确分割的算法稍大,但在梯度提升(Gradient Boosting)的框架下没有太大的影响。
3.2 Lightgbm 的Histogram(直方图)做差加速
一个叶子的直方图可以由它的父亲节点的直方图与它兄弟的直方图做差得到。
通常构造直方图,需要遍历该叶子上的所有数据,但直方图做差仅需遍历直方图的k个桶。
利用这个方法,LightGBM可以在构造一个叶子的直方图后,可以用非常微小的代价得到它兄弟叶子的直方图,在速度上可以提升一倍。
3.3 带深度限制的Leaf-wise的叶子生长策略
Level-wise遍历一次数据可以同时分裂同一层的叶子,容易进行多线程优化,也好控制模型复杂度,不容易过拟合。
- 但实际上Level-wise是一种低效的算法,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销,因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。
Leaf-wise则是一种更为高效的策略,每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。
- 因此同Level-wise相比,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。
- Leaf-wise的缺点是可能会长出比较深的决策树,产生过拟合。因此LightGBM在Leaf-wise之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合。
3.4 直接支持类别特征
实际上大多数机器学习工具都无法直接支持类别特征,一般需要把类别特征,转化到多维的0/1特征,降低了空间和时间的效率。
而类别特征的使用是在实践中很常用的。基于这个考虑,LightGBM优化了对类别特征的支持,可以直接输入类别特征,不需要额外的0/1展开。并在决策树算法上增加了类别特征的决策规则。
在Expo数据集上的实验,相比0/1展开的方法,训练速度可以加速8倍,并且精度一致。目前来看,LightGBM是第一个直接支持类别特征的GBDT工具。
Expo数据集介绍:数据包含1987年10月至2008年4月美国境内所有商业航班的航班到达和离开的详细信息。这是一个庞大的数据集:总共有近1.2亿条记录。主要用于预测航班是否准时。
3.5 直接支持高效并行
LightGBM还具有支持高效并行的优点。LightGBM原生支持并行学习,目前支持特征并行和数据并行的两种。
- 特征并行的主要思想是在不同机器在不同的特征集合上分别寻找最优的分割点,然后在机器间同步最优的分割点。
- 数据并行则是让不同的机器先在本地构造直方图,然后进行全局的合并,最后在合并的直方图上面寻找最优分割点。
LightGBM针对这两种并行方法都做了优化:
-
在特征并行算法中,通过在本地保存全部数据避免对数据切分结果的通信;
-
在数据并行中使用分散规约 (Reduce scatter) 把直方图合并的任务分摊到不同的机器,降低通信和计算,并利用直方图做差,进一步减少了一半的通信量。
-
**基于投票的数据并行(Voting Parallelization)**则进一步优化数据并行中的通信代价,使通信代价变成常数级别。在数据量很大的时候,使用投票并行可以得到非常好的加速效果。
小结
-
lightGBM 演进过程
-
lightGBM优势
- 基于Histogram(直方图)的决策树算法
- Lightgbm 的Histogram(直方图)做差加速
- 带深度限制的Leaf-wise的叶子生长策略
- 直接支持类别特征
- 直接支持高效并行
4 lightGBM算法api介绍
4.1 lightGBM的安装
- windows下:
pip3 install lightgbm
- mac下:安装链接
4.2 lightGBM参数介绍
4.2.1 Control Parameters
Control Parameters | 含义 | 用法 |
---|---|---|
max_depth | 树的最大深度 | 当模型过拟合时,可以考虑首先降低 max_depth |
min_data_in_leaf | 叶子可能具有的最小记录数 | 默认20,过拟合时用 |
feature_fraction | 例如 为0.8时,意味着在每次迭代中随机选择80%的参数来建树 | boosting 为 random forest 时用 |
bagging_fraction | 每次迭代时用的数据比例 | 用于加快训练速度和减小过拟合 |
early_stopping_round | 如果一次验证数据的一个度量在最近的early_stopping_round 回合中没有提高,模型将停止训练 | 加速分析,减少过多迭代 |
lambda | 指定正则化 | 0~1 |
min_gain_to_split | 描述分裂的最小 gain | 控制树的有用的分裂 |
max_cat_group | 在 group 边界上找到分割点 | 当类别数量很多时,找分割点很容易过拟合时 |
n_estimators | 最大迭代次数 | 最大迭代数不必设置过大,可以在进行一次迭代后,根据最佳迭代数设置 |
4.2.2 Core Parameters
Core Parameters | 含义 | 用法 |
---|---|---|
Task | 数据的用途 | 选择 train 或者 predict |
application | 模型的用途 | 选择 regression: 回归时, binary: 二分类时, multiclass: 多分类时 |
boosting | 要用的算法 | gbdt, rf: random forest, dart: Dropouts meet Multiple Additive Regression Trees, goss: Gradient-based One-Side Sampling |
num_boost_round | 迭代次数 | 通常 100+ |
learning_rate | 学习率 | 常用 0.1, 0.001, 0.003… |
num_leaves | 叶子数量 | 默认 31 |
device | cpu 或者 gpu | |
metric | mae: mean absolute error , mse: mean squared error , binary_logloss: loss for binary classification , multi_logloss: loss for multi classification |
4.2.3 IO parameter
IO parameter | 含义 |
---|---|
max_bin | 表示 feature 将存入的 bin 的最大数量 |
categorical_feature | 如果 categorical_features = 0,1,2, 则列 0,1,2是 categorical 变量 |
ignore_column | 与 categorical_features 类似,只不过不是将特定的列视为categorical,而是完全忽略 |
save_binary | 这个参数为 true 时,则数据集被保存为二进制文件,下次读数据时速度会变快 |
4.3 调参建议
IO parameter | 含义 |
---|---|
num_leaves | 取值应 <= 2(max_depth), 超过此值会导致过拟合 |
min_data_in_leaf | 将它设置为较大的值可以避免生长太深的树,但可能会导致 underfitting,在大型数据集时就设置为数百或数千 |
max_depth | 这个也是可以限制树的深度 |
下表对应了 Faster Speed ,better accuracy ,over-fitting 三种目的时,可以调的参数
Faster Speed | better accuracy | over-fitting |
---|---|---|
将 max_bin 设置小一些 | 用较大的 max_bin | max_bin 小一些 |
num_leaves 大一些 | num_leaves 小一些 | |
用 feature_fraction 来做 sub-sampling | 用 feature_fraction | |
用 bagging_fraction 和bagging_freq 【bagging的次数。0表示禁用bagging,非零值表示执行k次bagging】 | 设定 bagging_fraction 和 bagging_freq | |
training data 多一些 | training data 多一些 | |
用 save_binary 来加速数据加载 | 直接用 categorical feature | 用 gmin_data_in_leaf 和 min_sum_hessian_in_leaf【和xgboost中的min_child_weight类似】 |
用 parallel learning | 用 dart 【DART利用了深度神经网络中dropout设置的技巧,随机丢弃生成的决策树,然后再从剩下的决策树集中迭代优化提升树】 | 用 lambda_l1, lambda_l2 ,min_gain_to_split 做正则化 |
num_iterations 大一些,learning_rate 小一些 | 用 max_depth 控制树的深度 |
5 lightGBM算法api介绍
5.1 lightGBM的安装
- windows下:
pip3 install lightgbm
- mac下:安装链接
5.2 lightGBM参数介绍
5.2.1 Control Parameters
Control Parameters | 含义 | 用法 |
---|---|---|
max_depth | 树的最大深度 | 当模型过拟合时,可以考虑首先降低 max_depth |
min_data_in_leaf | 叶子可能具有的最小记录数 | 默认20,过拟合时用 |
feature_fraction | 例如 为0.8时,意味着在每次迭代中随机选择80%的参数来建树 | boosting 为 random forest 时用 |
bagging_fraction | 每次迭代时用的数据比例 | 用于加快训练速度和减小过拟合 |
early_stopping_round | 如果一次验证数据的一个度量在最近的early_stopping_round 回合中没有提高,模型将停止训练 | 加速分析,减少过多迭代 |
lambda | 指定正则化 | 0~1 |
min_gain_to_split | 描述分裂的最小 gain | 控制树的有用的分裂 |
max_cat_group | 在 group 边界上找到分割点 | 当类别数量很多时,找分割点很容易过拟合时 |
n_estimators | 最大迭代次数 | 最大迭代数不必设置过大,可以在进行一次迭代后,根据最佳迭代数设置 |
5.2.2 Core Parameters
Core Parameters | 含义 | 用法 |
---|---|---|
Task | 数据的用途 | 选择 train 或者 predict |
application | 模型的用途 | 选择 regression: 回归时, binary: 二分类时, multiclass: 多分类时 |
boosting | 要用的算法 | gbdt, rf: random forest, dart: Dropouts meet Multiple Additive Regression Trees, goss: Gradient-based One-Side Sampling |
num_boost_round | 迭代次数 | 通常 100+ |
learning_rate | 学习率 | 常用 0.1, 0.001, 0.003… |
num_leaves | 叶子数量 | 默认 31 |
device | cpu 或者 gpu | |
metric | mae: mean absolute error , mse: mean squared error , binary_logloss: loss for binary classification , multi_logloss: loss for multi classification |
5.2.3 IO parameter
IO parameter | 含义 |
---|---|
max_bin | 表示 feature 将存入的 bin 的最大数量 |
categorical_feature | 如果 categorical_features = 0,1,2, 则列 0,1,2是 categorical 变量 |
ignore_column | 与 categorical_features 类似,只不过不是将特定的列视为categorical,而是完全忽略 |
save_binary | 这个参数为 true 时,则数据集被保存为二进制文件,下次读数据时速度会变快 |
5.3 调参建议
IO parameter | 含义 |
---|---|
num_leaves | 取值应 <= 2(max_depth), 超过此值会导致过拟合 |
min_data_in_leaf | 将它设置为较大的值可以避免生长太深的树,但可能会导致 underfitting,在大型数据集时就设置为数百或数千 |
max_depth | 这个也是可以限制树的深度 |
下表对应了 Faster Speed ,better accuracy ,over-fitting 三种目的时,可以调的参数
Faster Speed | better accuracy | over-fitting |
---|---|---|
将 max_bin 设置小一些 | 用较大的 max_bin | max_bin 小一些 |
num_leaves 大一些 | num_leaves 小一些 | |
用 feature_fraction 来做 sub-sampling | 用 feature_fraction | |
用 bagging_fraction 和bagging_freq 【bagging的次数。0表示禁用bagging,非零值表示执行k次bagging】 | 设定 bagging_fraction 和 bagging_freq | |
training data 多一些 | training data 多一些 | |
用 save_binary 来加速数据加载 | 直接用 categorical feature | 用 gmin_data_in_leaf 和 min_sum_hessian_in_leaf【和xgboost中的min_child_weight类似】 |
用 parallel learning | 用 dart 【DART利用了深度神经网络中dropout设置的技巧,随机丢弃生成的决策树,然后再从剩下的决策树集中迭代优化提升树】 | 用 lambda_l1, lambda_l2 ,min_gain_to_split 做正则化 |
num_iterations 大一些,learning_rate 小一些 | 用 max_depth 控制树的深度 |
6 《绝地求生》玩家排名预测
6.1 项目背景
绝地求生(Player unknown’s Battlegrounds),俗称吃鸡,是一款战术竞技型射击类沙盒游戏。
这款游戏是一款大逃杀类型的游戏,每一局游戏将有最多100名玩家参与,他们将被投放在绝地岛(battlegrounds)上,在游戏的开始时所有人都一无所有。玩家需要在岛上收集各种资源,在不断缩小的安全区域内对抗其他玩家,让自己生存到最后。
本作拥有很高的自由度,玩家可以体验飞机跳伞、开越野车、丛林射击、抢夺战利品等玩法,小心四周埋伏的敌人,尽可能成为最后1个存活的人。
该游戏中,玩家需要在游戏地图上收集各种资源,并在不断缩小的安全区域内对抗其他玩家,让自己生存到最后。
6.2 数据集介绍
本项目中,将为您提供大量匿名的《绝地求生》游戏统计数据。
其格式为每行包含一个玩家的游戏后统计数据,列为数据的特征值。
数据来自所有类型的比赛:单排,双排,四排;不保证每场比赛有100名人员,每组最多4名成员。
文件说明:
- train_V2.csv - 训练集
- test_V2.csv - 测试集
数据集局部图如下图所示:
数据集中字段解释:
- Id [用户id]
- Player’s Id
- groupId [所处小队id]
- ID to identify a group within a match. If the same group of players plays in different matches, they will have a different groupId each time.
- matchId [该场比赛id]
- ID to identify match. There are no matches that are in both the training and testing set.
- assists [助攻数]
- Number of enemy players this player damaged that were killed by teammates.
- boosts [使用能量,道具数量]
- Number of boost items used.
- damageDealt [总伤害]
- Total damage dealt. Note: Self inflicted damage is subtracted.
- DBNOs [击倒敌人数量]
- Number of enemy players knocked.
- headshotKills [爆头数]
- Number of enemy players killed with headshots.
- heals [使用治疗药品数量]
- Number of healing items used.
- killPlace [本厂比赛杀敌排行]
- Ranking in match of number of enemy players killed.
- killPoints [Elo杀敌排名]
- Kills-based external ranking of player. (Think of this as an Elo ranking where only kills matter.) If there is a value other than -1 in rankPoints, then any 0 in killPoints should be treated as a “None”.
- kills [杀敌数]
- Number of enemy players killed.
- killStreaks [连续杀敌数]
- Max number of enemy players killed in a short amount of time.
- longestKill [最远杀敌距离]
- Longest distance between player and player killed at time of death. This may be misleading, as downing a player and driving away may lead to a large longestKill stat.
- matchDuration [比赛时长]
- Duration of match in seconds.
- matchType [比赛类型(小组人数)]
- String identifying the game mode that the data comes from. The standard modes are “solo”, “duo”, “squad”, “solo-fpp”, “duo-fpp”, and “squad-fpp”; other modes are from events or custom matches.
- maxPlace [本局最差名次]
- Worst placement we have data for in the match. This may not match with numGroups, as sometimes the data skips over placements.
- numGroups [小组数量]
- Number of groups we have data for in the match.
- rankPoints [Elo排名]
- Elo-like ranking of player. This ranking is inconsistent and is being deprecated in the API’s next version, so use with caution. Value of -1 takes place of “None”.
- revives [救活队员的次数]
- Number of times this player revived teammates.
- rideDistance [驾车距离]
- Total distance traveled in vehicles measured in meters.
- roadKills [驾车杀敌数]
- Number of kills while in a vehicle.
- swimDistance [游泳距离]
- Total distance traveled by swimming measured in meters.
- teamKills [杀死队友的次数]
- Number of times this player killed a teammate.
- vehicleDestroys [毁坏机动车的数量]
- Number of vehicles destroyed.
- walkDistance [步行距离]
- Total distance traveled on foot measured in meters.
- weaponsAcquired [收集武器的数量]
- Number of weapons picked up.
- winPoints [胜率Elo排名]
- Win-based external ranking of player. (Think of this as an Elo ranking where only winning matters.) If there is a value other than -1 in rankPoints, then any 0 in winPoints should be treated as a “None”.
- winPlacePerc [百分比排名]
- The target of prediction. This is a percentile winning placement, where 1 corresponds to 1st place, and 0 corresponds to last place in the match. It is calculated off of maxPlace, not numGroups, so it is possible to have missing chunks in a match.
6.3 项目评估方式
你必须创建一个模型,根据他们的最终统计数据预测玩家的排名,从1(第一名)到0(最后一名)。
最后结果通过平均绝对误差(MAE)进行评估,即通过预测的winPlacePerc和真实的winPlacePerc之间的平均绝对误差
关于MAE:
- sklearn.metrics.mean_absolute_error
机器学习集成学习进阶xgboost算法案例分析(代码片段)
目录1xgboost算法api介绍1.1xgboost的安装2xgboost参数介绍2.1通用参数(generalparameters)2.2Booster参数(boosterparameters)2.2.1ParametersforTreeBooster2.2.2ParametersforLinearBooster2.3学习目标参数(taskparameters)3xgboost案例介绍3.1... 查看详情
史诗级干货长文集成学习进阶(xgboost&lightgbm)(代码片段)
集成学习进阶1.xgboost算法原理1.1最优模型的构建方法1.2XGBoost的目标函数推导1.2.1目标函数确定1.2.2CART树的介绍1.2.3树的复杂度定义1.2.3.1定义每课树的复杂度1.2.3.2树的复杂度举例1.2.4目标函数推导1.3XGBoost的回归树构建方法1.3.1计算... 查看详情
机器学习集成学习算法(代码片段)
目录1集成学习算法简介1.1什么是集成学习1.2机器学习的两个核心任务1.3集成学习中boosting和Bagging1.4小结2Bagging和随机森林2.1Bagging集成原理2.2随机森林构造过程2.3包外估计2.3.1包外估计的定义2.3.2包外估计的用途2.4随机森林api介绍2... 查看详情
集成学习之随机森林案例专题python机器学习系列(十七)(代码片段)
集成学习之随机森林案例专题【Python机器学习系列(十七)】文章目录1.Bagging与随机森林简介2.随机森林--分类任务2.1准备数据2.2python实现随机森林--分类任务2.3绘制ROC曲线与计算AUC2.4绘制决策树3.随机森林--回归任务集成... 查看详情
机器学习集成学习进阶xgboost算法原理
目录1最优模型的构建方法2XGBoost的目标函数推导2.1目标函数确定2.2CART树的介绍2.3树的复杂度定义2.3.1定义每课树的复杂度2.3.2树的复杂度举例2.4目标函数推导3XGBoost的回归树构建方法3.1计算分裂节点3.2停止分裂条件判断4XGBoost与GDB... 查看详情
机器学习算法--集成学习
1.个体和集成 集成学习通过构建并结合多个“个体学习器”来完成学习任务。个体学习器通常由一个现有的学习算法从训练数据产生,若集成中只包含同种类型的个体学习器,称为同质集成;若包含不同类型的... 查看详情
史诗级干货长文集成学习算法(代码片段)
...算法1.集成学习算法简介1.1什么是集成学习1.2复习:机器学习的两个核心任务1.3集成学习中boosting和Bagging1.4小结2.Bagging和随机森林2.1Bagging集成原理2.2随机森林构造过程2.3随机森林api介绍2.4随机森林预测案例2.5bagging集成优点2.6... 查看详情
机器学习笔记-lightgbm(代码片段)
1.1LightGBM的介绍LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。它是一款基于GBDT(梯度提升决策树)算法的分... 查看详情
机器学习算法:boosting集成原理和实现过程
学习目标知道boosting集成原理和实现过程了解GBDT实现流程了解XGBoost实现流程1.boosting集成原理1.1什么是boosting 随着学习的积累从弱到强简而言之:每新加入一个弱学习器,整体能力就会得到提升代表算法:Adaboost,... 查看详情
集成学习算法
集成学习算法 在统计学和机器学习中,集成方法使用多种学习算法来获得比单独从任何组成学习算法获得更好的预测性能。Ensemblemethods(组合方法)的效果往往是最好的,当然需要消耗的训练时间也会拉长。 所谓Ensemblem... 查看详情
机器学习|总结catboost的5个独特功能
...un.blog.csdn.net/其他梯度提升算法(AdaBoost、、GBDT、XGBoost、LightGBM)不具备这些特点目前主流的5种梯度提升算法:AdaBoost、GradientBoosting、XGBoost、LightGBM和CatBoost。在这些算法中,CatBoost之所以如此特别,是因为它具有其他提升算法... 查看详情
麦子深度学习之-机器学习算法高级进阶
麦子深度学习之-机器学习算法高级进阶随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教... 查看详情
比xgboost更快--lightgbm介绍
...以下几个部分:一.基本介绍二. XGBOOST原理及缺点三.LightGBM的优化四.建模过程(python)五.调参一.基本介绍LightGBM是一个梯度boosting框架,使用基于学习算法的决策树。它可以说是分布式的,高效的,它有以下优势:-更快的训... 查看详情
机器学习之集成学习算法(代码片段)
...#xff0c;因此优于任何一个单分类的做出预测。1.2复习:机器学习的两个核⼼任务任务一:如何优化训练数据 —>主要用于解决欠拟合问题任务二:如何提升泛化性能 — 查看详情
集成学习算法总结----boosting和bagging
1、集成学习概述1.1集成学习概述集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高。目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adab... 查看详情
随机森林模型及案例(python)(代码片段)
...见算法有Bagging算法和Boosting算法两种。Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模 查看详情
ensemble和stacking(代码片段)
...p;Ensemblelearning中文名叫做集成学习,它并不是一个单独的机器学习算法,而是将很多的机器学习算法结合在一起,我们把组成集成学习的算法叫做“个体学习器”。在集成学习器当中,个体学习器都相同,那么这些个体学习器可... 查看详情
腾讯面试——机器学习/算法面试案例集
目录案例1——电话面试电话一面电话二面案例2——线下面试一面二面 查看详情