原创文章,转载请说明本文来自:《老饼讲解-机器学习》 ml.bbbdata.com


目录

一、归一化对梯度下降的影响

01、下降路径的影响

02、对步长设置的影响

二、逻辑回归何时需要归一化


为什么有的人说,逻辑回归需要归一化,而有的人说逻辑回归不需要归一化呢?

他们说的都是对的,看完本文,你就知道为什么会有两种说法。

一、归一化对梯度下降的影响

我们先讲述不归一化对梯度下降法的影响,实际也就是逻辑回归需要归一化的主要原因。

因为逻辑回归往往在求解过程中,使用的是梯度下降之类的算法。

以下讨论以下面的梯度下降问题为基础

求一组 ,  令 最小,其中的范围为[-10000,10000],而  的范围为[-1,1]。


01、下降路径的影响

不做归一化的情况下,调整1单位时,对   的影响范围为10000,而 调整1单位只会影响1,即y对w1的调整非常敏感,因此,会极偏向调整w1,而忽略w2。

因此在调整同等步长的情况下,w1对w2的影响会更明显。

整个过程会成为:先调整w1,直到w1几乎不可调,再调整w2。只要迭代足够多次,这倒也没有问题。但明显的,w1,w2逐个调整比起w1,w2一起调整需要更多步数。




02、对步长设置的影响

(1) 解决不同变量需要不同步长

在梯度下降算法中,我们需要设置每次调整的步长,而不同变量需要不同步长。

对于w1,由于它的取值范围很多,微小的影响也对y影响很大,因此,我们可能设为0.00001,小步小步地调。

对于w2,我们只需设0.001可能就够了,

对于不同变量,我们需要调不同的步长,如果我们设为0.000001,则在调w2时明显过小,而设为0.001对调整w1又过大。这就麻烦了。

将所有变量的数据范围归一化到[0,1],对所有变量步长就统一

(2) 不同问题需要不同步长

另一方面,假设所有变量范围都一致,都是[-10000,10000],那么我们设为0.000001,但对另一个问题,所有变量为[-1,1],那我们设为0.001,则不同问题,我们还需要设置不同步长。

而不管原始数据范围是多少,我们统一将数据归一化为[0,1]后,我们都设为0.001就可以了,不需要针对不同问题设置不同步长。

总而言之,将数据范围统一在[0,1],对我们讨论、研究、处理问题,都有好处,不必不同问题作不同讨论。


二、逻辑回归何时需要归一化

为什么有的人说逻辑回归需要归一化,而有的人说不需要?

这个老饼认为,这种分歧主要来源于大家用的软件包不一样!


如果你用python的sklearn,不归一化试试?吃过亏后自然就乖乖做归一化啦!

而如果你用的是matlab,那你很疑惑,为什么逻辑回归也有人去做繁琐的归一化。

为什么会有这种差异呢?

主要原因在求解算法上。

sklearn默认用梯度下降,不归一化会需要更多的迭代步数。

而matlab则用牛顿法,牛顿法利用了二阶导的信息,所以在迭代速度上更加快,即使不归一化,一样可以在较少的步数内找到最优解。

总的来说,逻辑回归要不要归一化,并不是一概而定的,在不同的算法下,要求不同。

一般我们用sklearn的话,都是需要归一化的。


相关文章

逻辑回归过拟合分析与解决方案

sklearn:一个简单的逻辑回归例子

sklearn提取逻辑回归模型系数

逻辑回归建模完整流程

sklearn逻辑回归为什么要归一化相关推荐

  1. 小姐姐教我的 sklearn 逻辑回归

    sklearn 逻辑回归 Alex一晚上都没睡好觉,被IEEE-CIS Fraud Detection折磨的死去活来,不管怎么调参,用什么样的策略,评分就是上不去,这可不行,什么时候认过输,生死看淡, ...

  2. logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...

    前情提要: 通俗地说逻辑回归[Logistic regression]算法(一) 逻辑回归模型原理介绍 上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklear ...

  3. sklearn 逻辑回归Increase the number of iterations (max_iter) or scale the data as shown in解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  4. python机器学习库sklearn——逻辑回归

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 逻辑分类的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/det ...

  5. sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》

    由于对逻辑回归等算法做到深刻理解有点难,目前还在学习中,尽管有现成的模型库,我们还是需要对模型的底层实现有一个了解.这里先记录一下如何利用sklearn的LogisticRegression来做一个简 ...

  6. 【机器学习】:sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》

    由于对逻辑回归等算法做到深刻理解有点难,目前还在学习中,尽管有现成的模型库,我们还是需要对模型的底层实现有一个了解.这里先记录一下如何利用sklearn的LogisticRegression来做一个简 ...

  7. sklearn逻辑回归参数设置_【机器学习笔记】:逻辑回归实战练习(二)

    作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 前言 前几篇介绍了逻辑回归在机器学习中的重要性:5个原因告诉你:为什么在成为数据科学家之前,"逻辑回归&q ...

  8. sklearn 逻辑回归中的参数的详解'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'

    penalty : str, 'l1' or 'l2', default: 'l2' 这个是l1 or l2正则化,一般选l2正则化对于逻辑回归分类算法 dual:选择默认的就好,针对的就是l2正则和 ...

  9. sklearn逻辑回归 极大似然 损失_收藏!攻克目标检测难点秘籍二,非极大值抑制与回归损失优化之路...

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 在前面的秘籍一中,我们主要关注了模型加速之轻量化网络,对目标检测模型的实时性难点 ...

最新文章

  1. android webview setappcacheenabled,Java WebView.setDrawingCacheEnabled方法代码示例
  2. Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)
  3. (JAVA)CollectionDemo3
  4. 《天际友盟DRP数字风险防护报告(2021年上半年)》重磅发布
  5. ASP.NET Web API中实现版本的几种方式
  6. [poj2451]Uyuw's Concert
  7. hbase1.3版本启动流程及优化
  8. 人脸方向学习(一):人脸质量评价-模糊检测方法总结一
  9. eclipse android 服务端,Eclipse搭建服务器,实现与Android的简单通信
  10. Android中需要了解的数据结构(一)
  11. 按比例缩小图片的CSS代码
  12. EDFbrowser查看edf文件及睡眠分期认识
  13. mysql的数据库文件在哪里_MySQL数据库文件其具体的存放位置简述
  14. access更新查询非汉族加分_计算机二级Access:如何创建更新查询
  15. Fantastic Graph 2018沈阳网络赛
  16. 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
  17. WebGoat攻略 for Mac(1)
  18. 《有限元分析基础教程》(曾攀)笔记一-二维杆单元有限元程序(基于Python)...
  19. 彻底解决The last packet successfully received from the server was * milliseconds ago问题
  20. 百度重要技术精英出走! 云计算和大数据首席架构师林仕鼎辞职!

热门文章

  1. NYIST_ACM Ranking List FAQ
  2. [USACO09MAR]向右看齐Look Up————单调栈
  3. OneKey Tools Lite插件安装常见问题集锦(PowerPoint版)
  4. 我那迷途知返的小羊-linux修复DNS解析问题
  5. acm计算机教育汇刊,ACM 全文数据库
  6. Spring模块简介
  7. Jmeter(三) - 从入门到上天 - 常用原件 (详解教程)
  8. np.meshgrid plt.contourf
  9. 宅男必备:iStripper for Mac(桌面上的跳舞女郎表
  10. 如何在生产环境使用devtools?