分类 二、深度学习 下的文章

一、背景

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:真实值

b23.png

u4e00-u9fa5 汉字的unicode范围
u0030-u0039 数字的unicode范围
u0041-u005a 大写字母unicode范围
u0061-u007a 小写字母unicode范围
uAC00-uD7AF 韩文的unicode范围
u3040-u31FF 日文的unicode范围

代码 显示 描述
U+0020 空格
U+0021 ! 叹号
U+0022 " 双引号
U+0023 # 井号
U+0024 $ 价钱/货币符号
U+0025 % 百分比符号
U+0026 & 英文“and”的简写符号
U+0027 ' 引号
U+0028 ( 开 左圆括号
U+0029 ) 关 右圆括号
U+002A * 星号
U+002B + 加号
U+002C , 逗号
U+002D - 连字号/减号
U+002E . 句号
U+002F / 左斜杠
U+0030 0 数字 0
U+0031 1 数字 1
U+0032 2 数字 2
U+0033 3 数字 3
U+0034 4 数字 4
U+0035 5 数字 5
U+0036 6 数字 6
U+0037 7 数字 7
U+0038 8 数字 8
U+0039 9 数字 9
U+003A : 冒号
U+003B ; 分号
U+003C < 小于符号
U+003D = 等于号
U+003E > 大于符号
U+003F ? 问号
U+0040 @ 英文“at”的简写符号
U+0041 A 拉丁字母 A
U+0042 B 拉丁字母 B
U+0043 C 拉丁字母 C
U+0044 D 拉丁字母 D
U+0045 E 拉丁字母 E
U+0046 F 拉丁字母 F
U+0047 G 拉丁字母 G
U+0048 H 拉丁字母 H
U+0049 I 拉丁字母 I
U+004A J 拉丁字母 J
U+004B K 拉丁字母 K
U+004C L 拉丁字母 L
U+004D M 拉丁字母 M
U+004E N 拉丁字母 N
U+004F O 拉丁字母 O
U+0050 P 拉丁字母 P
U+0051 Q 拉丁字母 Q
U+0052 R 拉丁字母 R
U+0053 S 拉丁字母 S
U+0054 T 拉丁字母 T
U+0055 U 拉丁字母 U
U+0056 V 拉丁字母 V
U+0057 W 拉丁字母 W
U+0058 X 拉丁字母 X
U+0059 Y 拉丁字母 Y
U+005A Z 拉丁字母 Z
U+005B [ 开 方括号
U+005C 右斜杠
U+005D ] 关 方括号
U+005E ^ 抑扬(重音)符号
U+005F _ 底线
U+0060 ` 重音符
U+0061 a 拉丁字母 a
U+0062 b 拉丁字母 b
U+0063 c 拉丁字母 c
U+0064 d 拉丁字母 d
U+0065 e 拉丁字母 e
U+0066 f 拉丁字母 f
U+0067 g 拉丁字母 g
U+0068 h 拉丁字母 h
U+0069 i 拉丁字母 i
U+006A j 拉丁字母 j
U+006B k 拉丁字母 k
U+006C l 拉丁字母 l(L的小写)
U+006D m 拉丁字母 m
U+006E n 拉丁字母 n
U+006F o 拉丁字母 o
U+0070 p 拉丁字母 p
U+0071 q 拉丁字母 q
U+0072 r 拉丁字母 r
U+0073 s 拉丁字母 s
U+0074 t 拉丁字母 t
U+0075 u 拉丁字母 u
U+0076 v 拉丁字母 v
U+0077 w 拉丁字母 w
U+0078 x 拉丁字母 x
U+0079 y 拉丁字母 y
U+007A z 拉丁字母 z
U+007B { 开 左花括号
U+007C | 直线
U+007D } 关 右花括号
U+007E ~ 波浪纹

import re
string = "123我123456abcdefgABCVDFF?/ ,。,.:;:''';'''[]{}()()《》"
print(string)
123我123456abcdefgABCVDFF?/ ,。,.:;:''';'''[]{}()()《》
sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])","",string)
print(sub_str)
123我123456abcdefgABCVDFF