算法知识点——(3)监督学习——逻辑回归与线性回归

目录

一、线性回归

1. 原理推导

1.1 算法概述

1.2 误差项分析

1.3 似然函数

1.4 目标函数推导

1.5 线性回归求解

2. 特点

3. 广义线性回归

二、逻辑回归

1. 原理推导

1.1 Logistic 分布

1.2 逻辑回归分类任务

1.3 似然函数

1.4 应用梯度下降求参数

1.5 参数更新

2. 特点

3. 多分类逻辑回归

4. 极大似然函数作为损失函数原因

5. 特征高度相关或者特征重复,会造成怎样的影响?

6. 逻辑回归为什么要对特征进行离散化

7. 逻辑回归是线性模型吗?

8. 逻辑回归最优化过程中如何避免局部最小值

三、逻辑回归相比于线性回归, 有何异同?


一、线性回归

1. 原理推导

1.1 算法概述

给定数据集D = \left\{ {\left( {​{x_i},{y_i}} \right)} \right\}_{i = 1}^mx_i=\left( {​{x_{i1}},{x_{i2}}, \ldots ,{x_{id}}} \right){y_i} \in R(线性回归的输出空间是整个实数空间),其中d是属性维度,m是样本数,

线性回归拟合平面

                                                                                         f\left( {​{x_i}} \right) = {w^T}{x_i}           (1)

1.2 误差项分析

预测值和真实值之间存在差异\varepsilon,对于每个样本:

                                                                                      {y_i} = {w^T}{x_i} + {\varepsilon _i}              (2)

误差{\varepsilon _i}是独立,同分布的,并且服从高斯分布,即:

                                                                  p\left( {​{\varepsilon _i}} \right) = \frac{1}{​{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{​{​{\varepsilon _i}^2}}{​{2{\sigma ^2}}}} \right)            (3)

将(2)代入(3)中,得到在已知参数w和数据w_i的情况下,预测值为y_i的条件概率:

                                                   p\left( {​{y_i}\left| {​{x_i};w} \right.} \right) = \frac{1}{​{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{​{​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}}}{​{2{\sigma ^2}}}} \right)           (4)

1.3 似然函数

引入似然函数的目的:根据样本估计参数值,求解什么样的参数根数据组合后恰好是真实值

 将(4)连乘得到在已知参数和数据的情况下,预测值为的条件概率,这个条件概率在数值上等于,likelihood(w|x,y),也就是在已知现有数据的条件下,w是真正参数的概率,

似然函数

                                                   L\left( w \right) {\rm{ = }}\prod\limits_{i = 1}^m {p\left( {​{y_i}\left| {​{x_i};w} \right.} \right)} = \prod\limits_{i = 1}^m {\frac{1}{​{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{​{​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}}}{​{2{\sigma ^2}}}} \right)          (5)

似然函数进行log变换目的:由于乘法难解,通过对数可以将乘法转换为加法,简化计算。

对数似然函数

                                                                logL(w)=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma}exp(-\frac{(y_i-w^Tx_i)^2}{2\sigma^2})               (6)
 

1.4 目标函数推导

对似然函数进行求解,得到目标函数:···

                                                      \begin{array}{l} \ell\left( w \right) = \log \prod\limits_{i = 1}^m {\frac{1}{​{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{​{​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}}}{​{2{\sigma ^2}}}} \right)\\ = \sum\limits_{i = 1}^m {\log \frac{1}{​{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{​{​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}}}{​{2{\sigma ^2}}}} \right)\\ = \sum\limits_{i = 1}^m {\log \frac{1}{​{\sqrt {2\pi } \sigma }}} + \sum\limits_{i = 1}^m {log\left( {\exp \left( { - \frac{​{​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}}}{​{2{\sigma ^2}}}} \right)} \right)} \\ = m\log \frac{1}{​{\sqrt {2\pi } \sigma }} - \sum\limits_{i = 1}^m {\frac{​{​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}}}{​{2{\sigma ^2}}}} \\ = m\log \frac{1}{​{\sqrt {2\pi } \sigma }} - \frac{1}{​{​{\sigma ^2}}}\frac{1}{2}\sum\limits_{i = 1}^m {​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}} \end{array}          (6)

省去常数部分,得到目标函数:

                                                                   J(w)=\frac{1}{2}\sum_{i=1}^{m}(y_i-w^Tx_i)^2                                (7)

目标函数越小越好目的:似然函数表示样本成为真实的概率,似然函数越大越好,也就是目标函数越小越好。

1.5 线性回归求解

最小二乘法求解公式

                                                J(w) = \frac{1}{2}\sum\limits_{i = 1}^m {​{​{\left( {​{y_i} - {w^T}{x_i}} \right)}^2}} \\ = \frac { 1 } { 2 } \left\| \left[ \begin{array} { c } { y _ { 1 } - w ^ { T } x _ { 1 } } \\ { y _ { 2 } - w ^ { T } x _ { 2 } } \\ { \cdots } \\ { y _ { m } - w ^ { T } x _ { m } } \end{array} \right] \right\| ^ { 2 }= \frac { 1 } { 2 } \left\| \left[ \begin{array} { l } { y _ { 1 } } \\ { y _ { 2 } } \\ { \cdots } \\ { y _ { m } } \end{array} \right] - w ^ { T } \left[ \begin{array} { c } { x _ { 1 } } \\ { x _ { 2 } } \\ { \cdots } \\ { x _ { m } } \end{array} \right] \right\| ^ { 2 } \\ = \frac{1}{2}{\left\| {y - {w^T}X} \right\|^2} = \frac{1}{2}{\left( {y - {w^T}x} \right)^T}\left( {y - {w^T}x} \right)          (8)

目标函数是凸函数,只要找到一阶导数为0的位置,就找到了最优解。求偏导:

                                             \begin{array}{l} \frac{​{\partial J\left( w \right)}}{​{\partial w}} = \frac{1}{2}\frac{\partial }{​{\partial w}}\left( {​{​{\left( {y - {w^T}x} \right)}^T}\left( {y - {w^T}x} \right)} \right)\\ = \frac{1}{2}\frac{\partial }{​{\partial w}}\left( {​{​{\left( {y - Xw} \right)}^T}\left( {y - Xw} \right)} \right)\\ = \frac{1}{2}\frac{\partial }{​{\partial w}}\left( {​{w^T}{X^T}Xw - 2{w^T}Xy + {y^T}y} \right)\\ {\rm{ = }}\frac{1}{2}\left( {​{X^T}Xw{\rm{ + }}{X^T}Xw{\rm{ - }}2Xy} \right)\\ {\rm{ = }}{X^T}Xw{\rm{ - }}Xy \end{array}          (9)

令偏导等于0:

                                             \frac{​{\partial J\left( w \right)}}{​{\partial w}} = {\rm{0}}          (10)

得到:

                                             {X^T}Xw = Xy         (10)

情况一:{X^T}X可逆,唯一解。令公式(10)为零可得最优解为:

                                             w^* = {\left( {​{X^T}X} \right)^{ - 1}}X^Ty         (11)

 学得的线性回归模型为:

                                             \mathop y\limits^ \wedge = {w^T}X = {X^T}w = {X^T}{\left( {​{X^T}X} \right)^{ - 1}}{X^T}y      (12)

情况二:{X^T}X不可逆,可能有多个解。选择哪一个解作为输出,将有学习算法的偏好决定,常见的做法是增加\lambda扰动。

                                             {w^*} = {\left( {​{X^T}X + \lambda I} \right)^{ - 1}}{X^T}y      (13)

2. 特点

  1. 优点:结果具有很好的可解释性(w直观表达了各属性在预测中的重要性),计算熵不复杂。
  2. 缺点:对非线性数据拟合不好
  3. 适用数据类型:数值型和标称型数据

3. 广义线性回归

当y不再只是线性回归中用到的正态分布,而是扩大为指数族中的任一分布。这样得到的模型称为“广义线性模型”:

                                                      y = {g^{ - 1}}\left( {​{w^T}x + b} \right)

其中函数称为“联系函数”(link function)。

二、逻辑回归

1. 原理推导

逻辑回归的样本应该满足伯努利分布,分类标签是基于yangb通过伯努利分布产生的,分类器要做的实际上是估计这个分布

1.1 Logistic 分布

逻辑斯蒂分布的分布函数和密度函数如下:                                        

                                             F ( x ) = P ( X \leq x ) = \frac { 1 } { 1 + e ^ { - ( x - \mu ) / \gamma } }

                                             f ( x ) = F ^ { \prime } ( x ) = \frac { e ^ { - ( x - \mu ) / \gamma } } { \gamma \left( 1 + e ^ { - ( x - \mu ) / \gamma ) ^ { 2 } } \right. }

其中,\mu是位置参数,\ gamma> 0为形状参数。

逻辑斯蒂分布概率密度函数p\left( {x;\mu ,\lambda } \right)的图形如作图所示:概率密度函数p\left( {x;\mu ,\lambda } \right)的图形如右图所示:

                                       480像素,Logisticpdfunction.svg.png,45.2kB480像素,Logistic_cdf.svg.png,49.9kB

 当\mu=0s = 1时,逻辑斯蒂概率分布函数就是我们逻辑斯蒂回归函数。

                                                                           y = \ frac {1} {​{1 + {e ^ { -  z}}}}

                                                                               \large y'=(1-y)y

1.2 逻辑回归分类任务

预测函数:

                                                   \large h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}

分类任务:

                                                        \large p(y=1|x;\theta)=h_\theta(x)

                                                    \large p(y=0|x;\theta)=1-h_\theta(x)

                       ========》\large p(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

1.3 似然函数

似然函数:

                      \dpi{120} \large L(\theta)=\prod_{i=1}^{m}p(y_i|x_i;\theta)=\prod_{i=1}^{m}[h_\theta(x_i)]^{y_i}[1-h_\theta(x_i)]^{1-y_i}

对数似然函数:

                           \large logL(\theta)=\sum_{i=1}^{m}y_{i}*logh_\theta(x_i)+(1-y_i)*log(1-h_\theta(x_i))

1.4 应用梯度下降求参数

引入 J(\theta)=-\frac{1}{m}log(L(\theta)),由梯度上升转为梯度下降

                      \large \frac{\delta J(\theta) }{\delta \theta_j} =-\frac{1}{m}\sum_{i=1}^{m}{y_i*\frac{1}{h_\theta(x_i)}\frac{\delta h_\theta(x_i) }{\delta \theta_j} - (1-y_i)*\frac{1}{1-h_\theta(x_i)}\frac{\delta h_\theta(x_i) }{\delta \theta_j} }

                                       \large =\frac{1}{m}\sum_{i=1}^{m}(y_i-g(\theta^Tx_i))x_{i}^{j}

其中 j表示第j个特征,i表示第i个样本,用第j列更新

1.5 参数更新

其中 alpha为学习率, 综合考虑m个样本

                               \large \theta_j:=\theta_j-\alpha \frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_{i}^{j}

2. 特点

优点:

  • 形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
  • 模型效果不错。在工程上是可以接受的(作为baseline),如果特征工程做的好,效果不会太差,并且特征工程可以大家并行开发,大大加快开发的速度。
  • 训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化sgd发展比较成熟,训练的速度可以通过堆机器进一步提高,这样我们可以在短时间内迭代好几个版本的模型。
  • 资源占用小,尤其是内存。因为只需要存储各个维度的特征值。
  • 方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cutoff,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。

缺点:

  • 准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。
  • 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
  • 处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
  • 逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

3. 多分类逻辑回归

当使用逻辑回归处理多分类问题时, 有哪些常见做法, 分别应用于哪些场景, 它们之间又有怎样的关系

(1)修改逻辑回归的损失函数,使用SOFTMAX函数构造模型解决多酚类问题,softmax分类模型会有相同于类别数的输出,输出值为对于样本属于各个类别的概率,最后对于样本进行预测的类型为概率值最高的一个

假设每个样本属于不同标签的概率服从于几何分布, 使用多项逻辑回归(Softmax Regression) 来进行分类

算法知识点——(3)监督学习——逻辑回归与线性回归_第1张图片

其中,分母可以看作对概率的归一化。

(2)根绝每个类别都建立一个二分类器,当存在样本可能属于多个标签的情况时, 我们可以训练k个二分类的逻辑回归分类器。 第i个分类器用以区分每个样本是否可以归为第i类, 训练该分类器时, 需要把标签重新整理为“第i类标签”与“非第i类标签”两类。 若所有类别之间有明显互斥则使用softmax分类器,若所有类别不互斥有交叉则构造相应类别个数的逻辑回归分类器

4. 极大似然函数作为损失函数原因

最大似然估计的核心是让产生所采样的样本出现的概率最大,及利用已知的样本结果信息,反推具有最大可能导致这些样本结果出现的模型的参数值。对于逻辑回归来说,样本已经采样了,使其发生概率最大才符合逻辑,这是通过最大似然函数所求出的参数值就是使采样发生概率最大的参数值,所以可以认为是模型此时的最优解。

(1)求解参数速度

  1. 损失函数一般有四种,平方损失函数,对数损失函数,HingeLoss0-1损失函数,绝对值损失函数。将极大似然函数取对数以后等同于对数损失函数。在逻辑回归这个模型下,对数损失函数的训练求解参数的速度是比较快的。这个式子的梯度更新这个式子的更新速度只和第j维相关
  2. 平方损失函数,梯度更新的速度和sigmod函数本身的梯度是很相关的。sigmod函数在它在定义域内的梯度都不大于0.25。这样训练会非常的慢。

(2)目标函数的凸性

  1. 最大似然估计,目标函数就是对数似然函数,是关于(w,b)的高阶连续可导凸函数,可以方便通过一些凸优化算法求解,比如梯度下降法、牛顿法等。
  2. 逻辑回归的最小二乘法的代价函数是差值的平方和,不是关于分布参数θ的凸函数,求解过程中,会得到局部最优,不容易求解全局最优θ。

5. 特征高度相关或者特征重复,会造成怎样的影响?

如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果

  1. 但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。
  2. 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。
  • 为什么我们还是会在训练的过程当中将高度相关的特征去掉?
    • 去掉高度相关的特征会让模型的可解释性更好
    • 可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

6. 逻辑回归为什么要对特征进行离散化

在工业界,很少直接将连续值做逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,优势如下:

1、离散特征的增加和减少都很容易,易于模型的快速迭代

2、稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

3、离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

4、离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;

5、特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相 反,所以怎么划分区间是门学问;

6、特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

7. 逻辑回归是线性模型吗?

逻辑回归是一种广义线性模型,它引入了Sigmod函数,是非线性模型,但本质上还是一个线性回归模型,因为除去Sigmod函数映射关系,其他的算法原理,步骤都是线性回归的。

逻辑回归和线性回归首先都是广义的线性回归,在本质上没多大区别,区别在于逻辑回归多了个Sigmod函数,使样本映射到[0,1]之间的数值,从而来处理分类问题。另外逻辑回归是假设变量服从伯努利分布,线性回归假设变量服从高斯分布。逻辑回归输出的是离散型变量,用于分类,线性回归输出的是连续性的,用于预测。逻辑回归是用最大似然法去计算预测函数中的最优参数值,而线性回归是用最小二乘法去对自变量因变量关系进行拟合。

8. 逻辑回归最优化过程中如何避免局部最小值

1. 以多组不同参数值进行初始化,按标准方法训练后,取其中误差最小的解作为最终参数,相当于从多个不同的初始化点开始搜索,从而可能寻找全局最优

2. 使用随机梯度下降,即便陷入局部最优,计算出的梯度可能不为0,这样就有机会跳出局部最优继续搜索
 

三、逻辑回归相比于线性回归, 有何异同?

区别

1. 逻辑回归处理的是分类问题, 线性回归处理的是回归问题。

逻辑回归中, 因变量取值是一个二元分布, 模型学习得出的是E[y|x;\theta ], 即给定自变量和超参数后, 得到因变量的期望, 并基于此期望来处理预测分类问题。 而线性回归中实际上求解的是 y'=\theta ^{T}x, 是对我们假设的真实关系y=\theta ^{T}x+\varepsilon的一个近似,  我们使用这个近似项来处理回归问题。

2. 逻辑回归中的因变量为离散的, 而线性回归中的因变量是连续的。 并且在自变量x与超参数θ确定的情况下, 逻辑回归可以看作广义线性模型在因变量y服从二元分布时的一个特殊情况; 而使用最小二乘法求解线性回归时, 我们认为因变量y服从正态分布。

3. 逻辑回归假设变量服从伯努利分布,而线性回归假设变量服从高斯分布

联系

1. 二者都使用了极大似然估计来对训练样本进行建模。 线性回归使用最小二乘法, 实际上就是在自变量x与超参数θ确定, 因变量y服从正态分布的假设下, 使用极大似然估计的一个化简; 而逻辑回归中通过对似然函数 的学习, 得到最佳参数θ。线性回归优化目标函数是最小二乘,逻辑回归的优化目标函数是似然函数。

2. 在求解超参数的过程中, 都可以使用梯度下降的方法, 这也是监督学习中一个常见的相似之处。

 

参考文献:

1. 【机器学习】线性回归原理推导与算法描述

2. 【机器学习】逻辑斯蒂回归原理推导与求解

3.  逻辑回归(logistics regression)

4. 逻辑回归面试总结

5. 逻辑回归面试题汇总(整理)

你可能感兴趣的:(算法知识点,机器学习,算法,逻辑回归,线性回归)