Logistic regression(逻辑斯蒂回归)

2014-09-18

Logistic regression,音译为逻辑斯蒂回归,也可以叫做逻辑回归。

逻辑回归模型是一种将影响概率的不同因素结合在一起的指数模型。——《数学之美》 第28章

似然函数与最大似然估计


在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。“似然性”与“或然性”或“概率”意思相近,都是指某种事件发生的可能性。
最大似然估计是似然函数最初也是最自然的应用。

在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。而随机变量的取值落在某个区域之内的概率则为概率密度函数在这个区域上的积分。

最大似然估计,也称为最大概似估计,是一种统计方法,它用来求一个样本集的相关概率密度函数的参数。

上面的内容摘自维基百科的几个词条。

维基百科词条最大似然估计给出了一个浅显的例子。如下:

一个硬币抛出正面的概率为[latex]\frac{1}{3}, \frac{1}{2}, \frac{2}{3}[/latex]这三种取值,在一次抛硬币试验中,结果是49次正面,31次反面。那么隐蔽抛出正面的可能性的概率最有可能是哪一个?

当概率为[latex]\frac{1}{3}[/latex],似然函数取值为:

[latex]
(^{80}_{49})(\frac{1}{3})^{49}(\frac{2}{3})^{31} \approx 0.000
[/latex]

当概率为[latex]\frac{1}{2}[/latex],似然函数取值为:

[latex]
(^{80}_{49})(\frac{1}{2})^{49}(\frac{1}{2})^{31} \approx 0.012
[/latex]

当概率为[latex]\frac{2}{3}[/latex],似然函数取值为:

[latex]
(^{80}_{49})(\frac{2}{3})^{49}(\frac{1}{3})^{31} \approx 0.054
[/latex]

很明显,抛正面的概率为似然函数的参数,当抛正面的概率是[latex]\frac{2}{3}[/latex]时,似然函数取值最大,所以抛正面的概率的最佳值是[latex]\frac{2}{3}[/latex]。

二项逻辑斯蒂回归模型


二项逻辑斯蒂回归, binomial logistic regression。

对于n维空间的点[latex]\vec{x}[/latex]可能属于类0或者类1,二项逻辑斯蒂回归模型如下:

[latex]
P(Y=1|\vec{x}) = \frac{e^{\vec{w}\vec{x}+b}}{1+e^{\vec{w}\vec{x}+b}}, \\
P(Y=0|\vec{x}) = \frac{1}{1+e^{\vec{w}\vec{x}+b}}
[/latex]

很明显:

[latex]
P(Y=1|\vec{x}) + P(Y=0|\vec{x}) = 1
[/latex]

另外,我们看一下[latex] \frac{e^x}{1+e^x}[/latex]的图形:

x = -6:0.1:6;
e = exp(1);
y = e.^x./(1+e.^x);
plot(x,y);
hold on;
plot(0, 0.5, 'ro');

对于给定的[latex]\vec{x}[/latex],求得[latex]P(Y=0|\vec{x})[/latex]和[latex]P(Y=1|\vec{x})[/latex],比较这两个概率的值,[latex]\vec{x}[/latex]会被划分到概率较大的那一类中。

当[latex]\vec{w}\vec{x}+b=0[/latex]时,[latex]P(Y=1|\vec{x})[/latex]和[latex]P(Y=0|\vec{x})[/latex]的值都是0.5,这也意味着此时的[latex]\vec{x}[/latex]很难划分为类0或者类1。

在n维空间中,向量[latex]\vec{x}[/latex]由n个标量组成,分别是[latex]x_{1}, x_{2}, …, x_{n}[/latex],向量[latex]\vec{w}[/latex]也是由n个标量组成,可以看成与[latex]\vec{x}[/latex]一一对应的权重。另外,b可以改写成[latex]w_{0}x_{0}[/latex],其中[latex]w_{0}=b[/latex],[latex]x_{0}=1[/latex]。如此,原先的n维度就成了n+1维度,上面的条件概率分布可以改写成:

[latex]
P(Y=1|\vec{x}) = \frac{e^{\vec{w}\vec{x}}}{1+e^{\vec{w}\vec{x}}}, \\
P(Y=0|\vec{x}) = \frac{1}{1+e^{\vec{w}\vec{x}}}
[/latex]

由于:
[latex]
ln \frac{P(Y=1|\vec{x})}{P(Y=0|\vec{x})} = \vec{w}\vec{x}
[/latex]

如果已知[latex]\vec{w}[/latex],上式的计算结果若大于0,则认为向量[latex]\vec{x}[/latex]属于类1,否则属于类0.

现在的问题是,根据已有的数据,如何求[latex]\vec{w}[/latex]?答案是最大似然估计。

设[latex]P(Y=1|\vec{x})=\pi(\vec{x})[/latex],则[latex]P(Y=0|\vec{x})=1-\pi(\vec{x})[/latex],似然函数是:

[latex]
\prod_{i=1}^{N}[\pi(\vec{x}_{i})]^{y_{i}} [1-\pi(\vec{x}_{i})] ^{1-y_{i}}
[/latex]

要求使得似然函数达到最大值的[latex]\vec{w}[/latex],可以处理等价的对数似然函数是:

[latex]
L(\vec{w}) = ln(\prod_{i=1}^{N}[\pi(x_{i})]^{y_{i}} [1-\pi(x_{i})] ^{1-y_{i}}) \\
= … \\
= \sum_{i=1}^{N}[y_{i}(\vec{w}\cdot x_{i}) - ln(1+e^{\vec{w}\cdot x_{i}})]
[/latex]

当[latex]L(\vec{w})[/latex]达到最大值时候的[latex]\vec{w}[/latex]的值便是参数[latex]\vec{w}[/latex]的估计值,一般记做[latex]\widehat{w}[/latex]。

要求这个估计值,一般选择梯度上升/下降法、拟牛顿法等优化方法。梯度下降法,在梯度下降法有介绍。

多项逻辑斯蒂回归


多项逻辑斯蒂回归,multi-nominal logistic regression。

二项逻辑斯蒂回归适合于二类问题,针对多类问题,可以使用多项逻辑斯蒂回归模型。这个模型只是对二项逻辑斯蒂回归模型进行了拓展,具体可以参考Multinomial logistic regression、李航的《统计学习方法》第6章等内容。

练练手


matlab提供了逻辑斯蒂回归的工具,分别是mnrfit和mnrval。下面是一个示例:

x1 = [1,2]; y1 = 1;
x2 = [2,1]; y2 = 1;
x3 = [1,0]; y3 = 1;
x4 = [4,5]; y4 = 2;
x5 = [5,6]; y5 = 2;
x6 = [5,4]; y6 = 2;

X = [x1; x2; x3; x4; x5; x6];
Y = [y1; y2; y3; y4; y5; y6];

weight = mnrfit(X, Y);

scores = mnrval(weight, [6,1]);

矩阵X代表训练集,一行是一个样本;向量Y代表样本的标号,与X中的样本一一对应。

mnrfit()用来对数据进行逻辑斯蒂回归训练,weight就是上文提到的[latex]\vec{w}[/latex],其结果是:

>> weight

weight =

   34.8490
   -6.1497
   -5.4667

mnrval()函数用来预测新样本的标号,对于样本[6,1],scores的值为:

>> scores

scores =

    0.0005    0.9995

这意味着[6,1]属于类别2的概率是0.9995,这个样本应该划分到类别2中。

我们手动算一下属于类别2的概率:

>> 34.8490 -6.1497*6 -5.4667

ans =

   -7.5159

>> 1/(1+exp(ans))

ans =

    0.9995

更多资料


《统计学习方法》 李航
似然函数
Multinomial logistic regression
Logistic Regression 之基础知识准备

( 完 )