未完待续,欢迎大家点赞收藏关注博主,谢谢支持

SGD的数学细节

给定一系列训练数据:

(x1,y1),,(xn,yn)(x_1, y_1), \ldots, (x_n, y_n) 其中 xiRmx_i \in \mathbf{R}^m 是点的坐标, yiRy_i \in \mathcal{R} (yi{1,1}y_i \in\{-1, 1\} )是分类标签。

我们的目标是训练出一个线性评价函数 f(x)=wTx+bf(x) = w^T x + b ,模型参数为 wRmw \in \mathbf{R}^m ,截距为 bRb \in \mathbf{R}.
给0-1分类做预测,时 我们看f(x)f(x)的符号. 模型参数通过最小化由以下式子给出的正则化训练误差来得到:
E(w,b)=1ni=1nL(yi,f(xi))+αR(w) E(w,b) = \frac{1}{n}\sum_{i=1}^{n} L(y_i, f(x_i)) + \alpha R(w)
LL 是一个损失函数,衡量了模型的拟合程度 ,RR是一个正则化项(也叫作惩罚),对系统的复杂性进行惩罚; α>0\alpha>0 is a 非负的超参数,控制了正则化的强度。
LL的不同选择可以实现不同的分类器或回归器:

  • Hinge (soft-margin): equivalent to Support Vector Classification: L(yi,f(xi))=max(0,1yif(xi))L(y_i, f(x_i)) = \max(0, 1 - y_i f(x_i)).
  • Perceptron: L(yi,f(xi))=max(0,yif(xi))L(y_i, f(x_i)) = \max(0, - y_i f(x_i)).
  • Modified Huber: L(yi,f(xi))=max(0,yif(xi))L(y_i, f(x_i)) = \max(0, - y_i f(x_i)), if yif(xi)>1y_i f(x_i) >1 and L(yi,f(xi))=4yif(xi)L(y_i, f(x_i)) = -4 y_i f(x_i) otherwise.
  • Log: equivalent to Logistic Regression. L(yi,f(xi))=log(1+exp(yif(xi)))L(y_i, f(x_i)) = \log(1 + \exp (-y_i f(x_i))).
  • Least-Squares: Linear regression (Ridge or Lasso depending on R). yif(xi)ε|y_i - f(x_i)| \leq \varepsilon.
  • Huber: less sensitive to outliers than least-squares. It is equivalent to least squares when yif(xi)ε|y_i - f(x_i)| \leq \varepsilon and L(yi,f(xi))=εyif(xi)12ε2L(y_i, f(x_i)) = \varepsilon |y_i - f(x_i)| - \frac{1}{2}\varepsilon^2, otherwise.
  • Epsilon-Insensitive: (soft-margin) equivalent to Support Vector Regression. L(yi,f(xi))=max(0,yif(xi)ε)L(y_i, f(x_i)) = \max(0, |y_i - f(x_i)| - \varepsilon).

上述所有损失函数都可以视为错误分类错误(0-1 损失)的上限,如下图所示。

正则化项 ( penalty 参数) 的选择包括如下几种形式:

  • L2 norm: R(w):=12j=1mwj2=w22R(w) := \frac{1}{2} \sum_{j=1}^{m} w_j^2 = ||w||_2^2
  • L1 norm: R(w):=j=1mwjR(w) := \sum_{j=1}^{m} |w_j|.这导致稀疏的解
  • Elastic Net: R(w):=ρ2j=1nwj2+(1ρ)j=1mwjR(w) := \frac{\rho}{2} \sum_{j=1}^{n} w_j^2 +(1-\rho) \sum_{j=1}^{m} |w_j|, L2 和 L1的凸组合, 其中 ρ\rho1 - l1_ratio.

下图显示了二维参数空间中不同正则化项的轮廓 (m=2m=2) ,当 R(w)=1R(w)=1时.

最小均方误差线性回归

问题描述:

输入一组带标签的样本集,一共有mm个数据:x1,x2,,xm\mathbf{x}_{1},\mathbf{x}_{2},\dots,\mathbf{x}_{m},对应的标签为向量y=[y1,y2,,ym]\mathbf{y}=[{y}_{1},{y}_{2},\dots,y_{m}],每个样本xi\mathbf{x}_{i}为一个dd维向量,代表dd个特征,标签为yiy_{i}(标量).
把数据集 DD 表示为一个 m×dm \times d大小的矩阵 XX ,其中每行对应于一个样本,该行的 dd 个元素对应于样本的 dd 个属性值:
X=[x1x2xm](3) X= \left[ \begin{matrix} \mathbf{x}_{1} \\ \mathbf{x}_{2} \\ \vdots \\ \mathbf{x}_{m} \end{matrix} \right] \tag{3}

其中xi=[xi,1,xi,2,,xi,d]\mathbf{x}_{i}=[x_{i,1},x_{i,2},\dots,x_{i,d}]

我们的目标是通过学习得到一个线性评价函数
f(xi)=xiwT+bf(\mathbf{x}_{i})=\mathbf{x}_{i}\mathbf{w}^{T}+b
其中系数 w=[w1,...,wd]\mathbf{w} = [w_1, ..., w_d]
截距为bb(标量)
使得残差平方和:f(X)y22=XwT+by22||f(X) - \mathbf{y}||_2^2=||X\mathbf{w}^T+b - \mathbf{y}||_2^2最小

下面对最佳的w\mathbf{w}bb求解
以下详细推导过程摘自南瓜书

算法

为了便于计算,我们我们把 w\mathbf{w} 和 b 合并成一个向量 : w^=[w,b]\hat\mathbf{w}=[\mathbf{w},b],并把目标函数化成关于w^\hat\mathbf{w}的形式

sklearn分类算法SGDclassifier
sklearn分类算法SGDclassifier
Ew^=(yXw^)T(yXw^)E_{\hat\mathbf{w}}=(\mathbf{y}-\mathbf{X}\hat\mathbf{w})^{T}(\mathbf{y}-\mathbf{X}\hat\mathbf{w}), 下面令目标函数对求微分
sklearn分类算法SGDclassifier
令上式为零可得 w^\hat\mathbf{w} 的最优解

参考文献

sklearn官方文档

相关文章: