逻辑回归算法梳理
作者:互联网
1.逻辑回归与线性回归的联系与区别
线性回归主要用来解决连续值预测的问题,逻辑回归用来解决分类的问题,输出的属于某个类别的概率
2.逻辑回归的原理
线性回归可以预测连续值,但是不能解决分类问题,我们需要根据预测的结果判定其属于正类还是负类。所以逻辑回归就是将线性回归的(−∞,+∞)(−∞,+∞)结果,通过sigmoid函数映射到(0,1)之间。
线性回归决策函数:
hθ(x)=θTx
将其通过sigmoid函数,获得逻辑回归的决策函数:hθ(x)=11+e−θTx
3.逻辑回归损失函数推导及优化
4.正则化与模型评估指标
逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。逻辑回归的L2正则化损失函数表达式如下,其中λ是正则化参数。
评估指标:
TP(实际为正预测为正),FP(实际为负但预测为正),FN(实际为正但预测为负),TN(实际为负预测为负)
召回率Recall:样本中的正例有多少被预测准确了,衡量的是查全率,预测对的正例数占真正的正例数的比率:
Recall= TP / (TP+FN)
精准率Precision:针对预测结果而言,预测为正的样本有多少是真正的正样本,衡量的是查准率,预测正确的正例数占预测为正例总量的比率:
Precision= TP / (TP+FP)
准确率Accuracy:反映分类器对整个样本的判定能力,能将正的判定为正,负的判定为负的能力,计算公式:
Accuracy=(TP+TN) / (TP+FP+FN+TN)
F1值:precision和recall之间的一个调和值。
F1 = 2* TP / ( 2*TP + FP + FN)
假正例率: FPR = FP / (FP + TN)
真正例率: TPR = TP / ( TP + FN)
Roc曲线就是以FPR作为横轴, 以TPR作为纵轴,根据不同的分类阈值画出的曲线
Roc曲线下面的面积就是AUC值
5.逻辑回归的优缺点
优点:实现简单;分类时计算量非常小,速度很快,存储资源低;
缺点: 容易过拟合,一般准确度不太高;只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;
6.样本不均衡问题解决办法
扩充数据集
对数据集进行重采样
过采样:将稀有类别的样本进行复制,通过增加此稀有类样本的数量来平衡数据集。该方法适用于数据量较小的情况。
欠采样:从丰富类别的样本中随机选取和稀有类别相同数目的样本,通过减少丰富类的样本量来平衡数据集。该方法适用于数据量 较大的情况。
人造数据
改变分类算法
7.sklearn参数
penalty: 字符串型,’l1’ or ‘l2’,默认:’l2’;正则化类型。
dual:布尔型,默认:False。当样本数>特征数时,令dual=False;用于liblinear解决器中L2正则化。
tol:浮点型,默认:1e-4;迭代终止判断的误差范围。
C:浮点型,默认:1.0;其值等于正则化强度的倒数,为正的浮点数。数值越小表示正则化越强。
fit_intercept:布尔型,默认:True;指定是否应该向决策函数添加常量(即偏差或截距)。
intercept_scaling:浮点型,默认为1;仅仅当solver是”liblinear”时有用。
class_weight:默认为None;与“{class_label: weight}”形式中的类相关联的权重。如果不给,则所有的类的权重都应该是1。
random_state:整型,默认None;当“solver”==“sag”或“liblinear”时使用。在变换数据时使用的伪随机数生成器的种子。如果是整数, random_state为随机数生成器使用的种子;若为RandomState实例,则random_state为随机数生成器;如果没有,随机数生成器就是’ np.random ‘使用的RandomState实例。
solver:{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},默认: ‘liblinear’;用于优化问题的算法。对于小数据集来说,“liblinear”是个不错的选择,而“sag”和’saga’对于大型数据集会更快。对于多类问题,只有’newton-cg’, ‘sag’, ‘saga’和’lbfgs’可以处理多项损失;“liblinear”仅限于“one-versus-rest”分类。
max_iter:最大迭代次数,整型,默认是100;
multi_class:字符串型,{ovr’, ‘multinomial’},默认:‘ovr’;如果选择的选项是“ovr”,那么一个二进制问题适合于每个标签,否则损失最小化就是整个概率分布的多项式损失。对liblinear solver无效。
verbose:整型,默认是0;对于liblinear和lbfgs solver,verbose可以设为任意正数。
warm_start:布尔型,默认为False;当设置为True时,重用前一个调用的解决方案以适合初始化。否则,只擦除前一个解决方案。对liblinear解码器无效。
n_jobs:整型,默认是1;如果multi_class=‘ovr’ ,则为在类上并行时使用的CPU核数。无论是否指定了multi_class,当将’ solver ’ '设置为’liblinear’时,将忽略此参数。如果给定值为-1,则使用所有核
标签:逻辑,预测,回归,正则,TP,算法,默认,梳理,liblinear 来源: https://blog.csdn.net/qq_37923586/article/details/88091119