机器学习-专题详述

【解疑】逻辑回归为什么要归一化

作者 : 老饼 发表日期 : 2022-06-26 10:11:59 更新日期 : 2024-11-21 00:35:48
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com




在用逻辑回归模型时,我们往往都需要将数据将进行归一化,那为什么需要归一化呢?

本文分析逻辑回归为什么需要归一化的原因,包括归一化对训练的影响以及对正则化的影响

通过本文,可以了解为什么逻辑回归模型在训练前需要对数据进行归一化,以及什么时候不需要归一化




   01. 归一化对逻辑回归训练的影响   




本节讲解归一化对逻辑回归训练的影响




   逻辑回归需要归一化的主要原因   


逻辑回归需要归一化有两个主要原因,如下:
1. 逻辑回归使用了梯度下降求解算法                       
         对于梯度下降算法,归一化的数据更有利于训练     
2. 逻辑回归往往需要添加正则项                             
 归一化后能令正则化公平地惩罚各个系数          




     归一化对逻辑回归训练速度的影响     


数据归一化对梯度下降算法有诸多好处,例如:
 1. 归一化令梯度下降算法训练速度会更快    
2. 归一化更方便设置梯度下降算法的学习率

 为方便理解归一化对梯度下降算法的好处,使用下述例子:
 求一组令  最小
其中
的范围为[-10000,10000],而的范围为[-1,1] 
 
归一化能令梯度下降算法的求解速度更快
 归一化后的数据在梯度下降法的训练中收敛速度会更加快,具体原因如下:
1. 变量的数量级差异会影响系数的调整偏好                                                           
  调整1单位时,对的影响范围为10000,而调整1单位只会影响1
的调整非常敏感,因此,会极偏向调整,而忽略  
因为在调整同等步长的情况下,w1对w2的影响会更明显                
 
2. 由于对系数的调整偏好不同,会导致调整路径的差异                                           
 如下:在x1与x2数量级相同时,w1,w2会同步调整,                   
但在x1数量级远大于x2时,则会先调整w1,直到w1几乎不可调,再调整w2

 归一化与不归一化时w1,w2的调整路径
当然,即使数量级差异极大,但只要迭代足够多次,也是没有问题的
但明显的,w1,w2逐个调整比起w1,w2一起调整需要更多步数,因此数量级一致能使训练的速度更加快
归一化更方便设置梯度下降算法的学习率
 
归一化更方便设置梯度下降算法的学习率,例如:
 
一、解决不同变量需要不同学习率                                                       
如果没有归一化,则需要对每个变量独自设置学习率            
 对于w1,由于x1的取值范围很大,微小的影响也对y影响很大 
因此,我们可能设为0.00001,小步小步地调               
     对于w2,它对y的影响不是那么的大,我们只需设0.001可能就够了

 如此一来,对于不同变量,我们需要调不同的步长          
                         而如果我们将所有变量的数据范围归一化到[0,1],所有变量的学习率就统一了
二、解决不同问题需要不同学习率                                                     
                      对于不同问题,变量的范围不一致,这就需要根据具体问题设定具体学习率
                    例如,问题A的变量范围统一在[-10000,10000],学习率需要设为0.000001
问题B的变量范围统一在[-1,1],学习率就需要设为0.001    

对不同问题,需要设置不同步长,这样不免有些繁琐            
                 所以引入归一化,不管原始数据范围是多少,统一将数据归一化为[0,1]  
                              这样对所有问题都将学习率设为0.001就可以了,不需要不同问题设置不同学习率





    正则化需要归一化    


sklearn的逻辑回归默认是加了L2正则项的,也即损失函数中加入了正则项
在数据没有归一化的情况下,输入变量的数量级如果差异很大,那么对应的、合理的权重w的数量级差异也会很大,
但正则项会惩罚过大的权重,因此,那些本就应该很大的权重,就会被惩罚,从而最后输出的模型得不到最合理的解。
这就需要数据归一化,正则化才能真正work






    老饼语     


本文只是根据“使用梯度下降法并启用L2正则化”场景下(也即sklearn的默认设置)所作的讨论
并且讨论也并不是完全充分的,只是列举了一些归一化对逻辑回归模型效果关键的、重要的影响
对于其它场景,例如使用牛顿法进行训练,或者不使用正则化,则又是不同的影响
但总而言之,将数据范围统一在[0,1],对我们讨论、研究、处理问题,都有好处,
在一般情况下,直接归一化就好了,归一化总是有益无害的






好了,以上就是逻辑回归为什么要归一化了~








 End 




联系老饼