一、机器学习之旅-线性模型篇:(1)相关概念及公式推导

线性模型相关概念及公式推导

线性模型形式简单、易于建模,但是往往蕴含着机器学习中的一些重要思想。且很多非线性模型都是在线性模型的基础之上,通过引入层级结构和高维映射获得的。接下来讲分别介绍几个常用的线性模型,若之后对线性模型有了进一步的了解再来补充。

1.线性模型综述

1.1基本形式

在了解线性模型之前,我们先看看线性模型究竟是怎样一个形式:首先给定由d个属性描述的样本x=(x1;x2…xd),其中xi是样本x在第d个维度上的取值。
线性模型试图通过学习来得到一个通过属性组成的线性组合,进而完成对新的样本的预测。形如:

f( x)=w 1x 1+w 2x 2+…w dx d+b

用向量形式写作:
f( x)= w T x+b

其中 w=(w 1;w 2;…;w d)和分别可以理解为中学一次函数中的斜率k和截距b,只不过这里的 w是多维的。在学习到 w和b之后,函数模型便确定下来了。
例如在判断西瓜好坏案例中,我们最终学得的模型可以是:f 好瓜x)=0.2×x 色泽+0.5×x 根蒂+0.3×x 敲声

1.2广义线性模型

在普通的线性模型当中,我们通过构建自变量x和因变量y之间的关系,可以得到一个预测性函数。然而有些时候自变量的预测值却往往不能很好地拟合因变量的实际值,这时候我们便需要广义的线性模型。

广义线性模型是线性模型的扩展,通过建立函数使得线性组合预测值的结果更好地拟合因变量的实际值。

我们首先看看回归线性模型:
f ( x ) = w T ⋅ x + b f(x) =w^T\cdot x+b f(x)=wTx+b

但是假如我们发现示例对应的结果在指数尺度上发生变化,那么我们可以将输出结果的对数作为线性模型的逼近目标,即:
l n y = w T ⋅ x + b lny = w^T\cdot x+b lny=wTx+b

这便是对数线性回归,因为实际上是在让 e w T x + b e^{w^Tx+b} ewTx+b在逼近y。上式在形式上仍然是线性回归,但是实际上已经在求输入空间到输出空间的非线性函数映射了,但是这里的对数函数,起到了将线性回归模型的预测值与真实标记相联系起来的作用

更一般地,我们考虑单调可微函数g(·),令
y = g − 1 ( w T x + b ) y=g^{-1}(w^Tx+b) y=g1(wTx+b)
这样得到的模型称为广义线性模型,其中函数g(·)称为联系函数。不难发现,对于广义线性模型而言,对数线性回归只是其中一个特例,此时 g(·)=ln(·)。

所以在感知机模型和线性回归模型当中,它们分别使用了sign函数和sigmoid函数,作为广义线性模型。我们将在对应的部分详细介绍。

2.线性分类器(感知机模型)

线性分类问题有多种解决办法,例如感知机、LinearSVM,这里主要介绍感知机。感知机属于二分类线性模型,用于找到一个超平面,将线性可分的两类实例划分为正负两类,属于判别模型。

2.1感知机模型

  • 定义:
    假设输入空间(特征空间)是 X ⊆ : R n X\subseteq:R^n X:Rn,输出空间是 Y Y Y={+1,-1}。输入 x ∈ X x\in X xX,表示实例的特征向量,对应于输入空间的点;输出 y ∈ Y y\in Y yY,表示实例的类别。由输入空间到输出空间的如下函数:
    f ( x ) = s i g n ( w ⋅ x + b ) f(x) = sign(w\cdot x+b) f(x)=sign(wx+b)
    称为感知机。其中,w和b为感知机模型参数, w ∈ R n w\in R^n wRn,叫做权值或权值向量(weight vector), b ∈ R b\in R bR,叫做偏置。 w ⋅ x w\cdot x wx表示w和x的内积。

  • sign符号函数,即
    s i g n ( n ) = { 1 x  ⩾ 0 − 1 , if  n < 0   sign(n) = \begin{cases} 1 & \text{x $\geqslant 0$} \\ -1, & \text{if $n <0$ } \end{cases} sign(n)={11,0if n<

  • 感知机实质:
    感知机的假设空间是定义在特征空间中所有假设(线性分类器模型)的集合,即{f|f(x) = w ⋅ x + b w\cdot x+b wx+b} ,而感知机模型的作用则是从对应的假设空间中选择出合适的模型来。从而通过学习得到的感知机模型,实现对于新的输入示例给出对应的输出类型。

2.2感知机学习策略

2.2.1数据集线性可分性

感知机模型要求数据必须是线性可分的,即对于上述的数据,存在某个超平面S能够将数据集的正实例点和负实例点完全正确地划分开来。即对所有yi=+1的实例,都有w ⋅ \cdot xi+b>0;对于所有yi=-1的点,都有 w ⋅ x w\cdot x wx+b<0,则称数据集是线性可分的,否则称为不可分。

2.2.2损失函数

为了确定分类超平面,即确定模型的参数w和b,我们需要确定一个学习策略,即定义损失函数并将损失函数极小化,通过求得极小化的损失函数获得对应的参数w和b。那么,该如何确定损失函数呢?

一个选择是所有被误分类的点的总数,然而这样的损失函数却是不连续的,不可导的,因此不易求优化问题。然而,选择所有误分类点到超平面S的总距离作为损失函数却是可以的。

首先输入空间Rn中任意一点到超平面S的距离可以表示为:

∣ w ⋅ x 0 + b ∣ ∥ w ∥ \frac{|w\cdot x_0+b|}{\| w\|} wwx0+b

而对于误分类的实例(xi,yi)而言,则有

-yi(w·xi+b)>0

从而将被误分类的点筛选出来,假设M表示所有误分类点的集合。紧接着可以推导出,所有被误分类的点到超平面的距离之和:
- 1 ∥ w ∥ ∑ y i ( w ⋅ x i + b ) , x i ∈ M \frac{1}{\| w\|}\sum y_i(w·x_i+b),x_i\in M w1yi(wxi+b),xiM

由于 1 ∥ w ∥ \frac{1}{\| w\|} w1对上式正负号无影响,即并不影响损失函数正负号判断,因此可以视为常数去除,最终,损失函数为:
L(w,b) = ∑ y i ( w ⋅ x i + b ) , x i ∈ M \sum y_i(w·x_i+b),x_i\in M yi(wxi+b),xiM

2.3 随机梯度最优化求解

采用随机梯度下降法求解模型,步骤如下:(1)任意选取一个超平面,对应的参数设置为w0,b0(2)用梯度下降法不断地极小化损失函数(3)随机选取一个误分类的点(xi,yi),沿着其梯度下降的方向更新参数w和b。
损失函数L的梯度可以表示为:
∇ w L ( w , b ) = − ∑ y i x i \nabla_wL(w,b)=-\sum{y_i}{x_i} wL(w,b)=yixi
∇ b L ( w , b ) = − ∑ y i \nabla_bL(w,b)=-\sum{y_i} bL(w,b)=yi

因此,对于给定的误分类点(xi,yi),我们可以实现对w和b的更新。更新的公式为 wt+1=wt+ η \eta ηv,其中 η \eta η表示学习率,即每一步移动的距离;而v则表示移动的方向,试想,对于一个向量而言,只有其反方向才是下降最快的方向,即梯度的负方向。
更新公式如下:
w ← \gets w + η \eta η*yixi
b ← \gets b + η \eta η*yi

算法流程如下:
1.选取初始值w0,b0
2.在训练集中随机选取数据(xi,yi)
3.如果yi(w·xi) ⩽ 0 \leqslant 0 0
w ← \gets w + η \eta η*yixi
b ← \gets b + η \eta η*yi

即:当一个实例被误分类,即位于分离超平面的错误一侧时,调整w和
b的值,使分类超平面向误分类点的一侧移动,以减少该误差和超平面之间的距离,重复此过程,直到超平面越过该误分类点使其正确被分类。

注:当训练集线性可分时,感知机算法存在无穷多个解,其解由于不同的初值或不同的迭代顺序可能有所不同。仔细探究原因,不难发现这是由感知机算法的最优化机制决定的,由于最优化目标是所有被误分类的点到超平面的距离之和最小,因此最终的优化结果有很大的不确定性。
与感知机不同的是,支持向量机最优化目标是所有特征空间中实例到超平面距离之后,可以求解出唯一值。

3.线性回归

与感知机用来解决分类问题不同的是,线性回归用来解决连续性问题,得到一个实值输出,因此,线性回归的预测函数取值在整个实数空间,而感知机等模型只能取0或1。因此,线性回归也是最基本的线性模型,并不需要寻找一个联系函数,将线性回归的输出值与期望预测值相连接,而是使得线性模型的预测值尽可能接近实际值。

3.1线性回归损失函数

线性回归的目标是在二维空间或着多维空间中,找到一条直线或者一个平面或者一个超平面,使得实数空间中的样本点更加接近它,也就是残留误差最小化。也称为均方误差最小化。均方误差具有非常好的几何意义,它与常用的欧几里得距离,即欧式距离相对应。

线性回归问题的损失函数可以表示为:
err(f(x),y) = (f(x)2-y2)

下面仔细看一下这个损失函数的构成:
f(x) = wTx+b 这里的 x的维度为n×d,分别为实例数目和属性的维度。而w即权重,自然是1×d维的,因此其转置,即wT的维度是d×1维。b为偏置项常数。
而为了便于讨论,我们将偏置项目b视为x0,其系数设置为w0,因此,损失函数可以表示为:
f(x) = wTx
此时,w的维度为d+1维,而x的维度为n×(d+1)维

3.2最小二乘法求解最优化

利用均方误差最小化进行求解的方法就是最小二乘法,试图找到一个超平面使得特征空间中的所有点到超平面的欧氏距离之和最小

即求解函数: ∑ \sum (y - wTx)2 的最小值,并得到对应的w
用Δ表示求导,则对上式对w进行求导可以得到:
∑ \sum (y - wxT)2

=-2yxT + 2wxxT

令上式等于0得到:
w = (xTx)-1XTy

4.逻辑回归

逻辑回归Logistic Regression(LR),是一个非常经典的算法,凭借着鲁棒的性能和良好的表现收到学术界和业界的广泛青睐,在很多数据比赛中,都可以将逻辑回归算法作为基础算法,得到一个baseline。

4.1 应用场景

以心脏病预测问题为例,根据患者的年龄、血压、体重等信息,我们来预测患者是否患有心脏病。

项目Value
age67
blood pressure170/90
weight70
cholesterol (胆固醇)240

那么作为一个传统的二分类问题,我们可以根据前面提到的感知机算法,将每个患者信息数据作为特征值输入模型当中,进而建立线性分类模型,预测新的患者是否患病。然而,在这类问题当中,我们往往不仅想要预测患者是否患病,更希望能够获得患者患病的概率。

因此,我们的期望值是一个在[0,1]之间的连续值,和以往的二分类问题不一样,我们称之为软分类问题。但是值得注意的是,虽然我们称为逻辑回归问题,但是它实际上并不是回归问题。因为实际的数据值,即实例的值只有0,和1这两类,并不是连续的。同时基于此,我们需要考虑解决如下两个问题:
(1)如何将输出结果规整到[0,1]之间 (2)如何将结果以概率的形式对应每一个输入(注意:上一个问题归一化到了0,1之间并不代表每一个输入值得到的某个输出的概率)

4.2 sigmod函数

由于逻辑回归问题本质仍然是分类问题,而线性回归模型,wTx+b只能拟合连续变量而不能拟合离散变量,且其取值空间为R,因此不适合用于解决逻辑回归问题,因此我们需要考虑广义的线性模型。接下来考虑要使用什么函数,作为联系函数。

考虑0,1问题仍然是二分类问题,那么自然而然最先想到的便是阶跃函数
s i g n ( n ) = { 1 x  ⩾ 0 − 1 , if  n < 0   sign(n) = \begin{cases} 1 & \text{x $\geqslant 0$} \\ -1, & \text{if $n <0$ } \end{cases} sign(n)={11,0if n<
然而该函数仍然存在着在0点处不光滑的问题,给最优化求解会带来比较大的麻烦。因此我们应当考虑一个在一定程度上类似阶跃函数的“替代函数”,并且单调可微。对数几率函数正是这样的一个替代函数:
y = 1 1 + e x \frac{1}{1+e^x} 1+ex1
将对数几率函数作为g(·)则有
y = 1 1 + e − ( w T x + b ) \frac{1}{1+e^{-(w^Tx+b)}} 1+e(wTx+b)1

问题1:为什么使用sigmod函数?
答案:因为线性回归模型的预测值是实数空间中的实数,而样本的类标记为(0,1),我们需要一个联系函数,将线性回归模型的预测结果和分类任务的真实标记联系起来,也就是找到广义线性模型中的联系函数。此外,sigmod在实数上是光滑可微的,便于求解最优化问题。

由:y = 1 1 + e − ( w T x + b ) \frac{1}{1+e^{-(w^Tx+b)}} 1+e(wTx+b)1

可得:ln y 1 − y \frac {y}{1-y} 1yy =wTx+b

我们将y视为x为正例的概率,则1-y就是其为反例的概率。两者的比值为几率,表示事件发生与不发生的概率的比值。

将y视为类后验概率,那么重写公式有:

p(y=1|x) = 1 1 + e − ( w T x + b ) \frac{1}{1+e^{-(w^Tx+b)}} 1+e(wTx+b)1

ln p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) \frac {p(y=1|x)}{1-p(y=1|x)} 1py=1xpy=1x = wTx+b

由于是二分类问题,因此p(y=1|x)和p(y=0|x)之和为1,因此,上式又等价于

ln p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) \frac {p(y=1|x)}{p(y=0|x)} py=0xpy=1x = wTx+b

因此,我们可以分别获得:

p(y=0|x) = e ( − w T x + b ) 1 + e − ( w T x + b ) \frac{e^{(-w^Tx+b)}}{1+e^{-(w^Tx+b)}} 1+e(wTx+b)e(wTx+b)
p(y=1|x) = 1 1 + e − ( w T x + b ) \frac{1}{1+e^{-(w^Tx+b)}} 1+e(wTx+b)1

通过上述的转化,我们不仅实现了线性模型的预测值到分类任务的实际标签的转换,同时还可以得到每一个输入对应某个输出值的概率。我们不难发现逻辑回归的思路是,先拟合决策边界(不局限于线性,还可以是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率

问题2:逻辑回归为什么要使用对数几率?
答案2:其实这个问题就等价于问使用对数几率的意义在哪里,或者说对数几率的优点在哪里,或者说逻辑回归使用对数几率函数的原因是什么?1:直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题;2:不仅可预测出类别,还能得到该预测的概率,这对很多利用概率辅助决策的任务很有用;3:对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。

4.3代价函数(损失函数)

逻辑回归的模型确定之后,我们需要思考如何获得损失函数,进而通过最优化进一步求解相关的参数。在统计学当中,常常使用极大似然法来求解。

首先解释一下似然:Likelihood即为可能性,假设真实目标函数f(x),而我们找到了一个近似函数f(x)和目标函数t(x)很接近,针对相同的数据集能产生相同的输出。那么称这个假设的函数就是最大似然的函数,换句话说就是最可能是真实t(x)的假设函数。

L(W) = ∏ i = 1 n p ( x ) y i ⋅ ( 1 − p ( x ) ) 1 − y i \prod_{i=1}^np(x)^{y_i}\cdot (1-p(x))^{1-y_i} i=1np(x)yi(1p(x))1yi

为了更方便进行求解,我们对等式两边同时取对数,写成对数似然函数,从而可以将连乘问题转化为连加这一我们更加熟悉的问题:
logL(w) = ∑ i = 1 n [ y i l o g p ( x i ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] \sum_{i=1}^n[{y_ilogp(x_i)+(1-y_i)log(1-p(x_i))}] i=1n[yilogp(xi)+(1yi)log(1p(xi))]

= ∑ i = 1 n [ y i l o g p ( x ) 1 − p ( x ) + l o g ( 1 − p ( x i ) ) ] \sum_{i=1}^n[y_ilog\frac {p(x)}{1-p(x)}+log(1-p(x_i))] i=1n[yilog1p(x)p(x)+log(1p(xi))]

= ∑ i = 1 n [ y i ( w T x i ) − l o g ( 1 + e w T x ) ] \sum_{i=1}^n[y_i(w^Tx_i)-log(1+e^{w^Tx})] i=1n[yi(wTxi)log(1+ewTx)]

类比损失函数表示模型犯错误的程度,我们的对数似然函数表示假设预测函数与真实分布函数相拟合的概率,因此,在逻辑回归问题中,最小化损失函数最大化似然函数是等价的。(可以这么想,若预测结果和实例类标签的值拟合程度越大则犯错误的概率越小,损失函数越小。)

问题3:为什么不采用均方误差(MSE损失函数)?
答案3:式3-1,其实就是交叉熵函数(对于二分类问题,交叉熵的形式就是由极大似然估计下的概率的连成转化为对数似然估计下的连加获得的)。接下来,我们分布看一下着两个损失函数的情况:
1.MSE函数(mean squared error)

C = ( y − f ( x ) ) 2 2 \frac {(y-f(x))^2}{2} 2(yf(x))2, f是模型的预测值,前面已经提到最小平方误差求是求预测值到实际值之间距离的平凡和最小化。采用梯度下降的方法,

∂ L ∂ W = ( f ( x ) − y ) f ′ ( w ⋅ x ) x \frac {\partial L}{\partial W}=(f(x)-y)f'(w·x)x WL=(f(x)y)f(wx)x

其中,f’(x)表示sigmoid的导数项,也就是说参数的更新速率、梯度与当前sigmod函数的导数值直接相关。对其进行求导可得,

f’(x) = w·x(1-w·x)

试想,根据w的初始化,导数值可能很小,而导致收敛速度变慢,而中途训练过程中也有可能因为该值过小而提前终止。(想象一下sigmod函数图像,在输出值接近0和1时的附近,其导数值非常小,但是在接近0.5的位置导数却非常大。)

2.交叉熵函数
另外一方面,交叉熵的梯度如下,当模型输出概率偏离于真实概率时,梯度较大,加快训练速度,当拟合值接近于真实概率时训练速度变缓慢,没有 MSE 的问题。

g’ = ∑ i = 1 n x i ( y i − p ( x i ) ) \sum_{i=1}^nx_i(y_i-p(x_i)) i=1nxi(yip(xi))

交叉熵梯度的值是和当前预测值和实际值的差值直接相关的,没有受到sigmoid函数导数的影响,且真实值与实际值差别越大,梯度越大,更新速率越快,而这也恰恰是我们想要的。

总结:平方误差损失函数对应的函数图像是非凸函数,有很多局部最小值,不利于最优化求解。但是最大似然函数做逻辑回归的损失函数,则可以得到一个光滑的凸函数,很容易求得参数得最优解。

4.4 求解过程

求解逻辑回归的方法有很多,例如:梯度下降、随机梯度下降和牛顿法。优化的目标主要是找到一个方向,使得移动之后的损失函数能够减小,而这个方向往往是由一阶偏导和二阶偏导组成的。

4.4.1 梯度下降

准确的说,应该是批量梯度下降,即梯度下降包含随机梯度下降和批量梯度下降,但是一般情况下,我们认为梯度下降就是批量梯度下降。

首先解释一下梯度的负方向是代价函数下降最快的方向:根据泰勒展开式:
f(x+ σ \sigma σ)-f(x) ≈ \approx f’(x)· f( σ \sigma σ)

f’(x)和 σ \sigma σ均为向量,二者的内积就等于:
f’(x)· σ \sigma σ = ∥ f ′ ( x ) ∥ \| f'(x)\| f(x)· ∥ σ   ∣ \|\sigma\ | σ ·cosα
σ \sigma σ是指移动的步长,当和f’(x)夹角,α=180°时,也就是说在f’(x)的负方向时,上式可以取得最小值,就是下降最快的方向了。

基于这个原因,接下来我们可以得到权重的更新公式:
wj+1 = wj + Δwj
=wj - η ∂ J ( w ) ∂ w j \frac {\partial J(w)}{\partial w_j} wjJ(w)
= wj + (p(xi)-yi)xi
其中,j为迭代次数。每次更新参数之后,可以通过比较 ∥ J ( j + 1 ) − J ( j ) ∥ 是 否 小 于 阈 值 , 或 者 更 新 次 数 j 是 否 达 到 最 大 迭 代 次 数 来 停 止 迭 代 。 \| J(j+1)-J(j)\|是否小于阈值,或者更新次数j是否达到最大迭代次数来停止迭代。 J(j+1)J(j)j

4.4.2牛顿法

4.5与其他模型对比

1.线性回归模型
逻辑回归是在线性回归的基础上加了一个 Sigmoid 函数(非线形)映射,使得逻辑回归称为了一个优秀的分类算法。本质上来说,两者都属于广义线性模型,但他们两个要解决的问题不一样,逻辑回归解决的是分类问题,输出的是离散值,线性回归解决的是回归问题,输出的连续值。

线性回归是在实数域范围内进行预测,而分类范围则需要在 [0,1],逻辑回归减少了预测范围;
线性回归在实数域上敏感度一致,而逻辑回归在 0 附近敏感,在远离 0 点位置不敏感,这个的好处就是模型更加关注分类边界,可以增加模型的鲁棒性。

2.与最大熵模型
逻辑回归和最大熵模型本质上没有区别,最大熵在解决二分类问题时就是逻辑回归,在解决多分类问题时就是多项逻辑回归。

3与SVM
相同点在于二者都是监督式学习算法,用于寻找最优分类超平面。
不同点在于,

  1. LR是基于统计的方法,SVM是几何的方法;
  2. 损失函数不同:LR 的损失函数是交叉熵,SVM 的损失函数是 HingeLoss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。对 HingeLoss 来说,其零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这是支持向量机最大的优势所在,对训练样本数目的依赖大减少,而且提高了训练效率;
  3. LR 是参数模型,SVM 是非参数模型,参数模型的前提是假设数据服从某一分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。所以 LR 受数据分布影响,尤其是样本不均衡时影响很大,需要先做平衡,而 SVM 不直接依赖于分布;
  4. LR 可以产生概率,SVM 不能;
  5. LR 不依赖样本之间的距离,SVM 是基于距离的;
  6. LR 相对来说模型更简单好理解,特别是大规模线性分类时并行计算比较方便。而 SVM 的理解和优化相对来说复杂一些,SVM 转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。

5.写在最后

首先吐槽一下markdown,简直不要太难用。。。
文章权当自己学习笔记,在下才疏学浅,难逃纰漏。
其次在写作过程中发现甚为吃力,不过与平时学习记笔记不同的是,在写博文当中可以添加很多自己的思考和想法,是一种“输出倒逼输入”。
许多机器学习经典算法有着非常深厚的积淀,每一个算法都对应着很多数学统计知识,要想掌握他们绝非易事,但是在掌握它们的过程中必然也能收获到很多不同的知识,更重要的是要体会这些算法的思考方式。
从我做起,拒绝当一名调包侠,大家python见。

参考资料

1.《机器学习》 周志华.
2. 《统计学习方法》 李航.
3. https://zhuanlan.zhihu.com/p/74874291

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值