概述
1.名为“回归”的分类器
逻辑回归是一种名为“分类”的线性分类函数,其本质是由线性回归而来的,一种 广泛使用于分类问题中的广义回归算法。
线性回归的核心任务:通过求解θ构建预测函数z,并希望预测函数z能够尽量拟合数据。
逻辑回归的核心任务:通过求解θ构建一个能尽量拟合数据的预测函数y(x),并通过预测函数中输入特征矩阵来获取相应的标签值y。
3.线性回归使用输入的特征矩阵X来输出一组连续型的标签y_pred,以完成各种预测连续型变量的任务;如果我们的标签是离散型变量,尤其是满足0-1分布的离散型变量——我们引入sigmoid函数g(z),并令g(z)的值分布在(0,1)之间,当g(z)接近0时样本的标签为类别0,当g(z)接近1时样本的标签为类别1,这样就得到了一个分类模型。
4.sigmoid函数
sigmoid函数能够将任意实数映射到(0,1)区间,使其可用于将任意值函数转换为更适合二分类的函数。
由于这个性质,sigmoid函数也被当做是一种归一化方法。与之前学过的MInMaxScaler相比,共同点在于它们都具有数据预处理中的“缩放”功能,可以将数据压缩到[0,1]之间;区别在于,MinMaxScaler归一化之后,可以取到0和1,但Sigmoid函数只是无限趋近与0和1。
5.长久以来,人们都以“返回概率”的方式理解逻辑回归,并且这样使用它的性质。可以说,逻辑回归返回的数字,即便本质上不是概率,却有着概率的各种性质,可以被当做概率来看待和使用。
6.逻辑回归的特点
(1)逻辑回归对线性关系的拟合效果非常好。特征与标签之间的线性关系极强的数据,比如金融领域的信用卡欺诈,评分卡制作,电商中的营销预测等等相关数据,都是逻辑回归的强项。但是在非线性数据的效果非常差。
(2)计算速度快。对于大型的线性数据,逻辑回归的计算效率要优于SVM和随机森林。
(3)逻辑回归返回的分类结果不是固定的0和1,而是以小数形式呈现的类概率数字。我们可以利用这个性质,把逻辑回归返回的结果当成连续型数据来使用。
7.逻辑回归的本质:
返回对数几率的,在线性数据上表现优异的分类器,它主要被应用于金融领域。
Linear_model.LogisticRegression
1.损失函数
1.概念
逻辑回归有着基于训练数据求解θ的需求,并且希望训练出来的模型能够尽量拟合训练数据,即模型在训练集上的预测准确率月靠近100%越好。
我们使用“损失函数”这个评估标准,来衡量参数为θ的模型拟合训练集时产生的信息损失大小,并以此来衡量参数θ的优劣。
即是说,我们在求解参数θ时,追求损失函数最小,让模型在训练数据上的拟合效果最优,即预测准确率尽量靠近100%。
2.有些模型没有“求解参数”的需求,也就没有损失函数。如KNN,决策树(求超参数)
3.J(θ)
用训练集训练模型时,X和y都已知,求的是能使损失函数J(θ)最小的θ值;预测时,输入特征数据X,用已经训练好的模型(θ已知)对y进行预测。
4.问题
我们追求损失函数的最小值会引发一个问题:模型在训练集上的表现太优秀,在测试集上却很糟糕,即模型出现过拟合。
虽然逻辑回归和线性回归是天生欠拟合的模型,但我们还是需要控制过拟合的技术来帮助我们调整模型——正则化。
正则化
1.正则化是用来防止模型过拟合的过程,常用L1正则化和L2正则化两种选项,分别通过在损失函数后加上参数向量θ的L1范式和L2范式来实现。
2.重要参数penalty和C
(1)penalty
可以输入“l1”和“l2”来指定使用哪一种正则化方式,不填的话默认“l2”。
(2)C
C越小,损失函数越小,模型对损失函数的惩罚越重,正则化的效力越强,参数θ会逐渐被压缩的越来越小。
3.L1正则化和L2正则化
(1)L1正则化掌管稀疏性
在L1正则化逐渐加强的过程中,一些携带信息量小的特征的参数会更快地变为0,所以L1正则化的本质是一个特征选择的过程。L1正则化越强,参数向量中就会有越多的0,参数就越稀疏,选出来的特征就越少,以此来防止过拟合。
因此,如果特征量很大,数据维度很高,我们会倾向于使用L1正则化。
(2)L2正则化掌管稠密性
L2正则化在加强的过程中,会尽量让每个特征都有一些贡献,但携带信息量少,对模型贡献不大的特征会非常接近与0。
通常来说,如果我们的主要目的是防止过拟合,选择L2正则化就足够了。但是如果我们选择L2正则化后还是过拟合,即模型在未知数据集上的效果表现差,就考虑L1正则化。
3.案例
4条C值学习曲线,分别是逻辑回归模型使用L1正则化和L2正则化后,拟合训练集和测试集的效果。
表现:随着C的逐渐变大,正则化的强度越来越小,模型在训练集和测试集上的表现都呈上升趋势。直到C=0.8左右,训练集上的表现依然走高,但测试集上的表现开始下跌,说明模型开始出现了过拟合。
在实际使用中,C值的学习曲线是很有必要画的!而且基本上使用L2正则化,如果感觉模型的效果不好,那就换L1试试看。
逻辑回归中的特征工程
当特征数量很多的时候,希望对逻辑回归进行特征选择来降维。
1.业务选择的思路
如果我们不了解业务,数据有成千上万的特征,我们可以让算法先帮助我们筛选一些特征,然后在少量的特征中,再根据业务常识来选择更少量的特征。
2.PCA和SVD并不适合逻辑回归
逻辑回归是由线性回归演变而来,线性回归的一个核心目的就是通过求解参数来探索特征X和标签y之间的关系,逻辑回归也传承了这个性质,我们常常希望通过逻辑回归的结果,来判断什么特征与分类结果相关,因此我们希望保留特征的原貌。
当然,在不需要探究特征与标签之间关系的线性数据上,PCA和SVD是可以使用的。
降维算法不能使用,我们要用的就是特征选择方法。
3.高效的嵌入法embedded
(1)固定C值,用L1正则化做特征选择。
由于L1正则化会使得部分特征对应的参数为0,因此可以用L1正则化结合模块SelectFromModel,筛选出让模型十分高效的特征——L1正则化后参数不为0的特征。
X_embedded = SelectFromModel(LR_,norm_order=1).fit_transform(data.data,data.target)#norm_order=1表示使用L1正则化
(2)固定C值,调节threshold阈值。
一旦调整threshold,就不是使用L1正则化选择特征,而是使用模型的属性.coef_中生成的各个特征的系数来选择。
coef_虽然返回的是特征的系数,但是系数的大小和决策树中的feature_importances_以及降维算法中的可解释性方差explained_variance_概念相似,都是衡量特征的重要程度和贡献度的。
因此SelectFromModel中的参数threshold可以设置为coef_的阈值,即可以剔除系数小于threshold中输入的数字的所有特征。
(3)L1正则化做特征选择,调节C值。
通过画C值的学习曲线发现,有时C取得很大,模型效果反而更好。
4.比较麻烦的系数累加法
在PCA中,我们通过绘制累计可解释性方差贡献曲线来选择超参数,在逻辑回归中我们可以使用coef_来这样做,并且我们选择特征个数的逻辑也是类似的:找出曲线由锐利变平滑的转折点,转折点之前被累加的特征都是需要的,转折点之后的都不需要。
使用这种方法不如直接使用嵌入法来得方便。
5.简单快速的包装法
包装法非常方便,只需要直接设定我们需要的特征个数就可以了。
梯度下降:重要参数max_iter
逻辑回归的数学目的是求解能够让模型最优化,拟合程度最好的参数θ值,即求解能够让损失函数J(θ)最小化的θ值。
对于二源逻辑回归来说,有多种方法可以用来求解参数θ值。最常见的有梯度下降法,坐标下降法,牛顿法等,其中以梯度下降法最为著名。
在sklearn中,我们设置参数max_iter最大迭代次数来代替步长,帮助我们控制模型的迭代速度并适时地让模型停下。max_iter越大,代表步长越小,模型的迭代时间越长。