大数据系列3:机器学习笔记

1. 基本概念

狭义上的机器学习是一种使用特定模型对样本数据进行分析,然后进行预测与决策的工具。注意机器学习的范围限定在对样本进行分析的范围。
机器学习模型主要分类如下:1. 按样本是否带有标签,分为有监督无监督两类;2. 按预测值是离散还是连续,分为分类回归两类。
机器学习过拟合问题:模型在训练集上误差很小,在测试集上误差很大。解决方法主要有:1. 留出法:数据留出一部分数据作为测试集。2. 交叉验证法:将数据划分为k个子集,每次用一个子集作为测试集。3. booststrap方法:每次随机从大小为m的样本中复制一个,共复制m次。复制的集合作为训练集,剩下的样本作为测试集。
模型评估标准有:

  1. 错误率:错分/总数。错分包括假正和假反两种情况。
  2. 准确率(accuracy):对分/总数。对分包括真正和真反两种情况。
  3. 查准率(precision):真正/预测正。预测正=真正+假正。
  4. 查全率(recall):真正/实际正。实际正=真正+假反。
  5. P-R曲线:查准 vs 查全,一般来说是个负相关的曲线。查准=查全时的点成为平衡点(Break-Even Point,BEP)
  6. F1(调和平均):2/(1/查准+1/查全)。更加广义的是 F β = ( 1 + β 2 ) / ( 1 / F_\beta = (1+\beta^2)/(1/ Fβ=(1+β2)/(1/查准 + β 2 / +\beta^2/ +β2/查全 ) ) )
  7. AUC:首先定义ROC(Receiver Operating Characteristic)曲线,真正率vs假正率。真正率=真正/实际正;假正率=假正/实际假。按照预测结果进行排序,一般来说是一个从(0,0)到(1,1)的凹函数。下面的面积叫AUC(Area Under Curve),用来评估模型的优劣。

这里简单分析一下模型评估标准。
一般我们首先想到的判断标准是错误率和准确率,然而在数据不均衡的情况下,这两个指标问题很大,比如正:负=99:1的情况,只要把所有的样本都预测为正的,就可以得到99%的准确率。
因此我们需要将正样本和负样本在分母分开,得到灵敏度和特异度两个指标,将这两个指标结合起来形成了ROC曲线。这两个比例不受正负样本数量的影响,因此可以放心用在不均衡的样本中。
在数据平衡时,常常使用另外一个常用的PR曲线和F1指标。首先引入查全率(也叫召回率),观察的是正样本中预测正确的比例,这个值是反映覆盖量的一个指标;在此基础上引入查准率(也叫精准率),反映预测性能的一个指标。一般来说覆盖量越大,预测性能越差。因此引入PR曲线和F1指标,

2. 线性模型

线性回归:给定一系列的 ( x i , y i ) (x_i,y_i) (xi,yi),求 w w w b b b,使得 w x + b wx+b wx+b y y y尽量接近。线性回归模型的目标函数一般是最小化均方误差(SSE):min Σ i ( y i − ( w x i + b ) ) 2 \Sigma _i(y_i-(wx_i+b))^2 Σi(yi(wxi+b))2。因为 y = w x + b y = wx+b y=wx+b是线性的超平面,因此这个模型称为线性回归模型。若拟合函数为 y = e w x + b y = e^{wx+b} y=ewx+b,则称为对数线性回归。更一般的,若 g ( y ) = w x + b g(y) = wx+b g(y)=wx+b,则称之为广义线性模型, g g g称为联系函数。
局部加权线性回归使用核函数的方法给预测点附近的所有点赋予一定的权重,一般使用高斯核,距离越近的点权重越大。

逻辑回归是分类模型。定义对数似然函数: p ( x ) = 1 / ( 1 + e − ( w x + b ) ) p(x)=1/(1+e^{-(wx+b)}) p(x)=1/(1+e(wx+b)) p p p可以理解为样本等于1的概率, 1 − p 1-p 1p为样本等于0的概率。目标函数为最大化“对数似然”: max ⁡ Σ i ( y i p ( x i ) + ( 1 − y i ) ( 1 − p ( x i ) ) ) \max \Sigma _i(y_ip(x_i)+(1-y_i)(1-p(x_i))) maxΣi(yip(xi)+(1yi)(1p(xi))),这样就可以用回归模型来处理分类问题了。这个模型叫做“对数几率回归”(也叫“逻辑回归”),虽然叫回归,但实际是做二分类的。
因子分解机在线性模型的基础上加入了交叉项,交叉项的系数用辅助向量的乘积表示。直观来看,原来线性的分隔面现在可以弯起来了。
线性判别分析(LDA),也称Fisher判别分析,原理是寻找超平面y=wx+b,使得投影到这个平面上的两个类别的数据,同类尽量接近、异类尽量远离。定义类内散度矩阵: S w = ∣ ∣ x 0 − u 0 ∣ ∣ 2 + ∣ ∣ x 1 − u 1 ∣ ∣ 2 S_w=||x_0-u_0||^2+||x_1-u_1||^2 Sw=∣∣x0u02+∣∣x1u12、类间散度矩阵: S b = ∣ ∣ u 0 − u 1 ∣ ∣ 2 S_b=||u_0-u_1||^2 Sb=∣∣u0u12,其中 u 0 , u 1 u_0,u_1 u0,u1分别是 x 0 , x 1 x_0,x_1 x0,x1的均值向量。则目标函数为 max ⁡ J = ( w T S b w ) / ( w T S w w ) \max J=(w^TS_bw)/(w^TS_ww) maxJ=(wTSbw)/(wTSww)
多分类问题可以由二分类问题推广得到,主要有3种:1. 一对一:将N个类别两两配对,分别做二分类。2. 一对其余:将N个类别和剩下的其余类别分别配对,做二分类。3. 多对多:需要进行编码,每次是多个类别和其余类别分别配对做二分类。
支持向量回归(SVR):目标函数为 min ⁡ w , b ∣ ∣ w ∣ ∣ 2 / 2 + C Σ i l ( f ( x i ) − y i ) \min_{w,b} ||w||^2/2+C\Sigma _il(f(x_i)-y_i) minw,b∣∣w2/2+CΣil(f(xi)yi)。另外,和对数线性回归相比,在判断的时候直接使用 f ( x ) f(x) f(x)就行,不需要再加上额外的函数 g g g了。使用支持向量回归的好处在于,求解的结果具有稀疏性,最终的 f f f仅仅由少数几个支持向量就可以决定。

2. 神经网络模型

1943年提出的M-P模型 y = f ( Σ x ) y=f(\Sigma x) y=f(Σx) f f f是激活函数,大于 θ \theta θ时为1,其他为0。
1956年提出感知机模型 y = f ( w x − θ ) y=f(wx-\theta) y=f(wxθ) f f f是激活函数,常见的有Sigmoid函数、reLu函数。令 x ′ = ( x , − 1 ) , w ′ = ( w , θ ) x'=(x,-1),w'=(w,\theta) x=(x,1),w=(w,θ),则上面的函数可以表示为 y = f ( w ′ , x ′ ) y=f(w',x') y=f(w,x)。感知机按照下公式迭代更新: w i ′ = w i − η Δ y i x i w_i'=w_i-\eta \Delta y_i x_i wi=wiηΔyixi
多层神经网络:层之间全连接,层内无连接,跨层无连接。这个是经典的神经网络模型。
90年代之后,因为SVM的成功,以及之后随即森林、adaboost等算法的兴起,神经网络的研究不再火热,直到2006年深度学习再次兴起。
误差逆传播(BP)算法用于训练多层神经网络。更新的原则是:正向计算值,逆向计算误差,然后使用梯度法更新每个神经元的参数。下面简单推导反向传播的公式:
用均方差来定义误差 E = Σ j Δ y j 2 / 2 E=\Sigma_j\Delta y_j^2/2 E=ΣjΔyj2/2,并且有 y j = f ( θ j ) y_j=f(\theta_j) yj=f(θj) θ j = Σ h w h , j b h \theta _j= \Sigma_h w_{h,j}b_h θj=Σhwh,jbh,则均方差 E E E对倒数第二层参数 w h , j w_{h,j} wh,j的负梯度为: − η Δ y j f ′ ( θ j ) b h -\eta \Delta y_j f'(\theta_j)b_h ηΔyjf(θj)bh(这四项分别为:学习率、均方差偏导、激活函数偏导、线性函数偏导)。 b h = f ( α h ) b_h=f(\alpha _h) bh=f(αh) α h = Σ i v i , h x i \alpha_h=\Sigma _iv_{i,h}x_i αh=Σivi,hxi,均方差对倒数第三层参数 v i , h v_{i,h} vi,h的负梯度为: − η Σ j ( Δ y j f ′ ( θ j ) w h , j ) f ′ ( α h ) x i -\eta \Sigma_j(\Delta y_jf'(\theta_j) w_{h,j})f'(\alpha _h)x_i ηΣj(Δyjf(θj)wh,j)f(αh)xi
g j = − Δ y j f ′ ( θ j ) g_j=-\Delta y_j f'(\theta_j) gj=Δyjf(θj) e h = Σ j ( g j w h , j ) f ′ ( α h ) e_h=\Sigma_j(g_jw_{h,j}) f'(\alpha _h) eh=Σj(gjwh,j)f(αh),则可以简单表示为: Δ w h , j = η g j b h \Delta w_{h,j}=\eta g_jb_h Δwh,j=ηgjbh Δ v i , h = η e h x i \Delta v_{i,h}=\eta e_hx_i Δvi,h=ηehxi
同样的,若还有一层,则令 c i = Σ h ( e h v i , h ) f ′ ( λ i ) c_i=\Sigma_h (e_hv_{i,h})f'(\lambda_i) ci=Σh(ehvi,h)f(λi),有 Δ m k , i = η c i a k \Delta m_{k,i}=\eta c_ia_k Δmk,i=ηciak,依次类推。
防止过拟合的策略主要有2种:1. 早停策略:验证集误差上升,则停止;2. 正则化:加上复杂度的惩罚项,比如加上所有权值的平方。

3. 决策树和集成模型

决策树分支原则主要有3个:

  1. ID3(Iterative Dichotomiser,迭代二分器)。使用香农熵 E n t ( D ) = − Σ p k l o g 2 p k Ent(D) =-\Sigma p_klog_2p_k Ent(D)=Σpklog2pk,信息增益表示为 G a i n ( D , a ) = E n t ( D ) − Σ ∣ D v ∣ / ∣ D ∣ ∗ E n t ( D v ) Gain(D,a) = Ent(D)-\Sigma |D^v|/|D|*Ent(D^v) Gain(D,a)=Ent(D)Σ∣Dv∣/∣DEnt(Dv),其中 a a a的取值为 { a 1 , a 2 , . . . , a V } \{a^1,a^2,...,a^V\} {a1,a2,...,aV}。分支原则选信息增益最大的。
  2. C4.5(Classifier 4.5)。在ID3的基础上,计算 − G a i n ( D , a ) / Σ ( ∣ D v ∣ / ∣ D ∣ l o g 2 ( ∣ D v ∣ / ∣ D ∣ ) ) -Gain(D,a)/\Sigma (|D^v|/|D|log_2(|D^v|/|D|)) Gain(D,a)(Dv∣/∣Dlog2(Dv∣/∣D)),称为信息增益率。分支原则选信息增益率最大的。
  3. CART(Classification and Regression Tree,分类回归树)。使用Gini Index(基尼系数), G i n i ( D ) = Σ Σ p k p k ′ = 1 − Σ p k 2 Gini(D) = \Sigma\Sigma p_kp_{k'}=1-\Sigma p_k^2 Gini(D)=ΣΣpkpk=1Σpk2,分支原则选基尼系数最小的。只有使用gini系数的CART既能用于分类,也能用于回归。在用于回归树时,我们需要定义损失项,用均方差即可。

基于决策树模型又可以推广到集成学习模型,这里介绍最经典的bagging模型随机森林(RF)和boosting模型GBDT。
GBDT是梯度迭代回归树的缩写。由于基础是回归树,因此GBDT可以使用“累加”,而不是“投票”。GBDT第一个回归树是基础的结果,后面的回归树是对误差进行拟合,其累加的意义就是不断消除误差的过程。

3.1 bagging

bagging是bootstrap aggregating的缩写,即有放回的聚类,核心思想是多个子模型投票,由于是投票,因此一般针对的是离散的分类模型。最经典的bagging模型是random forest。
子模型有两点简化:
1.随机选择样本(放回抽样);
2.随机选择特征;
因此我们不对子模型进行剪枝。其他优点包括:易于并行化;易于处理高维数据,不用做特征选择。

3.2 boosting

boosting顾名思义,是逐步叠加的模型,可以用于分类和回归模型。由于是逐步叠加,因此会对异常点敏感(越来越关注)。
最经典的boosting模型有两种方法:
一种是Adaboost,用于0-1分类,预测值为概率。分类器使用权重进行逐步叠加,训练时调整不同分类器的权重。损失函数为指数函数。
一种是GBDT,用于连续值预测。在分枝时会穷举每一个特征的每个阈值以找到最好的分割点,衡量标准是最小化均方误差。均方差的梯度=残差,因此优化均方差等价于逐步优化残差。在实际使用中,为了减少异常点的影响,会使用absolute loss或者是huber loss(在一定范围内使用均方差,超出后使用absolute)。

3.4 XGBoost、LightGBM

目前实际应用中的决策树模型一般会使用XGBoost和LightGBM,这里简单介绍一下。
XGBoost和GBDT最大的不同就是目标函数的定义。XGBoost的目标函数加入了抑制模型复杂度的正则项 Ω \Omega Ω(复杂度由生成的所有决策树的叶子节点数量,和所有节点权重所组成的向量的L2范式共同决定),并且使用二阶泰勒展开对均方差进行了简化。
LightGBM则对xgboost做了更多工程优化,比如:

  1. GOSS:保留了梯度大的样本,并对梯度小的样本进行随机抽样
  2. 直方图:将连续的特征离散化为 k 个离散特征,同时构造一个宽度为 k 的直方图用于统计信息
  3. 支持类别特征,采用 many-vs-many 的切分方式。而XGBoost不支持类别特征,需要OneHot编码预处理。

4. 贝叶斯模型

所谓后验概率,指的是从结果推原因的概率;而先验概率则是原因本身的概率。贝叶斯公式就指后验概率用先验概率来表达的公式: P ( y ∣ x ) P(y|x) P(yx) = P ( y ) P ( x ∣ y ) / P ( x ) P(y)P(x|y)/P(x) P(y)P(xy)/P(x)
贝叶斯分类模型是最小化期望错分代价: min ⁡ E x [ C ( h ( x ) ∣ x ) ] \min E_x[C(h(x)|x)] minEx[C(h(x)x)],其中 h ( x ) h(x) h(x)是贝叶斯分类模型得到的结果, C C C是代价函数。若代价函数是错分为1,正确分类为0,则目标函数变为: min ⁡ E x ( 1 − p ( h ( x ) ∣ x ) ) \min E_x(1-p(h(x)|x)) minEx(1p(h(x)x)),等价于 max ⁡ E x p ( h ( x ) ∣ x ) \max E_xp(h(x)|x) maxExp(h(x)x),等价于对每个 x x x max ⁡ p ( h ( x ) ∣ x ) \max p(h(x)|x) maxp(h(x)x)。贝叶斯分类器不需要进行训练,其数据主要是用来估算概率值。由贝叶斯公式可以从历史数据中计算 p ( y i ) p(y_i) p(yi) p ( x ∣ y i ) p(x|y_i) p(xyi),计算得到所有的 p ( y i ∣ x ) p(y_i|x) p(yix),然后选取值最大的一个 y i y_i yi作为 h ( x ) h(x) h(x)即可。

为什么不能直接从历史数据估算 p ( y i ∣ x ) p(y_i|x) p(yix)呢?因为一般来说特征向量x维度比较高,因此每个特征向量x对应的数据往往比较少,不足以进行概率估计;但是反过来,分类 数量y的种类往往不多,因此每个标签下的数据一般有很多。

朴素贝叶斯(Naive Bayes,NB)假设 x x x的特征相互之间是独立的,这样 P ( x ∣ y i ) P(x|y_i) P(xyi)就可以拆分为每个特征的乘积: P ( x ∣ y i ) = P ( x 1 ∣ y i ) ∗ P ( x 2 ∣ y i ) ∗ . . . ∗ P ( x n ∣ y i ) P(x|y_i)=P(x_1|y_i)*P(x_2|y_i)*...*P(x_n|y_i) P(xyi)=P(x1yi)P(x2yi)...P(xnyi),这样就把问题拆解为不同分类结果下每个特征的概率分布估计了,这一般是可以用历史数据来估算的。
具体来说,假设训练数据分别为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) (x_1,y_1),(x_2,y_2),...,(x_n,y_n) (x1,y1),(x2,y2),...,(xn,yn),要求预测 x j x_j xj对应的 y y y,其中 x x x有很多分量,可能取值非常多。计算过程为:
1)计算各个类别的先验概率并取对数: l o g ( p ( y i ) ) = l o g ( n i ) − l o g ( n ) log(p(y_i))=log(n_i)-log(n) log(p(yi))=log(ni)log(n),其中 n i n_i ni y i y_i yi出现的次数。
2)计算各类别下各特征属性条件概率并取对数:
l o g ( p ( x k j ∣ y i ) ) = l o g ( n k i j ) − l o g ( n i ) log(p(x_{kj}|y_i))=log(n_{kij})-log(n_i) log(p(xkjyi))=log(nkij)log(ni),其中 n k i j n_{kij} nkij ( x k j , y i ) (x_{kj},y_i) (xkj,yi)出现次数, k k k为分量下标
3)将 x j x_j xj对应的各分量的概率对数相加。现在假设x有2个分量:
l o g ( p ( x j ∣ y i ) ∗ p ( y i ) ) = l o g ( n 1 j i ) + l o g ( n 2 j i ) − l o g ( n i ) − l o g ( n ) log(p(x_j|y_i)*p(y_i))= log(n_{1ji})+log(n_{2ji})-log(n_i)-log(n) log(p(xjyi)p(yi))=log(n1ji)+log(n2ji)log(ni)log(n)
4)目标函数为 m a x i max_i maxi p ( y i ∣ x j ) {p(y_i|x_j)} p(yixj),等价于 m a x i max_i maxi ( l o g ( n 1 j i ) + l o g ( n 2 j i ) − l o g ( n i ) ) (log(n_{1ji})+log(n_{2ji})-log(n_i)) (log(n1ji)+log(n2ji)log(ni))

5. 支持向量机

支持向量机的学习路线:从回归问题到二分类问题,最大化间隔,max 1/||w||,min ||w||2/2,拉格朗日对偶问题,KKT条件,SMO算法,软间隔。

LS问题:给定一系列 ( x i , y i ) (x_i,y_i) (xi,yi),求线性函数 f ( x ) = w x + b f(x) = wx + b f(x)=wx+b,使得 min ⁡ Σ ( f ( x ) − y ) 2 \min \Sigma(f(x) - y)^2 minΣ(f(x)y)2。如果y不是连续值,而是离散的分类结果,该怎么处理?特别的,在二分类问题中该怎么处理?简单,将连续的y转化为离散的-1和1就行了。
转换方法有很多,比如最简单的:
g = − 1 g = -1 g=1 if y < 0 y <0 y<0
g = 1 g = 1 g=1 if y ≥ 0 y≥ 0 y0
为了方便以后求导,这里用logistic函数进行转换,这里记作 g ( y ) g(y) g(y)。logistic函数的形状可以参考这里。模型变为:给定一系列( x , y x,y x,y),求线性函数 f ( x ) = w x + b f(x) = wx + b f(x)=wx+b,使得 min ⁡ Σ ( g ( f ( x ) ) − y ) 2 \min \Sigma (g(f(x)) - y)^2 minΣ(g(f(x))y)2

支持向量机问题:LS问题只能用数值最优化去求解,为了更好的给出结果,我们使用另外一个损失函数,将优化问题改为“最大化间隔”,详情可以参考这里,求解模型变为:给定一系列(x,y),求线性函数 f ( x ) = w x + b f(x) = wx + b f(x)=wx+b,使得
max ⁡ w , b min ⁡ i d \max_{w,b} \min_i d maxw,bminid
s.t. d ≤ y f / ∣ ∣ w ∣ ∣ d ≤ yf/||w|| dyf/∣∣w∣∣

y f ( x ) yf(x) yf(x)称为函数间隔, y f ( x ) / ∣ ∣ w ∣ ∣ yf(x)/||w|| yf(x)/∣∣w∣∣称为几何间隔。
∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ w w w的L2范数,也就是常说的欧式空间几何长度,详细解释可以参考这里。修改后的模型称为支持向量机。

算法推导
f ( x ) = w x + b f(x) = wx+b f(x)=wx+b ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣可以进行等比例缩放,因此我们可以令 d = 1 / ∣ ∣ w ∣ ∣ d=1/||w|| d=1/∣∣w∣∣,并取平方消除norm符号,这样问题可以转换为:

min max w 2 / 2 w^2/2 w2/2
s.t. 1 ≤ y f 1 ≤ yf 1yf

使用拉格朗日变换,问题变为:
min max L = w 2 / 2 − λ ( y f − 1 ) L = w^2/2 - \lambda (yf-1) L=w2/2λ(yf1)

min ⁡ w , b max ⁡ λ i L \min_{w,b}\max_{\lambda_i} L minw,bmaxλiL 转化为对偶问题: max ⁡ λ i min ⁡ w , b L \max_{\lambda_i}\min_{w,b} L maxλiminw,bL

最优点KKT条件有:
w − Σ i λ y x = 0 w-\Sigma_i\lambda y x=0 wΣiλyx=0
Σ i λ y = 0 \Sigma_i \lambda y=0 Σiλy=0

带入原问题: max ⁡ λ i L = Σ i λ i − ( Σ i , j λ i λ j y i y j x i x j ) / 2 \max_{\lambda_i} L = Σ_iλ_i - (Σ_{i,j}λ_iλ_jy_iy_jx_ix_j)/2 maxλiL=Σiλi(Σi,jλiλjyiyjxixj)/2。1998年,Microsoft Research的John C. Platt在论文中提出针对上述问题的解法:SMO算法,它很快便成为最快的二次规划优化算法,特别是在针对线性SVM和数据稀疏时性能更优。简单来说,步骤是:
循环执行下述步骤:
(1) 选取两个 λ i λ_i λi λ j λ_j λj(可以选择违反KKT条件最严重的,也可以选择距离最大的)
(2) 求解问题:
max ⁡ λ i , λ j L ( λ i , λ j ) \max_{\lambda_i,\lambda_j} L(λ_i, λ_j) maxλi,λjL(λi,λj)
s.t. Σ i λ i y i = 0 \Sigma_i λ_iy_i = 0 Σiλiyi=0
直到L无法再优化。具体的推导和步骤还可以参考这里

核函数方法
当遇到线性不可分的问题时,我们可以简单的用一个新的一次变量代替高次变量,这样相当于把低维的特征空间映射到高维空间。
比如说 y = x + x 2 y = x+x^2 y=x+x2就可以用 y = x 1 + x 2 y = x_1+x_2 y=x1+x2代替,其中 x 1 = x , x 2 = x 2 x_1 = x,x_2 = x^2 x1=xx2=x2,特征空间由一维的 [ x ] [x] [x]变为了二维的 [ x 1 , x 2 ] [x_1,x_2] [x1,x2]。定义一个非线性映射: φ ( x ) φ(x) φ(x),比如说上面例子里面 φ ( x ) = [ x , x 2 ] φ(x) = [x, x^2] φ(x)=[x,x2],我们可以对(φ(x),y)使用支持向量机。将决策规则中的 f ( x ) = w x + b f(x)=wx + b f(x)=wx+b改为 f ( x ) = w φ ( x ) + b f(x) = w \varphi (x) + b f(x)=(x)+b ,则 L ( λ ) = Σ i λ i − ( Σ i , j λ i λ j y i y j ⟨ x i , x j ⟩ ) / 2 L(λ) = Σ_iλ_i - (Σ_{i,j}λ_iλ_jy_iy_j\langle x_i,x_j\rangle)/2 L(λ)=Σiλi(Σi,jλiλjyiyjxi,xj⟩)/2
为避免爆炸性的计算,定义核函数 K ( x , z ) = ⟨ φ ( x ) , φ ( z ) ⟩ K(x,z) = \langleφ (x),φ(z)\rangle K(x,z)=φ(x),φ(z)⟩为计算两个向量在隐式映射过后的空间中的内积的函数,得到 L ( λ ) = Σ i λ i − ( Σ i , j λ i λ j y i y j K ( x i , x j ) ) / 2 L(λ) = Σ_iλ_i - (Σ_{i,j}λ_iλ_jy_iy_jK(x_i,x_j))/2 L(λ)=Σiλi(Σi,jλiλjyiyjK(xi,xj))/2。我们其实并不需要内积展开的显式结构,只需要有不同x下的内积的值就行了,因此使用核函数的形式事先在低维上进行计算,而将实质上的分类效果表现在了高维上。

软间隔和正则化
有的时候问题不一定是完全线性可分的,这时候需要引入软间隔的概念,以允许一些出错的样本。其实就是引入罚函数,目标函数变为 min ⁡ ∣ ∣ w ∣ ∣ 2 / 2 + C Σ i l ( y i f ( x i ) ) \min ||w||^2/2+C\Sigma _il(y_if(x_i)) min∣∣w2/2+CΣil(yif(xi)) l l l函数常见的有0/1损失、hinge损失、指数损失、对率损失等。特别的,使用hinge函数 l ( z ) = m a x ( 0 , 1 − z ) l(z) = max(0,1-z) l(z)=max(0,1z),得到的对偶问题比硬间隔的对偶问题只有唯一的约束条件差别: 0 ≤ λ ≤ C 0\leq \lambda \leq C 0λC
更一般的,目标函数可以表示为 min ⁡ Ω ( f ) + C Σ i l ( y i , f ( x i ) ) \min \Omega(f)+C\Sigma _il(y_i,f(x_i)) minΩ(f)+CΣil(yi,f(xi)),前面的部分称为结构风险,也可以称作正则化项,后面的称为经验风险,C是罚函数,也称为正则化常数。正则化项常常使用 L p L_p Lp范数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值