逻辑回归简介

逻辑回归虽然名称有回归两字,但是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+bY=aX+bY=aX+b,y的取值范围是[-∞, +∞]。因其简单而受到工业界的关注。
Y的取值范围过大,一般要把结果进行正则化,限定在[0,1]。所以需要把结果带入非线性变换Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。

Sigmoid函数

做过机器学习或是深度学习的小伙伴们都知道,sigmoid函数一般都是接在卷积神经网络层或是其正则化层之后,作为激活函数,相当于人类神经系统的突触传递。其数学表达式如下:

函数中t无论取什么值,其结果都在[0,-1]的区间内。即一个分类问题就有两种答案,一种是“是”,一种是“否”,那0对应着“否”,1对应着“是”。我们可以假设分类的阈值是0.5,结果大于0.5的归为一个分类,小于0.5的归为一个分类。阈值是可以自己设定的。

接下来我们把aX+baX+baX+b带入t中就得到了我们的逻辑回归的一般模型方程:

结果P也可以理解为概率,换句话说概率大于0.5的属于1分类,概率小于0.5的属于0分类,这就达到了分类的目的。

逻辑回归分布

逻辑分布是一种连续型的概率分布,其分布函数和密度函数分别为:
F(x)=P(X≤x)=11+e−(x−u)/yF(x)=P(X\leq x)=\frac{1}{1+e^{-(x-u)/y}}F(x)=P(X≤x)=1+e−(x−u)/y1​

f(x)=F′(X≤x)=e−(x−u)/yy(1+e−(x−u)/y)2f(x)={F}'(X\leq x)=\frac{e^{-(x-u)/y}}{y(1+e^{-(x-u)/y})2}f(x)=F′(X≤x)=y(1+e−(x−u)/y)2e−(x−u)/y​

其中, uuu表示位置参数,γ\gammaγ为形状参数。我们可以看下其图像特征:


分布是由其位置和尺度参数定义的连续分布。逻辑分布的形状与正态分布的形状相似,但是逻辑分布的尾部更长,所以我们可以使用逻辑分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的 Sigmoid 函数就是逻辑的分布函数在u=0,γ=1u=0,\gamma=1u=0,γ=1的特殊形式。。

损失函数

逻辑回归的损失函数是 log loss,也就是对数似然函数,函数公式如下:

公式中的 y=1 表示的是真实值为1时用第一个公式,真实 y=0 用第二个公式计算损失。为什么要加上log函数呢?可以试想一下,当真实样本为1是,但h=0概率,那么log0=∞,这就对模型最大的惩罚力度;当h=1时,那么log1=0,相当于没有惩罚,也就是没有损失,达到最优结果。

在逻辑回归模型中,我们最大化似然函数最小化损失函数实际上是等价的。

多分类逻辑回归

多分类逻辑回归思路步骤如下:

  • 1.将类型class1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率p1。

  • 2.再将另外类型class2看作正样本,其他类型全部看作负样本,同理得到p2。

  • 3.以此循环,我们可以得到该待预测样本的标记类型分别为类型class i时的概率pi,最后我们取pi中最大的那个概率对应的样本标记类型作为我们的待预测样本类型。

总之还是以二分类来依次划分,并求出最大概率结果。

逻辑回归优点

  • LR能以概率的形式输出结果,而非只是0,1判定。
  • LR的可解释性强,可控度高。
  • 训练快,feature engineering之后效果赞。
  • 因为结果是概率,可以做ranking model。

逻辑回归常用的优化方法

一阶方法

梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。

逻辑回归的损失函数如下:
J(w)=−1n(∑i=1nyilnp(xi)+(1−yi)(ln(1−p(xi)))J(w)=-\frac{1}{n}(\sum_{i=1}^{n}y_{i}lnp(x_{i})+(1-y_{i})(ln(1-p(x_{i})))J(w)=−n1​(∑i=1n​yi​lnp(xi​)+(1−yi​)(ln(1−p(xi​)))

梯度下降是通过J(w)J(w)J(w) 对www的一阶导数来找下降方向,并且以迭代的方式来更新参数,更新方式为:

其中 k 为迭代次数。每次更新参数后,可以通过比较∥J(wk+1)−J(wk)∥\left \| J(w^{k+1})- J(w^{k})\right \|∥∥​J(wk+1)−J(wk)∥∥​小于阈值或者到达最大迭代次数来停止迭代。

二阶方法:牛顿法

牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。

牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵)。

缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。

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

  1. 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
  2. 鲁棒性。离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
  3. 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
  4. 简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

代码实现

https://github.com/Jack-Cherish/Machine-Learning

参考文献

https://zhuanlan.zhihu.com/p/74874291

https://zhuanlan.zhihu.com/p/73608677

机器学习十大经典算法之逻辑回归相关推荐

  1. 机器学习十大经典算法之岭回归和LASSO回归

    机器学习十大经典算法之岭回归和LASSO回归(学习笔记整理:https://blog.csdn.net/weixin_43374551/article/details/83688913

  2. 机器学习十大经典算法:深入浅出聊贝叶斯决策(贝叶斯公式,最小风险贝叶斯,最小错误贝叶斯)

    前言    常听人说,在学习一个东西时,如果能够深入浅出的讲给别人听,才算是真的懂了.最近正好在学模式识别,于是就用它来练笔了.贝叶斯决策(Bayes Decision) 是十大经典机器学习算法之一, ...

  3. pagerank数据集_机器学习十大经典算法-PageRank(附实践代码)

    Yo, yo, check it out. 保证看完不晕倒... 如果公式让你脑瓜疼,请忽略公式,或者忽略脑瓜. Kagging咖金:推荐系统之关联规则(附实践代码)​zhuanlan.zhihu.c ...

  4. 机器学习十大经典算法之决策树

    机器学习经典十大算法 机器学习/人工智能的子领域在过去几年越来越受欢迎.目前大数据在科技行业已经炙手可热,而基于大量数据来进行预测或者得出建议的机器学习无疑是非常强大的.一些最常见的机器学习例子,比如 ...

  5. 机器学习十大经典算法之KNN最近邻算法

    KNN简介 KNN(K-NearestNeighbor)是机器学习入门级的分类算法,非常简单.它实现将距离近的样本点划为同一类别:KNN中的K指的是近邻个数,也就是最近的K个点 :根据它距离最近的K个 ...

  6. 机器学习十大经典算法之随机森林

    随机森林简介 随机森林是机器学习一种常用的方法.它是以决策树为基础,用随机的方式排列建立的,森林里每个决策树之间都是没有关联的. 在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策 ...

  7. 机器学习十大经典算法

    本文介绍了机器学习新手需要了解的 10 大算法,包括线性回归.Logistic 回归.朴素贝叶斯.K 近邻算法等. 在机器学习中,有一种叫做「没有免费的午餐」的定理.简而言之,它指出没有任何一种算法对 ...

  8. 机器学习十大经典算法之K-Means聚类算法

    聚类介绍 聚类在机器学习,数据挖掘,模式识别,图像分析以及生物信息等领域有广泛的应用.聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集(subset),这样让在同一个子集中的成员对象都 ...

  9. 机器学习十大经典算法之K-近邻算法(学习笔记整理)

    一.算法概述 K-近邻算法(k-Nearest Neighbor,KNN)是机器学习算法中最简单最容易理解的算法.该算法的思路是:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的 ...

最新文章

  1. linux会话管理,Linux 安装 screen 远程会话管理工具
  2. JavaScript创建元素的三种方法特点及对元素的操作
  3. python中a=a+2与a+=2的区别
  4. wxWidgets:wxTextCompleterSimple类用法
  5. 湖南大学C语言作业用oj吗,湖南大学C语言题库(含答案)
  6. Prometheus 系统监控方案
  7. php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程
  8. Redis--事务理解
  9. java轻松实现无锁队列
  10. 养兔子Fibo函数优化
  11. 【物联网】全球SIM连接解决IoT设备换卡难问题
  12. JavaScript 基础概念
  13. 高一c语言期末试题及答案,广东省中山市杨仙逸中学高一信息技术上学期期中试题(C语言).doc...
  14. 黑马java学习笔记4 强化部分 常见API
  15. java实现小写转大写_人民币小写转大写(Java实现)
  16. winrar.exe 命令行参数
  17. luci网页shell_修改Luci界面
  18. 超卓航科上市:募资9亿市值超60亿 成襄阳首家科创板企业
  19. 记一次godaddy上同一共享主机上部署多站
  20. 饿了么虚拟号码可以发短信吗_饿了么隐私

热门文章

  1. 将项目绑定https协议
  2. 海洋知识科普相关调研
  3. css3的cursor
  4. Java设计模式1:设计模式概论
  5. xml操作excel
  6. PostreSQL崩溃试验全记录
  7. Delphi-IOCP学习笔记九======性能测试和IOCP源码下载5000个连接数
  8. UNICODE与ANSI的区别
  9. qt-sdk-linux,在linux系统上安装qt-sdk步骤.doc
  10. graphql java demo_GraphQL学习,Java简单实现