美文网首页
机器学习笔记-03-广义线性模型推导线性回归及逻辑回归

机器学习笔记-03-广义线性模型推导线性回归及逻辑回归

作者: 胡涂笔记 | 来源:发表于2019-08-19 14:28 被阅读0次

    本文我们讨论以下问题:

    1. 指数分布族
    2. 广义线性模型
    3. 利用广义线性模型构建线性回归
    4. 利用广义线性模型构建二分类逻辑回归(sigmoid)
    5. 利用广义线性模型构建多分类逻辑回归(softmax)
    6. 逻辑回归的极大似然估计和代价函数

    1. 广义线性模型(Generalized Linear Model)

    机器学习的目的是针对已有的样本进行建模,以便对新数据进行预测。
    而无论是线性回归还是逻辑回归,在满足一些假设前提下,我们都可以使用广义线性模型进行建模求解。

    1.1 指数分布族(Exponential Family)

    在开始讨论广义线性模型前,我们需要先看一下指数分布族的定义,以便理解后面涉及的内容。
    指数分布族就是指可以表示为特定指数形式的概率分布,形式如下:
    f_Y(y|\phi) = b(y)exp(\eta(\phi) \cdot T(y) - A(\phi))
    其中:

    1. \eta:该分布的自然参数(nature parameter),是概率分布参数\phi的函数;
    2. T(y):充分统计量(sufficient statistic),一般认为T(y) = y
    3. A(\phi):对数分割函数(log partition function),主要是为了使\sum p(y|\phi) = 1

    满足上面这个形式的概率分布都属于指数分布族。

    1.2 广义线性模型的定义

    接下来我们看构建广义线性模型需要满足的条件

    1. 目标估计概率分布属于指数分布族,估计值y服从指数分布族中的某个分布,即:(y|\eta) \sim ExponentialFamily(\eta);
    2. 线性预测因子\eta = \theta^Tx;
    3. 对目标的估计等于概率分布的期望h(x;\theta) = E(y) = \mu

    我们假设目标估计(针对单个样本)服从某个概率分布,对于不同的模型参数得到的估计值,能够通过此概率分布的概率密度函数在估计值处的取值作为所取模型参数的似然,因而可以很方便进行极大似然估计求解参数;
    第二点容易理解,即自然参数\eta与输入x满足线性关系;
    既然我们假设估计值服从某个概率分布,回归拟合的目标自然是这个分布的期望,从而就可以确定模型需要拟合的函数。

    在维基百科上,第三点描述为:链接函数(Link function)g使得E(y) = \mu = g^{-1}(\eta)
    链接函数在这里链接的是线性预测因子和概率分布的期望,原因是因为线性预测因子是线性的,但是概率分布的期望可能不是线性的,所以需要将其转换为线性才能建立对应的模型。

    比如Y和X原本是指数关系,但是给Y取对数之后,logY和X就是线性关系,所以就可以建立对应的线性模型,这也是GLM的核心,这里的log就是链接函数。

    2. 广义线性模型构建线性回归

    对于线性回归,针对某个样本,真实值为y,我们假设估计值\hat{y}服从高斯分布:\hat{y} \sim N(y,\sigma^2)

    稍微扯远一点理解下:对于特定参数的取值,必然有些样本的估计值和真实值之间存在误差;
    我们希望回归所有样本,当然是误差为0最佳,所以假设所有样本上估计值和真实值的误差服从均值为零的正态分布,是符合回归的思想的。

    下面我们将高斯分布写成指数分布族形式,为了方便,假设方差已知且\sigma = 1:
    \begin{align*} N(\mu,1) & = \frac{1}{\sqrt{2\pi}} exp\left( - \frac{1}{2}(y-\mu)^2\right) \\ & = \frac{1}{\sqrt{2\pi}} exp\left(-\frac{1}{2}y^2 -\frac{1}{2}\mu^2 + \mu y\right) \\ & = \frac{1}{\sqrt{2\pi}} exp\left(-\frac{1}{2}y^2\right) exp\left(\mu y - \frac{1}{2} \mu^2\right) \end{align*}
    因此:
    \begin{align*} \eta & = \mu \\ b(y) & = \frac{1}{\sqrt{2\pi}} exp\left(-\frac{1}{2}y^2\right) \\ T(y) & = y \\ a(\mu) & = \frac{1}{2} \mu^2 \end{align*}
    所以,在线性回归中,我们需要拟合的模型函数就是:
    h_\theta(x) = E(y) = \mu = \eta = \theta^Tx
    在这里链接函数为恒等函数:\eta = \mu

    3. 广义线性模型构建逻辑回归

    对于逻辑回归,就是针对分类问题进行建模,简单二分类我们可以假设估计值服从伯努利(Bernoulli)分布:
    \begin{align*} p(y|\phi) & = \phi^y(1 - \phi)^{1 - y} \\ & = exp(ylog\phi + (1 - y)log(1 - \phi)) \\ & = exp((log(\frac{\phi}{1 - \phi}))y - (-log(1 - \phi))) \end{align*}
    因此:
    \begin{align*} \eta &= log(\frac{\phi}{1 - \phi}) \\ b(y) &= 1 \\ T(y) &= y \\ a(\phi) &= -log(1 - \phi) \end{align*}
    伯努利分布的期望是E(y) = 1 * \phi + 0 * (1 - \phi) = \phi,所以有:
    h_\theta(x) = E(y) = \phi = \frac{1}{1 + e^{-\eta}} = \frac{1}{1 + e^{-\theta^Tx}}
    这就是逻辑回归需要拟合的函数,也是机器学习中最常用的激活函数之一,sigmoid函数。
    此时的链接函数是:log(\frac{\phi}{1 - \phi}),即常用的logit变换

    图1 Logit变换
    Odds和Logit(P)的函数图形如下:
    图2 概率P和Odds、Logit之间的关系
    直观上看,因为伯努利分布的取值范围是[0, 1],而的取值范围却是(-∞, +∞),经过Logit变换之后,将概率也映射到了(-∞, +∞),所以就可以建模了。

    4. 广义线性模型构建多分类模型

    对于多分类,我们就采用多项式分布进行建模。
    假设y有多个分类y \in \{1,2,...,k\};每种分类对应的概率依次为\phi_1,\phi_2,...,\phi_k
    下面先引入T(y),它是一个k维的向量,如下:

    再引入指示函数I,令I(true) = 1, I(false) = 0,则T(y)的某个元素可以表示为:
    T(y)_i = I(y = i)

    因为概率和为1,有\phi_k = 1 - \sum_{i = 1}^{k - 1} \phi_i,所以可以少用一个参数,用k-1维的向量表示,T_k为全零;T(y)_k = 1 - \sum_{i = 1}^{k - 1} T(y)_i,下面的推导也将会用到此技巧。

    所以可以得到每个类别的期望:
    E[T(y)_i] = \sum_{i = 1}^{k}T(y)_i \cdot \phi_i = I(y = i) \cdot \phi_i = \phi_i
    将其表示为指数分布族形式:
    \begin{align*} p(y|\phi) &= \phi_1^{I(y = 1)}\phi_2^{I(y = 2)}...\phi_k^{I(y = k)} \\ &= \phi_1^{I(y = 1)}\phi_2^{I(y = 2)}...\phi_k^{1 - \sum_{i = 1}^{ k - 1} I(y = i)} \\ &= \phi_1^{T(y)_1}\phi_2^{T(y)_2}...\phi_k^{1 - \sum_{i = 1}^{ k - 1} T(y)_i} \\ &= exp(T(y)_1log(\phi_1) + T(y)_2log(\phi_2) + ... + (1 - \sum_{i = 1}^{ k - 1} T(y)_i)log(\phi_k)) \\ &= exp(T(y)_1log(\phi_1/\phi_k) + T(y)_2log(\phi_2/\phi_k) + ... + T(y)_{k-1}log(\phi_{k-1}/\phi_k) + log(\phi_k)) \end{align*}
    注意,对于T(y)_{k},其对应结果为0,可以令\eta_k = log(1) = log(\phi_k/\phi_k)
    所以可以得到\eta为:
    \begin{bmatrix} log(\phi_1 / \phi_k) \\ log(\phi_2 / \phi_k) \\ \vdots \\ log(\phi_{k} / \phi_k)\\ \end{bmatrix}
    因而有:
    \begin{align*} \eta_i &= log(\phi_i/\phi_k)\Rightarrow \phi_i = \phi_k e^{\eta_i} \\ \sum_{i = 1}^{k} \phi_i &= 1 \Rightarrow \phi_k = \frac{1}{\sum_{i = 1}^{k}e^{\eta_i}} \\ \phi_i &= \frac{e^{\eta_i}}{\sum_{i = 1}^{k}e^{\eta_i}} \end{align*}
    所以我们就可以得到多分类模型:
    \begin{align*} h_\theta(x) &= E[T(y)|x;\theta] \\ &= \begin{bmatrix} \phi_1\\ \phi_2\\ \vdots\\ \phi_k\\ \end{bmatrix} \\ & = \begin{bmatrix} \frac{exp(\theta_1^Tx)}{\sum_{i = 1}^{k}exp(\theta_i^Tx)}\\ \frac{exp(\theta_2^Tx)}{\sum_{i = 1}^{k}exp(\theta_i^Tx)}\\ \vdots\\ \frac{exp(\theta_k^Tx)}{\sum_{i = 1}^{k}exp(\theta_i^Tx)}\\ \end{bmatrix} \end{align*}

    5. 逻辑回归的似然估计

    对于二分类,利用其概率密度函数估计似然性,故其似然函数是:
    L(\theta | y) = (h_\theta(x))^y (1 - h_\theta(x))^{1 - y}
    对于m个样本,联合似然函数为:
    \begin{align*} L(\theta|Y) & = P(h_\theta(x^{(1)}), h_\theta(x^{(2)}), ... , h_\theta(x^{(m)})) \\ & = \sum_{i = 1}^{m}[(h_\theta(x^{(i)}))^{y^{(i)}}(1 - h_\theta(x^{(i)}))^{1 - y^{(i)}}] \end{align*}
    求解此函数取最大值时的参数即为逻辑回归模型的极大似然估计。
    在机器学习中,我们将其转化为最小值问题便于运用梯度下降等求解方法,取对数,取反,求平均,即逻辑回归的代价函数:
    J(\theta) = - \frac{1}{m} \sum_{i = 1}^{m}[y^{(i)}log(h_\theta(x^{(i)})) + (1 - y^{(i)})log(1 - h_\theta(x^{(i)}))]
    对于多分类,是类似的(m个样本,k个分类):
    J(\theta) = - \frac{1}{m} \sum_{i = 1}^{m}\sum_{c = 1}^{k} sign(y^{(i)} = c)log(\frac{exp(\theta_c^T x^{(i)})}{\sum_{l = 1}^{k}exp(\theta_l^T x^{(i)})})

    6. 总结

    1. 指数分布族即符合某一形式的一族概率分布,常见的正态分布、伯努利分布、泊松分布等;
    2. 构建广义线性模型即假设模型的预估值服从某一指数分布族的概率分布,找到合适的链接函数将此概率分布的期望和广义线性模型的线性预测因子建立线性关系;
    3. 通过假设线性回归预估值服从正态分布,逻辑回归服从伯努利分布或多项式分布,就可以推导出对应的预测函数(或者就叫模型,Andrew Ng的课程中称为Hypothesis);
    4. 利用极大似然估计可以很容易确定模型求解的优化问题,简单转换就可以得到机器学习中采用的代价函数,然后利用梯度下降等手段进行求解。

    2019-08-16

    相关文章

      网友评论

          本文标题:机器学习笔记-03-广义线性模型推导线性回归及逻辑回归

          本文链接:https://www.haomeiwen.com/subject/pdctsctx.html