逻辑回归和分类学习

53 阅读3分钟

逻辑回归

逻辑回归是一种广泛应用于分类问题的统计学习方法,通过计算概率给出输出结果。但是如何让逻辑回归模型输出的结果表示概率呢,而且输出值要确保在0到1之间?这就需要借用S型函数了。

image.png

根据sigmoid函数,我们可以得到以下信息:

  • 函数的输出值始终在0到1之间
  • 函数输入值越大,输出值越靠近1
  • 函数输入值越小,输出值越靠近0

image.png 有了模型的输出函数,我们还需要转换成线性输出,之前我们提到的线性函数:
z=b+w1x1+w2x2+w3x3+...+wNxN
然后还需把z函数代入S型函数,就得到了最终计算概率的函数。我们接下来只需要把一组组数据代入进函数中,求取概率。
当我们得到了一批批计算出的概率结果后,我们肯定迫不及待的想知道最终的结果靠不靠谱,和真正的结果偏差会有多大。这时我们就需要计算模型的偏差。在线性回归模块的时候,我们采用的是平分损失函数,因为输出值的变化率是恒定不变的。而逻辑回归里,我们采用的S型函数它的变化率不是恒定的,数据变化的幅度各有差异。所以,我们只能采取另一种方法计算函数损失。
通常逻辑回归的损失函数采用对数损失函数,通过对数函数损失方程会返回变化幅度的对数,而不是从数据到预测的距离。

image.png

在逻辑回归中,我们利用sigmoid函数把原始模型输出转换为0到1之间的数,来预测概率。如果我们想要的结果不是求取概率的而是想要输出类别的话,我们就要利用分类了。

分类

分类是用来预测某个示例是否属于一组类别中的哪一类,我们先来看看二元分类的有关内容。
二元分类用来预测两个类别中属于哪个类,可以被分的类别很少,就两个。
假设我们有一个模型来判断垃圾邮件的逻辑回归模型,该模型预测一个介于0到1之间的值,表示给定的电子邮件是垃圾邮件的概率。给定一封邮件,我们通过该模型的计算得到一个结果(0.8),然后根据结果把它分成"垃圾邮件"和"非垃圾邮件"这两类。
在经过每一组数据的计算后,我们要选择一个阈值概率即分类阈值,当概率高于阈值的数据就会被分配到正类别中,低于阈值的数据就会被分配到负类别中。
在二元分类器里,我们可能得到四种结果,以垃圾邮件分类为例。

  • 真正例(TP):垃圾邮件被正确分类到垃圾邮件中
  • 假正例(FP):非垃圾邮件被误分类为垃圾邮件
  • 假负例(FN):垃圾邮件被误分类为非垃圾邮件
  • 真负例(TN):非垃圾邮件被正确分类为非垃圾邮件

在分类中我们通常利用这四种结果的比例来评估模型阈值的好坏。
准确率:指所有分类正确分类的比例,无论是正类还是负类。
Accuracy=(TP+TN)/(TP+TN+FP+FN)
召回率或真正例率:指所有实际正例被分为正例的比例。
Recall=(TP)/(TP+FN)
假正例率:指被错误的归类为正例的所有实际负例所占比的比例。
FPR=(FP)/(FP+TN)
精准率:指模型所有正类别分类中实际为正类别的分类所占的比例。
Precision=(TP)/(TP+FP)