手撕算法
菜不卷
过去我没得选,现在我想做好人。
展开
-
手撕算法_logisit回归
简单的说,逻辑回归就是一个感知机,先进行线性回归,然后最线性回归的结果进行二分类(sigmod)。公式首先然后所以,可以将yi视为样本xi预测成1的可能性,所以又可以理解为:所以此时线性回归实际上是预测了该ln值,所以该算法又称之为对数概率回归。...原创 2020-08-11 18:54:17 · 409 阅读 · 0 评论 -
手撕算法_lightgbm
lightgbm是微软亚洲研究院研发的,在xgboost的基础上改进的。速度快,精度还OK(据说没比xgboost差)。设计理念1.单机不牺牲数据的情况下,尽可能用上多的数据。2.多机并行运行时,优化通信方式,通信代价降低。计算上可以实现线性加速。其采用了分布式GBDT,使用了基于直方图的决策树算法。lightgbm与xgboost的区别分割算法xgboost是level-wise,而lightgbm是leave-wise(缺点,容易生成较深的树,所以调参时。。。)数据排序xgboost是原创 2020-08-10 16:42:33 · 517 阅读 · 0 评论 -
手撕算法_xgboost
xgboost其实是GBDT的一种超牛的优化,然后Lightgbm是xgboost的变异。所以本博文主要是在讲xgboost与GBDT的区别。损失函数的改进(原理)众所周知,GBDT的损失函数是误差的一阶导数,然后xgboost的损失函数是将误差进行了泰勒展开到二阶,相当于加入了误差的二阶导数,损失函数比一阶效果更好。同时损失函数加入了正则化项防止过拟合。it is easy to understand,xgboost的损失函数:其中gi,hi分别表示误差的一阶和二阶导数。最后一项是对树的复杂度做原创 2020-08-09 18:48:03 · 276 阅读 · 0 评论 -
手撕算法_线性回归
线性回归基本原理&公式用这种线性方法去逼近真实值。损失函数:最小均方误差就是要最小化损失函数求解方法1.梯度下降法中间推导我就不写了,太简单,大脚趾头都能推。之后就是梯度下降法了。...原创 2020-07-27 21:42:51 · 226 阅读 · 0 评论 -
手撕算法_梯度提升树
提升树提升树就是一种以分类树or回归树作为基学习器,使用前向分步算法的boosting算法。无论是分类还是回归,提升树的基学习器都是CART树。当存在k个基学习器时,提升树可以表示为:表示k个单树的提升树。表示第k个单树表示训练数据表示第k课树的参数...原创 2020-07-24 20:49:27 · 99 阅读 · 0 评论 -
手撕算法_adaboost
adaboost是典型的boosting算法。核心思想boosting算法的核心思想是:上一个模型对单个样本预测的结果越差,下个模型越重视这个样本(增大该样本的权重,加大模型预测错的成本)。提升树就是每个模型都是决策树,提升树种效果比较好的是GBDT和XGBOOST,入门是adaboost。训练过程(分类)adaboost模型的训练过程可以简单的分为这几步:1.更新样本权重。2.训练模型。3.计算误差。4.计算该模型的投票权重。back to step1SAMME算法具体说明:1.初始化原创 2020-07-24 11:16:14 · 782 阅读 · 0 评论 -
手撕算法_随机森林
随机森林是典型bagging算法。bagging算法的思想是:step1:从原始数据中心分离出一部分数据,用这些数据训练一个模型。step2:重复step1 N次,共形成N个模型。step3:用这N个模型的结果,进行加工,作为最终的结果。使用sklearn实现bagging:bagging随机森林是bagging的特例,基学习器固定使用CART决策树,每次训练基学习器时样本和特征双随机,所以泛化能力强。分类时最终结果是投票数最多的类别,回归则采用均值。...原创 2020-07-23 19:15:03 · 252 阅读 · 0 评论 -
手撕算法_决策树
基本概念特征选择1.信息增益信息增益以熵为依据选择特征。用熵来度量信息的随机性或者不确定性,熵值越大,信息的不确定性就越大。熵的计算公式为:以下面的数据为示例:样本标签共有两个(是否逾期),则其熵值为:0.2873如果选择特征“是否拥有房产”,则熵值变化为:0.1827计算方式:每个“是否拥有房产”的分类中分别计算其熵值,最后做和。熵值变小,说明使用该特征做决策是好于不用该特征的。在该节点使用哪个特征,就是比较各个特征的熵值,选择最小的。信息增益=旧的熵值-新的熵值...原创 2020-07-16 11:12:50 · 572 阅读 · 0 评论