逻辑回归 - 损失函数(二)

130 阅读7分钟

根据菜菜的课程进行整理,方便记忆理解

代码位置如下:

linear_model.LogisticRegression

class sklearn.linear_model.LogisticRegression (penalty=’l2’, dual=False, tol=0.0001, C=1.0,fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’warn’, max_iter=100,multi_class=’warn’, verbose=0, warm_start=False, n_jobs=None)

二元逻辑回归的损失函数

  • 损失函数
    • 衡量参数为Θ\Theta的模型拟合训练集时产生的信息损失的大小,并以此衡量参数的优劣。
    • 如果用一组参数建模后
      • 模型在训练集上表现良好,那我们就说模型拟合过程中的损失很小,损失函数的值很小,这一组参数就优秀;
      • 如果模型在训练集上表现糟糕,损失函数就会很大,模型就训练不足,效果较差,这一组参数也就比较差。
      • 即是说,我们在求解参数时,追求损失函数最小,让模型在训练数据上的拟合效果最优,即预测准确率尽量靠近100%。
    • 总结
      • 衡量参数的优劣的评估指标,用来求解最优参数的工具
      • 损失函数小,模型在训练集上表现优异,拟合充分,参数优秀
      • 损失函数大,模型在训练集上表现差劲,拟合不足,参数糟糕
      • 我们追求,能够让损失函数最小化的参数组合
        • 注意:没有”求解参数“需求的模型没有损失函数,比如KNN,决策树

逻辑回归的损失函数是由极大似然估计推导出来的,具体结果可以写作:

image.png

  • Θ\Theta表示求解出来的一组参数
  • m是样本的个数
  • yiy_{i}是样本i上真实的标签
  • yΘ(xi)y_{\Theta}(x_{i})是样本i上,基于参数计算出来的逻辑回归返回值
  • xix_{i}是样本i各个特征的取值

我们的目标,就是求解出使最小的取值。

  • 在逻辑回归的本质函数y(x)
    • 特征矩阵x是自变量
    • 参数是Θ\Theta
  • 在损失函数中,
    • Θ\Theta是自变量,
    • x和y都是已知的特征矩阵和标签,相当于是损失函数的参数。
  • 不同的函数中,自变量和参数各有不同,因此大家需要在数学计算中,尤其是求导的时候避免混淆。

由于我们追求损失函数的最小值,让模型在训练集上表现最优,可能会引发另一个问题:如果模型在训练集上表示优秀,却在测试集上表现糟糕,模型就会过拟合。虽然逻辑回归和线性回归是天生欠拟合的模型,但我们还是需要控制过拟合的技术来帮助我们调整模型,对逻辑回归中过拟合的控制,通过正则化来实现

二元逻辑回归损失函数的数学解释,公式推导与解惑(重要)

虽然我们质疑过”逻辑回归返回概率“这样的说法,但不可否认逻辑回归的整个理论基础都是建立在这样的理解上的。在这里,我们基于极大似然法来推导二元逻辑回归的损失函数,这个推导过程能够帮助我们了解损失函数怎么得来的,以及J(Θ)J(\Theta)为什么的最小化能够实现模型在训练集上的拟合最好。

  • 目标:
    • 让模型对训练数据的效果好,追求损失最小。二元逻辑回归的标签服从伯努利分布(即0-1分布),因此我们可以将一个特征向量为x,参数为Θ\Theta的模型中的一个样本i的预测情况表现为如下形式:
      • 样本i在由特征向量xix_{i}和参数Θ\Theta组成的预测函数中,样本标签被预测为1的概率为: image.png
      • 样本i在由特征向量xix_{i}和参数Θ\Theta组成的预测函数中,样本标签被预测为0的概率为: image.png

P1P_{1}的值为1的时候,代表样本i的标签被预测为1,当P0P_0的值为1的时候,代表样本i的标签被预测为0。

  • 假设样本i的真实标签yiy_i为1
    • 如果P1P_1为1, P0P_0为0,就代表样本i的标签被预测为1,与真实值一致。此时对于单样本i来说,模型的预测就是完全准确的,拟合程度很优秀,没有任何信息损失。
    • 如果P1P_1此时为0,P0P_0为1,就代表样本i的标签被预测为0,与真实情况完全相反。对于单样本i来说,模型的预测就是完全错误的,拟合程度很差,所有的信息都损失了。
  • 当为0时,也是同样的道理。

所以,当yiy_i为1的时候,我们希望非常P1P_1接近1,当yiy_i为0的时候,我们希望P0P_0非常接近1,这样,模型的效果就很好,信息损失就很少。

image.png

将两种取值的概率整合,我们可以定义如下等式:

image.png

这个等式代表同时代表了P0P_0P1P_1

  • 当样本i的真实标签yiy_i为1的时候, 1 - yiy_i就等于0, P0P_0的0次方就是1,所以P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)就等于P1P_1,这个时候,如果P1P_1为1,模型的效果就很好,损失就很小。
  • yiy_i为0的时候,就P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)等于P0P_0,此时如果P0P_0非常接近1,模型的效果就很好,损失就很小。
  • 为了达成让模型拟合好,损失小的目的,我们每时每刻都希望P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)的值等于1。而P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)的本质是样本i由特征向量xix_i和参数Θ\Theta 成的预测函数中,预测出所有可能的yi^\hat{y_{i}}的概率,因此1是它的最大值。也就是说,每时每刻,我们都在追求P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)的最大值。
  • 这就将模型拟合中的“最小化损失”问题,转换成了对函数求解极值的问题。
  • P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)是对单个样本i而言的函数,对一个训练集的m个样本来说,我们可以定义如下等式来表达所有样本在特征矩阵X和参数Θ\Theta组成的预测函数中,预测出所有可能的y^\hat{y}的概率P为:

image.png

该概率P取对数,再由log(AB)=logA+logBlog(A * B) = logA + logB logAB=BlogAlogA^B = BlogA可得到

image.png

这就是我们的交叉熵函数。为了数学上的便利以及更好地定义”损失”的含义,我们希望将极大值问题转换为极小值问题,因此我们对logPlogP取负,并且让参数Θ\Theta作为函数的自变量,就得到了我们的损失函数J(Θ)J(\Theta)

这就是一个,基于逻辑回归的返回值yΘ(xi)y_{\Theta}(x_i)的概率性质得出的损失函数。在这个函数上,我们只要追求最小值,就能让模型在训练数据上的拟合效果最好,损失最低。这个推导过程,其实就是“极大似然法”的推导过程。

似然与概率

似然与概率是一组非常相似的概念,它们都代表着某件事发生的可能性,但它们在统计学和机器学习中有着微妙的不同。以样本i为例,我们有表达式:

P(yi^xi,Θ)P(\hat{y_{i}}|x_{i},\Theta)

  • 对这个表达式而言,如果参数Θ\Theta是已知的,特征向量xix_i是未知的,我们便称P是在探索不同特征取值下获取所有可能的y^\hat{y}的可能性,这种可能性就被称为概率,研究的是自变量和因变量之间的关系。
  • 如果特征向量是已知的,参数Θ\Theta是未知的,我们便称P是在探索不同参数下获取所有可能的y^\hat{y}的可能性,这种可能性就被称为似然,研究的是参数取值与因变量之间的关系。

在逻辑回归的建模过程中,我们的特征矩阵是已知的,参数是未知的,因此我们讨论的所有“概率”其实严格来说都应该是“似然”。我们追求的最大值(换算成损失函数之后取负了,所以是最小值),就是在追求“极大似然”,所以逻辑回归的损失函数的推导方法叫做”极大似然法“。也因此,以下式子又被称为”极大似然函数“:

P(yi^xi,Θ)=yΘ(xi)yi(1yΘ(xi))1yiP(\hat{y_{i}}|x_{i},\Theta) = y_{\Theta}(x_i)^{y_i} * (1 - y_{\Theta}(x_i))^{1 - y_i}