一、逻辑回归和 s i g m o d sigmod sigmod函数的由来
1.广义线性模型 ( G L M ) (GLM) (GLM)
由于线性回归往往用来预测连续值,但是受限于其连续性的特征,对于分类问题往往效果不好。且线性模型的值域为 ( − ∞ , ∞ ) (-∞,∞) (−∞,∞),对于某些现实问题可能出现无意义的情况。比如某店铺用线性回归模型做预测:温度每上升 10 10 10摄氏度,购买毛衣的人数会下降 100 100 100人。现在的温度为 5 5 5摄氏度,购买毛衣的人数为 80 80 80人。按此模型预测,当温度为 15 15 15度时,购买毛衣的人数为 − 20 -20 −20人。显然人数不可能为负数,该模型的预测结果有违常识。但是线性回归有“模型简单且效果还可以”的特点,为了保留该特点,又想让它能够进行分类。因此,考虑对线性回归的预测值做一次处理,这个处理函数称为连接函数。通过引进处理函数解决线性回归在分类问题中效果不好和值域在现实情况中无意义的问题。从而推导出了广义线性模型的概念。
![](https://i-blog.csdnimg.cn/blog_migrate/cd3ad67e55f3b8acbd280c22a23d40f1.png)
给定 x x x和参数 θ \theta θ后,广义线性模型需要满足以下三个假设:① p ( y ∣ x ; θ ) p(y|x;\theta) p(y∣x;θ)服从指数分布族,即认为因变量属于指数分布(可以理解为一种限制);② 给定 x x x,我们的目标是预测 x x x的期望值,即 g ( y ) = E ( y ∣ x ) g(y)=E(y|x) g(y)=E(y∣x);③ y = θ T x y = \theta^Tx y=θTx,即 y y y与 x x x是线性关系。
2.指数分布族
广义线性模型中 y y y服从指数分布族,而指数分布族需满足下面公式:
p ( y ; η ) = b ( y ) e η T ( y ) − a ( η ) 2.1 p(y;\eta) = b(y)e^{\eta T(y)-a(\eta)}~~~~2.1 p(y;η)=b(y)eηT(y)−a(η) 2.1
其中, η \eta η 为自然数, T ( y ) T(y) T(y) 是充分统计量, a ( η ) a(\eta) a(η)为正则化项。伯努利分布、正态分布、二项分布、泊松分布等都属于指数分布族之一,当 y y y服从不同的分布时,会推导出不同的连接函数。故广义线性模型的具体形式 g ( y ) g(y) g(y)也会不同,我们会根据下面的公式来推导: E ( T ( Y ) ) = g ( y ) E(T(Y))=g(y) E(T(Y))=g(y)。
3.伯努利分布
现在有一个二分类问题,要判断一个来借款的人是否会逾期。如果会逾期给这个人的标记为1,不会逾期给这个人标记为0。由于线性回归模型对于分类问题往往效果不好,所以我们想构建一个广义线性模型来对该问题进行求解,而广义线性模型的因变量要服从指数分布,现在要挑选一个服从指数分布的分布函数。这时我们很自然就会想到我们常见的 0 − 1 0-1 0−1分布,伯努利分布。它的分布形式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/ae3751c79cbd44b66ea5aaed6f736a7c.png)
它的概率分布可以定义为: p ( y ∣ ϕ ) = ϕ y ∗ ( 1 − ϕ ) 1 − y p(y|\phi) = \phi^y * (1-\phi)^{1-y} ~~~~ p(y∣ϕ)=ϕy∗(1−ϕ)1−y 其中 y = 1 y=1 y=1或 y = 0 , E ( y ) = ϕ y=0,E(y)=\phi y=0,E(y)=ϕ。
前文已经指出伯努利分布是指数分布族之一,下面通过公式变形来验证这一点,由伯努利的数学定义可以做如下推导:
p ( y ∣ ϕ ) = e l n ( ϕ y ∗ ( 1 − ϕ ) 1 − y ) = e y ∗ l n ϕ + ( 1 − y ) ∗ l n ( 1 − ϕ ) = e y ∗ l n ( ϕ 1 − ϕ ) + l n ( 1 − ϕ ) 3.1 p(y|\phi) = e^{~ln~(~\phi^y * (1-\phi)^{1-y}~~~)} = e^{y*ln\phi+(1-y)*ln(1-\phi)} = e^{y*ln\left(\frac{\phi} {1-\phi~}\right)+ln(1-\phi)}~~~~3.1 p(y∣ϕ)=e ln ( ϕy∗(1−ϕ)1−y )=ey∗lnϕ+(1−y)∗ln(1−ϕ)=ey∗ln(1−ϕ ϕ)+ln(1−ϕ) 3.1
对比公式
2.1
2.1
2.1,可以得出伯努利分布是满足参数如下的指数分布:
b
(
y
)
=
1
,
T
(
y
)
=
y
,
η
=
l
n
(
ϕ
1
−
ϕ
)
,
a
(
η
)
=
−
l
n
(
1
−
ϕ
)
3.2
b(y)=1,T(y)=y,\eta = ln\left(\frac{\phi} {1-\phi~}\right),a(\eta) = -ln(1-\phi) ~~~~3.2
b(y)=1,T(y)=y,η=ln(1−ϕ ϕ),a(η)=−ln(1−ϕ) 3.2
现在来推导广义线性函数,由于:
E
(
T
(
Y
)
)
=
E
(
y
)
=
ϕ
3.3
E(T(Y)) = E(y) = \phi ~~~~3.3
E(T(Y))=E(y)=ϕ 3.3
而
ϕ
=
e
η
1
+
e
η
=
1
1
+
e
−
η
3.4
\phi = \frac{e^\eta} {1+e^\eta} = \frac{1} {1+e^{-\eta}} ~~~~3.4
ϕ=1+eηeη=1+e−η1 3.4
且
E
(
T
(
Y
)
)
=
g
(
y
)
E(T(Y))=g(y)
E(T(Y))=g(y),从而可以推导出广义线性函数(逻辑回归函数)的表达式:
g
(
y
)
=
1
1
+
e
−
y
3.5
g(y) = \frac{1} {1+e^{-y}} ~~~~3.5
g(y)=1+e−y1 3.5
从上面的推导可以看出逻辑回归的因变量g(y)就是伯努利分布中样本为1的概率。所以把线性回归中参数求出来,代入逻辑回归函数的表达式中,可以预测样本为1的概率。
至此,可以得出结论,当因变量服从伯努利分布时,广义线性模型就为逻辑回归。所以不是因为逻辑函数有很多很好的性质而选择了逻辑函数,而是假设因变量服从伯努利分布推导出了逻辑函数。恰好这个函数满足连续、任意阶可导等很多优良性质。从而让逻辑回归成为广泛应用的一个基础模型。
4.逻辑回归优缺点
4.1 逻辑回归优点
①容易使用和解释。由于逻辑回归不像神经网络那样有一个黑匣子。它通过样本训练出对应特征的参数(系数)。如果参数间不存在多重共线性,一般参数绝对值越大,说明该特征对因变量的影响越大(不过用原始数据建模时由于数据没有归一化处理,可能会由于数据本身的差异导致这个结果有偏,可以把原始数据转成 w o e woe woe消除量纲后再进行评估),该结果可以直观地展示给建模人员和业务使用人员。
②对数据中小噪声鲁棒性好。不会受到轻微多重共线性的影响,保证了模型的准确性。
③使用灵活。因为逻辑回归的结果(概率 p r o b prob prob)是 0 0 0到 1 1 1之间的连续值,在信贷中可以根据资金松紧程度和公司策略对阈值进行灵活调整,从而划定放贷人群、拒绝人群和转人工人群。
④上线方便。相比其它机器学习模型,逻辑回归可以轻松转成 h i v e s q l hive sql hivesql脚本,进行线上运用。同时在 J a v a 、 s p a r k Java、spark Java、spark等软件中也有可直接调用的模块。
⑤计算代价不高,容易实现。 L R LR LR在时间和内存需求上相当高效。它可以应用于分布式数据,并且还有在线算法实现( P y t h o n Python Python、 R R R等很多软件中都有已封装好可以直接调用的函数),用较少的资源处理大型数据。
4.2逻辑回归缺点
①相比其它复杂模型,逻辑回归模型容易欠拟合,分类的精度不高。
②数据特征有缺失或特征空间很大时效果不会很好。
5.说明:
5.1.逻辑回归看名字像一个回归问题,实际是一个分类问题。
一般是二分类。比如模型的概率小于 0.5 0.5 0.5认为该客户能正常还款,模型概率大于0.5认为该客户有可能逾期。也可以用 O v R ( o n e − v s − r e s t ) OvR(one-vs-rest) OvR(one−vs−rest)和 M v M ( M a n y − v s − M a n y ) MvM(Many-vs-Many) MvM(Many−vs−Many)等方法把二分类推广到多分类。而不把逻辑回归叫成逻辑分类,个人看法有可能和逻辑回归输出的值是 0 0 0到 1 1 1之间的连续值,而不是单纯的几个类别有关。
5.2. s i g m o d sigmod sigmod函数有哪些优良的性质
这个函数简单、平滑、任意阶可导、梯度式子容易计算,可以把 ( − ∞ , ∞ ) (−∞,∞) (−∞,∞)映射到 ( 0 , 1 ) (0,1) (0,1),从而可以和现实中的概率结合起来。
参考文献:
1.https://cloud.tencent.com/developer/article/1694353
2.https://cloud.tencent.com/developer/article/1694338