分类 二、深度学习 下的文章
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:真实值
Unicode字符列表
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