逻辑回归算法梳理

  1. 逻辑回归与线性回归的联系与区别
    共性:
    回归问题的条件/前提:

1) 收集数据:特征、标签

2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数。然后利用这个模型去预测/分类新的数据。
区别:
线性回归: 特征和结果都满足线性,即不大于一次方。表示为在这里插入图片描述
逻辑回归是一个非线性模型,sigmoid函数,又称逻辑回归函数。
Sigmoid函数是一个常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数和逻辑回归,将变量映射到(0,1)之间。
分析:概率值都是(0,1),为了将它与线性函数建立联系,可以考虑这种映射。
在这里插入图片描述
但是它本质上又是一个线性回归模型,即先把特征线性求和,然后使用sigmoid映射函数来预测。除去sigmoid映射函数,其他的步骤,算法都是线性回归的。sigmoid可以轻松处理0/1分类问题。

  1. 逻辑回归的原理
    从大的类别上来说,逻辑回归是一种有监督的统计学习方法,主要用于二分类问题。一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要用于分类,可以使用logistic回归。

  2. 逻辑回归损失函数推导及优化
    我们还是从数据的产生来分析,现在已有的数据是这些:
    D=(x1,1),(x2,1),(x3,1),…,(xn,−1) (1)

当然,这些数据的产生是相互独立的,所以这种组合产生的概率就是
P(x1,1)∗P(x2,1)∗P(x3,1)∗…∗P(xn,−1) (2)

再将(2)式写为条件概率分布
P(x1)P(1|x1)∗P(x2)P(1|x2)∗P(x3)P(1|x3)∗…∗P(xn)P(−1|xn) (3)

再者,假设每一笔数据的概率服从0-1分布。
在这里插入图片描述 (4)
所以最后写成的形式:
P(x1)f(x1)∗P(x2)f(x2)∗P(x3)f(x3)∗…∗P(xn)(1−f(xn)) (5)

也就说这组数据由真正的模型f(x)产生的话,概率是(5)这么大。但是我们不知道真正的模型f(x)长什么样子,我们现在只知道我们自己定义了一个模型h(x),它长成(1)这个样子。所以现在的任务就是从很多的h(x)中找到其中一个最接近真正的模型f(x)并将它作为我们最后的h(x)。

所以如何衡量h(x)与f(x)的接近程度?如果我们现在用h(x)代替f(x)去产生这组数据集也能得到一个概率(6).
P(x1)h(x1)∗P(x2)h(x2)∗P(x3)h(x3)∗…∗P(xn)(1−h(xn)) (6)

使得(6)式的概率最大的那个h(x)我们会认为它与f(x)最相似,这就是最大似然的思想。
最终的目标是解出下面这个优化问题:
在这里插入图片描述 (7)

再次变形,求一个式子的最大值,相当于求它相反数的最小:4 在这里插入图片描述 (8)

接下来我们要对(8)式取对数,一方面原因是因为对数函数的单调特性,另一方面是能将原来的连乘简化到连加,所以取对数后:
在这里插入图片描述(9)

将h(x)展开,能得到
在这里插入图片描述 (10)

再整理得损失函数
在这里插入图片描述 (11)
我们的目标就是找到最小化J(w)的那个w.就像在线性回归中做的那样,接下来我们要利用链式法则对它求导,化简得到:
在这里插入图片描述 (12)
w是一个向量,对它的第j个分量进行求导,xi,j是个标量,是第i个样本中第j个分量
在这里插入图片描述 (13)
若令(13)等于0的话,很难求解出w。因此,这里考虑梯度下降算法求解这个问题。思想就是假设函数上有一个点,它沿着各个方向都有它的方向导数,那么总是沿着方向导数最大的反方向走,也就是梯度的反方向走,这个点总是能走到最低点。每一次移动的距离用一个系数lr来表示,每次更新w,数次迭代之后,w趋近于最优解:
在这里插入图片描述 (14)
损失函数推导参考http://www.cnblogs.com/shayue/p/10520414.html

  1. 正则化与模型评估指标
    正则化的目的:防止过拟合!
    正则化的本质:约束(限制)要优化的参数。
    正则化可以理解为一种罚函数法,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标,则目标函数 为J(θ)+正则化项。
    在这里插入图片描述
    上式可理解为L2正则化, 使用拉格朗日乘子法,可以变为如下形式:
    在这里插入图片描述在这里插入图片描述
    L1范数和L2范数都有助于降低过拟合风险,但前者还会有一个额外的好处,即更易于获得稀疏解,即求得的分量会有更少的非零分量。对比一下左右两幅图的w*,我们明显可以发现,右图的w*的w1分量是0,稀疏解诞生了!这就是我们想要的稀疏解,我们想要的简单模型。
    正则化因子,也就是里面的那个lamda,如果它变大了,说明目标函数的作用变小了,正则化项的作用变大了,对参数的限制能力加强了,这会使得参数的变化不那么剧烈(仅对如上数学模型),直接的好处就是避免模型过拟合。但约束过大,就会导致目标函数作用太小,导致欠拟合。

  2. 逻辑回归的优缺点
    逻辑回归的优点
    (1)便利的观测样本概率分数;
    (2)已有工具的高效实现;
    (3)对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决;
    (4)逻辑回归广泛的应用于工业问题上(这一点很重要)。

逻辑回归的缺点
(1)当特征空间很大时,逻辑回归的性能不是很好;
(2)不能很好地处理大量多类特征或变量;
(3)对于非线性特征,需要进行转换;
(4)依赖于全部的数据(个人觉得这并不是一个很严重的缺点)。
参考逻辑回归 vs 决策树 vs 支持向量机

  1. 样本不均衡问题解决办法
    假定样本A类比B类多,且严重不平衡:

a. A类降采样
随机降采样
A类分成若干子类,分别与B类进入ML模型
基于聚类的A类分割

b. B类过采样
避免降采样造成的信息损失

c. B类数据合成
随机插值得到新样本

d. 降低A类权值,提高B类权值
一个处理非平衡数据常用的方法就是设置损失函数的权重,使得少数类判别错误的损失大于多数类判别错误的损失。在python的scikit-learn中我们可以使用class_weight参数来设置权重。
7. sklearn参数
penalty : str, ‘l1’ or ‘l2’, default: ‘l2’
惩罚项l1或者l2。 l1可以使weight稀疏,l2可以使weight均衡,当solvers 为newton-cg’, ‘sag’ and ‘lbfgs’时,只可以是l2

C : float, default: 1.0
正则化的强度

fit_intercept : bool, default: True
默认为true,此参数为截距,即y=ax+b的b

intercept_scaling : float, default 1.
Useful only when the solver ‘liblinear’ is used and self.fit_intercept is set to True. In this case, x becomes [x, self.intercept_scaling], i.e. a “synthetic” feature with constant value equal to intercept_scaling is appended to the instance vector. The intercept becomes intercept_scaling * synthetic_feature_weight.
Note! the synthetic feature weight is subject to l1/l2 regularization as all other features. To lessen the effect of regularization on synthetic feature weight (and therefore on the intercept) intercept_scaling has to be increased.

class_weight : dict or ‘balanced’, default: None
默认是balanced,即{0:1,1:1}, 如果label中0比较重要,我就可以{0:2,1:1},即代价敏感学习,一般在样本不平衡中使用

solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}, default: ‘liblinear’
优化的算法
数据比较少时,用liblinear是一个比较好的选择。在数据比较多的情况下,sag更快一些
对于多分类问题,only ‘newton-cg’, and ‘lbfgs’ 可以处理multinomial loss, ‘liblinear’只可以解决ovr
‘newton-cg’, ‘lbfgs’ and ‘sag’ 只可以解决l2范式

multi_class : str, {‘ovr’, ‘multinomial’}, default: ‘ovr’
If the option chosen is ‘ovr’, then a binary problem is fit for each label. Else the loss minimised is the multinomial loss fit across the entire probability distribution. Works only for the ‘newton-cg’, ‘sag’ and ‘lbfgs’ solver.

n_jobs : int, default: 1
默认是1,此参数为线程数,可以根据个人电脑增加

Attributes
coef_ : array, shape (n_classes, n_features)
每一维特征的系数,即weight
intercept_ : array, shape (n_classes,)
截距,即bias
参考:sklearn参数附代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值