在监督学习的过程中,模型就是所要学习的条件概率分布或者决策函数,模型的假设空间包含了所有可能的条件概率分布或决策函数。
有了模型的假设空间,我们就要考虑按照什么样的准则学习或者选择最优的模型,这也是统计学习的目标——从假设空间中选取最优模型。
损失函数
损失函数是度量模型一次的好坏,风险函数是度量模型平均意义下的好坏。
假设我们在假设空间内选择模型 f f f,那么对于输入 X X X的预测结果为 f ( X ) f(X) f(X),这个结果和真实值 Y Y Y可能一致也可能不一致,我们使用损失函数或者代价函数来度量预测的错误程度,记作 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X)),常用的损失函数有以下几种。
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X)) = \left\{\begin{matrix} 1,& Y \neq f(X)\\ 0,& Y = f(X) \end{matrix}\right. L(Y,f(X))={1,0,Y̸=f(X)Y=f(X)
L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X)) = (Y-f(X))^2 L(Y,f(X))=(Y−f(X))2
绝对损失函数
L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X)) = |Y-f(X)| L(Y,f(X))=∣Y−f(X)∣
对数损失函数或对数似然损失函数
L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) L(Y,P(Y|X)) =-logP(Y|X) L(Y,P(Y∣X))=−logP(Y∣X)
风险函数
由于输入输出(X,Y)是随机变量,遵循联合分布 P ( X , Y ) P(X,Y) P(X,Y)所以损失函数的期望是
R e x p ( f ) = E P [ L ( Y , f ( X ) ) ] = ∫ X ∗ Y L ( y , f ( x ) ) P ( x , y ) d x d y R_{exp}(f) = E_P[L(Y,f(X))] = \int_{X*Y}L(y,f(x))P(x,y)dxdy Rexp(f)=EP[L(Y,f(X))]=∫X∗YL(y,f(x))P(x,y)dxdy
这就是理论上模型 f ( X ) f(X) f(X)关于联合分布 f ( X , Y ) f(X,Y) f(X,Y)的平均意义下的损失,也就是风险函数或者期望损失函数,但是由于数据的联合分布未知,所以风险函数是不能直接计算的,实际应用中我们定义了经验风险函数。
经验风险函数
给定训练集
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T = {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T=(x1,y1),(x2,y2),...,(xN,yN)
模型 f ( X ) f(X) f(X)关于训练数据集的平均损失为经验风险或者经验损失,记作
R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp}(f)= \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i)) Remp(f)=N1i=1∑NL(yi,f(xi))
根据大数定理,当样本容量N趋向于无穷时,经验风险趋向于期望风险,所以我们在实际使用过程中使用经验风险来估计期望风险
经验风险最小化
在假设空间,损失函数和训练数据集确定的情况下,经验风险函数就可以确定。经验最小化的策略认为经验风险最小的模型就是最优的模型,所以求得最优模型就转化为求解经验风险最小化问题
m i n f ∈ F 1 N L ( y i , f ( x i ) ) min_{f\in F} \frac{1}{N}L(y_i,f(x_i)) minf∈FN1L(yi,f(xi))
当样本容量很大时,经验风险最小化能够保证有很好的学习效果,例如极大似然估计,当模型为条件概率分布,损失函数是对数函数时,经验风险最小化就等价与极大似然估计。
但是当样本容量很小时,经验风险最小化就有可能造成“过拟合”现象,所以我们提出结构风险最小化。
结构风险最小化
结构风险最小化等价于正则化,在经验风险的基础上加上表示模型复杂度的正则化项,在假设空间、损失函数以及训练数据集确定的情况下,结构风险的定义为
R s r m ( f ) = 1 N L ( y i , f ( x i ) ) + λ J ( f ) R_{srm}(f) = \frac{1}{N}L (y_i,f(x_i))+\lambda J(f) Rsrm(f)=N1L(yi,f(xi))+λJ(f)
J ( f ) J(f) J(f)为模型复杂度,可以是参数向量的 L 1 L_1 L1范数,也可以是参数向量的 L 2 L_2 L2范数, λ ⩾ 0 \lambda \geqslant 0 λ⩾0是系数,用来权衡经验风险和模型复杂度。只有经验风险和模型复杂度都很小的时候,结构风险才会很小,结构风险小的模型往往对训练数据和未知的测试数据都有很好的预测。结构风险最小化策略认为结构风险最小的模型是最优的模型,所以求最优化模型,也就是求最优化问题:
m i n f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) min_{f\in F}\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f) minf∈FN1i=1∑NL(yi,f(xi))+λJ(f)
贝叶斯估计中的最大后验概率估计就是结构风险最小化的例子,当模型是条件概率分布、损失函数是对数函数、模型复杂度由模型的先验概率表示的时候,结构风险最小化就等价于最大后验概率估计。
主要思想采用测量不同的特征值之间的距离方法来进行分类
工作原理: 存在一个样本数据集合,并且样本集中的每个数据都存在标签。输入新的没有标签的数据后,将新数据的每个特征值和样本集中数据对应的特征相比较,然后算法提取样本中最相似的(最近邻)数据分类标签。一般来说,我们只选择样本数据集中最相似的k个数据,所以叫k近邻算法。
优缺点:
实施KNN算法流程
特征空间中的两个实例点的距离是两个实例点相似程度的反应。距离度量方法有很多种,最常见的是 L p L_p Lp距离。使用不同的距离得到的最近邻的点是不一样的
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 / p L_p(x_i,x_j) = (\sum_{l=1}^{n}{|x_i^{(l)}-x_j^{(l)}|^p})^{1/p} Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)1/p
k值的选择会对k近邻算法的结果造成重大的影响
在实际构建的时候,我们通常会选择一个较小的k值,通过交叉验证法来选取最优的k值
一般采用多数表决的方式,使经验风险最小化
由于普通的k近邻算法采用的是线性扫描的方式,当训练集很大时,计算非常耗时,所以我们考虑使用特殊的结构存储训练数据,以减少计算距离的次数,kd树就是其中的一种。
输入:k维空间数据集 T = { x 1 , x 2 , . . . x N } T = \{x_1,x_2,...x_N\} T={x1,x2,...xN},其中 x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( k ) ) T , i = 1 , 2 , . . . , N ; x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(k)})^T, i=1,2,...,N; xi=(xi(1),xi(2),...,xi(k))T,i=1,2,...,N;
输出:kd树
算法过程
输入:已经构造的kd树,目标点x
输出:x的最近邻
算法过程
如果实例点是随机分布的,那么kd树搜索的平均计算复杂度是 O ( l o g N ) O(logN) O(logN)。N为训练实例数,kd树适用于训练实例树远大于空间维数的k近邻搜索。当空间维数接近训练实例数时,其效率会迅速下降,几乎接近于线性扫描。
准备数据过程中的特征值归一化:
在计算样本特征之间的距离时,我们发现差值最大的属性对计算结果的影响最大,为了处理这种不同取值范围的特征值,我们需要对其进行归一化处理。经常使用的方法是将当前特征值除以(特征最大值和最小值的差),将特征值得范围缩小到0-1
工作原理: 决策树解决了k近邻算法无法给出数据内部含义的问题,其数据形式非常好理解,他的一个重要任务就是为了理解数据中蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取一系列规则,这些机器根据数据集创建规则的过程就是机器学习的过程。
优缺点
递归构建决策树流程
createBranch()伪代码
检测数据集中的每个子项是否属于同一分类:
if so return 类标签
else
寻找划分数据集的最好特征
划分数据集
创建分支节点
for 每个划分的子集
调用函数createBranch并增加返回结果到分支节点中
return 分支节点
使用算法流程:
使用决策树以及用于构造决策树的标签向量,程序比较测试数据与决策树上的数值,递归执行该过程直到进入叶子节点,最后将测试数据定义为叶子节点所属的类型。
决策树学习本质上是从训练数据集中归纳出一组分类规则。与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个都没有,我们需要的是一个与训练数据矛盾较小的决策树。从所有的决策树中选取最优的决策树是NP完全问题,所以现实中的决策树构建通常采用启发式的方法,近似求解这一最优化问题,这样得到的决策树是次最优的。所以决策树算法通常是一个递归的选择最优特征,并根据该特征对训练的数据进行分割,使得对各个子数据集有一个最好的分类过程,这一过程也对应着对特征空间的划分。
特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。通常使用的准则是信息增益或者信息增益比
根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征作为划分。
先给出熵与条件熵的定义
熵表示随机变量的不确定性的度量,设X是一个取有限个值得离散随机变量,其概率分布为
P ( X = x i ) = p i , i = 1 , 2 , . . . n P(X=x_i) = p_i, i = 1,2,...n P(X=xi)=pi,i=1,2,...n
随机变量的熵为
H ( X ) = − ∑ i − 1 n p i l o g p i H(X) = -\sum_{i-1}^np_ilogp_i H(X)=−i−1∑npilogpi
规定0log0 = 0,熵只依赖于X的分布,与X的取值无关,所以也可表示为
H ( p ) = − ∑ i − 1 n p i l o g p i H(p) = -\sum_{i-1}^np_ilogp_i H(p)=−i−1∑npilogpi
设有随机变量 ( X , Y ) (X,Y) (X,Y),其联合概率分布为
P ( X = x i , Y = y i ) = p i j , i = 1 , 2 , . . . , n ; j = 1 , 2 , . . . , m P(X = x_i,Y = y_i) = p_{ij},i = 1,2,...,n;j = 1,2,...,m P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m
条件熵表示在在已知随机变量X的条件下随机变量Y的不确定性。
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) , p i = P ( X = x i ) , i = 1 , 2 , . . . , n H(Y|X) = \sum_{i=1}^np_iH(Y|X = x_i),p_i = P(X = x_i),i = 1,2,...,n H(Y∣X)=i=1∑npiH(Y∣X=xi),pi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据统计(特别是极大似然估计)得到时,所对应的的熵与条件熵分别称为经验熵和经验条件熵。
信息增益: 特征A对训练数据集D的信息增益 g ( D , A ) g(D,A) g(D,A)定义为集合D的经验熵 H ( D ) H(D) H(D)与特征A给定条件下D的经验熵 H ( D ∣ A ) H(D|A) H(D∣A)之差
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A) = H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
信息增益的算法
设训练集为 D D D, ∣ D ∣ |D| ∣D∣表示其样本容量,也就是样本个数,设有K个类 C k C_k Ck, ∣ C k ∣ |C_k| ∣Ck∣为属于 C k C_k Ck的样本个数,设特征A有n个不同的取值 a 1 , a 2 , . . . a n {a_1,a_2,...a_n} a1,a2,...an,根据特征A的取值将D划分为n个子集 D 1 , D 2 , . . . D n D_1,D_2,...D_n D1,D2,...Dn, ∣ D i ∣ |D_i| ∣Di∣为 D i D_i Di的样本个数,记子集 D i D_i Di中属于类 C k C_k Ck的样本集合为 D i k D_ik Dik, ∣ D i k ∣ |D_ik| ∣Dik∣为 D i k D_ik Dik的样本个数,那么信息增益的算法如下
输入:训练数据集 D D D和特征 A A A
输出:特征A对训练数据集D的信息增益 g ( D , A ) g(D,A) g(D,A)
以信息增益作为划分数据集的特征,存在偏向于选择取值较多的特征的问题,使用信息增益比可以矫正这个问题
信息增益比: 特征A对训练数据集D的信息增益比 g R ( D , A ) g_R(D,A) gR(D,A)定义为信息增益 g ( D , A ) g(D,A) g(D,A)与训练数据集关于特征A 的值的熵 H A ( D ) H_A(D) HA(D)之比
g R ( D , A ) = g ( D , A ) H A ( D ) g_R(D,A) = \frac{g(D,A)}{H_A(D)} gR(D,A)=HA(D)g(D,A)
H A ( D ) = − ∑ k = 1 K ∣ D i ∣ ∣ D i ∣ l o g 2 ∣ D i ∣ ∣ D i ∣ H_A(D) = -\sum_{k=1}^K\frac{|D_{i}|}{|D_i|}log_2\frac{|D_{i}|}{|D_i|} HA(D)=−k=1∑K∣Di∣∣Di∣log2∣Di∣∣Di∣
n是特征A的取值个数
分类问题中,假设有k个类,样本点属于第k类的概率为 p k p_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}^Kp_k(1=p_k) = 1-\sum_{k=1}^Kp_k^2 Gini(p)=k=1∑Kpk(1=pk)=1−k=1∑Kpk2
对于二分类问题,若样本点属于第一个类的概率为p,那么概率分布的基尼指数为
G i n i ( p ) = 2 p ( 1 − p ) Gini(p) = 2p(1-p) Gini(p)=2p(1−p)
对于给定的样本集合,基尼指数为
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=1∑K(∣D∣∣Ck∣)2
C k C_k Ck是D中属于k类的样本子集,K是类的个数
如果样本集合D根据特征A是否可以取某一可能值a,分成 D 1 D_1 D1、 D 2 D_2 D2两部分,那么在特征A的条件下,集合D的基尼指数定义为
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D,A) = \frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
ID3算法的核心在于在决策树的各个节点上使用信息增益准则选择特征,递归地构建决策树。
具体方法:
C4.5和C3很相似,对C3做了改进,在生成的过程中使用信息增益比来选择特征
CART是分类与回归树的简称,既可以用于分类也可以用于回归,CART假设决策树是二叉树,内部节点特征的取值为是或否,这样的二叉树等价于递归的二分每个特征。构建的过程中对回归树采用平方误差最小化准则,对分类树采用基尼指数最小化准则进行特征选择,生成二叉树
使用 ∑ x i ∈ R m ( y i − f ( x i ) ) 2 \sum_{x_i\in{R_m}}(y_i-f(x_i))^2 ∑xi∈Rm(yi−f(xi))2来表示回归树对预测数据的预测误差,然后遍历所有特征的所有切分点,寻找最好的切分特征的最好切分点。
最小二乘回归树算法流程:
CART生成算法:
输入:训练数据集D,停止计算的条件
输出:CART决策树
根据训练数据集,从根节点开始,递归的对每个节点进行以下操作:
决策树算法会递归的生成决策树直到不能继续下去为止,这样产生的树对训练数据的分类很准确但对未知的数据分类却没有那么准确,即出现过拟合现象。解决这个问题的方法是对已经生成的抉择书进行简化,即剪枝。
剪枝算法: 极小化决策树整体的损失函数或者代价函数来实现。
设树 T T T的叶节点个数为 ∣ T ∣ |T| ∣T∣, t t t是树 T T T的叶节点,该叶节点有 N t N_t Nt个样本点,其中k类的样本点有 N t k N_tk Ntk个, k = 1 , 2 , . . . , n k = 1,2,...,n k=1,2,...,n, H t ( T ) H_t(T) Ht(T)为点t上的经验熵, α ≥ 0 \alpha\geq0 α≥0为参数,则决策树的损失函数可以定义为
C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_\alpha(T) = \sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T| Cα(T)=t=1∑∣T∣NtHt(T)+α∣T∣
其中经验熵为
H t ( T ) = − ∑ k N t k N t l o g 2 N t k N t H_t(T) = -\sum_{k}\frac{N_{tk}}{N_t}log_2\frac{N_{tk}}{N_t} Ht(T)=−k∑NtNtklog2NtNtk
C ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) = ∑ t = 1 ∣ T ∣ ∑ k = 1 K N t k l o g N t k N t C(T) = \sum_{t=1}^{|T|}N_tH_t(T) = \sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}log\frac{N_{tk}}{N_t} C(T)=t=1∑∣T∣NtHt(T)=t=1∑∣T∣k=1∑KNtklogNtNtk
C α ( T ) = C ( T ) + α ∣ T ∣ C_{\alpha}(T) = C(T)+\alpha|T| Cα(T)=C(T)+α∣T∣
C ( T ) C(T) C(T)表示模型对训练数据的拟合程度, ∣ T ∣ |T| ∣T∣表示模型的复杂程度,参数 α \alpha α控制两者之间的影响, α \alpha α越大,模型越简单, α \alpha α越小,模型越复杂
算法流程:(动态规划)
输入:生成算法产生的整个树 T T T,参数 α \alpha α
输出:修剪后的子树 T α T_{\alpha} Tα
工作原理:
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先及与特征条件独立假设输入输出的联合概率分布,然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率的最大输出y。
所以他给出的是分到每个类的条件概率,而不是一个确定的分类结果。它实际上学习到生成数据的机制,所以属于生成模型。
优缺点:
使用流程:(以文本分类为例)
计算每个类别中的文档数目
对每篇训练文档
对每个类别
如果词条出现在文档中---->增加该词条的计数值
增加所有词条的计数值
对每个类别
对每个词条
将该词条的数目除以总词条数目得到条件概率(也就是每个特征每个值属于不同类别的条件概率)
返回每个类别的条件概率(计算测试样本的概率时使用)
朴素贝叶斯算法对条件概率分布做了条件独立性的假设
P ( X = x , Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . X ( n ) = x ( n ) ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X=x,Y=c_k)=P(X^{(1)} = x^{(1)},...X^{(n)} = x^{(n)}|Y = c_k)=\prod_{j=1}^nP(X^{(j)} = x^{(j)}|Y = c_k) P(X=x,Y=ck)=P(X(1)=x(1),...X(n)=x(n)∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)
后验概率的计算根据贝叶斯定理进行
P ( Y = c k ∣ X = x ) = P ( X = x ∣ Y = c k ) ∗ P ( Y = c k ) ∑ k P ( X = x ∣ Y = c k ) P ( Y = c k ) P(Y = c_k|X=x) =\frac{ P(X=x|Y = c_k)*P(Y = c_k)}{\sum_kP(X=x|Y = c_k)P(Y = c_k)} P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)∗P(Y=ck)
将独立性假设带入得到
P ( Y = c k ∣ X = x ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) ∗ P ( Y = c k ) ∑ k ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P ( Y = c k ) P(Y = c_k|X=x) =\frac{ \prod_{j=1}^nP(X^{(j)} = x^{(j)}|Y = c_k)*P(Y = c_k)}{\sum_k\prod_{j=1}^nP(X^{(j)} = x^{(j)}|Y = c_k)P(Y = c_k)} P(Y=ck∣X=x)=∑k∏j=1nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)∗P(Y=ck)
由于分母对所有的 c k c_k ck都是相同的,并且我们是要得到后验概率的最大值,所以我们的朴素贝叶斯分类法的基本公式就变成了
y = a r g m a x c k ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) ∗ P ( Y = c k ) y = arg max_{c_k}\prod_{j=1}^nP(X^{(j)} = x^{(j)}|Y = c_k)*P(Y = c_k) y=argmaxckj=1∏nP(X(j)=x(j)∣Y=ck)∗P(Y=ck)
我们在构建模型时要计算的就是先验概率 P ( Y = c k ) P(Y = c_k) P(Y=ck)和条件概率 P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)} = x^{(j)}|Y = c_k) P(X(j)=x(j)∣Y=ck)
P ( Y = c k ) = ∑ i = 1 n I ( y i = c k ) N , K = 1 , 2 , . . . , K P(Y =c_k) = \frac{\sum_{i=1}^nI(y_i = c_k)}{N},K = 1,2,...,K P(Y=ck)=N∑i=1nI(yi=ck),K=1,2,...,K
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)} = a_{jl}|Y = c_k) = \frac{\sum_{i=1}^NI(x_i^{(j)} = a_{jl},y_i = c_k)}{\sum_{i=1}^NI(y_i = c_k)} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck)
算法流程:
使用极大似然估计可能会出现所要估计的概率值为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差,解决这一问题的方法是采用贝叶斯估计。
P λ ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P_\lambda(X^{(j)} = a_{jl}|Y = c_k) = \frac{\sum_{i=1}^NI(x_i^{(j)} = a_{jl},y_i = c_k)+\lambda}{\sum_{i=1}^NI(y_i = c_k)+S_j\lambda} Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ
等价于在随机变量的各个取值频数上赋予一个正数 λ > 0 \lambda>0 λ>0,当 λ = 0 \lambda=0 λ=0时就是极大似然估计,当 λ = 1 \lambda=1 λ=1时为拉普拉斯平滑。
同样,先验概率的贝叶斯估计是
P λ ( Y = c k ) = ∑ i = 1 n I ( y i = c k ) + λ N + K λ , K = 1 , 2 , . . . , K P_\lambda(Y =c_k) = \frac{\sum_{i=1}^nI(y_i = c_k)+\lambda}{N+K\lambda},K = 1,2,...,K Pλ(Y=ck)=N+Kλ∑i=1nI(yi=ck)+λ,K=1,2,...,K
工作原理: 根据现有数据对分类边界线建立回归公式,以此进行分类。训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化的算法。输出为二值型。
优缺点:
二项逻辑斯蒂回归模型是一种分类模型,由条件概率表示P(Y|X)来表示,我们通过监督学习的方法来估计模型参数
P ( Y = 1 ∣ X ) = e x p ( w ⋅ x + b ) 1 + e x p ( w ⋅ x + b ) P(Y=1|X) = \frac{exp(w\cdot x+b) }{1+exp(w\cdot x+b)} P(Y=1∣X)=1+exp(w⋅x+b)exp(w⋅x+b)
P ( Y = 0 ∣ X ) = 1 1 + e x p ( w ⋅ x + b ) P(Y=0|X) = \frac{1 }{1+exp(w\cdot x+b)} P(Y=0∣X)=1+exp(w⋅x+b)1
其中 w = ( w ( 1 ) , w ( 2 ) , . . . w ( n ) ) w =(w^{(1)},w^{(2)},...w^{(n)}) w=(w(1),w(2),...w(n)), x = ( x ( 1 ) , x ( 2 ) , . . . x ( n ) ) x =(x^{(1)},x^{(2)},...x^{(n)}) x=(x(1),x(2),...x(n)),线性函数的值越接近正无穷,概率值就越接近1,线性函数的值越接近负无穷,概率值就越接近0。
对于给定的训练集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) , T = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n),} T=(x1,y1),(x2,y2),...,(xn,yn),,可以使用极大似然估计法估计模型的参数,从而得到逻辑斯蒂回归模型
设: 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=1∏N[(π(xi)]yi[(1−π(xi)]1−yi
对数似然函数为
L ( w ) = ∑ i = 1 N [ ( y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ] L(w) = \sum_{i=1}^N[(y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i)] L(w)=i=1∑N[(yilogπ(xi)+(1−yi)log(1−π(xi)]
问题就转变为了以对数函数为目标函数的优化问题,逻辑斯蒂回归中通常采用的是梯度下降法以及拟牛顿法。
P ( Y = k ∣ X ) = e x p ( w k ⋅ x + b ) 1 + ∑ k = 1 K − 1 e x p ( w k ⋅ x + b ) , k = 1 , 2 , . . . , K − 1 P(Y=k|X) = \frac{exp(w_k\cdot x+b) }{1+\sum_{k=1}^{K-1}exp(w_k\cdot x+b)},k = 1,2,...,K-1 P(Y=k∣X)=1+∑k=1K−1exp(wk⋅x+b)exp(wk⋅x+b),k=1,2,...,K−1
P ( Y = K ∣ X ) = 1 1 + ∑ k = 1 K − 1 e x p ( w k ⋅ x + b ) P(Y=K|X) = \frac{1}{1+\sum_{k=1}^{K-1}exp(w_k\cdot x+b)} P(Y=K∣X)=1+∑k=1K−1exp(wk⋅x+b)1
每个回归系数初始化为1
重复R次(R是人为设定好的)
计算整个数据集的梯度
使用alpha*gradient更新回归系数的向量
返回回归系数
weights = ones((n,1)) #初始化
for k in range(cycleNum):
h = sigmoid(dataMatrix * weights)
error = (labelMat - h)
weights = weights- alpha * dataMatrix.transpose() * error
return weights
对于
L ( w ) = − 1 N ∑ i = 1 N [ ( y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ] L(w) = -\frac{1}{N}\sum_{i=1}^N[(y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i)] L(w)=−N1i=1∑N[(yilogπ(xi)+(1−yi)log(1−π(xi)]
有
w = w − α ( − 1 N ∑ i = 1 N ( π ( x i ) − y i ) x i ) w = w-\alpha(-\frac{1}{N}\sum_{i=1}^N(\pi(x_i)-y_i)x_i) w=w−α(−N1i=1∑N(π(xi)−yi)xi)
梯度下降在每次使用的时候都需要遍历整个数据集,当数据集很大时需要的时间也很长,一种改进方法是一次仅使用一个样本点来更新回归系数,称为随机梯度下降法。由于可以在新样本到来时对分类器进行增量式更新,因此随机梯度下降法是一个在线学习算法,与在线学习对应的一次处理所有数据的是批处理。
所有回归系数初始化为1
对数据集中的每个样本
计算该样本的梯度
使用alpha * gradient 更新回归系数的值
返回回归系数值
使用样本随机选择和alpha动态减少机制的随机梯度下降算法,减少波动的同时,比原随机梯度下降法收敛更快。
会补的!!!!
工作原理: 支持向量机是一种二分类模型,他的基本定义是在特征空间上的间隔最大的线性分类器,间隔最大是它有别于感知机。支持向量机的学习策略就是间隔最大化,可以形式化为一个求解凸二次规划的问题。
优缺点:
假设输入空间与特征空间是两个不同的空间。线性可分支持向量机假设这两个空间的原始一一对应,并将输入空间中的输入映射到特征空间中的特征向量。支持向量的学习是在特征空间进行的,再假设训练数据集是线性可分的。
学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的类,一般存在无穷多个这样的平面,线性可分支持向量机利用间隔最大化求最优分离超平面。
给定线性可分得训练数据集,通过间隔最大化或者等价的求解相应的凸二次规划问题得到的分离超平面为
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^* = 0 w∗⋅x+b∗=0
相应的决策函数为,称为线性可分支持向量机
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^*\cdot x+b^* ) f(x)=sign(w∗⋅x+b∗)
一般来说一个点距离分离超平面的远近可以表示分类预测的确信程度。对于超平面 w ⋅ x + b = 0 w\cdot x+b = 0 w⋅x+b=0, ∣ w ⋅ x + b ∣ |w\cdot x+b| ∣w⋅x+b∣能够相对的表示点x距离超平面的远近。 w ⋅ x + b w\cdot x+b w⋅x+b的符号和类标记 y y y是否一致可以表示分类是否正确,综上所述,我们使用 y ( w ⋅ x + b ) y(w\cdot x+b) y(w⋅x+b)来表示分类的正确性和确信度,这就是函数间隔
对于给定的训练数据集T和超平面 ( w , b ) (w,b) (w,b),样本点的 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔为
r i ^ = y i ( w ⋅ x i + b ) \hat{r_i} = y_i(w\cdot x_i+b) ri^=yi(w⋅xi+b)
定义超平面对训练数据集T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔最小值
r ^ = m i n i = 1 , 2 , . . . N r i ^ \hat{r} = min_{i = 1,2,...N}\hat{r_i} r^=mini=1,2,...Nri^
函数间隔可以用来表示分类预测的正确性及确信度,但是成比例的改变w和b会使函数间隔发生变化,而实际上超平面没有发生变化,所以我们对分离超平面的法向量w加以约束, ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1,使得间隔固定,这时函数间隔就变为几何间隔
对于给定的训练数据集T和超平面 ( w , b ) (w,b) (w,b),样本点的 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔为
r i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) r_i = y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||}) ri=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)
同样的,定义超平面对训练数据集T的几何间隔为超平面 ( w , b ) (w,b) (w,b)关于T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔最小值
r = m i n i = 1 , 2 , . . . N r i {r} = min_{i = 1,2,...N}{r_i} r=mini=1,2,...Nri
函数间隔和几何间隔之间的关系为
r i = r i ^ ∣ ∣ w ∣ ∣ r_i = \frac{\hat{r_i}}{||w||} ri=∣∣w∣∣ri^
r = r ^ ∣ ∣ w ∣ ∣ r= \frac{\hat{r}}{||w||} r=∣∣w∣∣r^
要求几何间隔最大化的超平面,也就是最大间隔分离超平面,可以将问题转化为
m a x w , b r max_{w,b} r maxw,br
s . t . y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ⩾ r , r = 1 , 2 , . . . , N s.t. y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||}) \geqslant r ,r=1,2,...,N s.t.yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)⩾r,r=1,2,...,N
根据函数间隔和几何间隔之间的关系,我们可以将问题转化为
m a x w , b r ^ ∣ ∣ w ∣ ∣ max_{w,b} \frac{\hat{r}}{||w||} maxw,b∣∣w∣∣r^
s . t . y i ( w ⋅ x i + b ) ⩾ r , r = 1 , 2 , . . . , N s.t. y_i(w\cdot x_i+{b}) \geqslant r ,r=1,2,...,N s.t.yi(w⋅xi+b)⩾r,r=1,2,...,N
函数间隔的取值并不影响我们最优化问题的解,所以我们取 r ^ = 1 \hat{r} = 1 r^=1,带入后发现最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1和最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2是一样的,所以我们将问题转化为一个凸二次优化问题
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 min_{w,b} \frac{1}{2}||w||^2 minw,b21∣∣w∣∣2
s . t . y i ( w ⋅ x i + b ) − 1 ⩾ 0 , r = 1 , 2 , . . . , N s.t. y_i(w\cdot x_i+{b}) -1\geqslant 0 ,r=1,2,...,N s.t.yi(w⋅xi+b)−1⩾0,r=1,2,...,N
为了求解线性可分支持向量机的最优化问题,我们将其作为原始问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量机的对偶算法。这样做的原因一个是方便求解,另一个是自然引入核函数,进而推广到非线性分类问题。
首先构建拉格朗日函数,对每一个不等式约束引入拉格朗日乘子,定义拉格朗日函数
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i L(w,b,\alpha) = \frac{1}{2}||w||^2-\sum_{i=1}^N\alpha_iy_i(w\cdot x_i+b)+\sum_{i=1}^N\alpha_i L(w,b,α)=21∣∣w∣∣2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi
原始问题是极小极大问题
m i n w , b m a x α L ( w , b , α ) min_{w,b}max_{\alpha}L(w,b,\alpha) minw,bmaxαL(w,b,α)
原始问题的对偶问题是极大极小问题
m a x α m i n w , b L ( w , b , α ) max_{\alpha}min_{w,b}L(w,b,\alpha) maxαminw,bL(w,b,α)
为了得到对偶问题的解,需要先求 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)对 w , b w,b w,b的极小,再求对 α \alpha α的极大
(1)求 m i n w , b L ( w , b , α ) min_{w,b}L(w,b,\alpha) minw,bL(w,b,α)
∂ L ( w , b , α ) ∂ w = w − ∑ i = 1 N α i y i x i = 0 \frac{\partial L(w,b,\alpha)}{\partial w} = w-\sum_{i=1}^N\alpha_iy_ix_i = 0 ∂w∂L(w,b,α)=w−i=1∑Nαiyixi=0
∂ L ( w , b , α ) ∂ b = − ∑ i = 1 N α i y i = 0 \frac{\partial L(w,b,\alpha)}{\partial b} = -\sum_{i=1}^N\alpha_iy_i= 0 ∂b∂L(w,b,α)=−i=1∑Nαiyi=0
可得
w = ∑ i = 1 N α i y i x i w= \sum_{i=1}^N\alpha_iy_ix_i w=i=1∑Nαiyixi
∑ i = 1 N α i y i = 0 \sum_{i=1}^N\alpha_iy_i = 0 i=1∑Nαiyi=0
带入拉格朗日函数可得
L ( w , b , α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) + ∑ i = 1 N α i L(w,b,\alpha) = \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_iy_i((\sum_{j=1}^N\alpha _jy_jx_j)\cdot x_i+b)+\sum_{i=1}^N\alpha_i L(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi((j=1∑Nαjyjxj)⋅xi+b)+i=1∑Nαi
也就是
m i n w , b L ( w , b , α ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i min_{w,b}L(w,b,\alpha) = -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i minw,bL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
(2)求 m i n w , b L ( w , b , α ) min_{w,b}L(w,b,\alpha) minw,bL(w,b,α)对 α \alpha α的极大
m a x α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i max_\alpha -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i maxα−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 , α i ≥ 0 , i = 1 , 2 , . . . , N s.t. \sum_{i=1}^N\alpha_iy_i = 0, \alpha_i\geq0,i = 1,2,...,N s.t.i=1∑Nαiyi=0,αi≥0,i=1,2,...,N
也就是求
m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i min_\alpha \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i minα21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 , α i ≥ 0 , i = 1 , 2 , . . . , N s.t. \sum_{i=1}^N\alpha_iy_i = 0, \alpha_i\geq0,i = 1,2,...,N s.t.i=1∑Nαiyi=0,αi≥0,i=1,2,...,N
(3)在求出 α ∗ \alpha^* α∗后,我们来求解 w ∗ w^* w∗和 b ∗ b^* b∗
设 α ∗ \alpha^* α∗是对偶最优化问题的解,根据拉格朗日对偶性,原始问题是对偶问题的解的充分必要条件是KKT条件成立
即
∂ L ( w ∗ , b ∗ , α ∗ ) ∂ w = w ∗ − ∑ i = 1 N α i ∗ y i x i = 0 \frac{\partial L(w^*,b^*,\alpha^*)}{\partial w} = w^*-\sum_{i=1}^N\alpha_i^*y_ix_i = 0 ∂w∂L(w∗,b∗,α∗)=w∗−i=1∑Nαi∗yixi=0
∂ L ( w ∗ , b ∗ , α ∗ ) ∂ b = − ∑ i = 1 N α i ∗ y i = 0 \frac{\partial L(w^*,b^*,\alpha^*)}{\partial b} = -\sum_{i=1}^N\alpha_i^*y_i= 0 ∂b∂L(w∗,b∗,α∗)=−i=1∑Nαi∗yi=0
α i ∗ ( y i ( w ⋅ x i + b ∗ ) − 1 ) = 0 , i = 1 , 2 , . . . , N \alpha_i^*(y_i(w\cdot x_i+b^*)-1) = 0,i = 1,2,...,N αi∗(yi(w⋅xi+b∗)−1)=0,i=1,2,...,N
y i ( w ⋅ x i + b ∗ ) − 1 ≥ 0 , i = 1 , 2 , . . . , N y_i(w\cdot x_i+b^*)-1 \geq0,i = 1,2,...,N yi(w⋅xi+b∗)−1≥0,i=1,2,...,N
α i ∗ ≥ 0 , i = 1 , 2 , . . . , N \alpha_i^*\geq 0,i = 1,2,...,N αi∗≥0,i=1,2,...,N
可得
w ∗ = ∑ i = 1 N α i ∗ y i x i w^* =\sum_{i=1}^N\alpha_i^*y_ix_i w∗=i=1∑Nαi∗yixi
其中至少一个 α j ∗ > 0 \alpha _j^*>0 αj∗>0(反证法可以证明),对此j有
y j ( w ∗ ⋅ x j + b ∗ ) − 1 = 0 y_j(w^*\cdot x_j+b^*)-1 = 0 yj(w∗⋅xj+b∗)−1=0
将 w ∗ w^* w∗带入并且等式两边同乘 y j y_j yj可得
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^* = y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
整体算法流程:
输入:线性可分训练集
输出:分离超平面和分类决策函数
s . t . ∑ i = 1 N α i y i = 0 , α i ≥ 0 , i = 1 , 2 , . . . , N s.t. \sum_{i=1}^N\alpha_iy_i = 0, \alpha_i\geq0,i = 1,2,...,N s.t.i=1∑Nαiyi=0,αi≥0,i=1,2,...,N
并且选择 α ∗ \alpha^* α∗的一个正分量 α j ∗ > 0 \alpha_j^*>0 αj∗>0,计算
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^* = y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^*\cdot x+b^* ) f(x)=sign(w∗⋅x+b∗)
在线性可分支持向量机中, w ∗ w^* w∗和 b ∗ b^* b∗只依赖于训练数据中对应于 α i ∗ > 0 \alpha_i^*>0 αi∗>0的样本点,其他的样本点对 w ∗ w^* w∗和 b ∗ b^* b∗没有影响,我们将训练中对应于 α i ∗ > 0 \alpha_i^*>0 αi∗>0的样本点称为支持向量。
通常情况下,线性数据是不可分的,训练数据中存在一些特异点,将这些特异点去除之后,剩下的大部分样本点组成的集合线性可分,所以我们对每个样本点引入松弛变量,修改硬间隔最大化为软间隔最大化。
修改后的约束条件变为
y i ( w ⋅ x i + b ) ⩾ 1 − ξ i y_i(w\cdot x_i+{b}) \geqslant 1-\xi_i yi(w⋅xi+b)⩾1−ξi
对于每一个松弛变量都要支付一个代价,所以目标函数变为
1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i \frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i 21∣∣w∣∣2+Ci=1∑Nξi
C > 0 C>0 C>0称为惩罚参数,是由实际应用决定的,C值越大对误分类的惩罚越大。
凸二次规划问题就变为
m i n w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i min_{w,b,\xi} \frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i minw,b,ξ21∣∣w∣∣2+Ci=1∑Nξi
s . t . y i ( w ⋅ x i + b ) ⩾ 1 − ξ i , ξ i ⩾ 0 , r = 1 , 2 , . . . , N , s.t. y_i(w\cdot x_i+{b}) \geqslant 1-\xi_i,\xi_i\geqslant 0,r=1,2,...,N, s.t.yi(w⋅xi+b)⩾1−ξi,ξi⩾0,r=1,2,...,N,
证明及计算过程同线性可分支持向量机
整体算法流程:
输入:训练数据集
输出:分离超平面和分类决策函数
s . t . ∑ i = 1 N α i y i = 0 , 0 ⩽ α i ⩽ C , i = 1 , 2 , . . . , N s.t. \sum_{i=1}^N\alpha_iy_i = 0, 0\leqslant\alpha_i\leqslant C,i = 1,2,...,N s.t.i=1∑Nαiyi=0,0⩽αi⩽C,i=1,2,...,N
并且选择 α ∗ \alpha^* α∗的一个正分量 < 0 α j ∗ < C <0\alpha_j^*<C <0αj∗<C,计算
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^* = y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^*\cdot x+b^* ) f(x)=sign(w∗⋅x+b∗)
软间隔的支持向量或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。
对非线性可分得分类问题,我们使用和技巧构造非线性支持向量机。
部分参考https://blog.csdn.net/zwqjoy/article/details/80431496
元算法是对其他算法进行组合的一种方式。使用集成的时候有很多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以使数据集的不同部分分配给不同的分类器之后的集成。
优缺点:
引用https://blog.csdn.net/qq_33067361/article/details/88596707
bagging和boosting是集成学习的两种策略
减少一个估计方差的一种方式及时对多个估计进行平均。Bagging使用袋装采样来获取数据子集训练基础学习器,他直接基于自助采样法(有放回的随机抽取)获取到T个含m个样本的训练集,然后基于每个采样集训练处一个基学习器,再将这些基学习器进行结合。通常分类的任务使用投票的方式集成,而回归任务通过平均的方式集成。
算法流程:
自主采样过程还给Bagging带来了另外一个优点:由于每个基学习器只使用了初始训练集中大约63.2%的样本,剩下的36.8%可以用来作为验证集提高泛化性能。例如使用包外样本来辅助剪枝,或用于估计决策树中各节点的后验概率以辅助对零训练样本节点的处理;当基学习器是神经网络时,可以使用保外样本来辅助早期停止,来降低过拟合的风险。
随机森林是Bagging的一个扩展变体,RF在以决策树为基学习器构建Bagging的基础上,进一步在决策树的训练中加入了随机属性选择,具体地说,传统的决策树在选择划分属性时,是在当前节点的全部属性中选择一个最优的属性,而RF是对于决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从子集中选择一个最优属性用于划分。一般情况下 k = l o g 2 d k = log_2d k=log2d
随机森林对bagging的改进:
Boosting指的是通过算法集合将弱学习器转换为强学习器。工作机制为先从初始训练集中训练处一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,重复进行,指导学习器的数目达到规定的值后对基学习器进行集成。如果是分类问题则按照权重进行投票,而对于回归任务则进行加权,然后再进行预测。
算法流程:
算法流程:
输入:训练集D,基学习算法L,训练轮数T
输出: H ( x ) = s i g n ( ∑ t = 1 T ) α t h t ( x ) ) H(x) = sign(\sum_{t=1}^T)\alpha_th_t(x)) H(x)=sign(∑t=1T)αtht(x))
参考https://blog.csdn.net/legendavid/article/details/78904353
GBDT主要由三个概念构成:回归决策树,梯度提升和缩减
优点