机器学习算法总结
1. K近邻算法
概述
k 近邻算法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k 近邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻算法不具有显式的学习过程。
K近邻模型的三要素
- k值的选择
- 距离度量
- 分类决策规则
算法描述
1. 假设有一个带有标签的样本数据集(训练样本集),其中包含每条数据与所属分类的对应关系。
2. 输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较。
i. 计算新数据与样本数据集中每条数据的距离。
ii. 对求得的所有距离进行排序(从小到大,越小表示越相似)。
iii. 取前 k (k 一般小于等于 20 )个样本数据对应的分类标签。
3. 求 k 个数据中出现次数最多的分类标签作为新数据的分类。
1,步骤计算步骤如下:
(1) 算距离:给定测试对象,它计算与训练集中的每个对象的距离
(2) 找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻。
(3) 做分类:根据这ķ个近邻归属的主要类别,来对测试对象分类。
2、相似度的衡量
距离越近应该意味着这两个点属于一个分类的可能性越大。但是距离不能代表一切,有些数据的相似度衡量并不适合用距离相似度衡量方法:包括欧式距离、夹角余弦等。简单应用中,一般使用欧氏距离,但对于文本分类来说,使用余弦(cosine)来计算相似度就比欧式(Euclidean)距离更合适)
3、类别的判定
简单投票法:少数服从多数,近邻中哪个类别的点最多就分为该类。
v 加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)
特点
优点:精度高 对异常值不敏感 无数据输入假定
缺点:计算复杂度高空间复杂度高
适用数据范围:数值型和标称型
KD树
然而当训练集很大时,搜索k个最近邻居的计算非常耗时。kd树使用了特殊的结构存储训练数据,减少计算目标值与训练实例的距离的次数。
kd树算法包括两个主要步骤:
- 构造kd树;
- 搜索最近邻;
KNN优缺点
优点:
1. 结构简单;
2. 无数据输入假定,准确度高,对异常点不敏感。
缺点:
1. 计算复杂度高、空间复杂度高;
2. 样本不平衡时,对稀有类别预测准确度低;
3. 使用懒惰学习,预测速度慢。
2. 线性回归
概念
线性回归(Linear Regression)是一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。
下面是一组用于回归的方法,其中目标值 y 是输入变量 x 的线性组合。在数学概念中,如果 y ^ \hat y y^ 是预测值。
y ^ ( w , x ) = w 0 + w 1 x 1 + ⋯ + w p x p \hat y (w,x) = w_0+w_1x_1+ \dots+w_px_p y^(w,x)=w0+w1x1+⋯+wpxp
特点
优点:结果具有很好的可解释性(w直观表达了各属性在预测中的重要性),计算熵不复杂。
缺点:对非线性数据拟合不好
适用数据类型:数值型和标称型数据
最小二乘法
拟合一个带有系数 w = (w_1, …, w_p) 的线性模型,使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。
一元量线性回归
θ 1 = ∑ i = 1 m ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 m ( x i − x ‾ ) 2 \theta_1 =\frac{\sum_{i=1}^m{(x^i-\overline x) (y^i-\overline y)}}{\sum_{i=1}^m{(x^i-\overline x)^2}} θ1=∑i=1m(xi−x)2∑i=1m(xi−x)(yi−y)
θ 0 = y ‾ − a x ‾ \theta_0=\overline y - a \overline x θ0=y−ax
多元线性回归的正规方程解
θ = ( θ 0 , θ 1 , … , θ n ) T \theta=(\theta_0,\theta_1,\ldots ,\theta_n)^T θ=(θ0,θ1,…,θn)T
θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)−1XTy
θ 0 \theta_0 θ0为截距
梯度下降法
目标函数
J ( θ ) = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 J(\theta)=\frac{1}{m}\sum_{i=1}^m{(y^i-\hat y^i)^2} J(θ)=m1∑i=1m(yi−y^i)2
求导
∇ J = 2 m ( X b θ − y ) T X b \nabla J=\frac{2}{m}(X_b \theta-y)^T X_b ∇J=m2(Xbθ−y)TXb
将其变成列向量 2 m X b T ( X b θ − y ) \frac{2}{m}X_b^T(X_b \theta-y) m2XbT(Xbθ−y)
随机梯度下降法(SGD)
随机取一个样本求参数 θ \theta θ
可使学习率 η \eta η逐渐变小来找寻最小值
用 η = 1 i _ i t e r s \eta=\frac{1}{i\_iters} η=i_iters1
用 η = 1 i _ i t e r s + b \eta=\frac{1}{i\_iters + b} η=i_iters+b1 缓解变化太大 或 η = a i _ i t e r s + b \eta=\frac{a}{i\_iters + b} η=i_iters+ba
岭回归(Ridge)
回归通过对系数的大小施加惩罚来解决 普通最小二乘法 的一些问题。 岭系数最小化的是带罚项的残差平方和
m i n ∣ ∣ X w − y ∣ ∣ 2 + α ∣ ∣ w ∣ ∣ 2 min{||Xw-y||}^2+\alpha{||w||}^2 min∣∣Xw−y∣∣2+α∣∣w∣∣2
其中, Xw为样本数据矩阵与权重的点积,y为向量 α ≥ 0 \alpha \geq 0 α≥0 是控制系数收缩量的复杂性参数: α \alpha α 的值越大,收缩量越大,这样系数对共线性的鲁棒性也更强。
Lasso回归
在数学公式表达上,它由一个带有
ℓ
1
\ell_1
ℓ1 先验的正则项的线性模型组成。 其最小化的目标函数是:
m
i
n
∣
∣
X
w
−
y
∣
∣
2
+
α
∣
∣
w
∣
∣
min{||Xw-y||}^2+\alpha{||w||}
min∣∣Xw−y∣∣2+α∣∣w∣∣
lasso estimate 解决了加上罚项
α
∣
∣
w
∣
∣
1
\alpha ||w||_1
α∣∣w∣∣1 的最小二乘法的最小化,其中,
α
\alpha
α是一个常数,
∣
∣
w
∣
∣
1
||w||_1
∣∣w∣∣1 是参数向量的
ℓ
1
−
n
o
r
m
\ell_1-norm
ℓ1−norm 范数。
目标:使 J ( θ ) = M S E ( Y , Y ^ ) + α 1 2 ∑ i = 1 n θ i 2 J(\theta) = MSE(Y,\hat Y) + \alpha \frac{1}{2}\sum_{i=1}^n{\theta^2_i} J(θ)=MSE(Y,Y^)+α21∑i=1nθi2尽可能小
限制 θ \theta θ的大小
弹性网
目标:使 J ( θ ) = M S E ( Y , Y ^ ) + r α ∑ i = 1 n ∣ θ i ∣ + 1 − r 2 α ∑ i = 1 n θ i 2 J(\theta) = MSE(Y,\hat Y) + r \alpha \sum_{i=1}^n{|\theta_i| + \frac{1-r}{2}\alpha \sum_{i=1}^n{\theta^2_i}} J(θ)=MSE(Y,Y^)+rα∑i=1n∣θi∣+21−rα∑i=1nθi2尽可能小
3.感知机
概述
感知机(perceptron)是二分类的线性分类模型,属于监督学习算法。输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机旨在求出将输入空间中的实例划分为两类的分离超平面。为求得超平面,感知机导入了基于误分类的损失函数,利用梯度下降法对损失函数进行最优化求解。
如果训练数据集是线性可分的,则感知机一定能求得分离超平面。如果是非线性可分的数据,则无法获得超平面。
感知机具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学习得到的感知机模型对新的实例进行预测的,因此属于判别模型。感知机是神经网络和支持向量机的基础。
模型:
假设训练数据集为 D = ( X i , Y i ) i = 1 m D = {(X_i,Y_i)}_{i=1}^m D=(Xi,Yi)i=1m其中 X i ∈ X ⊆ R n , Y i ∈ Y = 1 , − 1 X_i \in X\subseteq R^n,Y^i \in Y={1,-1} Xi∈X⊆Rn,Yi∈Y=1,−1
模型为
f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
感知机模型的其中一个超平面是:
w x + b = 0 wx+b=0 wx+b=0
对于 y i = + 1 y_i=+1 yi=+1样本都有 w x + b > 0 wx+b>0 wx+b>0;对于 y i = − 1 y_i=-1 yi=−1都有 w x + b < 0 wx+b<0 wx+b<0
损失函数
损失函数的一个自然选择是误分类点的总数,但是这样的函数不是连续可导函数,不易优化。因此感知机采用的损失函数是误分类点到超平面的总距离。
假设超平面是 h = w x + b h=wx+b h=wx+b,任意样本点 x ′ x^{'} x′到超平面的距离
d = ∣ w x ′ + b ∣ ∣ ∣ w ∣ ∣ d=\frac{|wx^{'}+b|}{||w||} d=∣∣w∣∣∣wx′+b∣
所有误分类点 x i x_i xi到超平面的距离
− 1 ∣ ∣ w ∣ ∣ ∑ i = 1 m y i ( w x i + b ) -\frac{1}{||w||}\sum_{i=1}^m{y_i(wx_i+b)} −∣∣w∣∣1∑i=1myi(wxi+b)
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1
得到最终损失函数
L ( w , b ) = − ∑ i = 1 m y i ( w x i + b ) L(w,b)=-\sum_{i=1}^m{y_i(wx_i+b)} L(w,b)=−∑i=1myi(wxi+b)
进行随机梯度下降法求其最优值
感知机的原始形式算法描述
输入:训练数据集 D = ( X i , Y i ) i = 1 m D = {(X_i,Y_i)}_{i=1}^m D=(Xi,Yi)i=1m其中 X i ∈ X ⊆ R n , Y i ∈ Y = 1 , − 1 X_i \in X\subseteq R^n,Y^i \in Y={1,-1} Xi∈X⊆Rn,Yi∈Y=1,−1
学习率 η \eta η
过程:
(1)选取初值 w 0 , b 0 w_0 ,b_0 w0,b0
(2) 在训练数据集中选取数据 ( x i , y i ) (xi,yi) (xi,yi)
(3)判断该数据点是否为当前模型的误分类点,即判断 y i ( w x i + b ) < = 0 y_i(wx_i+b)<=0 yi(wxi+b)<=0,如果成立即为误分类点,进行更新:
w ← w + η y i x i w \leftarrow w+\eta y_ix_i w←w+ηyixi
b ← b + η y i b \leftarrow b+\eta y_i b←b+ηyi
(4)转到第(2)步,直到训练集中没有误分类点。
输出:w,b感知机模型 f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
感知机学习算法由于采用不同的初值或选取不同的误分类点,解可以不同
对偶形式
对偶形式是对算法执行速度的优化。
每次梯度的迭代都是选择的一个样本来更新w 和b 向量。最终经过若干次的迭代得到最终的结果。对于从来都没有误分类过的样本,它选择参与w 和b 迭代修改的次数是0,对于被多次误分类而更新的样本,它参与w 和b 迭代修改的次数假设为 n i n_i ni
则w和b关于 ( x i , y i ) (x_i,y_i) (xi,yi)的增量为 α i y i x i \alpha_iy_ix_i αiyixi和 α i y i \alpha_iy_i αiyi,这里 α i = n i η \alpha_i=n_i \eta αi=niη,M为误分类点集合,可以表示为:
w = ∑ x i ∈ M η y i x i = ∑ i = 1 n α i y i x i w=\sum_{x_i\in M}{\eta y_ix_i}=\sum_{i=1}^n{\alpha_iy_ix_i} w=∑xi∈Mηyixi=∑i=1nαiyixi
b = ∑ x i ∈ M η y i = ∑ i = 1 n α i y i b=\sum_{x_i\in M}{\eta y_i}=\sum_{i=1}^n{\alpha_iy_i} b=∑xi∈Mηyi=∑i=1nαiyi
这样的话,在每一步判断误分类条件的地方,我们用 y i ( w x i + b ) < = 0 y_i(wx_i+b)<=0 yi(wxi+b)<=0的变种 y i ∑ j = 1 n α j y j ⋅ x i + b ) < = 0 y_i\sum_{j=1}^n{\alpha_jy_j\cdot x_i+b})<=0 yi∑j=1nαjyj⋅xi+b)<=0(将 w = ∑ i = 1 n α i y i x i w=\sum_{i=1}^n{\alpha_iy_ix_i} w=∑i=1nαiyixi代入原式得到)来判断误分类。这个判断误分类的形式里面是计算两个样本 x i , x j x_i,x_j xi,xj的内积,而且这个内积计算的结果在下面的迭代次数中可以重用。如果我们事先用矩阵运算计算出所有的样本之间的内积,那么在算法运行时, 仅仅一次的矩阵内积运算比多次的循环计算省时。计算量最大的判断误分类这儿就省下了很多的时间,这也是对偶形式的感知机模型比原始形式优的原因。
对偶形式中训练实例仅以内积的形式出现,为了减少计算量,我们可以预先将训练集样本间的内积计算出来,也就是Gram矩阵
4.朴素贝叶斯
贝叶斯公式
- 定义一 假定某个过程有若干可能的前提条件,则表示人们事先对前提条件Xi出现的可能性大小的估计,即先验概率。
- 定义二 假定某个过程得到了结果A,则表示在出现结果A的前提下,对前提条件Xi出现的可能性大小的估计,即后验概率。
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A)=\frac{P(A|B)P(B)}{P(A)} P(B∣A)=P(A)P(A∣B)P(B)
给定训练数据集(X,Y),其中每个样本x都包括n维特征,即x=(x1,x2,x3,…,xn),类标记集合含有k种类别,即y=(y1,y2,…,yk)。
原理
如果现在来了一个新样本x,我们要怎么判断它的类别?从概率的角度来看,这个问题就是给定x,它属于哪个类别的概率最大。那么问题就转化为求解P(y1|x),P(y2|x),…,P(yk|x)P(y1|x),P(y2|x),…,P(yk|x)中最大的那个,即求后验概率最大的输出:
a
r
g
m
a
x
y
k
P
(
y
k
∣
x
)
argmax_{yk}P(y_k|x)
argmaxykP(yk∣x)
P
(
y
k
∣
x
)
=
P
(
x
∣
y
k
)
P
(
y
k
)
P
(
x
)
P(y_k|x)=\frac{P(x|y_k)P(y_k)}{P(x)}
P(yk∣x)=P(x)P(x∣yk)P(yk)
根据全概率公式,可以进一步地分解上式中的分母:
P ( y k ∣ x ) = P ( x ∣ y k ) P ( y k ) ∑ k P ( x ∣ y k ) P ( y k ) P(y_k|x)=\frac{P(x|y_k)P(y_k)}{\sum_{k}{P(x|y_k)P(y_k)}} P(yk∣x)=∑kP(x∣yk)P(yk)P(x∣yk)P(yk)【公式1】
朴素贝叶斯算法对条件概率分布作出了独立性假设通俗地讲就是说假设各个维度的特征x1,x2,…,xnx1,x2,…,xn互相独立,在这个假设的前提上,条件概率可以转化为:
P
(
x
∣
y
k
)
=
∏
i
=
1
n
P
(
x
i
∣
y
k
)
P(x|y_k)=\prod_{i=1}^{n}P(x_i|y_k)
P(x∣yk)=∏i=1nP(xi∣yk)【公式2】
将公式2代入公式1得到:
P
(
y
k
∣
x
)
=
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
∑
k
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
P(y_k|x)=\frac{P(y_k)\prod_{i=1}^{n}P(x_i|y_k)}{\sum_{k}{P(y_k)\prod_{i=1}^{n}P(x_i|y_k)}}
P(yk∣x)=∑kP(yk)∏i=1nP(xi∣yk)P(yk)∏i=1nP(xi∣yk)
即可表示为:
a
r
g
m
a
x
y
k
P
(
y
k
∣
x
)
=
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
∑
k
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
argmax_{yk}P(y_k|x)=\frac{P(y_k)\prod_{i=1}^{n}P(x_i|y_k)}{\sum_{k}{P(y_k)\prod_{i=1}^{n}P(x_i|y_k)}}
argmaxykP(yk∣x)=∑kP(yk)∏i=1nP(xi∣yk)P(yk)∏i=1nP(xi∣yk)
忽略分母部分:
f
(
x
)
=
a
r
g
m
a
x
P
(
y
k
)
∏
i
=
1
n
P
(
x
i
∣
y
k
)
f(x)=argmaxP(y_k)\prod_{i=1}^{n}P(x_i|y_k)
f(x)=argmaxP(yk)∏i=1nP(xi∣yk)
三种常见模型
1.多项式模型
当特征是离散的时候,使用多项式模型。多项式模型在计算先验概率
P
(
y
k
)
P(y_k)
P(yk)和条件概率
P
(
x
i
∣
y
k
)
P(x_i|y_k)
P(xi∣yk)时,会做一些平滑处理,具体公式为:
P ( y k ) = N y k + α N + k α P(y_k)=\frac{N_{yk}+\alpha}{N+k\alpha} P(yk)=N+kαNyk+α
N是总的样本个数,k是总的类别个数, N y k N_{yk} Nyk是类别为 y k y_k yk的样本个数,α是平滑值。
P ( x i ∣ y k ) = N y k , x i + α N y k + n α P(x_i|y_k)=\frac{N_{yk,x_i}+\alpha}{N_{yk}+n\alpha} P(xi∣yk)=Nyk+nαNyk,xi+α
N y k N_{yk} Nyk是类别为 y k y_k yk的样本个数,n是特征的维数, N y k , x i N_{yk,x_i} Nyk,xi是类别为 y k y_k yk的样本中,第i维特征的值是 x i x_i xi的样本个数,α是平滑值。
当α=1时,称作Laplace平滑,当0<α<1时,称作Lidstone平滑,α=0时不做平滑。
如果不做平滑,当某一维特征的值xi没在训练样本中出现过时,会导致P(xi|yk)=0,从而导致后验概率为0。加上平滑就可以克服这个问题。
2.高斯模型
当特征是连续变量的时候,运用多项式模型就会导致很多 P ( x i ∣ y k ) = 0 P(x_i|y_k)=0 P(xi∣yk)=0(不做平滑的情况下),此时即使做平滑,所得到的条件概率也难以描述真实情况。所以处理连续的特征变量,应该采用高斯模型。
高斯模型假设每一维特征都服从高斯分布(正态分布)
3.伯努利模型
与多项式模型一样,伯努利模型适用于离散特征的情况,所不同的是,伯努利模型中每个特征的取值只能是1和0(以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0).
伯努利模型中,条件概率 P ( x i ∣ y k ) P(x_i|y_k) P(xi∣yk)的计算方式是:
当 特 征 值 x i 为 1 时 , P ( x i ∣ y k ) = P ( x i = 1 ∣ y k ) 当特征值x_i为1时,P(x_i|y_k)=P(x_i=1|y_k) 当特征值xi为1时,P(xi∣yk)=P(xi=1∣yk)
当 特 征 值 x i 为 0 时 , P ( x i ∣ y k ) = 1 − P ( x i = 1 ∣ y k ) 当特征值x_i为0时,P(x_i|y_k)=1−P(x_i=1|y_k) 当特征值xi为0时,P(xi∣yk)=1−P(xi=1∣yk)
算法特点:
优点: 在数据较少的情况下仍然有效,可以处理多类别问题。
缺点: 对于输入数据的准备方式较为敏感。
适用数据类型: 标称型数据。
5.决策树
概述
决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
决策树学习通常包括 3 个步骤:特征选择、决策树的生成和决策树的修剪。
原理
信息熵 & 信息增益
熵(entropy): 熵指的是体系的混乱的程度,在不同的学科中也有引申出的更为具体的定义,是各领域十分重要的参量。
信息论(information theory)中的熵(香农熵): 是一种信息的度量方式,表示信息的混乱程度,也就是说:信息越有序,信息熵越低。例如:火柴有序放在火柴盒里,熵值很低,相反,熵值很高。随机变量X的熵表达式如下:
H ( X ) = − ∑ i = 1 n P i l o g P i H(X)=-\sum_{i=1}^n{P_ilogP_i} H(X)=−∑i=1nPilogPi
多个变量的联合熵:
H ( X , Y ) = − ∑ i = 1 n P ( x i , y i ) l o g P ( x i , y i ) H(X,Y)=-\sum_{i=1}^n{P(x_i,y_i)logP(x_i,y_i)} H(X,Y)=−∑i=1nP(xi,yi)logP(xi,yi)
经验熵:
根据给定的已知样本集,计算样本集的香农熵,就是经验熵。
比如
投硬币游戏,得到如下样本集:
正面:6次
反面:8次
则根据本次的样本集,得到样本集的香农熵就是经验熵:
经验熵=-p(正面)log(p正面) -p(负面)log(p负面)
=-6/14log2(6/14) -8/14log2(8/14)
公式:
H ( D ) = − ∑ k = 1 k ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^k{\frac{|C_k|}{|D|}log_2 \frac{|C_k|}{|D|}} H(D)=−∑k=1k∣D∣∣Ck∣log2∣D∣∣Ck∣
其中 ∣ C k ∣ |C_k| ∣Ck∣为在样本总数D属于类 C k C_k Ck的样本个数
条件熵:类似于条件概率,(H(X|Y))他度量了我们的X在知道Y以后的不确定性
计算特征A对数据D的经验条件熵H(D|A)
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 k ∣ C i k ∣ ∣ D i ∣ l o g 2 ∣ C i k ∣ ∣ D i ∣ H(D|A)=\sum_{i=1}^n{\frac{|D_i|}{|D|}H(D_i)}=-\sum_{i=1}^n{\frac{|D_i|}{|D|}}\sum_{k=1}^k{\frac{|C_{ik}|}{|D_i|}log_2 \frac{|C_{ik}|}{|D_i|}} H(D∣A)=∑i=1n∣D∣∣Di∣H(Di)=−∑i=1n∣D∣∣Di∣∑k=1k∣Di∣∣Cik∣log2∣Di∣∣Cik∣
信息增益(information gain): 在划分数据集前后信息发生的变化称为信息增益。
H(X)-H(X|Y):度量了X在知道Y以后不确定性减少程度,这个度量在信息论中成为互信息,记为I(X,Y)。在决策树ID3算法叫做信息增益
计算公式
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
决策树的CLS算法
基本思想
从一棵空决策树开始,选择某一属性(分类属性)作为 测试属性。该测试属性对应决策树中的决策结点。根据 该属性的值的不同,可将训练样本分成相应的子集:
如果该子集为空,或该子集中的样本属于同一个类,则该子集 为叶结点,
否则该子集对应于决策树的内部结点,即测试结点,需要选择 一个新的分类属性对该子集进行划分,直到所有的子集都为空 或者属于同一类。
步骤
- 生成一颗空决策树和一张训练样本属性集;
- 若训练样本集T 中所有的样本都属于同一类,则生成结点 T , 并终止学习算法;否则
- 根据某种策略从训练样本属性表中选择属性A 作为测试 属性, 生成测试结点A
- 若A的取值为v1,v2,…,vm, 则根据A 的取值的不同,将T 划分 成 m个子集T1,T2,…,Tm;
- 从训练样本属性表中删除属性A;
- 转步骤2, 对每个子集递归调用CLS;
ID3算法
ID3算法的基本思想是,以信息熵为度量,用于决策树 节点的属性选择,每次优先选取信息量最多的属性,亦 即能使熵值变为最小的属性,以构造一颗熵值下降最快 的决策树,到叶子节点处的熵值为0。此时,每个叶子 节点对应的实例集中的实例属于同一类。
算法流程
- 决定分类属性;
- 对目前的数据表,建立一个节点N
- 如果数据库中的数据都属于同一个类,N就是树叶,在树 叶上标出所属的类
- 如果数据表中没有其他属性可以考虑,则N也是树叶,按 照少数服从多数的原则在树叶上标出所属类别
- 否则,根据平均信息期望值E或GAIN值选出一个最佳属性 作为节点N的测试属性
- 节点属性选定后,对于该属性中的每个值:从N生成一个分支,并将数据表中与该分支有关的数据收集形 成分支节点的数据表,在表中删除节点属性那一栏如果分支数 据表非空,则运用以上算法从该节点建立子树。
CART算法
基尼指数
分类问题中,假设有k个类,样本点属于k的概率Pk, 则概率分布的基尼指数:
G i n i ( p ) = ∑ k = 1 k P k ( 1 − p k ) = 1 − ∑ k = 1 k P k 2 Gini(p)=\sum_{k=1}^k{P_k(1-p_k)}=1-\sum_{k=1}^k{P_k^2} Gini(p)=∑k=1kPk(1−pk)=1−∑k=1kPk2
二分类问题: G i n i ( p ) = 2 p ( 1 − p ) Gini(p)=2p(1-p) Gini(p)=2p(1−p)
对给定的样本集合D,基尼指数:
G i n i ( D ) = 1 − ∑ k = 1 k ∣ c k ∣ ∣ D ∣ 2 Gini(D)=1-\sum_{k=1}^k{\frac{|c_k|}{|D|}^2} Gini(D)=1−∑k=1k∣D∣∣ck∣2
CART生成算法
输入:训练数据集D,停止计算条件
输出:CART决策树 从根节点开始,递归对每个结点操作
1、设结点数据集为D,对每个特征A,对其每个值a, 根据样本点对A=a的测试为是或否,将D分为D1,D2, 计算A=a的基尼指数
2、在所有的特征A以及所有可能的切分点a中,选择基 尼指数最小的特征和切分点,将数据集分配到两个子结 点中。
3、对两个子结点递归调用1,2步骤
4、生成CART树
算法特点:
优点:计算复杂度不高,输出结果易于理解,数据有缺失也能跑,可以处理不相关特征。
缺点:容易过拟合。
适用数据类型:数值型和标称型
6.逻辑回归
特点
-
优点:计算代价不高,具有可解释性,易于实现。不仅可以预测出类别,而且可以得到近似概率预测,对许多需要利用概率辅助决策的任务很有用。
-
缺点:容易欠拟合,分类精度可能不高。
-
适用数据类型:数值型和标称型数据
公式:
P
^
=
σ
(
θ
T
X
b
)
=
1
1
+
e
−
θ
T
X
b
\hat P = \sigma(\theta^T X_b)= \frac{1}{1+e^{-\theta^TX_b}}
P^=σ(θTXb)=1+e−θTXb1
Sigmoid 函数
σ
(
t
)
=
1
1
+
e
−
t
\sigma (t)=\frac{1}{1+e^{-t}}
σ(t)=1+e−t1
损失函数:
用对数函数描述损失
f
(
n
)
{
如
果
y
=
1
,
p
越
小
,
c
o
s
t
越
大
如
果
y
=
0
,
p
越
大
,
c
o
s
t
越
大
f(n) \begin{cases} &如果y=1,p越小,cost越大\\ &如果y=0,p越大,cost越大 \end{cases}
f(n){如果y=1,p越小,cost越大如果y=0,p越大,cost越大
c
o
s
t
{
−
l
o
g
(
P
^
)
i
f
y
=
1
−
l
o
g
(
1
−
P
^
)
i
f
y
=
0
cost \begin{cases} -log(\hat P)&if \ y=1\\ -log(1-\hat P)&if \ y=0 \end{cases}
cost{−log(P^)−log(1−P^)if y=1if y=0
合成一个函数(交叉熵损失函数)
c
o
s
t
=
−
y
l
o
g
(
p
^
)
−
(
1
−
y
)
l
o
g
(
1
−
p
^
)
cost = -ylog(\hat p)-(1-y)log(1- \hat p)
cost=−ylog(p^)−(1−y)log(1−p^)
转化成
J
(
θ
)
=
−
1
m
∑
i
=
1
m
(
y
i
l
o
g
(
p
^
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
p
^
i
)
)
J(\theta)= -\frac{1}{m}\sum_{i=1}^m{(y^ilog(\hat p^i)+(1-y^i)log(1-\hat p^i))}
J(θ)=−m1∑i=1m(yilog(p^i)+(1−yi)log(1−p^i)) i为样本
J
(
θ
)
=
−
1
m
∑
i
=
1
m
y
i
l
o
g
(
σ
(
θ
T
X
b
)
)
+
(
1
−
y
i
)
l
o
g
(
1
−
σ
(
θ
T
X
b
)
)
J(\theta)= -\frac{1}{m}\sum_{i=1}^m{y^ilog(\sigma(\theta^T X_b))+(1-y^i)log(1-\sigma(\theta^T X_b))}
J(θ)=−m1∑i=1myilog(σ(θTXb))+(1−yi)log(1−σ(θTXb))
求得的导数
J
(
θ
)
θ
j
=
1
m
∑
i
=
1
m
(
σ
(
X
b
i
θ
)
−
y
i
)
X
j
\frac{J(\theta)}{\theta_j}=\frac{1}{m}\sum_{i=1}^m{(\sigma(X_b^i \theta)-y^i)Xj}
θjJ(θ)=m1∑i=1m(σ(Xbiθ)−yi)Xj
梯度下降法:
∇
J
=
1
m
(
σ
(
X
b
θ
)
−
y
)
T
X
b
\nabla J=\frac{1}{m}(\sigma(X_b \theta)-y)^T X_b
∇J=m1(σ(Xbθ)−y)TXb 得到的结果为行向量
将其变成列向量
1
m
X
b
T
(
σ
(
X
b
θ
)
−
y
)
\frac{1}{m}X_b^T(\sigma(X_b \theta)-y)
m1XbT(σ(Xbθ)−y)
决策边界
θ
T
X
b
=
0
\theta^TX_b = 0
θTXb=0
如果有两个特征
θ
0
+
θ
1
X
1
+
θ
2
X
2
=
0
\theta_0 +\theta_1X_1+\theta_2X_2 =0
θ0+θ1X1+θ2X2=0
X
2
=
−
θ
0
−
θ
1
X
1
θ
2
X_2 = \frac{-\theta_0-\theta_1X_1}{\theta_2}
X2=θ2−θ0−θ1X1
二项逻辑斯蒂回归
事件的几率odds:事件发生与事件不发生的概率之比 为
p
1
−
p
\frac{p}{1-p}
1−pp
称为事件的发生比(the odds of experiencing an event),
对数几率:
l
o
g
i
t
(
p
)
=
l
o
g
p
1
−
p
logit(p)=log\frac{p}{1-p}
logit(p)=log1−pp
对数逻辑斯蒂回归
l
o
g
P
(
y
=
1
∣
x
)
1
−
P
(
y
=
1
∣
x
)
=
w
x
log\frac{P(y=1|x)}{1-P(y=1|x)}=wx
log1−P(y=1∣x)P(y=1∣x)=wx
似然函数
设 P ( y = 1 ∣ x ) = π ( x ) , P ( y = 0 ∣ x ) = 1 − π ( x ) P(y=1|x)=\pi(x),P(y=0|x)=1-\pi(x) P(y=1∣x)=π(x),P(y=0∣x)=1−π(x)
其联合概率密度函数,即似然函数为:
∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod_{i=1}^N{[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}} ∏i=1N[π(xi)]yi[1−π(xi)]1−yi
目标:求出使这一似然函数的值最大的参数估,w1,w2,…,wn, 使得L(w)取得 最大值。
对L(w)取对数,对L(w)求极大值,得到w的估计值。
设Y的取值集合为{1,2,…,k}
多项logistic回归模型
P ( y = k ∣ x ) = e x p ( w k ⋅ x ) 1 + ∑ k = 1 k − 1 e x p ( w k ⋅ x ) P(y=k|x)=\frac{exp(w_k\cdot x)}{1+\sum_{k=1}^k-1{exp(w_k\cdot x)}} P(y=k∣x)=1+∑k=1k−1exp(wk⋅x)exp(wk⋅x)
P ( y = K ∣ x ) = 1 1 + ∑ k = 1 k − 1 e x p ( w k ⋅ x ) P(y=K|x)=\frac{1}{1+\sum_{k=1}^k-1{exp(w_k\cdot x)}} P(y=K∣x)=1+∑k=1k−1exp(wk⋅x)1
多项逻辑回归
逻辑回归只适用于二分类问题。为了使它能扩展到多分类问题,我们将Sigmoid函数,换成Softmax函数。
s o f t m a x ( x ) = e i ∑ k = 1 c e k softmax(x)=\frac{e^i}{\sum_{k=1}^c{e^k}} softmax(x)=∑k=1cekei
其中, e i e_i ei代表第几类,c代表一共的类别数
实现多类别逻辑回归模型最简单的方法是,对于所有K个可能的分类结果,我们运行K−1个独立二元逻辑回归模型,在运行过程中把其中一个类别看成是主类别,然后将其它K−1个类别和我们所选择的主类别分别进行回归
7.支持向量机
工作原理
(1). 寻找最大分类间距
(2). 转而通过拉格朗日函数求优化的问题数据可以通过画一条直线就可以将它们完全分开,这组数据叫线性可分(linearly separable)数据,而这条分隔直线称为分隔超平面(separating hyperplane)。
寻找最大间隔
点到直线的距离
(x,y)到 A x + B y + C = 0 Ax+By+C =0 Ax+By+C=0距离 ∣ A x + B y + C ∣ A 2 + B 2 \frac{|Ax+By+C|}{\sqrt {A^2+B^2}} A2+B2∣Ax+By+C∣
拓展到n维 θ X b = 0 ⟹ W T x + b = 0 \theta X_b =0 \Longrightarrow W^T x+b=0 θXb=0⟹WTx+b=0
距离为 ∣ W T x + b ∣ ∣ ∣ W ∣ ∣ \frac{|W^Tx+b|}{||W||} ∣∣W∣∣∣WTx+b∣
最终 ∣ W d T x i + b d ∣ > = 1 y = 1 |W^T_dx^i+b_d|>=1 \ \ \ y=1 ∣WdTxi+bd∣>=1 y=1
∣ W d T x i + b d ∣ < = 1 y = − 1 |W^T_dx^i+b_d|<=1 \ \ \ y=-1 ∣WdTxi+bd∣<=1 y=−1
∣ W d T x i + b d ∣ = 0 |W^T_dx^i+b_d|=0 ∣WdTxi+bd∣=0中间
合成一个公式 y i ( W T x i + b ) > = 1 y^i(W^Tx^i+b)>=1 yi(WTxi+b)>=1 条件
max ∣ W T x + b ∣ ∣ ∣ W ∣ ∣ \frac{|W^Tx+b|}{||W||} ∣∣W∣∣∣WTx+b∣
取 ∣ W T x + b ∣ = 1 |W^Tx+b|=1 ∣WTx+b∣=1
max 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1
min ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣
min 1 2 ⋅ ∣ ∣ w ∣ ∣ 2 \frac{1}{2}\cdot||w||^2 21⋅∣∣w∣∣2
即求 min 1 2 ⋅ ∣ ∣ w ∣ ∣ 2 \frac{1}{2 }\cdot||w||^2 21⋅∣∣w∣∣2
s.t. y i ( W T x i + b ) > = 1 y^i(W^Tx^i+b)>=1 yi(WTxi+b)>=1
拉格朗日乘子法
解决线性不可分
Soft Margin加入宽松条件
y i ( W T x i + b ) > = 1 − ζ ( ζ > = 0 ) y^i(W^Tx^i+b)>=1-\zeta \ \ (\zeta>=0) yi(WTxi+b)>=1−ζ (ζ>=0)
min 1 2 ⋅ ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ζ i \frac{1}{2 } \cdot||w||^2+ C\sum_{i=1}^m{\zeta_i} 21⋅∣∣w∣∣2+C∑i=1mζiL1正则
min 1 2 ⋅ ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ζ i 2 \frac{1}{2 } \cdot||w||^2+ C\sum_{i=1}^m{\zeta_i^2} 21⋅∣∣w∣∣2+C∑i=1mζi2L2正则
核函数
条件 y i ( W T x i + b ) > = 1 − ζ ( ζ > = 0 ) y^i(W^Tx^i+b)>=1-\zeta \ \ (\zeta>=0) yi(WTxi+b)>=1−ζ (ζ>=0)
min 1 2 ⋅ ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ζ i \frac{1}{2}\cdot||w||^2 + C\sum_{i=1}^m{\zeta_i} 21⋅∣∣w∣∣2+C∑i=1mζi L1正则
推导得 m a x ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i x j max\sum_{i=1}^m{\alpha_i}-\frac{1}{2}\sum_{i=1}^m{\sum_{j=1}^m{\alpha_i \alpha_j y_iy_jx_ix_j}} max∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxixj
s t . 0 < = α i < = C st. 0<= \alpha_i<=C st.0<=αi<=C
∑ i = 1 m α i y i = 0 \sum_{i=1}^m{\alpha_i y_i}=0 ∑i=1mαiyi=0
使用核函数对xi进行多项式变换
推导得 m a x ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j K ( x i , x j ) max\sum_{i=1}^m{\alpha_i}-\frac{1}{2}\sum_{i=1}^m{\sum_{j=1}^m{\alpha_i \alpha_j y_iy_jK(x_i,x_j)}} max∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjK(xi,xj)
s t . 0 < = α i < = C st. 0<= \alpha_i<=C st.0<=αi<=C
∑ i = 1 m α i y i = 0 \sum_{i=1}^m{\alpha_i y_i}=0 ∑i=1mαiyi=0
多项式核函数
K ( x , y ) = ( x ⋅ y + 1 ) 2 K(x,y)=(x \cdot y+1)^2 K(x,y)=(x⋅y+1)2
K ( x , y ) = ( ∑ i = 1 n x i y i + 1 ) 2 K(x,y)=(\sum_{i=1}^n{x_iy_i}+1)^2 K(x,y)=(∑i=1nxiyi+1)2
K ( x , y ) = ( x ⋅ y + c ) d K(x,y)=(x \cdot y+c)^d K(x,y)=(x⋅y+c)d
线性核函数
K ( x , y ) = x ⋅ y K(x,y)=x \cdot y K(x,y)=x⋅y
高斯核函数
K ( x , y ) = e − γ ∣ ∣ x − y ∣ ∣ 2 K(x,y)=e^{-\gamma ||x-y||^2} K(x,y)=e−γ∣∣x−y∣∣2
8.K-Means 聚类
概念
聚类就是对未知标记的数据,按照其内部规律,将数据划分为多个不同类别(亦称“簇”,cluster),使簇内数据比较相似,而簇间数据差别较大。
聚类和分类的区别:
1. 分类是有监督学习,它基于有标记数据进行算法模型构建;
2. 聚类属于无监督学习,基于无标记数据。
原理
K-Means算法(又称K均值算法),是最简单经典的聚类算法。
在所有的聚类算法中,我们都希望簇内样本距离近,簇间样本距离远。K-Means选取欧式距离作为距离度量。
给定样本集 D = x 1 , x 2 , … , x m D= {x_1,x_2,\dots ,x_m} D=x1,x2,…,xm我们的目标是最小化聚类所得簇 C = c 1 , c 2 , … , c k C={c_1,c_2,\dots,c_k} C=c1,c2,…,ck的总簇内距离:
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E=\sum_{i=1}^k{\sum_{x\in C_i}{{||x-\mu_i||}^2_2}} E=∑i=1k∑x∈Ci∣∣x−μi∣∣22
其中 μ i \mu_i μi是簇 C i C_i Ci的聚类中心。也称质心
μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}{x} μi=∣Ci∣1∑x∈Cix
最小化总簇内距离是一个NP难问题,因此K-Means采用了贪心策略,通过启发式的迭代优化近似求解。
算法步骤
- step1:从数据集中随机选取K个样本作为初始聚类中心C={c1,c2,…,ck};
- step2:针对数据集中的每个样本 x i x_i xi,计算它到K个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中
- step3:针对每个类别 C i C_i Ci,重新计算它的聚类中心 C i = 1 ∣ C i ∣ ∑ x ∈ C i x C_i=\frac{1}{|C_i|}\sum_{x\in C_i}{x} Ci=∣Ci∣1∑x∈Cix
- step4:重复第2步和第3步直到聚类中心的位置不再变化
K-Means++算法
k个初始聚类中心影响很大,可能会导致收敛很慢,运行时间很长。K-Means++就是对K-Means随机初始化聚类中心的优化。K-Means++选取k个初始聚类中心的思想如下:假设已经选取了n(0<n<k)个初始聚类中心,则在选取第n+1个聚类中心时,距离当前n个聚类中心越远的点有更高的概率被选为第n+1个聚类中心。
算法步骤
- 从数据集中随机选取一个样本作为初始聚类中心c1;
- 首先计算每个样本与当前已有聚类中心之间的最短距离(即与最近的一个聚类中心的距离)用D(x)表示;接着计算每个样本被选为下一个聚类中心的概率 D ( x ) 2 ∑ x ∈ X D ( x ) 2 \frac{D(x)^2}{\sum_{x\in X}{D(x)^2}} ∑x∈XD(x)2D(x)2。最后,按照轮盘发选出下一个聚类中心;
- 重复第2步直到选出共K个聚类中心;
- 之后过程与K-means算法2-4步相同
ISODATA算法
K-Means算法中,k值需要人为设定,并无法更改。ISODATA(Iterative selforganizing data analysis,迭代自组织数据分析法)针对k值选取的问题做了改进,思想如下:
当属于某个类别的样本数过少时,把这个类别去除;当属于某个类别的样本数过多,分散程度大时,把这个类别分为两个子类别
Mini Batch K-Means算法
在K-Means中,要计算所有样本点到所有聚类中心的距离,十分耗时。
Mini Batch(小批量)只用数据集中一部分样本来进行K-Means聚类,这时算法收敛速度大大加快,聚类准确度只比标准K-Means略差。
K-Means优缺点
优点:
1. 原理简单,易于实现;
2. 可解释性强。
缺点:
1. k值需要人为设定;
2. 对非凸数据集,较难收敛;
3. 对不平衡数据,聚类效果较差;
4. 初始聚类中心和特殊值敏感;
5. 采用迭代方法,得到的聚类结果只是局部最优;
9.神经网络
从感知机到神经网络
将感知机扩展成为神经网络,主要从三个方面来增强表达能力:
隐藏层可以有多层;
输出层神经元可以有多个输出;
对激活函数作扩展,有sigmoid、tanh、softmax、ReLU等。
多层向前神经网络
多层向前神经网络由一下几个部分组成:
输入层(input layer),隐藏层(Hidden layer),输出层(output layer)
特点如下:
1、每层由单元(units)组成
2、输入层是有训练集的实例特征向量传入
3、经过连接接点的权重(weight)传入下一层,一层的输出是下一层的输入
4、隐藏层的个数可以是任意的,输入层有一层,输出层有一层
5、每个单元也可以称之为神经结点,根据生物学来源定义
6、以上成为两层的神经网络,输入层是不算在里面的
7、一层中加权求和,然后根据非线性方程转化输出
8、作为多层向前神经网络,理论上,如果有足够的隐藏层,和足够的训练集,可以模拟出任何方程
误差逆传播算法
误差逆传播(error BackPropagation,简称BP,又称反向传播)算法用来更新参数,它是一个迭代学习算法,基于梯度下降策略,以目标的负梯度方向对参数进行调整
BP算法基于梯度下降策略,以目标的负梯度方向对参数调整,对误差总 E k E_k Ek,给定学习率 η \eta η, w w w为所有层的权重
Δ w = − η ∂ E k ∂ w \Delta w = -\eta \frac{\partial E_k}{\partial w} Δw=−η∂w∂Ek
如:求隐层到输出层的权重 w h j w_{hj} whj
∂ E k ∂ w j k = ∂ E k ∂ y ^ ∗ ∂ y ^ ∂ w h j \frac{\partial E_k}{\partial w_{jk}}=\frac{\partial E_k}{\partial \hat y}\ast \frac{\partial \hat y}{\partial w_{hj}} ∂wjk∂Ek=∂y^∂Ek∗∂whj∂y^
深度学习
典型的深度学习模型就是很深层的神经网络
模型复杂度
- 增加隐层神经元的数目 (模型宽度)
- 增加隐层数目(模型深度)
- 从增加模型复杂度的角度看, 增加隐层的数目比增加隐层神经元的数目更有效. 这是因为增加隐层数不仅增加额拥有激活函数的神经元数目, 还增加了激活函数嵌套的层数.
10. 集成学习
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。
如何产生“好而不同”的个体学习器,是集成学习研究的核心。
一般来说集成学习可以分为三大类:
- 用于减少方差的bagging
- 用于减少偏差的boosting
- 用于提升预测结果的stacking
Bagging
Bagging是引导聚合的意思。减少一个估计方差的一种方式就是对多个估计进行平均。例如,我们可以用训练集的不同子集(随机选择并替代训练集)训练M个不同的树然后计算最后的结果:
Bagging使用装袋采样来获取数据子集训练基础学习器。通常分类任务使用投票的方式集成,而回归任务通过平均的方式集成。
1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(有放回)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(我们这里假设k个训练集之间是相互独立的,事实上不是完全独立)
2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。但是是同种模型。(注:,k个训练集虽然有重合不完全独立,训练出来的模型因为是同种模型也是不完全独立。这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
对于Bagging需要注意的是,每次训练集可以取全部的特征进行训练,也可以随机选取部分特征训练,例如随机森林就是每次随机选取部分特征
常用的集成算法模型是随机森林和随机树
在随机森林中,每个树模型都是装袋采样训练的。另外,特征也是随机选择的,最后对于训练好的树也是随机选择的。
这种处理的结果是随机森林的偏差增加的很少,而由于弱相关树模型的平均,方差也得以降低,最终得到一个方差小,偏差也小的模型。
f ( x ) = 1 M ∑ m = 1 M f m ( x ) f(x)=\frac{1}{M}\sum_{m=1}^M{f_m(x)} f(x)=M1∑m=1Mfm(x)
在一个极端的随机树算法中,随机应用的更为彻底:训练集分割的阈值也是随机的,即每次划分得到的训练集是不一样的。这样通常能够进一步减少方差,但是会带来偏差的轻微增加。
Boosting(提高)
Boosting指的是通过算法集合将弱学习器转换为强学习器。boosting的主要原则是训练一系列的弱学习器,所谓弱学习器是指仅比随机猜测好一点点的模型,例如较小的决策树,训练的方式是利用加权的数据。在训练的早期对于错分数据给予较大的权重。
对于训练好的弱分类器,如果是分类任务按照权重进行投票,而对于回归任务进行加权,然后再进行预测。boosting和bagging的区别在于是对加权后的数据利用弱分类器依次进行训练。
boosting是一族可将弱学习器提升为强学习器的算法,这族算法的工作机制类似:
- 先从初始训练集训练出一个基学习器;
- 再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注;
- 基于调整后的样本分布来训练下一个基学习器;
- 重复进行上述步骤,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
AdaBoost
AdaBoost算法每一轮都要判断当前基学习器是否满足条件,一旦条件不满足,则当前学习器被抛弃,且学习过程停止。
AdaBoost算法中的个体学习器存在着强依赖关系,应用的是串行生成的序列化方法。每一个基生成器的目标,都是为了最小化损失函数。所以,可以说AdaBoost算法注重减小偏差。
由于属于boosting算法族,采用的是加性模型,对每个基学习器的输出结果加权处理,只会得到一个输出预测结果。所以标准的AdaBoost只适用于二分类任务
Stacking(堆叠)
Stacking是通过一个元分类器或者元回归器来整合多个分类模型或回归模型的集成学习技术。基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。
结合策略
集成学习的第二类模型,为了提高集成的泛化能力,每个基学习器之间不存在很强的依赖性,所以最终预测结果时,需要一定的策略对T个结果进行结合。下面介绍结合策略。
平均法
对数值型输出,最常见的结合策略是使用平均法。
- 简单平均法
- 加权平均法
但是对于规模比较大的集成来说,权重参数比较多,较容易导致过拟合。加权平均法未必一定优于简单平均法。
一般而言,在个体学习器性能相差较大时,宜使用加权平均法,而在个体学习器性能相近时,宜使用简单平均法。
投票法
- 绝对多数投票法
若某标记得票过半数,则预测为该标记;否则拒绝预测。 - 相对多数投票法
预测为得票最多的标记。若同时有多个标记获得最高票,则从中随机选取一个。 - 加权投票法