1.前言

上一篇博客写的是我初步学习逻辑回归的一些理解和看法,那么之前也讲过了逻辑回归与线性回归有异曲同工之处,回想线性回归,也会记得面对实际应用,样本中可能并没有这种线性关系,就要我们引入多项式的线性回归来解决建模问题。那么自然的,也会有多项式逻辑回归问题。

2.多项式逻辑回归

与多项式线性回归一样的道理,是将原本的特征空间(很可能没有线性关系的特征空间)进行次方的增加,也是维度的增加,新增加的特征就是原本特征的组合以及幂次方形式。对新的特征空间来探讨他们的线性关系。

3.多项式逻辑回归的正则化

同样的,联想到多项式逻辑回归,我们又不得不考虑一个问题,就是增加了维度,在新的样本空间里面进行训练,很难避免的会出现模型过拟合的情况。碰到模型过拟合,就可以用正则化的方法来避免,我当前接触的就只有L1正则和L2正则,那么面对L1正则和L2正则,正则项和原损失函数的比例也是一个问题,再机器学习库sklearn中就给我们定义了一个新的损失函数(讲述了原损失函数和正则项的权重关系):
数据挖掘学习--逻辑回归2-LMLPHP
那么这里引入常数C就医调整损失函数和正则项的情况了,不难发现,对新的损失函数J来说,要想新的损失函数最小,那么两个都是正项的项就要越小越好。至于哪边影响比较大(要小的更多)就取决于C。当C很大的时候,原损失函数J的影响程度就十分大了,此时缩小新的损失函数,则就会刻意去缩小原损失函数,此时正则项影响是很小的,也就意味这正则化程度小,不能起到避免过拟合的效果。反之当C很小是,就会有避免模型过拟合的效果。

4.自建一个有正则化效果的多项式逻辑回归管道(基于sklearn)

#总体管道流程是先对训练样本(矩阵)进行多项式扩展,此时需要入参degree来控制扩展的最高次方
#接着对训练样本进行数据归一化
#最后对归一化后的数据进行逻辑回归,入参正则化的方式,调整常数C来确定正则化的程度
def get_Pine3(degree , C , penalty):
    return Pipeline(
        [
            ('poly' , PolynomialFeatures(degree=degree)),
            ('std' , StandardScaler()),
            ('log_reg' , LogisticRegression(C = C , penalty=penalty))
        ]
    )

08-11 12:54