机器学习算法学习笔记:逻辑回归

2019-03-0820:46:33数据结构与算法Comments2,639 views字数 4682阅读模式

逻辑回归算法的名字里虽然带有“回归”二字,但实际上逻辑回归算法是用来解决分类问题的。简单来说, 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。 注意,这里用的是“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用(逻辑回归是基于分布假设建立的,假设在现实案例中并不是那么容易满足,所以,很多情况下,我们得出的逻辑回归输出值,无法当作真实的概率,只能作为置信度来使用)。该结果往往用于和其他特征值加权求和,而非直接相乘。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

逻辑回归的优缺点文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

优点:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  • 速度快,适合二分类问题
  • 简单易于理解,直接看到各个特征的权重
  • 能容易地更新模型吸收新的数据

缺点:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  • 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

逻辑回归算法原理

假设函数(Hypothesis function)

首先我们要先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

其函数曲线如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

逻辑回归的假设函数形式如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

所以:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

其中x是我们的输入,机器学习算法学习笔记:逻辑回归为我们要求取的参数。一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

这个函数的意思就是在给定x和机器学习算法学习笔记:逻辑回归的条件下 y=1 的概率。这里 g(h) 就是我们上面提到的sigmoid函数,与之相对应的决策函数为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

决策边界(Decision Boundary)

决策边界,也称为决策面,是用于在N维空间,将不同类别样本分开的平面或曲面。注意:决策边界是假设函数的属性,由参数决定,而不是由数据集的特征决定。这里我们引用Andrew Ng 课程上的两张图来解释这个问题:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

线性决策边界文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

这里决策边界为: 机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

非线性决策边界文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

这里决策边界为: 机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

上面两张图很清晰的解释了什么是决策边界,决策边界其实就是一个方程,在逻辑回归中,决策边界由 机器学习算法学习笔记:逻辑回归 定义:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

这里我们要注意理解一下假设函数和决策边界函数的区别与联系。决策边界是假设函数的属性,由假设函数的参数(机器学习算法学习笔记:逻辑回归)决定。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

在逻辑回归中,假设函数 机器学习算法学习笔记:逻辑回归 用于计算样本属于某类别的可能性;决策函数 机器学习算法学习笔记:逻辑回归用于计算(给出)样本的类别;决策边界 机器学习算法学习笔记:逻辑回归 是一个方程,用于标识出分类函数(模型)的分类边界。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

损失函数(Cost Function)

逻辑回归的假设为:机器学习算法学习笔记:逻辑回归,我们的任务是找到一个 “合适” 的机器学习算法学习笔记:逻辑回归来使这个假设尽可能地解决我们的问题。例如分类任务,我们希望决策边界能最大程度将数据区分开。那么数学上怎么表达这种需求呢?在线性回归中,一般采用均方误差用来评价一个机器学习算法学习笔记:逻辑回归的好坏:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归越小,认为机器学习算法学习笔记:逻辑回归越好。那为什么不直接把逻辑回归的机器学习算法学习笔记:逻辑回归代入均方误差呢?原因是这样产生的机器学习算法学习笔记:逻辑回归是非凸函数 (non-convex)。我们举个例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

可以看出这个损失函数是非凸的,局部最小值不等于全局最小值,因此使用梯度下降法难以求解。因此逻辑回归模型使用如下的损失函数,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

写成统一的形式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

那么损失函数是如何影响决策的呢?首先,损失函数是对 hθ(x) 给出错误结论的惩罚。因此损失越小,一般就认为 hθ(x) 的结论就越正确。而上面这个式子意味着,损失越小,最后得到的 hθ(x) 曲面会越“贴近”数据点,换言之会“越陡”:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

这幅图中,机器学习算法学习笔记:逻辑回归,即蓝色曲面对应的机器学习算法学习笔记:逻辑回归的损失要小于绿色曲面对应的机器学习算法学习笔记:逻辑回归值。可以看到,损失小的蓝色曲面更陡。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

损失函数对决策边界有何影响?我们取 机器学习算法学习笔记:逻辑回归 的决策边界,可以看到决策边界也有略微的不同:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

但由于这两个机器学习算法学习笔记:逻辑回归都能把这两组数据区分开,因此它们并没有特别大的差别。猜想,逻辑回归的训练中,前几个迭代应该就能快速地制定出决策边界,接下来一些迭代的作用应该就是让机器学习算法学习笔记:逻辑回归“更陡”,一味追求损失更小究竟对决策边界有帮助吗?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

小结一下,如何决定模型的损失函数?一是损失函数要正确评价参数,使损失更小的参数对解决问题更有利;另一方面,受限于优化手段,要求损失函数能求解。当然一些常用的模型损失函数也大致确定了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

梯度下降(Gradient Descent)

线性回归类似,我们使用梯度下降算法来求解逻辑回归模型参数。关于梯度下降的详细信息见线性回归文章中的相关内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

正则化(Regularization)

当模型的参数过多时,很容易遇到过拟合的问题。这时就需要有一种方法来控制模型的复杂度,典型的做法在优化目标中加入正则项,通过惩罚过大的参数来防止过拟合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

  机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

一般情况下,取p=1或p=2,分别对应L1,L2正则化,两者的区别可以从下图中看出来,L1正则化(左图)倾向于使参数变为0,因此能产生稀疏解。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

机器学习算法学习笔记:逻辑回归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

关于正则化的详细内容见岭回归、Lasso回归文章中的详细内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

使用Scikit-Learn进行逻辑回归

在scikit-learn里,逻辑回归模型由类sklearn.linear_model.LogisticRegression实现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

正则项权重文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

正则项权重机器学习算法学习笔记:逻辑回归,在LogisticRegression里有个参数C与此对应,但成反比。即C值越大,正则项的权重越小,模型容易出现过拟合;C值越小,正则项权重越大,模型容易出现欠拟合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

L1/L2范数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

创建逻辑回归模型时,有个参数penalty,其取值有’l1’或’l2’,这个实际上就是指定我们前面介绍的正则项的形式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

最简单的使用方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

对于参数优化,可以选择LogisticRegressionCV或GridSearchCV文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

GridSearchCV:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

LogisticRegressionCV:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

参考链接:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/9838.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/9838.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定