逻辑回归算法梳理

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

线性回归定义:

线性回归通常是解决连续数值预测问题, 利用数理统计的回归分析, 来确定变量之间的相互依赖关系. 其公式通常表示如下:
在这里插入图片描述

逻辑回归定义

逻辑回归(Logistic Regression)通常用来解决二分类问题(也可以解决多分类问题), 用于估计某种事物的可能性. 我通过 Logistic 函数将拟合函数的输出值归一化到 (0, 1) 之间, 我们可以将其认为是分类为 1 类的预测概率. Logistic 函数公式(和 Sigmoid 函数形式形式相同)如下:
在这里插入图片描述

联系:

逻辑回归的公式整理一下, 就可以得到 , 其中, p=P(y=1|x), 也就是将给定输入y预测为正样本的概率. 那也就是说, 逻辑回归实际上也可以看做是对 的线性回归. 但是在关于逻辑回归的讨论中, 我们均认为y 是因变量, 而不是 , 这便引出逻辑回归与线性回归最大的区别, 即 逻辑回归中的因变量是离散的, 而 线性回归中的因变量是连续的. 并且在自变量 x 和超参数 θ 确定的情况下, 逻辑回归可以看做是广义线性模型在因变量 y 服从二元分布时的一个特殊情况, 而使用最小二乘法求解线性回归时, 我们认为因变量 y 服从正态分布.

区别:

最本质区别: 逻辑回归处理的是分类问题, 线性回归处理的是回归问题. 在逻辑回归中, 因变量的取值是一个二元分布(不是二项分布). 而线性回归中实际上求解的是对真实函数关系的一个近似拟合.

逻辑回归的原理

sigmoid的函数输出是介于(0,1)之间的,中间值是0.6,于是之前的公式 的含义就很好理解了,因为 输出是介于(0,1)之间,也就表明了数据属于某一类别的概率,例如 :

0.6,则说明当前数据属于1。

逻辑回归损失函数推导及优化

在这里插入图片描述
在这里插入图片描述

正则化与模型评估指标

损失函数的基础上加上正则项在这里插入图片描述

模型评估指标

TP、FP、FN、TN
ROC曲线: AUC
Kappa statics: Kappa
平均绝对误差(mean absolute error)和均方根误差(root mean squared error);相对绝对误差(Relative absolute error )和相对均方根误差(Root relative squared error)

样本不均衡问题解决办法

扩充数据集

首先想到能否获得更多数据,尤其是小类(该类样本数据极少)的数据,更多的数据往往能得到更多的分布信息。

对数据集进行重采样

过采样(over-sampling),对小类的数据样本进行过采样来增加小类的数据样本个数,即采样的个数大于该类样本的个数。
欠采样(under-sampling),对大类的数据样本进行欠采样来减少大类的数据样本个数,即采样的个数少于该类样本的个数。

人造数据

一种简单的产生人造数据的方法是:在该类下所有样本的每个属性特征的取值空间中随机选取一个组成新的样本,即属性值随机采样。

sklearn参数

sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)

参数:

penalty: 一个字符串,制定了正则化策略。

如果为’l2’,则优化目标函数为:为极大似然函数。
如果为’l1’,则优化目标函数为:为极大似然函数。
dual:一个布尔值。如果为True,则求解对偶形式(只是在penalty=‘l2’ 且solver=‘liblinear’ 有对偶形式);如果为False,则求解原始形式。

C:一个浮点数,它指定了惩罚系数的倒数。如果它的值越小,则正则化越大。

fit_intercept:一个布尔值,制定是否需要b 值。如果为False,则不会计算b值(模型会假设你的数据已经中心化)。

intercept_scaling:一个浮点数,只有当 solver=‘liblinear’ 才有意义。当采用 fit_intercept 时,相当于人造一个特征出来,该特征恒为 1,其权重为 b 在计算正则化项的时候,该人造特征也被考虑了。因此为了降低人造特征的影响,需要提供 intercept_scaling。

class_weight:一个字典或者字符串’balanced’。

如果为字典:则字典给出了每个分类的权重,如{class_label:weight}。
如果为字符串 ‘balanced’:则每个分类的权重与该分类在样品中出现的频率成反比。
如果未指定,则每个分类的权重都为 1。
max_iter:一个整数,指定最大迭代数。

random_state:一个整数或者一个RandomState实例,或者None。
如果为整数,则它指定了随机数生成器的种子。
如果为RandomState实例,则指定了随机数生成器。
如果为None,则使用默认的随机数生成器。
solver:一个字符串,指定了求解最优化问题的算法,可以为如下的值。
‘newton-cg’:使用牛顿法。
‘lbfgs’:使用L-BFGS拟牛顿法。
‘liblinear’ :使用 liblinear。
‘sag’:使用 Stochastic Average Gradient descent 算法。
注意:
对于规模小的数据集,'liblearner’比较适用;对于规模大的数据集,'sag’比较适用。
‘newton-cg’、‘lbfgs’、‘sag’ 只处理penalty=‘12’的情况。
tol:一个浮点数,指定判断迭代收敛与否的一个阈值。

multi_class:一个字符串,指定对于多分类问题的策略,可以为如下的值。
‘ovr’ :采用 one-vs-rest 策略。
‘multinomial’:直接采用多分类逻辑回归策略。
verbose:一个正数。用于开启/关闭迭代中间输出的日志。
warm_start:一个布尔值。如果为True,那么使用前一次训练结果继续训练,否则从头开始训练。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值