【机器学习入门】线性回归和逻辑回归的理解和推导

    技术2022-07-11  88

    线性回归

    线性回归用于回归问题,在回归模型中,线性回归绝对是最简单的,但是并不妨碍他成为帮助研究回归问题上的强力工具。对于绝大部分的数据回归问题,线性回归都是我们的首选。他主要有以下优点:

    模型简单、易于建模解释性强、易于调试

    一般形式

    给定由d个属性描述的示例 x = ( x 1 ; x 2 ; . . . ; x d ) x=(x_1;x_2;...;x_d) x=(x1;x2;...;xd),其中 x i x_i xi x x x在第 i i i个属性上的取值,让我们来预测 x x x所对应的 y y y值。线性回归所做的就是假定特征x与目标变量y之间具有线性关系,试图学习到一个可以表示x和y之间的映射关系的函数,函数如下: f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d f(x) = w_1x_1+w_2x_2+...+w_dx_d f(x)=w1x1+w2x2+...+wdxd 一般用向量形式写成 f ( x ) = w T x + b f(x) = w^Tx+b f(x)=wTx+b 其中 w = ( w 1 ; w 2 ; . . . ; w d ) w = (w_1;w_2;...;w_d) w=(w1;w2;...;wd)。模型的目标就是学习w和b两个参数,两个参数确定了,模型也就确定了。


    一元线性回归

    我们先以一元线性回归来举例,也就是d=1的情况,这个时候x和w都是单个的数,y=wx+b也可以用二维平面的一条直线来表示。 假设我们当前数据集如下:

    xy1121.233.143.755.165.8

    我们希望能够通过上面的数据来预测x=7时y所对应的值。于是线性回归模型就会尝试构造一个函数来描述x和y之间的关系, y = w x + b y=wx+b y=wx+b。 这个关系在二维空间可以表示为模型尝试用一条直线来拟合数据点,如下图中的黑线。 我们还可以看到上图中有一条蓝色的线,这也可能是我们通过学习得到的线性模型。那么我们将黑线和蓝线用于预测数据,哪条线得到的效果会更好呢?换个说法,哪条模型拟合的更好呢? 通过肉眼判断我们可以很快的得出黑线效果更好,那么有什么依据呢? 这个时候我们就需要设定一个评估标准,用来评价模型的好坏程度。比较简单的一种方法就是测量真实值和预测值之间的误差。


    损失函数

    只要误差越小,模型就学习的更好,模型的可信度越高。 假设y’为模型的预测值,y为样本的真实值,那么单个样本误差就可以表示为 ( y ′ − y ) 2 (y'-y)^2 (yy)2(平方保证误差为正)。 假设我们的数据集为 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) D = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)} D=(x1,y1),(x2,y2),...,(xn,yn),共有n个样本。则模型的总误差,我们称之为损失函数 l l l可表示为: l = ∑ i = 1 n ( w x i + b − y i ) 2 l = \sum^n_{i=1}(wx_i+b-y_i)^2 l=i=1n(wxi+byi)2 其中 y i ′ = w x i + b y'_i=wx_i+b yi=wxi+b x i x_i xi y i y_i yi是已知的,w和b是未知的参数,也是模型需要学习的参数。 我们希望模型预测的越精确越好,换个思路,也就是说只要让我们的模型的损失函数取最小值就可以达到我们的目的,于是我们就把这个模型优化问题变成了一个求最小值的问题。


    求解过程

    求函数 l l l的最小值,我们只要分别对w和b求导,再把导数设置为0即可。 先对b求导: ∂ l ∂ b = ∑ i = 1 n 2 ( w x i + b − y i ) = 2 ( ∑ i = 1 n w x i + ∑ i = 1 n b + ∑ i = 1 n y i ) \begin{aligned} \frac{\partial l}{\partial b} &= \sum^n_{i=1}2(wx_i+b-y_i) \\ &=2( \sum^n_{i=1}wx_i+ \sum^n_{i=1}b + \sum^n_{i=1}y_i) \end{aligned} bl=i=1n2(wxi+byi)=2(i=1nwxi+i=1nb+i=1nyi) 令上式等于0: 2 ( ∑ i = 1 n w x i + ∑ i = 1 n b − ∑ i = 1 n y i ) = 0 w ∑ i = 1 n x i + n b − ∑ i = 1 n y i = 0 w n x ˉ + n b − n y ˉ = 0 b = y ˉ − w x ˉ 2( \sum^n_{i=1}wx_i+ \sum^n_{i=1}b - \sum^n_{i=1}y_i)=0\\ w\sum^n_{i=1}x_i+nb-\sum^n_{i=1}y_i=0\\ wn\bar{x}+nb-n\bar{y}=0\\ b= \bar{y}- w\bar{x}\\ 2(i=1nwxi+i=1nbi=1nyi)=0wi=1nxi+nbi=1nyi=0wnxˉ+nbnyˉ=0b=yˉwxˉ 其中, n y ˉ = ∑ i = 1 n y i , n x ˉ = ∑ i = 1 n x i n\bar y=\sum^n_{i=1}y_i,\\n\bar x=\sum^n_{i=1}x_i nyˉ=i=1nyi,nxˉ=i=1nxi

    再对w求导: ∂ l ∂ w = ∑ i = 1 n 2 x i ( w x i + b − y i ) \frac{\partial l}{\partial w} = \sum^n_{i=1}2x_i(wx_i+b-y_i) wl=i=1n2xi(wxi+byi) 令上式等于0: ∑ i = 1 n w x i 2 + ∑ i = 1 n x i b − ∑ i = 1 n y i x i = 0 n w x 2 ˉ + n x ˉ b − n x y ˉ = 0 x 2 ˉ w = x y ˉ − x ˉ b \sum^n_{i=1}wx_i^2+ \sum^n_{i=1}x_ib - \sum^n_{i=1}y_ix_i=0\\ nw\bar{x^2}+n\bar{x}b-n\bar{xy}=0\\ \bar{x^2}w=\bar{xy}-\bar xb\\ i=1nwxi2+i=1nxibi=1nyixi=0nwx2ˉ+nxˉbnxyˉ=0x2ˉw=xyˉxˉb b = y ˉ − w x ˉ b= \bar{y}- w\bar{x} b=yˉwxˉ代入: x 2 ˉ w = x y ˉ − x ˉ y ˉ + w x ˉ 2 w = x y ˉ − x ˉ y ˉ x 2 ˉ − x ˉ 2 \bar{x^2}w=\bar{xy}-\bar x\bar y+w\bar x^2\\ w=\frac{\bar{xy}-\bar x\bar y}{\bar{x^2}-\bar x^2} x2ˉw=xyˉxˉyˉ+wxˉ2w=x2ˉxˉ2xyˉxˉyˉ 再将w代入b即可求得b。 确定了w和b,我们就确定了我们的线性回归模型,y=wx+b。 以上就是一元线性回归,那么多元呢?


    多元线性回归

    上面我们讲述了一元线性回归,现在来讲一下多元,也就是当x有多种特征时的情况。 假设我们的数据集为 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D = \{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} D={(x1,y1),(x2,y2),...,(xn,yn)},共有n个样本,其中 x i ∈ R d x_i\in R^d xiRd,也就是说 x i x_i xi是一个d维的向量。 例如有个数据集如下表,用身高和体重来预测体脂率

    身高体重体脂172641606017.508018%

    每个x有两种属性,那么其中的 x 1 x_1 x1就可以用(172,64)的二维向量来表示, y 1 y_1 y1则为16%。

    此时线性回归模型表示为 f ( x ) = w T x + b f(x) = w^Tx+b f(x)=wTx+b

    则可推出模型的损失函数: l = ∑ i = 1 n ( ∑ j = 1 d w i x i j + b − y i ) 2 l = \sum^n_{i=1}(\sum^d_{j=1}w_ix_{ij}+b-y_i)^2 l=i=1n(j=1dwixij+byi)2 为了简化式子,我们可以在这里做一个小小的改动来消除b:把b看做x的一个特征,只不过这个特征的值永远为1,这个特征对应的权重即为b。

    那么模型可以表示为 y = x ⋅ w y = x\cdot w y=xw

    简化后w、x、y分别可以表示为: w = ( w 0 , w 1 , w 2 , . . . , w d ) T w=(w_0,w_1,w_2,...,w_d)^T w=(w0,w1,w2,...,wd)T x = [ 1 , x 11 , x 12 , . . . x 1 d 1 , x 21 , x 22 , . . . x 2 d . . . , . . . , . . . , . . . . . . 1 , x n 1 , x n 2 , . . . x n d ] x= \begin{bmatrix} 1,&x_{11},&x_{12}, &...&x_{1d}\\ 1,&x_{21},&x_{22}, &...&x_{2d}\\ ...,&...,&..., &...&...\\ 1,&x_{n1},&x_{n2}, &...&x_{nd}\\ \end{bmatrix} x=1,1,...,1,x11,x21,...,xn1,x12,x22,...,xn2,............x1dx2d...xnd y = ( y 1 , y 2 , . . . , y n ) T y=(y_1,y_2,...,y_n)^T y=(y1,y2,...,yn)T 其中, w_0为b对应的权重。


    L2范数

    在求解模型之前,我们需要先了解一下L2范数的概念,L2范数也叫欧几里得范数 假设 x = ( x 0 , x 1 , x 2 , . . . , x d ) T x=(x_0,x_1,x_2,...,x_d)^T x=(x0,x1,x2,...,xd)T ∣ ∣ x ∣ ∣ 2 ||x||_2 x2称为x的L2范数: ∣ ∣ x ∣ ∣ 2 = x 1 2 + x 2 2 + . . . + x d 2 ||x||_2 = \sqrt{x_1^2+x_2^2+...+x_d^2} x2=x12+x22+...+xd2 因此有 ∣ ∣ x ∣ ∣ 2 2 = x 1 2 + x 2 2 + . . . + x d 2 ||x||_2^2 = x_1^2+x_2^2+...+x_d^2 x22=x12+x22+...+xd2 并且 ∣ ∣ x ∣ ∣ 2 2 = x T ⋅ x ||x||^2_2=x^T\cdot x x22=xTx


    求解过程

    根据上面所说的范数,模型的损失函数 l l l可以用非常简单的形式表示: l = ∣ ∣ x ⋅ w − y ∣ ∣ 2 2 l=||x\cdot w-y||^2_2 l=xwy22 接下来进行展开: l = ( x w − y ) T ( x w − y ) = ( x w ) T x w − ( x w ) T y − y T x w + y T y = w T x T x w − w T x T y − y T x w + y T y = w T x T x w − 2 w T x T y + y T y \begin{aligned} l &= (xw-y)^T(xw-y)\\ &=(xw)^Txw-(xw)^Ty-y^Txw+y^Ty\\ &=w^Tx^Txw-w^Tx^Ty-y^Txw+y^Ty\\ &=w^Tx^Txw-2w^Tx^Ty+y^Ty \end{aligned} l=(xwy)T(xwy)=(xw)Txw(xw)TyyTxw+yTy=wTxTxwwTxTyyTxw+yTy=wTxTxw2wTxTy+yTy 最后我们对w进行求导,将导数设为0就可以了,关于矩阵求导公式可以查阅书籍: ∂ l ∂ w = 2 x T x w − 2 x T y = 0 ⇒ x T x w = x T y ⇒ ( x T x ) − 1 x T x w = ( x T x ) − 1 x T y ⇒ w = ( x T x ) − 1 x T y \begin{aligned} \frac{\partial l}{\partial w} &=2x^Txw-2x^Ty=0\\ &\Rightarrow x^Txw=x^Ty\\ &\Rightarrow (x^Tx)^{-1}x^Txw = (x^Tx)^{-1}x^Ty\\ &\Rightarrow w=(x^Tx)^{-1}x^Ty \end{aligned} wl=2xTxw2xTy=0xTxw=xTy(xTx)1xTxw=(xTx)1xTyw=(xTx)1xTy 注意: 上述公式中包含 ( x T x ) − 1 (x^Tx)^{-1} (xTx)1,也就是要对矩阵求逆,因此这个方程只在逆矩阵存在的时候适用,在使用之前要判断其是否可逆。

    像上面这样基于均方误差最小化来进行模型求解的方法,我们称之为 最小二乘法 ,在线性回归中最小二乘法就是试图找到一条直线,使得样本到直线上的欧氏距离之和最小。


    逻辑回归

    逻辑回归虽然也叫回归,但是它其实是一个分类模型。虽然它比较简单,但它绝对可以算的上是分类模型中靠谱的基准线(比它表现要差的模型不靠谱)。 逻辑回归通常用来解决二分类问题,那么我可以假设y的值只能取1或者0。有了这个假设,我们就可以用一个条件概率来表示x和y之间的映射关系: p ( Y ∣ x ) p(Y|x) p(Yx) 那么如何来表示 p ( Y ∣ x ) p(Y|x) p(Yx)呢?我们是否可以用线性回归中用到的 w T x + b w^Tx+b wTx+b来表示它?答案是不行:

    概率需要满足值域在(0,1)之间,使用 w T x + b w^Tx+b wTx+b作为概率明显不满足此条件。

    所以我们需要做的就是把 w T x + b w^Tx+b wTx+b进行一些改造,使其值域映射到(0,1)区间。


    激活函数

    说到连续的值域在[0,1]区间的函数,我们就会想到sigmoid函数,它的函数曲线如下图: 函数式为: y = 1 1 + e − x y = \frac{1}{1+e^{-x}} y=1+ex1 它拥有许多优点:

    连续,平滑,单调递增值域为(0,1)易于求导,其导数为 S ′ ( x ) = S ( x ) ( 1 − S ( x ) ) S'(x)=S(x)(1-S(x)) S(x)=S(x)(1S(x)),记住这个式子,下面要用!

    因为这些优点,Sigmoid函数常被用作神经网络的激活函数


    表现形式

    利用sigmoid函数,我们就可以表示 p ( Y ∣ x ) p(Y|x) p(Yx)了: p ( Y ∣ x ) = 1 1 + e − ( w T x + b ) p(Y|x) = \frac{1}{1+e^{-(w^Tx+b)}} p(Yx)=1+e(wTx+b)1 于是,我们可以定义如下概率: p ( y = 1 ∣ x ) = 1 1 + e − ( w T x + b ) p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = e − ( w T x + b ) 1 + e − ( w T x + b ) p(y=1|x) = \frac{1}{1+e^{-(w^Tx+b)}}\\ p(y=0|x) = 1-p(y=1|x)=\frac{e^{-(w^Tx+b)}}{1+e^{-(w^Tx+b)}} p(y=1x)=1+e(wTx+b)1p(y=0x)=1p(y=1x)=1+e(wTx+b)e(wTx+b) 将两个式子合并,我们可以得到 p ( y ∣ x ) = p ( y = 1 ∣ x , w , b ) y p ( y = 0 ∣ x , w , b ) 1 − y p(y|x) = p(y=1|x,w,b)^yp(y=0|x,w,b)^{1-y} p(yx)=p(y=1x,w,b)yp(y=0x,w,b)1y


    目标函数

    接下来,我们要利用到最大似然估计,通过最大化目标函数来求参数 首先,我们假设我们的数据集为: D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D = \{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} D={(x1,y1),(x2,y2),...,(xn,yn)} 其中 x i ∈ R d , y ∈ { 0 , 1 } x_i\in R^d,y\in\{0,1\} xiRd,y{0,1}

    所以,我们需要最大化的目标函数如下: w ^ M L E , w ^ M L E = a r g m a x w , b ∏ i = 1 n p ( y i ∣ x i , w , b ) = a r g m i n w , b − ∑ i = 1 n log ⁡ p ( y i ∣ x i , w , b ) = a r g m i n w , b − ∑ i = 1 n log ⁡ [ p ( y i = 1 ∣ x i , w , b ) y i ⋅ [ 1 − p ( y i = 1 ∣ x i , w , b ) 1 − y i ] ] = a r g m i n w , b − ∑ i = 1 n [ y i log ⁡ p ( y i = 1 ∣ x i , w , b ) + ( 1 − y i ) log ⁡ [ 1 − p ( y i = 1 ∣ x i , w , b ) ] ] = a r g m i n w , b − ∑ i = 1 n [ y i log ⁡ σ ( w T x + b ) + ( 1 − y i ) log ⁡ [ 1 − σ ( w T x + b ) ] ] \begin{aligned} \hat{w}_{MLE},\hat{w}_{MLE}&=argmax_{w,b}\prod^n_{i=1}p(y_i|x_i,w,b)\\ &=argmin_{w,b}-\sum^n_{i=1}\log p(y_i|x_i,w,b)\\ &=argmin_{w,b}-\sum^n_{i=1}\log[p(y_i=1|x_i,w,b)^{y_i}\cdot [1-p(y_i=1|x_i,w,b)^{1-y_i} ]]\\ &=argmin_{w,b}-\sum^n_{i=1}[y_i\log p(y_i=1|x_i,w,b)+(1-y_i) \log [1-p(y_i=1|x_i,w,b) ]]\\ &=argmin_{w,b}-\sum^n_{i=1}[y_i\log \sigma(w^Tx+b)+(1-y_i) \log [1-\sigma(w^Tx+b) ]]\\ \end{aligned} w^MLE,w^MLE=argmaxw,bi=1np(yixi,w,b)=argminw,bi=1nlogp(yixi,w,b)=argminw,bi=1nlog[p(yi=1xi,w,b)yi[1p(yi=1xi,w,b)1yi]]=argminw,bi=1n[yilogp(yi=1xi,w,b)+(1yi)log[1p(yi=1xi,w,b)]]=argminw,bi=1n[yilogσ(wTx+b)+(1yi)log[1σ(wTx+b)]] 其中 σ ( x ) = 1 1 + e − x \sigma(x)= \frac{1}{1+e^{-x}} σ(x)=1+ex1

    接着我们就可以分别对w,b求导: ∂ L ∂ w = − ∑ i = 1 n y i σ ( w T x + b ) [ 1 − σ ( w T x + b ) ] x i σ ( w T x + b ) + ( 1 − y i ) − σ ( w T x + b ) [ 1 − σ ( w T x + b ) ] x i 1 − σ ( w T x + b ) = − ∑ i = 1 n [ y i [ 1 − σ ( w T x + b ) ] + ( y i − 1 ) σ ( w T x + b ) ] x i = − ∑ i = 1 n [ y i − y i σ ( w T x + b ) + y i σ ( w T x + b ) − σ ( w T x + b ) ] x i = − ∑ i = 1 n x i [ y i − σ ( w T x + b ) ] \begin{aligned} \frac{\partial L}{\partial w}&=-\sum^n_{i=1}y_i\frac{ \sigma(w^Tx+b)[1- \sigma(w^Tx+b)]x_i}{ \sigma(w^Tx+b)}+(1-y_i) \frac{- \sigma(w^Tx+b)[1- \sigma(w^Tx+b)]x_i}{1- \sigma(w^Tx+b)}\\ &=-\sum^n_{i=1}[y_i[1-\sigma(w^Tx+b)]+(y_i-1)\sigma(w^Tx+b)]x_i\\ &=-\sum^n_{i=1}[y_i-y_i\sigma(w^Tx+b)+y_i\sigma(w^Tx+b)-\sigma(w^Tx+b)]x_i\\ &=-\sum^n_{i=1}x_i[y_i-\sigma(w^Tx+b)] \end{aligned} wL=i=1nyiσ(wTx+b)σ(wTx+b)[1σ(wTx+b)]xi+(1yi)1σ(wTx+b)σ(wTx+b)[1σ(wTx+b)]xi=i=1n[yi[1σ(wTx+b)]+(yi1)σ(wTx+b)]xi=i=1n[yiyiσ(wTx+b)+yiσ(wTx+b)σ(wTx+b)]xi=i=1nxi[yiσ(wTx+b)] 同理也可以求出 ∂ L ∂ b = − ∑ i = 1 n [ y i − σ ( w T x + b ) ] \frac{\partial L}{\partial b}=-\sum^n_{i=1}[y_i-\sigma(w^Tx+b)] bL=i=1n[yiσ(wTx+b)]

    根据上面两个式子,我们可以发现把导数设为零的方法已经行不通了,这个时候,我们可以选择梯度下降法来更新参数: w t + 1 = w t − η ∑ i = 1 n x i [ y i − σ ( w T x + b ) ] w^{t+1} = w^t-\eta \sum^n_{i=1}x_i[y_i-\sigma(w^Tx+b)] wt+1=wtηi=1nxi[yiσ(wTx+b)] b t + 1 = b t − η ∑ i = 1 n [ y i − σ ( w T x + b ) ] b^{t+1} = b^t-\eta \sum^n_{i=1}[y_i-\sigma(w^Tx+b)] bt+1=btηi=1n[yiσ(wTx+b)] 每跑完一次数据集,我们就会利用上式对w,b进行更新。 其中 η \eta η为每一时刻学习率,是一个超参数,数值大小由我们设定,它控制着每一次迭代的程度。学习率越大,学习速度会越快; 学习率越小,学习速度越慢。通常使用的标准是随着时间的推移,学习率不断变小。

    这就是逻辑回归模型进行学习的整个过程。


    以上就是我对线性回归和逻辑回归的理解和推导,如有问题,谢谢指出!

    Processed: 0.018, SQL: 9