2020年8月
损失函数
一、平分损失
二、对数损失
三、交叉熵损失
$L_\theta(x) =- \frac{1}{m}\sum_{i=1}^{m}(y_{i}log \hat{y_{i}}+(1-y_{i})log(1- \hat{y_{i}}))$
四、指数损失
问题:在0,1分类问题中为什么不用平方损失
从梯度优化方向来回答:
boostring算法
一、背景
boosting算法是一类算法的总称,是Ensemble Learning (集成学习的一类)。Ensemble Learing算法一般包括两类算法
1.bagging算法
2.boosting算法。
二、boosting算法
1.定义
提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。注意他的基函数不确定可以是任何函数。
Boosting是一种框架算法,拥有系列算法。我们一般不直接适用boosting算法,适用更多的是boostring tree。
2.分类
boostring算法按照算法的实现可以分为两类:
- 1.weight boosting (权重boosting)
权重 boostring的基函数可以是分类算法,也可以是回归算法。基函数也可以不是树,可以是LR,贝叶斯等。最常用的有adaboost
- 2.gradient boostring(梯度boostring)
使用这类算法,大多数都使用基分类器是决策树的算法,包括GBDT,xgboost,lightGBM
注意:分类标准参考sklearn:
(1)https://github.com/scikit-learn/scikit->learn/blob/master/sklearn/ensemble/_weight_boosting.py
(2)https://github.com/scikit-learn/scikit->learn/blob/master/sklearn/ensemble/_gradient_boosting.pyx
三、boosting tree算法(等价于boosting decision tree,因为我们用到的树都是决策树)
1.算法定义
提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法,并且以决策树为基函数的提升方法称为提升树。
2.算法分类
- 1.weight boosting tree (权重boosting tree)
(1)分类问题:基函数拟合原数据
(2)回归问题:基函数拟合残差
注意:一般情况下我们所指的提升树是weight boosting tree,并不包括gradient boostring tree
- 2.gradient boostring tree(可以认为是GBDT)
注意:
1.提升树是利用加法模型与前向分步算法实现学习的优化过程,当损失函数是平分损失和指数损失时,优化很简单。但是对于
一般损失函数而言,不容易。针对这一问题,freidman提出了梯度提升算法。
2.因为我们用到的tree基本都是decision tree 所有可以认为是GBDT。GBDT用到的都是回归决策树。
(1)分类问题:基函数拟合原数据
(2)回归问题:基函数拟合残差
三、常见算法
1.weight boostring
- Adaboost
权重 boostring的基函数可以是分类算法,也可以是回归算法。基函数也可以不是树,可以是LR,贝叶斯等。但是通常我们使用分类树或者回归树,例如sklearn里面默认使用决策树:DecisionTreeClassifier, DecisionTreeRegressor。
损失函数:Adaboost算法损失函数为指数损失。这一点不理解为什么不能是其他损失。
2. gradient boostring
- 1.GBDT
- 2.Xgboost
- 3.LightGBM
严格意义上说,gradient boostring的基分类器可以是LR、贝叶斯等,也可以是树。但是通常我们所说的gradient boostring算法,通常(大部分情况下)都是 gradient boostring tree(梯度提升树),
四、boostring tree(提升树)
提升树是以分类树或者回归树为基分类器的的提升方法。
1.weight boostring tree
weight boostring tree的基分类器可以是分类树也可以是回归树。参考sklearn.基分类器可以是残差树。
损失函数:Adaboost算法损失函数为指数损失。这一点不理解为什么不能是其他损失。
2. gradient boostring tree
- 1.GBDT
- 2.Xgboost
- 3.LightGBM
1、gradient boostring tree的基分类器是回归树。函数模型为CART回归树模型
2、损失函数一般为“对数损失函数”或“指数损失函数”
Gradient Boosting算法即梯度提升算法,
3、优化算法采用梯度下降
参考文献
1.https://blog.csdn.net/starter_____/article/details/79328749
2.统计学习方法-李航
3.https://blog.csdn.net/jingshuiliushen_zj/article/details/83350215
方差、偏差的定义
一、期望
也可以称为均值
假设每次的预测值为
$f(x1),f(x2),f(x3)...,f(x_n)$
每个预测值的概率分别为
$P(x1),P(x2),P(x3)....$
则期望为:
$\hat{f(x)}=p(x1)*f(x1) + p(x2)*f(x2) + p(x3)*f(x3) $
二、方差(与真实值无关)
度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动造成的影响。
描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,如下图右列所示。
---摘自《机器学习》,周志华
$var(x) = \frac{1}{n} \sum_{t=1}^{n}(f(x_{t})-\hat{f})^2$
三、偏差
度量学习算法的期望预测与真实结果的偏离程度,也叫拟合能力。
描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据,如下图第二行所示。
---摘自《机器学习》,周志华
$bias^2(x) = (\hat{f(x)}-y)^2$
y:真实值
概率和统计的区别
概率论是统计学的基石。
一、概率论
概率论是知因求果,已经完全获知了事物的本质即分布规律后,运用于具体的事例。
概率论是由概率分布推断样本性质,如大数定律、中心极限定理。
二、统计学
而数理统计是执果索因,我们手上只有一些事例的表观信息,要寻求它们背后共同遵从的规律。
统计是由样本信息反推概率分布,如概率分布参数的点估计、区间估计,以及线性回归。
三、联系
在现实中二者结合很紧密。通过样本训练出概率分布,相当于老师不断教学生知识(样本),让学生大脑形成当前对象的模型;在学生学会了之后,就相当于这个模型(概率分布)成型了,就可以自己去推导、产生知识(样本)。