很久以前写的Xgboost有一些没写好,现在填坑_part1【xgboost是gbdt升级版】

实现XGBoost1.0版本-慢的要死,但准确率还能忍 实现XGBoost 目录 XGBoost算法推导 XGBoost算法实现 使用自制的数据集进行测试 使用波士顿数据集进行测试,并与sklearn中的Adaboost,RandomForest进行对比 XGBoost算法推导 XGBoost是梯度提升树中的改进算法,所以具有梯度提升树中的一些共性,同时也存在自己的个性 对于梯度提升树算法来说,有三个关键部分需要明确 能够让弱评估器集成的手段(迭... 阅读详情

拟合是外在,优化是核心

GBDT也好,XGBOOST也好,目标就是寻找多棵树的预测结果,合起来比如简单求和、加权求和,与实际值尽量接近(损失函数最小)。

本质工作就是最小化损失函数,使得预测值与实际值尽量接近

1.以GBDT来看树的生成

拿起笔,拿一张纸,边写边画,门槛不高,易懂,还是会损失一些严谨性。

既然目标是找到多棵树(树是二叉树,多叉树可等价为一个多层的二叉树),合起来(比如求和)后,样本的预测值与实际值尽量接近,那么我们首先来解决一个问题:

1.1 叶子节点值如何确定:损失函数求最优

假设已经存在了 t − 1 t-1 t−1棵树,如何设计第 t t t棵树,使得经过第 t t t棵树后,整体样本的预测值与实际值尽量接近?

  1. 假设已经存在了 t − 1 t-1 t−1棵树( t = 1 t=1 t=1时,就是GBDT/XgBoost的初始状态), m m m个样本,每个样本的实际值也就是label为 y i r y^r_i yir​,其中 i = 1 , 2 , 3... m i=1,2,3...m i=1,2,3...m;
  2. 每个样本第 k k k棵树的预测值(叶子节点值)为 w i k w^k_i wik​,其中 k = 1 , 2... t − 1 k=1,2...t-1 k=1,2...t−1, i = 1 , 2 , 3... m i=1,2,3...m i=1,2,3...m;
  3. 每个样本前面 t − 1 t-1 t−1棵树的预测值之和 y i t − 1 = ∑ k = 1 t − 1 w i k y^{t-1}_i = \sum_{k=1}^{t-1}w_i^k yit−1​=∑k=1t−1​wik​, i = 1 , 2 , 3... m i=1,2,3...m i=1,2,3...m;
  4. 对于第 t t t棵树,先假设这棵树不分裂,只有一个根节点、也是叶子节点,那么这m个样本都分配到这个节点,那么m个样本在这颗树的预测值 w i t w^t_i wit​是相等的,即 w 1 t = w 2 t = . . . = w m t {w^t_1}={w^t_2}=...={w^t_m} w1t​=w2t​=...=wmt​,那么,请问 w i t w^t_i wit​取值多少时能使得m个样本的 y i t y^{t}_i yit​与label值 y i r y^r_i yir​整体最接近?;
  5. 首先,如何衡量m个样本的 y i t y^{t}_i yit​与label值 y i r y^r_i yir​的整体接近程度呢,构建一个损失函数 L = 1 / m ∗ ∑ i = 1 m l ( y i t , y i r ) L=1/m*\sum_{i=1}^ml(y^{t}_i,y^r_i) L=1/m∗∑i=1m​l(yit​,yir​),当 L L L越小时,m个样本的 y i t y^{t}_i yit​与label值 y i r y^r_i yir​的整体越接近;
  6. 先做一个简单的,假设使用平方损失函数也就是 L = 1 / m ∗ ∑ i = 1 m ( y i t − y i r ) 2 L=1/m*\sum_{i=1}^m(y^{t}_i-y^r_i)^2 L=1/m∗∑i=1m​(yit​−yir​)2,代入3的公式得到 L = 1 / m ∗ ∑ i = 1 m ( y i t − 1 + w i t − y i r ) 2 L=1/m*\sum_{i=1}^m(y^{t-1}_i+w^t_i-y^r_i)^2 L=1/m∗∑i=1m​(yit−1​+wit​−yir​)2,对于构建 t t t棵树的时候,前面 t − 1 t-1 t−1棵树已经生成,所以 y i t − 1 y^{t-1}_i yit−1​可以看做常数, y i r y^r_i yir​本来也是固定的,所以可以假设这么一个常数 c i t − 1 = y i r − y i t − 1 c^{t-1}_i=y^r_i-y^{t-1}_i cit−1​=yir​−yit−1​, L L L可以变为 L = 1 / m ∗ ∑ i = 1 m ( y i t − 1 + w i t − y i r ) 2 = 1 / m ∗ ∑ i = 1 m ( w i t − c i t − 1 ) 2 L=1/m*\sum_{i=1}^m(y^{t-1}_i+w^t_i-y^r_i)^2=1/m*\sum_{i=1}^m(w^t_i-c^{t-1}_i)^2 L=1/m∗∑i=1m​(yit−1​+wit​−yir​)2=1/m∗∑i=1m​(wit​−cit−1​)2;
  7. 进一步,利用4中 w i t w^t_i wit​都相等,设为 x x x,对于 L L L换个高中就熟悉的形式 L = 1 / m ∗ ∑ i = 1 m ( x − c i t − 1 ) 2 L=1/m*\sum_{i=1}^m(x-c^{t-1}_i)^2 L=1/m∗∑i=1m​(x−cit−1​)2,是不是很熟悉了, L L L是关于 x x x的二次函数,二次函数求最值,很简单吧;
  8. 恩,二次函数求极值会发现 x = 1 / m ∗ ∑ i = 1 m c i t − 1 x=1/m*\sum_{i=1}^mc^{t-1}_i x=1/m∗∑i=1m​cit−1​,是不是就是 m m m个样本在 t − 1 t-1 t−1树后残差 y i r − y i t − 1 y^r_i-y^{t-1}_i yir​−yit−1​的平均值;
  9. 所以,在损失函数为平方损失的时候,会发现第 t t t棵树学习的恰好是前 t − 1 t-1 t−1棵树的残差,这是损失函数最小化时的表象。

1.2 一次分裂的分裂点选择:枚举选最优

前面考虑的是第 t t t棵树不分裂,只有一个根节点,现在要求第 t t t棵树分裂1次,使得经过第 t t t棵树后,整体样本的预测值与实际值尽量接近?

  1. 继续画一画, m m m个样本有 j j j个特征,每个特征分裂点个数为 a j a_j aj​,那么枚举的话,可以生成 ∑ i = 1 j a i \sum_{i=1}^ja_i ∑i=1j​ai​种二叉树;从中,随便拿一个二叉树 T r e e s Tree_s Trees​;
  2. 按照该树选择的特征和分裂点,一部分样本分配到左节点 N l e f t {N}_{left} Nleft​,叶子节点取值为 w s , l e f t w_{s,left} ws,left​,另一部分样本分配到右节点 N r i g h t {N}_{right} Nright​,叶子节点取值为 w s , r i g h t w_{s,right} ws,right​,这个时候 w s , l e f t w_{s,left} ws,left​和 w s , r i g h t w_{s,right} ws,right​的取值不用再说了吧,为使得损失函数 L s L_s Ls​最小,继续上面的最优化求解,结果为这个叶子节点下样本残差的均值,此时的 L s L_s Ls​也是 T r e e s Tree_s Trees​对应的最优值;
  3. 在 ∑ i = 1 j a i \sum_{i=1}^ja_i ∑i=1j​ai​种二叉树中,哪一棵树的 L s L_s Ls​最小,就是这一轮分裂枚举的最优二叉树。

1.3 多次分裂的分裂点选择:复杂度计算+贪婪策略

进一步,前面考虑的是要求第 t t t棵树只分裂1次,使得经过第 t t t棵树后,整体样本的预测值与实际值尽量接近,那么现在要求分裂2次、3次、 h h h次、任意次呢,怎么做?

答案:大家都知道,用的贪婪策略,也就是先第一层遍历特征和分裂点,寻找最优的分裂点和叶子节点值;然后下一层也如此,一层一层下去。

现在我们来想想为什么选择这个策略:

  1. 先看看决策树生成的复杂度,第一层根节点最优分裂,对于 m m m个样本,有 j j j维特征,每个特征可分裂点数为 a j a_j aj​,必然存在 a j ≤ m a_j\leq m aj​≤m,那么第一层枚举特征、分裂点的种类数为 s 1 = ( ∑ i = 1 j a i ) ≤ j ∗ m s_1=(\sum_{i=1}^ja_i)\leq j*m s1​=(∑i=1j​ai​)≤j∗m,也就是说,枚举特征、特征分割点,需要遍历 s 1 s_1 s1​次,取 L s L_s Ls​最小的作为这一轮分裂选择;如果计算一次 L s L_s Ls​的时间成本为 T c o n s T_{cons} Tcons​,那么这一层枚举寻优时间消耗为 s 1 ∗ T c o n s ≤ j ∗ m ∗ T c o n s s_1*T_{cons}\leq j*m*T_{cons} s1​∗Tcons​≤j∗m∗Tcons​;
  2. 第1层根节点分裂后,第2层左节点样本数为 m 2 , l m_{2,l} m2,l​,右节点样本数为 m 2 , r m_{2,r} m2,r​,满足 m 2 , l + m 2 , r = m m_{2,l}+m_{2,r}=m m2,l​+m2,r​=m,第2层左节点寻找最优分裂,枚举次数为 s 2 , l ≤ j ∗ m 2 , l s_{2,l}\leq j*m_{2,l} s2,l​≤j∗m2,l​,同样,右侧节点寻找最有分裂,枚举次数为 s 2 , r ≤ j ∗ m 2 , r s_{2,r}\leq j*m_{2,r} s2,r​≤j∗m2,r​,整体的枚举次数 s 2 = s 2 , l + s 2 , r ≤ j ∗ m 2 , l + j ∗ m 2 , r = j ∗ m s_2=s_{2,l}+s_{2,r}\leq j*m_{2,l}+j*m_{2,r}=j*m s2​=s2,l​+s2,r​≤j∗m2,l​+j∗m2,r​=j∗m;这一层枚举寻优时间消耗为 s 2 ∗ T c o n s ≤ j ∗ m ∗ T c o n s s_2*T_{cons}\leq j*m*T_{cons} s2​∗Tcons​≤j∗m∗Tcons​
  3. 你会发现,每一次层枚举次数的上边界值为 j ∗ m j*m j∗m,当然这只是边界值,实际的情况应该是 j ∗ 10 j*10 j∗10或者 j ∗ 100 j*100 j∗100这种,就是把特征按照分位点或者什么规则分成10个区间、100个区间等,就不细究了。这里重点就是,每一层的枚举花费时间都是一个级别,都是 j ∗ m ∗ T c o n s j*m*T_{cons} j∗m∗Tcons​这个级别
  4. 关键点来了:对于深度为D层的树,你要找到数的最优结构,枚举次数是 ( j ∗ m ) D (j*m)^D (j∗m)D,到这里,你发现了,枚举最优树结构的复杂度是指数级别,因此选择贪婪策略是妥协选择。
  5. 贪婪做法:先遍历第1层选最优,再到第2层选最优…然后到D层,复杂度变为 ( j ∗ m ) ∗ D (j*m)*D (j∗m)∗D,哦豁,相对来说是线性级别。当然,贪婪的结果就是得到的结果是局部最优,不一定是全局最优。
  6. 这就是实际情况,并不一定需要全局最优,局部最优也够解决问题了

2.再看Xgboost损失函数

2.1 损失函数一般化,后面寻优策略本质未变

损失函数一般化,二阶近似,加上考虑模型复杂度的正则项。

一步步来,我们先搬出来上面的旧损失函数:

L = ∑ i = 1 m l ( y i t , y i r ) L=\sum_{i=1}^ml(y^{t}_i,y^r_i) L=∑i=1m​l(yit​,yir​)

当时 l ( y i t , y i r ) l(y^{t}_i,y^r_i) l(yit​,yir​)假设为平方损失,后面就是一个一般的函数。

同样,与咱们上面的「1.1 叶子节点值如何确定」一样,仍然先考虑第 t t t棵树不分裂节点,样本都在这个节点下,预测值 w i t w_i^t wit​都相等,原来的损失函数改一下到xgboost论文里的函数:

L = ∑ i = 1 m l ( y i t , y i r ) + γ ∗ T + 1 2 ∗ ( w i t ) 2 L=\sum_{i=1}^ml(y^{t}_i,y^r_i)+\gamma *T +\frac{1}{2}* (w_i^t)^2 L=∑i=1m​l(yit​,yir​)+γ∗T+21​∗(wit​)2

后面的2项我在以前的博客说过啦:
在这里插入图片描述
我们重点来聊聊 l ( y i t , y i r ) l(y^{t}_i,y^r_i) l(yit​,yir​),按照上文可以写成:

l ( y i t , y i r ) = l ( y i t − 1 + w i t , y i r ) l(y^{t}_i,y^r_i)=l(y^{t-1}_i+w^t_i,y^r_i) l(yit​,yir​)=l(yit−1​+wit​,yir​)

我先假设一下,大家的数学水平在多年社会毒打后,停留在高中、大一这个层次,印象中留下的只有导数这么点感觉,我们把上面的形式换一个熟悉一点的情况:

l ( y i t , y i r ) = l ( y i t − 1 + w i t , y i r ) → l ( x 0 + Δ x , c ) l(y^{t}_i,y^r_i)=l(y^{t-1}_i+w^t_i,y^r_i)\rightarrow l(x_0+\Delta x,c) l(yit​,yir​)=l(yit−1​+wit​,yir​)→l(x0​+Δx,c)

然后,设计到泰勒展开式,这个呢,你可以百度一下,意思就是在 x = x 0 x=x_0 x=x0​处用一个多项式 f m u l t i ( x 0 ) f_{multi}(x_0) fmulti​(x0​)来近似表示原函数,要求这个新的多项式函数在 x = x 0 x=x_0 x=x0​处的函数值、1阶导、各级导数都与原函数相等:

l ( x 0 + Δ x , c ) ≈ l ( x 0 , c ) + ∂ l ( x , c ) ∂ x x = x 0 ∗ Δ x + 1 2 ∗ ∂ l 2 ( x , c ) ∂ x 2 x = x 0 ∗ Δ x 2 l(x_0+\Delta x,c) \approx l(x_0,c)+\frac{\partial l(x,c)}{\partial x}_{x=x_0}*\Delta x+\frac{1}{2}*\frac{\partial l^2(x,c)}{\partial x^2}_{x=x_0}*\Delta x^2 l(x0​+Δx,c)≈l(x0​,c)+∂x∂l(x,c)​x=x0​​∗Δx+21​∗∂x2∂l2(x,c)​x=x0​​∗Δx2

写到这里,把 x 0 x_0 x0​换回去 y i t − 1 y^{t-1}_i yit−1​, Δ x \Delta x Δx换回去 w i t w^t_i wit​,然后细品一下,细细品:

l ( y i t − 1 + w i t , y i r ) ≈ 1 2 a i ∗ ( w i t ) 2 + b i ∗ ( w i t ) + c i l(y^{t-1}_i+w^t_i,y^r_i) \approx \frac{1}{2}a_i*(w^t_i)^2+b_i*(w^t_i)+c_i l(yit−1​+wit​,yir​)≈21​ai​∗(wit​)2+bi​∗(wit​)+ci​

其中 a i = ∂ l 2 ( x , c ) ∂ x 2 x = x 0 a_i=\frac{\partial l^2(x,c)}{\partial x^2}_{x=x_0} ai​=∂x2∂l2(x,c)​x=x0​​, b i = ∂ l ( x , c ) ∂ x x = x 0 b_i=\frac{\partial l(x,c)}{\partial x}_{x=x_0} bi​=∂x∂l(x,c)​x=x0​​, c i = l ( x 0 , c ) c_i=l(x_0,c) ci​=l(x0​,c)

(这里采用的符号、变量名很业余,很不严谨,只是方便回忆起高中数学、大学数学的感觉,好理解,理解是目的,形式咱先忍一忍…)

到这里,是不是发现损失函数也是一个二次函数,继续重新走上面的路「1.以GBDT来看树的生成:1.1叶子节点值如何确定;1.2一次分裂的分裂点选择;1.3 多次分裂的分裂点选择」,是不是又是二次函数求最值、枚举取最优,完事儿?

ps:还记得平方损失时,叶子节点数值 w i t w_i^t wit​是节点样本的均值,那么看看上面新的损失函数二次近似以后叶子节点值是多少:

以节点不分离为例,此时 T = 1 T=1 T=1,

L = ∑ i = 1 m ( 1 2 a i ∗ ( w i t ) 2 + b i ∗ ( w i t ) + c i ) + γ + 1 2 ∗ ( w i t ) 2 L=\sum_{i=1}^m(\frac{1}{2}a_i*(w^t_i)^2+b_i*(w^t_i)+c_i)+\gamma +\frac{1}{2}* (w_i^t)^2 L=∑i=1m​(21​ai​∗(wit​)2+bi​∗(wit​)+ci​)+γ+21​∗(wit​)2

二次函数求最值,不多说,还是如此的简单:

w i t ∗ = − ∑ 1 m b i γ + ∑ 1 m a i {w_i^t}^*=-\frac{\sum_1^mb_i}{\gamma+\sum_1^ma_i} wit​∗=−γ+∑1m​ai​∑1m​bi​​

虽说后面的部分有工程上的细节优化,但是不改贪婪+枚举寻优的本质?

2.2 看下正则和二阶近似

1.正则提高泛化能力

实话说,原理上我也没仔细研究过,暂时贴一下人家的回答,我有空回头研究,https://www.zhihu.com/question/20700829:



在这里插入图片描述看见没,人家这叫专业!

2.为啥是二阶近似,而不是一阶,为了快?

这个话题太专业了,看看人家的回答吧。

借用https://www.jiqizhixin.com/articles/2020-02-27-5的说法:

(1)直观感觉上
假设如果我们希望找到 L L L的「谷底」:
采用一阶梯度,也就是坡度的陡和缓来确定步子要迈多大;
而坡度本身也是有变化的,即逐渐变陡或变缓;
之前我们可以慢慢多走几步,就能根据坡度的变化直接调整;
如果能用二阶梯度,相当于梯度的梯度,那么也就知道坡度变化的趋势,因此一步就能走的更精准。
在这里插入图片描述
(2) 二阶优化,就是单次计迭代计算量增加了,但是每一步走得更精准,因而迭代步数更少,这是二阶梯度算法 Shampoo 表现在这里插入图片描述
(3) 举一个不恰当,但是很直观的例子,拿二次函数寻最优来看,按一阶优化,要走几步才能到最低点,每一步计算下一阶导数就行;按二阶优化牛顿法,一步到位,但是要计算一阶导数和二阶导数,牛顿法我就不写公式了,看下这里https://blog.youkuaiyun.com/Im_Chenxi/article/details/80546742。

在这里插入图片描述

3.接着看Xgboost性能加速(待填坑)

4.看lightGBM性能加速(待填坑)

小结

xgboost果然是加强版的gbdt,工程上的优化先不说,损失函数一般化,这不就是明显的个例到一般的升华么?

另外,上次我说判断力最重要,后来想想也不对,还是执行力在前面,只敢想不敢做,哪来的经验积累,哪来的样本训练判断力,都是空想了。

「小时候自己十分好奇,同样是主角,为什么永远都是太一的亚古兽先进化。直到长大后才明白,都是因为:只有拥有了勇气,才会有友情,爱心,纯真,诚实,知识,光明,最后才会充满希望。」
在这里插入图片描述

XGBoost 0.6版本详解:高效梯度提升工具 梯度提升(Gradient Boosting)是一种强大的机器学习算法,它在多种预测任务中表现优异,包括分类、回归以及更一般化的排序问题。本章将带您入门梯度提升的世界,从其核心原理到在实际应用中的注意事项。梯度提升是一种集成学习技术,通过迭代地添加新的模型来“提升”原有模型的预测能力。新添加的模型专注于那些先前模型未能正确预测的实例,并逐渐增强整体模型的性能。 阅读详情

相关推荐

xgboost已编译版本

xgboost已编译版本,无需你再下载mingw去编译,节省您的大多数时间。直接进入python-package文件夹,使用python setup.py install安装即可

机器学习:XGBoost模型(升级版)——高效且强大的树形模型

介绍一个现实生活中常用的、强大的XGBoost模型。文章涉及XGBoost的基本原理、实现步骤、优缺点、应用场景,方便大家一起学习。文章如有错误,欢迎大噶指正!

weixin_74268817的博客 4950

arcgis建筑数据的矢量化(一)

简单来说,建筑数据的获取无外乎是矢量化和去网站下载 无奈的是,osm和网上的建筑数据只有全国的主要城市,实在是为难我们这些小城市的,百度和天地图上是有建筑数据,无奈人家不要开放下载啊,所以就只能矢量化咯, 矢量化,无外乎手动和自动,手动就是新建shp面手动勾绘,这里就不讲了,我们来看看自动矢量化 自动矢量化在arcgis中主要是利用arcscan和栅格转面(栅格转面这个效果真是一言难尽,所以我们主要讨论arcscan) 同时我们矢量化也不一定要局限于arcgis...

Jasenjane的博客 3927

学习记录631@python机器学习明星算法之XGBoost与Light-GBM算法

XGBoost与Light-GBM算法是基于GBDT算法的两种升级版Boosting算法。它们可以说是目前机器学习竞赛中的明星算法,在商业实战中也有非常广泛的应用场景。这两种算法运行速度快,预测准确度高,且支持并行操作,极大地提升了机器学习的效率和效果,无论是分类模型还是回归模型都有很大的作用。具体数学很复杂,也看不懂,只能大概了解基本原理然后上手使用。使用前需要pip install xgboost。

教练我想学编程 332

保姆级避坑指南:在Ubuntu 22.04上用ROS2 Humble搞定TurtleBot3的SLAM与导航(附5个常见报错解决方案)

本文提供了一份详细的Ubuntu 22.04上使用ROS2 Humble和TurtleBot3进行SLAM建图与导航的避坑指南,涵盖Gazebo启动失败、场景加载问题、环境变量设置、GLIBCXX版本冲突及Nav2参数配置等5个常见报错的解决方案,帮助开发者高效完成机器人导航项目。

weixin_29062823的博客 286

ATE测试的未来:自动化与智能化的技术演进

本文探讨了自动测试设备(ATE)在半导体产业中的技术演进,重点关注自动化与智能化的发展趋势。随着芯片制程的不断进步,ATE面临测试复杂度激增和成本压力等挑战。文章分析了AI技术在测试优化中的应用,如自适应测试和缺陷预测,以及模块化架构和端到端测试生态系统的创新。这些技术突破显著提升了测试效率和设备利用率,为半导体测试的未来发展指明了方向。

weixin_29232507的博客 614

将xgboost0.4升级到xgboost0.6版本

因为apply()方法需要xgboost0.6版本,本地是0.4版本的所以需要升级下,简单记录下: pip list pip install xgboost pip install --upgrade pip yum install gcc 升级到xgboost0.6版本 mkdir tmp cd tmp/ wget http://people.centos.org/tru/devtoo

TURING.DT 2995

单细胞分析进阶:sctransform标准化在Seurat中的实战解析

本文深入解析了sctransform标准化方法在Seurat单细胞分析中的实战应用。通过对比传统对数标准化,sctransform能更有效地建模并剔除技术噪音,提升数据质量。文章提供了从环境配置、数据准备、核心参数解析到完整流程整合的详细指南,并针对常见问题给出解决方案,帮助研究者获得更清晰的细胞分群和更可靠的差异表达结果。

weixin_29248313的博客 151

GBDT和XGboost介绍

前言 GBDT(Gradient Boosting Decision Tree)是一种基于迭代所构造的决策树算法,它又可以简称为MART(Multiple Additive Regression Tree)或GBRT(Gradient Boosting Regression Tree)。虽然名字上又是Gradient又是Boosting的,但它的原理还是很浅显易懂(当然详细的推导还是有一些难

LegenDavid's warehouse 3万+

Simulink仿真入门到精通(三) Simulink信号

本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记。 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulink仿真入门到精通(二) Simulink模块 Simulink仿真入门到精通(三) Simulink信号 Simulink仿真入门到精通(四) Simulink子系统 Simulink仿真入门到精通(五) Simulink模型的仿真 Simulink仿真入门到精通(六) Simulink模型保存为图片 Sim

king110108的专栏 5396

054_小驰私房菜_Camx i2c读写相关备忘

Camera 对Ae、Af这些控制,实际都是,最终实际都是落实到hal下发相关的指令给驱动,那hal这边是怎么给驱动下发相关命令的呢?#小驰私房菜054# #Qcom Camx#可以参考看下下面相关代码内容。

149

关于安装xgboost中升级cmake和gcc的步骤(无编译)

在centos7上安装xgboost的时候遇到这样的问题: File "/usr/local/lib/python3.5/subprocess.py", line 271, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', 'xgboost', '-GUnix Makefiles', '-DUSE_OPENMP=1', '-DUS

Akari0216的博客 1914

从零开始之驱动发开、linux驱动(七、字符驱动之led最终版)

我们上一接用的gpiolib非常杂乱,使用了两种 1.各硬件厂商实现的,如s3c_gpio_cfgpin(S5PV210_GPJ0(5), S3C_GPIO_SFN(1)) 2.系统公共的,如gpio_set_value(S5PV210_GPJ0(4),val) 其实公共的也是对各硬件厂商的封装,用那个都可以,个人建议用系统公共的,应为这样换芯片厂商,不影响任何使用。   2.错误处理基...

To_run_away的博客 2387

XGBoost细谈

注:本文中所有公式和思路来自于邹博先生的《机器学习升级版》,我只是为了加深记忆和理解写的本文。 XGBoost是陈天奇先生提出的一种提升方法,较GBDT不同的是,XGBoost采用了二阶导的信息,不说废话,直接介绍推导过程。我们以CART树为例: 首先我们设定目标函数为:                        这其中yi为第i个样本标记值,y~(t-1)为第t-1棵树的预测

人生就是不断Boost的过程 最好永远都不要收敛 3237

YOLOv11改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv11目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 3600

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

GBDT算法的升级--XGBoost与LightGBM算法

本文同样不涉及公式推导及代码,对于GBDT算法的学习可以参考前面的文章 GBDT算法原理,这里不再讲述GBDT,只讲述XGBoost与LightGBM算法原理 参考文档:LightGBM官方文档(全英文) XGBoost官方文档(全英文) ...

热衷于开源,热爱人工智能领域,时常分享机器学习,数据挖掘项目及方法,我们一起努力! 4510

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

关于“调包”,职业调包侠在此!

0.个人思考 做算法策略的同学,大致可以看做两类: 一类是“卖铲子”的,也就是“造轮子”的,比如Xgboost、tf、keras、pytorch等各种包; 一类是“用铲子的”,也就是“调包侠”,比如用各种轮子做“搜广推”的; 并不是说谁比谁高贵,分工尔。 有一些“用铲子”的,被人说“调包侠”,不开心了,也开始把精力分散去“抄轮子”,做一些重复性的工作,就好像明明有“sort”函数可以直接用了,得自己手写个“快排”表明自己的尊贵… 心态还是不好。 既然社会分工是提高生产效率的,那么“调包侠”就应该好好理解手头

就俩字,咱们要做精通,不做熟悉 3350

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

通俗易懂系列机器学习之手撕bert【bert论文、源码、实践都被我撸了】

优质的fine-tune工具

就俩字,咱们要做精通,不做熟悉 1530

我的机器学习-part(2020-1)【有监督/无监督、Spark+BigDL】

回望过去+看未来1.过去经历1.1 问题抽象1.2 特征工程2.强化学习 1.过去经历 个人理解,抛砖引玉,另外为了通俗,难免不严谨,会其意。 大致分为有监督学习(如回归、分类)、无监督学习(如聚类、降维)、强化学习这3支,强化学习我暂时还没有亲身去玩,就不乱说,后续补上。 首先,回归和分类其实一个问题,比如预测房价0~100000的某一个数值,你把房价切成几个区间,预测在哪个区间,就实现了回归和分类的转化。 然后,实际中大部分问题是一个分类/回归问题,拿分类举例,你现在要对某产品的user进行使用目的分类

就俩字,咱们要做精通,不做熟悉 986

发散阅读、拓宽思路【PageRank、Tf-Idf、协同过滤、分布式训练、StyleTransfer、Node2vec】

刚工作一年,做的内容算是比较单一,基本是NLP相关,当然主流的算法、模型还是基本都了解,偶尔发散的看一些东西,算是留个印象,日积月累,可能以后会用到或者有所启发。PageRank+Tf-Idf+协同过滤+分布式训练+StyleTransfer+Node2vec。

就俩字,咱们要做精通,不做熟悉 723

几个例子,立点flag【python爬虫、多进程、spark-ml库等例子】

内心有点难受,还得想办法加油,人啊,就一辈子哟序言例子1 爬数据-python爬虫例子2.多进程multiprocessing例子3. spark里面ml库随便结尾 序言 1.首先还是那句话,如有雷同,当我抄你的。 2.疫情影响,想出去玩也不行,有点抑郁。 3.19年年底,换工作了,大的硬核技术上还没啥进阶的,还是工程落地解决实际问题为主了,多点经验罢了,这些事儿多少有丢丢boring。 4.主要就是,利用机器学习思路来解决产品中实际的问题,比如预测流失、活跃、投诉等等,无非就是拆解问题、找特征、构建样本、

就俩字,咱们要做精通,不做熟悉 722

我的机器学习-part(2020-2)【tf-server】

我的机器学习part(记录2020一次实践)0.引言1.环境配置:centos环境2.模型训练:resnet50、dt3.服务部署:docker、tf-server、tornado5.结语 0.引言 什么炫酷的模型都是手段而已,解决问题才是目的。 国庆加班,做了个紧急项目,今天主要是记录机器学习在解决实际问题中的这一次经历。 主要部分: (1)环境配置:这部分主要是同事来做,自己家里的Ubuntu是自己装的,公司的centos安装不一样,此处时间紧,分工配合,同事主配环境,我主作数据集、训练模型、搭建部分服

就俩字,咱们要做精通,不做熟悉 718

关于“调包”,职业调包侠在此【update ++】!

1.“铲子”的经验、学习记录,不定期update【接上】 7)自编码器 结论:用来压缩特征 自编码器模型主要由编码器(Encoder)和解码器(Decoder)组成,其主要目的是将输入xxx转换成中间变量yyy,然后再将yyy转换成 x~\tilde{x}x~,然后对比输入xxx和输出x~\tilde{x}x~使得他们两个无限接近。比如建立一个MSE的loss,然后优化这个loss。 其实就是无监督的一个embedding 另外,和PCA这种思想也是,有损压缩,尽量信息损失少 8)无监督文本embeddi

就俩字,咱们要做精通,不做熟悉 539

我的轮子学习-part(2020-11)【人脸识别、物体检测】

我的机器学习(这次是搬轮子)-part(2020-3) 文章目录前言一、1号轮子-人脸识别相关1.基于特征脸的传统方法2.基于深度学习的炼丹二、2号轮子-物体检测object dection1.思路1-RCNN系列2.思路2-YOLO系列三、轮子2人体 segmention+皮肤检测四、轮子2 操作web看开发机上面的图片开发五、Human activity recognition总结 前言 0. 以下两点内容与技术无关,关于自我认知而已 1. 越来越清晰的自我定位:桥梁工作 那些造优秀轮子的是大佬,比如

就俩字,咱们要做精通,不做熟悉 520

最近一段时间做图像挖掘的3个经验mark一下【人脸、全图、形体】

1.判断一个人颜值好看不好看,截取“人脸部分”去训练模型,比整图要好。(这里贴下seetaface取人脸特征的脚本,部分函数是小伙伴写的) 关键词:颜值,人脸部分 import os os.environ["CUDA_VISIBLE_DEVICES"]="-1" #不使用gpu import tensorflow as tf #配置seetaface sys.path.append('./seetaface') from seetaface.api import * init_mask = FACE_DE

就俩字,咱们要做精通,不做熟悉 350
上一篇: 我的轮子学习-part(2020-11)【人脸识别、物体检测】
下一篇: 最近一段时间做图像挖掘的3个经验mark一下【人脸、全图、形体】
滚滚的纸盒子
博客等级 码龄10年 136粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值