线性模型(02)广义线性模型--分类

摘要:线性模型不仅仅只有线性回归这样直观的模型,也有广义上的线性模型,它是以线性回归的结果作为模型的自变量。这样的模型比较典型的代表就是Logistic回归和Softmax回归,两者都应用于分类(有监督学习)。其中Logistic回归是用来二分类,Softmax用来做多分类。

目录

 Logistic回归

sigmod函数

Logistic回归参数估计

对数线性模型

几率

Logistic回归的损失函数

Softmax回归

在线性模型(1)中主要讨论了线性回归这种直观的线性模型,并且在某些时候,我们会从主观上感觉线性回归也可以用作分类,比如样本均匀的分布在线性模型的两侧,但事实并非如此。如图1所示,两个图中紫色线表示线性回归的结果,绿色表示Logistic回归的结果。很容易看出来,当同一类样本比较聚集的时候,线性回归也可以做到分类的效果,但是也可以看到图1右图,当部分样本分布在图像右下角时候,线性回归必然会受到这些样本的影响,从而向一侧偏离,不过Logistic回归的结果仍旧稳定。

线性模型(02)广义线性模型--分类_第1张图片 图1

 Logistic回归

sigmod函数

sigmod函数的图像(图2)像个S,所以就称呼为sigmod函数,或者也直接叫Logistic函数。

线性模型(02)广义线性模型--分类_第2张图片 图2

 首先不加证明的给出一个函数:

g(z)=\frac{1}{1+e^{-z}}

z=\theta^Tx,这是线性回归的基本形式,这样带入上式,就得到了Logistic函数:

h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}

补充一点这个函数的数学特性,这个函数有个很好的性质,尝试对其求导:

g^{'}(x)=(\frac{1}{1+e^{-x}})^{'}=\frac{e^{-x}}{(1+e^{-x})^2}

=\frac{1}{1+e^{-x}}\cdot\frac{e^{-x}}{1+e^{-x}}=\frac{1}{1+e^{-x}}\cdot(1-\frac{1}{1+e^{-x}})

=g(x)\cdot(1-g(x))

Logistic回归参数估计

h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}

那么如何估算Logistic回归的参数\theta呢?似然对数+梯度下降,和线性回归的方式相似的做法,这里就看出来,其实对于大多数机器学习的模型来说,似然对数和梯度下降是常用的估算参数的方式。

既然是一个二分类问题,那么我们假设样本服从二项分布,样本类别标记用{0,1}表示:

         y               0             1
       P              p           1-p

h_\theta(x)的值域为(0,1),所以可以做出这样的假定:

P(y=1|x;\theta)=h_\theta(x)

P(y=0|x;\theta)=1-h_\theta(x)

也就是直接用logistic回归值来表示新示例发生的概率,这样就可以将其进行分类,由于y \subseteq (0,1),可将上面俩式子合并成:

p(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

于是似然函数:

L(\theta)=p(\vec{y}|X;\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)=\prod_{i=1}^{m}(h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}}

取对数得到对数似然函数:

l(\theta)=logL(\theta)=\sum_{i=1}^{m}y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))

之后让这个对数似然对\theta求偏导,

\frac{\partial l(\theta)}{\partial \theta_j}=\sum_{i=1}^{m}(\frac{y^{(i)}}{h(x^{(i)})}-\frac{1-y^{(i)}}{1-h(x^{(i)})})\cdot\frac{\partial h(x^{(i)})}{\partial \theta_j}

=\sum_{i=1}^{m}(\frac{y^{(i)}}{g(\theta^Tx^{(i)})}-\frac{1-y^{(i)}}{1-g(\theta^Tx^{(i)})})\cdot\frac{\partial g(\theta^Tx^{(i)})}{\partial \theta_j}

=\sum_{i=1}^{m}(\frac{y^{(i)}}{g(\theta^Tx^{(i)})}-\frac{1-y^{(i)}}{1-g(\theta^Tx^{(i)})})\cdot g(\theta^Tx^{(i)})\cdot(1-g(\theta^Tx^{(i)}))\cdot\frac{\partial \theta^Tx^{(i)}}{\partial \theta_j}

=\sum_{i=1}^{m}(y^{(i)}(1-g(\theta^Tx^{(i)})))-(1-y^{(i)})g(\theta^Tx^{(i)})x_{j}^{(i)}

=\sum_{i=1}^{m}(y^{(i)}-g(\theta^Tx^{(i)}))\cdot x_{j}^{(i)}

为什么要对其求偏导,目的就是为了接下来能够梯度下降:

\theta_j:=\theta_j+\alpha (y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)}

这个结果和线性模型(1)线性回归的结论在形式上是一致的,这也变相地体现了Logistic回归广义线性的性质,像这种相同的形式还有很多,线性回归假设样本服从高斯分布,Logistic回归样本服从二项分布,如果有某个样本服从泊松分布,那么对应的泊松回归的梯度下降也是如此的形式,有个称呼统称它们为指数族分布。

补充:指数族概念的目的,是为了说明广义线性模型Generalized Linear Models,凡是符合指数族分布的随机变量,都可以用GLM来分析(高斯分布、二项分布、泊松分布、伯努利分布)

对数线性模型

几率

  • 一个事件的几率(odds),是指该事件发生的概率与该事件不发生的概率的比值。

之前提到Logistic函数的基本形式h_\theta(x)可以表示事件发生的概率

P(y=1|x;\theta)=h_\theta(x)

P(y=0|x;\theta)=1-h_\theta(x)

那么这里的几率函数就是

it(p)=\frac{p}{1-p}=\frac{h_\theta(x)}{1-h_\theta(x)}

在这其实也可以有一个角度去理解Logistic回归的广义线性,既然有几率,那么提出一个概念--对数几率函数lnit

lnit(p)=ln{\frac{p}{1-p}}=ln{\frac{h_\theta(x)}{1-h_\theta(x)}}=ln(\frac{\frac{1}{1+e^{-\theta^Tx}}}{\frac{e^{-\theta^Tx}}{1+e^{-\theta^Tx}}})=\theta^Tx

我们一直说的概率其实就是线性回归的形式,在文章最开头我们不加证明的先给出了一个函数

g(z)=\frac{1}{1+e^{-z}}

到这里就清楚了,无论是先给出这个形式的函数,还是从几率的角度去看待,都可以去很好的理解GLM。

Logistic回归的损失函数

先声明,这里进行两种标记的推导,也就二分类的标记,y_i\in {(0,1)}y_i\in{(-1,1)},毫无疑问这两种表述对于二分类都没问题。之所以推两次,是为了之后的SVM,SVM和Logistic回归有着密切的关系。

(一)当y_i\in {(0,1)}

似然函数以及对数似然为:

L(\theta)=\prod_{i=1}^{m}p_i^{y_i}(1-p_i)^{1-y_i}

l(\theta)=\sum_{i=1}^{m}ln[p_i^{y_i}(1-p_i)^{1-y_i}]

p_i=\frac{1}{1+e^{-f_i}},则:

l(\theta)=\sum_{i=1}^{m}ln[(\frac{1}{1+e^{-f_i}})^{y_i}(\frac{1}{1+e^{f_i}})^{1-y_i}]

\hat{y_i}=\begin{cases} p_i & \text{ } y_i=1\\ 1-p & \text{ } y_i=0 \end{cases}

所以:

loss(y_i,\hat{y_i})=-l(\theta)=\sum_{i=1}^{m}[y_iln(1+e^{-f_i})+(1-y_i)ln(1+e^{f_i})]

(二)当y_i\in {(-1,1)}

似然函数以及对数似然为:

L(\theta)=\prod_{i=1}^{m}p_i^{(y_i+1)/2}(1-p_i)^{-(y_i-1)/2}

l(\theta)=\sum_{i=1}^{m}ln[p_i^{(y_i+1)/2}(1-p_i)^{-(y_i-1)/2}]

p_i=\frac{1}{1+e^{-f_i}},则:

l(\theta)=\sum_{i=1}^{m}ln[(\frac{1}{1+e^{-f_i}})^{(y_i+1)/2}(\frac{1}{1+e^{f_i}})^{-(y_i-1)/2}]

\hat{y_i}=\begin{cases} p_i & \text{ } y_i=1\\ 1-p & \text{ } y_i=-1 \end{cases}

所以:

loss(y_i,\hat{y_i})=-l(\theta)=\sum_{i=1}^{m}[\frac{1}{2}(y_i+1)ln(1+e^{-f_i})-\frac{1}{2}(y_i-1)ln(1+e^{f_i})]

=\begin{cases} \sum_{i=1}^{m}[ln(1+e^{-f_i})] & \text{ } y_i= 1\\ \sum_{i=1}^{m}[ln(1+e^{f_i})] & \text{ } y= -1 \end{cases}

=\sum_{i=1}^{m}[ln(1+e^{-y_i \cdot f_i})]

Softmax回归

写到这里,其实已经大概掌握了线性模型训练的套路了,概率--似然函数--对数似然--对参数求偏导--梯度下降,最后关于Softmax回归也是如此,它是用解决多分类问题的一种广义线性模型,分析的方式同样如此。但是值得分析的是soft-max,究竟为什么不是max。(待补充)

你可能感兴趣的:(机器学习)