逻辑回归

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。是解决二分类问题的利器。

输入

逻辑回归的输入就是一个线性回归的结果。

激活函数

sigmoid函数

逻辑回归公式:

输出:[0,1]区间的概率值,默认0.5作为阀值
注:g(z)为sigmoid函数
e: 2.71
Z =回归的结果

逻辑回归即使用线性回归的思想去做二分类问题,也即将分类问题转化为概率问题,用sigmoid的目的是为了保证每一处都是连续可导的。

输出结果解释(重要):假设有两个类别A,B,并且假设我们的概率值为属于A(1)这个类别的概率值。现在有一个样本的输入到逻辑回归输出结果0.6,那么这个概率值超过0.5,意味着我们训练或者预测的结果就是A(1)类别。那么反之,如果得出结果为0.3那么,训练或者预测结果就为B(0)类别。

所以接下来我们回忆之前的线性回归预测结果我们用均方误差衡量,那如果对于逻辑回归,我们预测的结果不对该怎么去衡量这个损失呢?我们来看这样一张图

那么如何去衡量逻辑回归的预测结果与真实结果的差异呢?

损失以及优化

逻辑回归的损失,称之为对数似然损失,与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解。公式如下:

完整的损失函数:

  • cost损失的值越小,那么预测的类别准确度更高
  • yi就是真实值

怎么理解单个的式子呢?这个要根据log的函数图像来理解

逻辑回归api

  • sklearn.linear_model.LogisticRegression(solver=’liblinear’, penalty=‘l2’, C = 1.0)
    • solver:优化算法的选择,可选参数:{‘liblinear’, ‘sag’, ‘saga’,’newton-cg’, ‘lbfgs’},
      • 默认: ‘liblinear’;用于优化问题的算法。
      • 对于小数据集来说,“liblinear”是个不错的选择,而“sag”和’saga’对于大型数据集会更快。
      • 对于多类问题,只有’newton-cg’, ‘sag’, ‘saga’和’lbfgs’可以处理多项损失;“liblinear”仅限于“one-versus-rest”分类。
    • penalty:正则化项的类型,L1或L2正则化
    • C:正则化强度的倒数,C越小表示正则化强度越高。C越大,高阶项系数越小。

默认将类别数量少的当做正例

LogisticRegression方法相当于 SGDClassifier(loss=”log”, penalty=” “),SGDClassifier实现了一个普通的随机梯度下降学习。而使用LogisticRegression(实现了SAG)

总结

  • 应用: 广告点击率预测、电商购物搭配推荐,是否患病
  • 优点: 适合需要得到一个分类概率的场景,简单,速度快
  • 缺点: 当特征空间很大时,逻辑回归的性能不是很好(看硬件能力),不好处理多分类问题