机器学习算法梳理-逻辑回归

学习内容:

逻辑回归与线性回归的联系与区别

线性回归面对的是一个连续值,逻辑回归面对的数据是离散值/类别预测。逻辑回归在线性回归实数输出值上施加了sigmoid函数将数值收敛到了(0-1)的范围之内。目标函数也从差平方和函数变为对数损失函数,已提供最优化所需的导数。逻辑回归是个处理0/1分类。

逻辑回归的原理

逻辑回归是使用logistic函数估计概率,训练数据之后,希望通过输入一个数据得到一个(0-1)的数值

图为逻辑回归的步骤。

逻辑回归算是函数的推导及优化

 

正则化与模型评估指标

回归中如果特征非常多,训练效果特别好,但在测试集效果不好,出现过拟合。
这时通常会引入正则惩罚项,L1,L2两种。

评估指标:

可以算召回率recall = TP/TP+FP
结合精度
用混淆矩阵处理
找到一个合适的参数

逻辑回归的优缺点

优点:

非常高效,不需要太大的计算量,又通俗易懂,不需要缩放输入特征,不需要任何调整,且很容易调整,并且输出校准好的预测概率。

逻辑回归非常容易实现,训练起来非常的高效。

缺点:

逻辑回归不能用来解决非线性问题,因为决策边界是有线性的。

逻辑回归高度依赖正确的数据,数据中的噪声和杂音对逻辑回归的影响特别大。

样本不均衡问题的解决方法

样本不均衡的意思是说,在训练的过程中,数据不是均匀分配的。比如可能A类别有90%的数据,B类别有10%的数据。这样训练出来的分类器是没有作用的

扩大数据集,通过扩大数据集的方法,使样本符合需要的分布。

尝试使用别的评价指标

对数据进行重采样,对于小类别的数据样本进行采样小类的数据样本个数,过采样

或者对数据样本进行采样减少该类数据样本的个数,欠采样….等方法来采样。

尝试产生人工数据样本

使用不同的分类算法

尝试对模型进行惩罚

 

sklearn参数

 

class sklearn.linear_model.LogisticRegression(penalty=’l2’dual=Falsetol=0.0001C=1.0fit_intercept=Trueintercept_scaling=1class_weight=Nonerandom_state=Nonesolver=’warn’max_iter=100multi_class=’warn’verbose=0warm_start=Falsen_jobs=None)

 

penalty:惩罚项,str类型,可选参数为l1和l2,默认为l2。用于指定惩罚项中使用的规范。newton-cg、sag和lbfgs求解算法只支持L2规范。L1G规范假设的是模型的参数满足拉普拉斯分布,L2假设的模型参数满足高斯分布,所谓的范式就是加上对参数的约束,使得模型更不会过拟合(overfit),但是如果要说是不是加了约束就会好,这个没有人能回答,只能说,加约束的情况下,理论上应该可以获得泛化能力更强的结果。

 

dual:对偶或原始方法,bool类型,默认为False。对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量>样本特征的时候,dual通常设置为False。

 

tol:停止求解的标准,float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解。

 

c:正则化系数λ的倒数,float类型,默认为1.0。必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化。

 

fit_intercept:是否存在截距或偏差,bool类型,默认为True。

 

intercept_scaling:仅在正则化项为”liblinear”,且fit_intercept设置为True时有用。float类型,默认为1。

 

class_weight:用于标示分类模型中各种类型的权重,可以是一个字典或者balanced字符串,默认为不输入,也就是不考虑权重,即为None。如果选择输入的话,可以选择balanced让类库自己计算类型权重,或者自己输入各个类型的权重。举个例子,比如对于0,1的二元模型,我们可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。如果class_weight选择balanced,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。当class_weight为balanced时,类权重计算方法如下:n_samples / (n_classes * np.bincount(y))。n_samples为样本数,n_classes为类别数量,np.bincount(y)会输出每个类的样本数,例如y=[1,0,0,1,1],则np.bincount(y)=[2,3]。

 

random_state:随机数种子,int类型,可选参数,默认为无,仅在正则化优化算法为sag,liblinear时有用。

 

solver:优化算法选择参数,只有五个可选参数,即newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear。solver参数决定了我们对逻辑回归损失函数的优化方法,有四种算法可以选择,分别是:

 

liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。

 

lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

 

newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

 

sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。

 

saga:线性收敛的随机优化算法的的变重。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值