机器学习6 - 算法进阶
知识点
- 最大似然函数
L ( x 1 , x 2 , … , x n ; θ 1 , θ 2 , … , θ k ) = ∏ i = 1 n f ( x i , θ 1 , θ 2 , … , θ k ) L(x_{1},x_{2},\dots,x_{n};\theta_1,\theta_2,\dots,\theta_{k})=\prod_{i=1}^{n}f(x_{i},\theta_1, \theta_2,\dots,\theta_{k}) L(x1,x2,…,xn;θ1,θ2,…,θk)=i=1∏nf(xi,θ1,θ2,…,θk)
求 θ \theta θ的值从而使得似然函数取最大值。求解:
l o g L ( θ 1 , θ 2 , … , θ n ) = ∑ i = 1 n l o g f ( x i ; θ 1 , θ 2 , … , θ k ) logL(\theta_1,\theta_2,\dots,\theta_{n}) = \sum_{i=1}^{n}logf(x_{i};\theta_1,\theta_2,\dots,\theta_{k}) logL(θ1,θ2,…,θn)=i=1∑nlogf(xi;θ1,θ2,…,θk)
∂ L ( θ ) ∂ θ i = 0 i = 1 , 2 , … , k \frac{\partial L(\theta)}{\partial \theta_{i}} = 0 \quad i = 1,2,\dots,k ∂θi∂L(θ)=0i=1,2,…,k - 二项分布
f ( n ∣ p ) = l o g ( p n ( 1 − p ) N − n ) = h ( p ) f(n|p) = log(p^{n}(1-p)^{N-n}) = h(p) f(n∣p)=log(pn(1−p)N−n)=h(p)
∂ h ( p ) ∂ p = n p − N − n 1 − p → 0 ⇒ p = n N \frac{\partial h(p)}{\partial p} = \frac{n}{p}-\frac{N-n}{1-p}\rightarrow0 \Rightarrow p = \frac{n}{N} ∂p∂h(p)=pn−1−pN−n→0⇒p=Nn - 正态分布
l ( x ) = − n 2 l o g ( 2 π σ 2 ) − 1 2 σ 2 ∑ i ( x i − μ ) 2 l(x) = -\frac{n}{2}log(2\pi\sigma^2)-\frac{1}{2\sigma^2}\sum_{i}(x_{i}-\mu)^2 l(x)=−2nlog(2πσ2)−2σ21i∑(xi−μ)2对 σ , μ \sigma,\mu σ,μ求导可以得出:
{ μ = 1 n ∑ i X i σ 2 = 1 n ∑ i ( X i − μ ) 2 \begin{cases} \mu = \frac{1}{n}\sum_{i}X_{i} \\ \sigma^2 = \frac{1}{n}\sum_{i}(X_{i}-\mu)^2 \end{cases} {μ=n1∑iXiσ2=n1∑i(Xi−μ)2 - 高斯分布的对数似然和最小二乘。
y i = θ T x i + ϵ i y_{i} = \theta^{T}x_{i}+\epsilon_{i} yi=θTxi+ϵi
假设 ϵ i n ( 0 , σ 2 ) \epsilon_{i} ~ n(0,\sigma^2) ϵi n(0,σ2),线性模型。
L ( y i ∣ θ , x i ) = l o g ∏ i n 1 2 π σ e − ϵ i 2 2 σ 2 = l o g ∏ i n 1 2 π σ e − ( y i − h θ ( x i ) ) 2 2 σ 2 = − n 2 l o g 2 π σ 2 − 1 2 σ 2 ∑ i = 1 n ( y i − h θ ( x i ) ) 2 ⇒ m a x i m i z e − 1 2 ∑ i = 1 n ( y i − h θ ( x i ) ) 2 ⇔ m i n i m i z e ∑ i = 1 n ( y i − h θ ( x i ) ) 2 \begin{aligned} L(y_{i}|\theta,x_{i}) &= log\prod_{i}^{n}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{\epsilon_{i}^2}{2\sigma^2}} \\ &=log\prod_{i}^{n}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y_{i}-h_{\theta}(x_{i}))^2}{2\sigma^2}} \\ & = -\frac{n}{2}log2\pi\sigma^2-\frac{1}{2\sigma^2}\sum_{i=1}^{n}(y_{i}-h_{\theta}(x_{i}))^2 \\ &\Rightarrow maximize \quad -\frac{1}{2}\sum_{i=1}^{n}(y_{i}-h_{\theta}(x_{i}))^2 \\ & \Leftrightarrow minimize \sum_{i=1}^{n}(y_{i}-h_{\theta}(x_{i}))^2 \end{aligned} L(yi∣θ,xi)=logi∏n2πσ1e−2σ2ϵi2=logi∏n2πσ1e−2σ2(yi−hθ(xi))2=−2nlog2πσ2−2σ21i=1∑n(yi−hθ(xi))2⇒maximize−21i=1∑n(yi−hθ(xi))2⇔minimizei=1∑n(yi−hθ(xi))2使用最小二乘求解即可。广义逆,MOORE-PENROSE逆:
A + = ( X T X ) − 1 X T A^{+} = (X^{T}X)^{-1}X^{T} A+=(XTX)−1XT - Ridge L2正则。Lasso L1正则。
ElasticNet正则项:
λ ( ρ ∑ j ∣ θ j ∣ + ( 1 − ρ ) ∑ j θ j 2 ) \lambda(\rho\sum_{j}|\theta_{j}|+(1-\rho)\sum_{j}\theta_{j}^2) λ(ρj∑∣θj∣+(1−ρ)j∑θj2)
当模型复杂时偏向于LASSO,当模型简单时偏向于RIDGE。 - 梯度下降算法:
- batch(BGD):全部数据做的。
- 随机梯度法(SGD):每次随机选取一个样本。
- mini-batch:折中法,选取小批量样本取平均梯度做下降,一般取2的次幂。
- Adaboost:自适应的为各个参数分配不同学习率的算法,通过每个参数的学习率除以它之前导数的均方根来调节学习率。
- 决定系数
R 2 = S S R S S T = ∑ i ( y ^ − y i ˉ ) 2 ∑ i ( y i − y ˉ ) 2 \begin{aligned} R^2 &= \frac{SSR}{SST} \\ &= \frac{\sum_{i}(\hat{y}-\bar{y_{i}})^2}{\sum_{i}(y_{i}-\bar{y})^2} \end{aligned} R2=SSTSSR=∑i(yi−yˉ)2∑i(y^−yiˉ)2 - 逻辑回归参数估计:
假设二项分布,广义线性模型。
决策边界求解:
P ( y = 1 ∣ x , w ) P ( y = 0 ∣ x , w ) = 1 e − ( w t x + b ) = 1 w t x + b = 0 \begin{aligned} \frac{P(y=1|x,w)}{P(y=0|x,w)} &= 1\\ e^{-(w^{t}x+b)} &= 1 \\ w^{t}x+b &= 0 \end{aligned} P(y=0∣x,w)P(y=1∣x,w)e−(wtx+b)wtx+b=1=1=0
由此可得线性决策边界,因此逻辑回归是线性分类器。
P ( θ ) = ∏ i h θ ( x i ) y i ( 1 − h θ ( x i ) ) 1 − y i L ( θ ) = ∑ i y i l o g h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) P(\theta) = \prod_{i}h_{\theta}(x_{i})^{y_{i}}(1-h_{\theta}(x_{i}))^{1-y_{i}} \\ L(\theta) = \sum_{i}y_{i}logh_{\theta}(x_{i})+(1-y_{i})log(1-h_{\theta}(x_{i})) P(θ)=i∏hθ(xi)yi(1−hθ(xi))1−yiL(θ)=i∑yiloghθ(xi)+(1−yi)log(1−hθ(xi))
其损失函数即为 − L ( θ ) -L(\theta) −L(θ),核心是sigmoid函数:
g ( x ) = 1 1 + e − x g(x) = \frac{1}{1+e^{-x}} g(x)=1+e−x1
g ′ ( x ) = e − x 1 + e − x = g ( x ) ( 1 − g ( x ) ) g'(x) = \frac{e^{-x}}{1+e^{-x}}=g(x)(1-g(x)) g′(x)=1+e−xe−x=g(x)(1−g(x))
没有解析解,因此使用梯度下降法求解:
∂ L ( θ ) ∂ θ j = ∑ i ( y i h − 1 − y i 1 − h ) ∂ h ∂ θ j = ∑ i ( y i g − 1 − y i 1 − g ) g ( 1 − g ) ∂ g ∂ θ j = ∑ i ( y i − g ( θ T x i ) ) x i j \begin{aligned} \frac{\partial L(\theta)}{\partial \theta_{j}} & =\sum_{i}(\frac{y_{i}}{h}-\frac{1-y_{i}}{1-h})\frac{\partial h}{\partial \theta_{j}} \\ & = \sum_{i}(\frac{y_{i}}{g}-\frac{1-y_{i}}{1-g})g(1-g)\frac{\partial g}{\partial \theta_{j}}\\ &= \sum_{i}(y_{i}-g(\theta^{T}x_{i}))x_{ij} \end{aligned} ∂θj∂L(θ)=i∑(hyi−1−h1−yi)∂θj∂h=i∑(gyi−1−g1−yi)g(1−g)∂θj∂g=i∑(yi−g(θTxi))xij
θ j = θ j + α ( y i − h θ ( x i ) x i j ) \theta_{j} = \theta_{j} +\alpha(y_{i}-h_{\theta}( x_{i})x_{ij}) θj=θj+α(yi−hθ(xi)xij)
w t + 1 = w t − η t ∑ i = 1 N [ σ ( w T x i + b ) − y i ] x i b t + 1 = b t − η t ∑ i = 1 N [ σ ( w T x i + b ) − y i ] w^{t+1} = w^{t}- \eta_{t}\sum_{i=1}^{N}[\sigma(w^{T}x_{i}+b)-y_{i}]x_{i}\\ b^{t+1} = b^{t}- \eta_{t}\sum_{i=1}^{N}[\sigma(w^{T}x_{i}+b)-y_{i}] wt+1=wt−ηti=1∑N[σ(wTxi+b)−yi]xibt+1=bt−ηti=1∑N[σ(wTxi+b)−yi]
上式为正向增大极大似然函数,即减小损失函数。 - 凡是符合指数族分布的随机变量,都可以使用广义线性模型。指数族分布:高斯,二项,伯努利,泊松,伽马。
- softmax分类器:
p ( c = k ∣ x ; θ ) = e x p ( θ k T x ) ∑ i = 1 k e x p ( θ i T x ) p(c=k|x;\theta) = \frac{exp(\theta_{k}^{T}x)}{\sum_{i=1}^{k}exp(\theta_{i}^{T}x)} p(c=k∣x;θ)=∑i=1kexp(θiTx)exp(θkTx) - ROC曲线:横坐标为FPR, 纵坐标为TPR, AUC为ROC下面积。
- 熵(核心概念)对应事件的不确定性。
- 条件熵: H ( Y ∣ X ) = H ( X , Y ) − H ( X ) = H ( Y ) − I ( X , Y ) H(Y|X) = H(X,Y)-H(X)=H(Y)-I(X,Y) H(Y∣X)=H(X,Y)−H(X)=H(Y)−I(X,Y)
- 相对熵:又称互熵,交叉熵,KL散度等。
设p(x),q(x)是X中取值的两个概率分布,则p对q的相对熵是
D ( p ∣ ∣ q ) = ∑ x p ( x ) l o g p ( x ) q ( x ) D(p||q) = \sum_{x}p(x)log\frac{p(x)}{q(x)} D(p∣∣q)=x∑p(x)logq(x)p(x)相对熵可以度量两个变量间的距离。 - 互信息:
I ( X , Y ) = D ( P ( X , Y ) ∣ ∣ P ( X ) P ( Y ) ) I(X,Y) = D(P(X,Y)||P(X)P(Y)) I(X,Y)=D(P(X,Y)∣∣P(X)P(Y))
I ( X , Y ) = ∑ x , y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) I(X,Y) = \sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)p(y)} I(X,Y)=x,y∑p(x,y)logp(x)p(y)p(x,y)
独立则为0,不独立大于0。
重要结论:- I(X,Y) = H(X)+H(Y)-H(X,Y)
- H(X|Y)<=H(X), H(Y|X)<=H(Y)
- 决策树:贪心算法。ID3,C4.5,CART。关于Gini index:
将 f ( x ) = − l n x f(x)=-lnx f(x)=−lnx在x=1处泰勒展开,忽略高阶无穷小,可以得到 f ( x ) ≈ 1 − x f(x) \approx 1-x f(x)≈1−x。
H ( x ) = − ∑ k = 1 K p k l n p k ≈ ∑ k = 1 K p k ( 1 − p k ) H(x)=-\sum_{k=1}^{K}p_{k}lnp_{k}\approx\sum_{k=1}^{K}p_{k}(1-p_{k}) H(x)=−k=1∑Kpklnpk≈k=1∑Kpk(1−pk)
决策树缺点:泛化能力弱,可能发生过拟合。 - Bagging:综合多个分类器决定数据的类别。Bootstrap抽样N次,一次都没有出现过的数据概率:
1 − ( 1 − 1 N ) N = 1 − ( ( 1 + 1 − N ) − N ) − 1 = 1 − 1 e ≈ 36.8 % 1-(1-\frac{1}{N})^{N}=1-((1+\frac{1}{-N})^{-N})^{-1} = 1-\frac{1}{e} \approx 36.8\% 1−(1−N1)N=1−((1+−N1)−N)−1=1−e1≈36.8%
lim n → ∞ ( 1 + 1 n ) n = lim n → ∞ 1 + n ∗ 1 n + n ( n − 1 ) 2 n 2 + n ( n − 1 ) ( n − 2 ) 6 n 3 + … = 1 + 1 + 1 2 ! + 1 3 ! + ⋯ + 1 n ! = e \begin{aligned} \lim_{n\rightarrow \infin}(1+\frac{1}{n})^{n} &= \lim_{n\rightarrow \infin} 1+n*\frac{1}{n}+\frac{n(n-1)}{2n^2}+\frac{n(n-1)(n-2)}{6n^3}+\dots \\ &= 1+1+\frac{1}{2!}+\frac{1}{3!}+\dots+\frac{1}{n!} \\ & = e \end{aligned} n→∞lim(1+n1)n=n→∞lim1+n∗n1+2n2n(n−1)+6n3n(n−1)(n−2)+…=1+1+2!1+3!1+⋯+n!1=e
OOB data: 36.8% 用来验证 - 样本不平衡的解决方法,假定严重不平衡。
- A类欠采样
- 随机欠采样
- A类分成若干子类,分别与B建模
- 基于聚类的A类分割
- B类过采样
- B类数据合成(SMOTE):随便选取少类样本点,随机选取该点最近的n个同类点,从中随机选取一个点在连线上生成一个新的数据点。
- 代价敏感学习,降低A权重,增加B权重。
-
思考:
- 使用随机森林为何可以提高正确率,减少过拟合? 引入了随机性。
- 决策树后剪枝如何操作?https://www.jianshu.com/p/794d08199e5e
- 决策树是几叉树与这棵树的分类数目有什么关系?没有关系。
- 如果特征连续,如何得到分割点?离散为是否,连续则为<>=,同样适用gini系数。
- 请解释gini系数为何可以用于分类标准?gini系数是熵函数的一阶近似展开,因此可以用于分类标准。
-
提升:可用于回归和分类,每一步产生一个弱预测模型,并加权累积到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称为梯度提升。理论意义:只要存在弱分类器,则可以通过提升的办法得到强分类器。通常,
L ( y , F ( x ) ) = 1 2 ( y − F ( x ) ) 2 L(y,F(\bold{x})) = \frac{1}{2}(y-F(\bold{x}))^2 L(y,F(x))=21(y−F(x))2
L ( y , F ( x ) ) = ∣ y − F ( x ) ∣ L(y,F(\bold{x})) = |y - F(\bold{x})| L(y,F(x))=∣y−F(x)∣
假定 F ( x ) F(\bold{x}) F(x)是一族基函数 f i ( x ) f_{i}(\bold{x}) fi(x)的加权和
F ( x ) = ∑ i = 1 M γ i f i ( x ) + c o n s t F(\bold{x}) = \sum_{i=1}^{M}\gamma_{i}f_{i}(\bold{x})+const F(x)=i=1∑Mγifi(x)+const
假设 x i x_{i} xi升序,求解:
μ ∗ = a r g m i n ∑ i = 1 n ∣ x i − μ ∣ \mu^{*} = arg min\sum_{i=1}^{n}|x_{i}-\mu| μ∗=argmini=1∑n∣xi−μ∣
J ( μ ) = ∑ i = 1 n ∣ x i − μ ∣ = ∑ i = 1 k ( μ − x i ) + ∑ i = k + 1 n ( x i − μ ) J(\mu) = \sum_{i=1}^{n}|x_{i}-\mu|=\sum_{i=1}^{k}(\mu-x_{i})+\sum_{i=k+1}^{n}(x_{i}-\mu) J(μ)=i=1∑n∣xi−μ∣=i=1∑k(μ−xi)+i=k+1∑n(xi−μ)
∂ J ( μ ) ∂ μ = ∑ i = 1 k ( − 1 ) + ∑ i = k + 1 n ( 1 ) = 0 \frac{\partial J(\mu)}{\partial \mu} = \sum_{i=1}^{k}(-1)+\sum_{i=k+1}^{n}(1) = 0 ∂μ∂J(μ)=i=1∑k(−1)+i=k+1∑n(1)=0
则 μ \mu μ为中位数。同理可证若 L L L为平方,则 μ \mu μ为均值。
F 0 ( x ) = a r g m i n ∑ i = 1 n L ( y i , γ ) F_{0}(\bold{x}) = argmin\sum_{i=1}^{n}L(y_{i},\gamma) F0(x)=argmini=1∑nL(yi,γ)
以贪心的思路扩展到
F m ( x ) = F m − 1 ( x ) + a r g m i n ∑ i = 1 n L ( y i , F m − 1 ( x i ) + f ( x i ) ) F_{m}(\bold{x})=F_{m-1}(\bold{x})+argmin\sum_{i=1}^{n}L(y_{i},F_{m-1}(\bold{x_{i}})+f(\bold{x_{i}})) Fm(x)=Fm−1(x)+argmini=1∑nL(yi,Fm−1(xi)+f(xi))
F m ( x ) = F m − 1 ( x ) − γ m ∑ i = 1 n ∇ f L ( y i , F m − 1 ( x i ) ) F_{m}(\bold{x}) = F_{m-1}(\bold{x})-\gamma_{m}\sum_{i=1}^{n}\nabla_{f}L(y_{i},F_{m-1}(\bold{x_{i}})) Fm(x)=Fm−1(x)−γmi=1∑n∇fL(yi,Fm−1(xi))
其中 γ m \gamma_{m} γm为步长。 -
GBDT:
目标函数:
J ( f t ) = ∑ i = 1 n L ( y i , y i ^ ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) + C J(f_{t})= \sum_{i=1}^{n}L(y_{i},\hat{y_{i}}^{(t-1)}+f_{t}(x_{i}))+\Omega(f_{t})+C J(ft)=i=1∑nL(yi,yi^(t−1)+ft(xi))+Ω(ft)+C
其中 y i ^ ( t − 1 ) \hat{y_{i}}^{(t-1)} yi^(t−1)为前t-1棵树在第i个样本的输出和, f t f_{t} ft为第t棵树在第i个样本的值,求和则为第i个样本的预测值。 -
Xgboost核心求解过程,根据泰勒展示:
J ( f t ) ≈ ∑ i = 1 n [ L ( y i , y i ^ ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) + C J(f_{t}) \approx \sum_{i=1}^{n}[L(y_{i},\hat{y_{i}}^{(t-1)})+g_{i}f_{t}(x_{i})+\frac{1}{2}h_{i}f_{t}^2(x_{i})]+\Omega(f_{t})+C J(ft)≈i=1∑n[L(yi,yi^(t−1))+gift(xi)+21hift2(xi)]+Ω(ft)+C
Ω ( f t ) = γ T + 1 2 ∑ j = 1 T w j 2 \Omega(f_{t}) = \gamma T +\frac{1}{2}\sum_{j=1}^{T}w_{j}^2 Ω(ft)=γT+21j=1∑Twj2
推导公式:
在结点处如何划分,枚举可行的分割点,选择增益最大的划分,重复操作,直到满足某阈值或得到纯结点。
G a i n ( ϕ ) = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] − γ Gain(\phi) = \frac{1}{2}[\frac{G_{L}^2}{H_{L}+\lambda}+\frac{G_{R}^2}{H_{R}+\lambda}-\frac{(G_{L}+G_{R})^2}{H_{L}+H_{R}+\lambda}]-\gamma Gain(ϕ)=21[HL+λGL2+HR+λGR2−HL+HR+λ(GL+GR)2]−γ -
Xgboost与GBDT的比较,Xgboost使用了二阶泰勒展开,可以更快地在训练集上收敛。
- 由于随机森林族本身具备过拟合优势,因此Xgboost一定程度上具备该优势
- Xgboost实现中使用了多核/并行计算,因此训练速度快,同时它的原生语言为C/C++,这是它速度快的根本原因。
-
Adaboost:
构建基本分类器的线性组合
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x) = \sum_{m=1}^{M}\alpha_{m}G_{m}(x) f(x)=m=1∑MαmGm(x)
计算 G m ( x ) G_{m}(x) Gm(x)在训练数据集上的分类误差率
e m = P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) < 0.5 e_{m} = P(G_{m}(x_{i})\neq y_{i})=\sum_{i=1}^{N}w_{mi}I(G_{m}(x_{i})\neq y_{i}) < 0.5 em=P(Gm(xi)=yi)=i=1∑NwmiI(Gm(xi)=yi)<0.5
计算 α m \alpha_{m} αm:
α m = 1 2 l o g 1 − e m e m \alpha_{m} = \frac{1}{2}log\frac{1-e_{m}}{e_{m}} αm=21logem1−em
其中 G m ( x ) ∈ { − 1 , 1 } , y ∈ { − 1 , 1 } G_{m}(x)\in \{-1,1\},y\in\{-1,1\} Gm(x)∈{−1,1},y∈{−1,1}。
得到最终分类器
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x) = sign(f(x)) = sign(\sum_{m=1}^{M}\alpha_{m}G_{m}(x)) G(x)=sign(f(x))=sign(m=1∑MαmGm(x))
base_estimator = DecisionTreeClassifier(criterion,max_depth,min_sample_split)
clf = AdaBoostClassifier(base_estimator,n_estimators,learning_rate)
clf.fit()
Adaboost是加法模型,损失函数为指数函数,学习算法为前向分布算法时的二类学习方法。
L
(
y
,
f
(
x
)
)
=
e
x
p
(
−
y
f
(
x
)
)
L(y,f(x))=exp(-yf(x))
L(y,f(x))=exp(−yf(x))
- 支持向量机。
- 距离公式:
d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 d=\frac{|Ax_{0}+By_{0}+C|}{\sqrt{A^2+B^2}} d=A2+B2∣Ax0+By0+C∣ - 目标函数:
a r g m a x { 1 ∣ ∣ w ∣ ∣ m i n [ y i ⋅ ( w T ⋅ Φ ( x i ) + b ) ] } arg max\{\frac{1}{||w||}min [y_{i}\cdot(w^{T}\cdot\Phi(x_{i})+b)]\} argmax{∣∣w∣∣1min[yi⋅(wT⋅Φ(xi)+b)]}
目标函数变形:
{ m a x 1 ∣ ∣ w ∣ ∣ s . t . y i ( w T ⋅ Φ ( x i ) + b ) ≥ 1 i = 1 , 2 , 3 , . . . , n \begin{cases} max \frac{1}{||w||} \\ s.t. \quad y_{i}(w^{T}\cdot\Phi(x_{i})+b) \geq 1 \quad i=1,2,3,...,n \end{cases} {max∣∣w∣∣1s.t.yi(wT⋅Φ(xi)+b)≥1i=1,2,3,...,n
即
{ m i n ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T ⋅ Φ ( x i ) + b ) ≥ 1 i = 1 , 2 , 3 , . . . , n \begin{cases} min \frac{||w||}{2}\\ s.t. \quad y_{i}(w^{T}\cdot\Phi(x_{i})+b) \geq 1 \quad i=1,2,3,...,n \end{cases} {min2∣∣w∣∣s.t.yi(wT⋅Φ(xi)+b)≥1i=1,2,3,...,n - 拉格朗日乘子法:原问题是极小极大问题,对偶问题是极大极小问题。拉格朗日方程:
G ( x , ν , λ ) = f ( x ) + ∑ i = 1 n ν i f i ( x ) + ∑ j = 1 m λ j h j ( x ) G(x,\bold{\nu},\bold{\lambda}) = f(x)+\sum_{i=1}^{n}\nu_{i}f_{i}(x)+\sum_{j=1}^{m}\lambda_{j}h_{j}(x) G(x,ν,λ)=f(x)+i=1∑nνifi(x)+j=1∑mλjhj(x)
其对偶函数为
m i n G ( x , ν , λ ) min \ G(x,\bold{\nu},\bold{\lambda}) min G(x,ν,λ)
是一个凹函数,可以凸优化求解。其中 f i ( x ) ≤ 0 f_{i}(x)\leq0 fi(x)≤0, h j ( x ) = 0 h_{j}(x)=0 hj(x)=0, ν i ≥ 0 \nu_{i}\geq 0 νi≥0, λ ∈ R \lambda \in R λ∈R。 - 求解:
线性支持向量机- 不一定分类完全正确的超平面就是最好的
- 样本数据本身线性不可分
- 核函数。本质上是将原特征映射到高维空间之后使其线性可分。
- 多项式核: K ( x 1 , x 2 ) = ( x 1 ⋅ x 2 + c ) d K(x_1,x_2) = (x_1\cdot x_2+c)^{d} K(x1,x2)=(x1⋅x2+c)d,d=1时线性核。
- 高斯核RBF: K ( x 1 , x 2 ) = e x p ( − γ ⋅ ∣ ∣ x 1 − x 2 ∣ ∣ 2 ) K(x_1,x_2) = exp(-\gamma\cdot||x_1-x_2||^2) K(x1,x2)=exp(−γ⋅∣∣x1−x2∣∣2)
- Sigmoid核:
K
(
x
1
,
x
2
)
=
t
a
n
h
(
x
1
⋅
x
2
+
c
)
K(x_1,x_2) = tanh(x_1\cdot x_2+c)
K(x1,x2)=tanh(x1⋅x2+c)
实际应用中,往往依赖先验知识,若无则选择高斯核函数。注意:使用高斯核函数前需要做feature scaling。
- SVM可以看成是一个两层的神经网络,一层做了特征映射,一层做了分类。
核函数选特征,拉格朗日乘子法选支撑向量。和CNN相似,都是稀疏模型,部分连接。 - SVR原理同SVM,都是找一个超平面,区别是SVM找最大间隔,SVR找最小距离和。
- Hinge loss
调参:
- KKT条件:
对于具有等式和不等式约束的一般优化问题:
{ m i n f ( x ) 最 值 问 题 s . t . g j ( x ) ≤ 0 j = 1 , 2 , 3 , . . . , n 不 等 式 约 束 h k ( x ) = 0 k = 1 , 2 , . . . . l 等 式 约 束 \begin{cases} min f(x) \quad \quad 最值问题 \\ s.t. g_{j}(x) \leq 0 \quad j=1,2,3,...,n \quad 不等式约束 \\ h_{k}(x) = 0 \quad \quad k=1,2,....l \quad 等式约束 \end{cases} ⎩⎪⎨⎪⎧minf(x)最值问题s.t.gj(x)≤0j=1,2,3,...,n不等式约束hk(x)=0k=1,2,....l等式约束
KKT条件给出了判断 x ∗ x^{*} x∗是否为最优解的必要条件:
{ ∂ f ∂ x i + ∑ j = 1 m μ j ∂ g j ∂ x i + ∑ k = 1 l λ k ∂ h k ∂ x i = 0 i = 1 , 2 , 3 , . . . . , n h k ( x ) = 0 k = 1 , 2 , 3 , . . . . , l μ j g j ( x ) = 0 j = 1 , 2 , 3 , . . . , n μ j ≥ 0 \begin{cases} \frac{\partial f}{\partial x_{i}}+\sum_{j=1}^{m}\mu_{j}\frac{\partial g_{j}}{\partial x_{i}}+\sum_{k=1}^{l}\lambda_{k}\frac{\partial h_{k}}{\partial x_{i}} = 0 \quad i = 1,2,3,....,n \\ h_{k}(x) = 0 \quad k = 1,2,3,....,l \\ \mu_{j}g_{j}(x) = 0 \quad j=1,2,3,...,n\\ \mu_{j} \geq 0 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧∂xi∂f+∑j=1mμj∂xi∂gj+∑k=1lλk∂xi∂hk=0i=1,2,3,....,nhk(x)=0k=1,2,3,....,lμjgj(x)=0j=1,2,3,...,nμj≥0
- 等式约束优化问题,这一部分其实就是Langrange乘数法。
- 不等式约束优化问题:
转化思想:将不等式约束条件转化为等式约束条件
具体做法:引入松弛变量,松弛变量也是优化变量,求导时需要一起计算。
可以参考:https://zhuanlan.zhihu.com/p/38163970
- sklearn逻辑图