从 Linear Regression 到 Logistic Regression

给定二维样本数据集 (D = left{ (vec{x}_{1}, y_{1}), (vec{x}_{2}, y_{2}), ldots, (vec{x}_{n}, y_{n}) right}),其中 (vec{x}_{1}, ldots, vec{x}_{n} in X)(d) 维向量(即 (X) 的size 为 (n times d)), (y_{1}, ldots, y_{n} in Y)。我们希望得到一条直线 (Y = Xbeta + varepsilon) 来刻画 (X)(Y) 之间的一般关系,由于真实数据集存在随机项 (varepsilon_{i} sim N(0, sigma^{2})),一般情况下这条直线不可能精准地穿过所有的数据点,因此我们希望它尽可能地贴近所有的数据点。如何定义这个 “尽可能地贴近”?数学上来说,我们通过求最小化均方误差(MSE)来实现,即:


[S = mathop{argmin}_{beta} || Y - hat{Y}||^{2} = mathop{argmin}_{beta} || Y - X beta ||^{2} ]


注意到表达式中的 (X beta) 已经包含了直线的常数项。初学者可能会碰到的一个问题是,为什么上式中的最小化目标是 (|| Y - Xbeta ||^{2}),而不是 (|| Y - Xbeta - varepsilon||^{2})?原因是,直线 (Y = X beta + varepsilon) 是我们的 model ground truth,我们容忍随机变量 (varepsilon sim N(0, sigma^{2})) 作为误差存在,而误差作为随机项无法消除,是数据集本身的特性,并非是模型的问题。我们通过解以上最优化问题,能够得到一个最优参数 (beta^{*}),反过来我们将 (X) 代入得到的模型 (hat{Y} = X beta^{*}),此时的 (hat{Y}) 代表着预测值,它会与 ground truth (Y) 产生一个残差 (e = Y - hat{Y})。注意到 (e)(varepsilon) 在定义上是不同的,(varepsilon) 是理论模型中的随机变量,它是无法被描述为具体某个值的,而残差 (e) 则是针对一系列已观测的数据点根据线性回归模型求出的具体值。


上述最优化问题的偏导求解如下:


[begin{align*} frac{partial S}{partial beta} & = frac{partial ||Y - X beta||^{2}}{partial beta} \ & = frac{partial (Y - X beta)^{T} (Y - X beta)}{partial beta} \ & = -X^{T} (Y - X beta) + big[ (Y - X beta)^{T} (-X) big]^{T} \ & = -2 X^{T}(Y - X beta) end{align*} ]


(frac{partial S}{partial beta} = 0),即:


[begin{align*} & frac{partial S}{partial beta}= -2 X^{T} (Y - X beta) = 0 \ & implies X^{T} Y = X^{T} X beta \ & implies beta^{*} = (X^{T} X)^{-1} X^{T} Y end{align*} ]


因此,我们拟合出的直线 (hat{Y} = X beta) 可以直接写作:


[hat{Y} = X beta = X (X^{T} X)^{-1} X^{T} Y ]


Logistic Regression

这和 Logistic Regression 有何联系呢?Logistic Regression 是一个二分类模型,对于每一个 (vec{x} in X) 我们希望根据 (vec{x}) 得到其对应的 label (y in left{ 0, 1 right}),在离散空间上取值。一个思想是,我们设计一个中间函数 (g(z) in left{ 0, 1 right}),例如:


[g(z) = begin{cases} 0, qquad z leq 0 \ 1, qquad z > 0 end{cases} ]


如此,我们便将连续的 (z) 转换为二元取值 (g(z)),再采取类似的方法优化 (g) 中的参数,使得预测结果贴近真实的 (Y)。然而如上设计的 (g) 并不连续,故而不可微,这并不符合广义线性模型(GLM)的条件。我们希望这么一个中间函数 (g),它的取值在 ((0, 1)) 上,并且单调可微,因此便有了 sigmoid 函数的提出:


[sigma(z) = frac{1}{1 + e^{-z}} ]


不难判断出对于 (forall z in mathbb{R}: ~ sigma(z) in (0, 1)),且 (sigma(z))(mathbb{R}) 上单调递增且可微。我们令:


[begin{align*} & y = sigma(z) = frac{1}{1 + e^{-z}}\ & z = vec{w}^{T} vec{x} + b \ implies & y = frac{1}{1 + e^{-(vec{w}^{T} vec{x} + b)}} end{align*} ]


我们发现,对于输入任意的 (vec{x} in X),sigmoid 函数先将 (vec{x}) 转化为一个取值在 ((0, 1)) 上的标量。除此之外还有:


[begin{align*} & ln frac{y}{1-y} = ln big( e^{vec{w}^{T} vec{x} + b} big) = vec{w}^{T}vec{x} + b \ implies & ln frac{y}{1-y} = vec{w}^{T}vec{x} + b end{align*} ]


这样等式的右边又回到 Linear Regression 的简单结构。


Maximum Likelihood Estimation

我们会发现存在这么一个问题,即,数据集最终的 label 取值在 (left{ 0, 1 right}) 中,为离散值,而经由 sigmoid 计算得到的值却在 ((0, 1)) 间连续取值。这个问题的解决办法是,我们不再将 sigmoid 函数生成的值((y))视作 label,而是视作 “对于给定的 (vec{x}),其 label 为 (y=1)” 的概率,即:


[y = P(y=1 ~ | ~ vec{x}) \ ln frac{P(y=1 ~ | ~ vec{x})}{1 - P(y=1 ~ | ~ vec{x})} = ln frac{P(y=1 ~ | ~ vec{x})}{P(y=0 ~ | ~ vec{x})} = vec{w}^{T} vec{x} + b ]


注意到以上第一个式子中等式两边的 (y) 的含义并不相同,等式左侧的 (y) 代表着 “对于给定的 (vec{x}) 其 label 为 (1) 的概率”,而等式右边的 (y) 为真实 label (in left{ 0, 1 right})


我们会发现,由 total probability:(P(y=1 ~ | ~ vec{x}) + P(y=0 ~ | ~ vec{x}) = 1)(frac{P(y=1 ~ | ~ vec{x})}{P(y=0 ~ | ~ vec{x})})(P(y=1 ~ | ~ vec{x})) 较大((P(y=0 ~ | ~ vec{x})) 较小)时较大,极端情况下将趋于正无穷,对数值也将趋于正无穷;相反,在 (P(y = 1 ~ | ~ vec{x})) 较小((P(y=0 ~ | ~ vec{x})) 较小)时较小,极端情况下将趋于 (0),对数值将趋于负无穷。当模型无法判断对于一个 (vec{x}) 其 label 更偏向于 (0) 还是 (1) 时,此时 (P(y=1 ~ | ~ vec{x}) = P(y=0 ~ | ~ vec{x}) = 0.5),使得对数值为 (0)。因此,在这种假设下,当训练好的模型计算的 (vec{w}^{T} vec{x} + b > 0),模型将认为其 label 为 (1);相反,当 (vec{w}^{T} vec{x} + b < 0) 时模型认为其 label 为 (0)


在这种情况下,显然:


[begin{align*} & P(y=1 ~ | ~ vec{x}) = frac{1}{1 + e^{-(vec{w}^{T} vec{x} + b)}} = frac{e^{vec{w}^{T} vec{x} + b}}{1 + e^{vec{w}^{T} vec{x} + b}} \ & P(y=0 ~ | ~ vec{x}) = 1 - P(y=1 ~ | ~ vec{x}) = frac{1}{1 + e^{vec{w}^{T} vec{x} + b}} \ end{align*} ]


我们希望对于拥有真实 label (y_{i} = 1) 的所有 (vec{x}),模型得到的 (P(y = 1 ~ | ~ vec{x}; vec{w}, b)) 越大越好,即:


[quad prodlimits_{vec{x_{i}} ~ s.t. ~ y_{i}=1} P(y = 1 ~ | ~ vec{x_{i}}; vec{w}, b) ]


同理,对于拥有真实 label (y_{i} = 0) 的所有 (vec{x}),模型得到的 (P(y=0 ~ | ~ vec{x}; vec{w}, b)) 越大越好,即:


[prodlimits_{vec{x_{i}} ~ s.t. ~ y_{i}=0} P(y=0 ~ | ~ vec{x_{i}}; vec{w}, b) = prodlimits_{vec{x_{i}} ~ s.t. ~ y_{i}=0} Big(1 - P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b) Big) ]


如何将以上两个目标统一起来(将两个式子写入一个式子中,使得该式摆脱对下标 (y_{i}) 的依赖)呢?即,我们希望建立一个式子 (P(y = y_{i} ~ | ~ vec{x_{i}}; vec{w}, b)),表示对于任意 (vec{x_{i}} in X) 以及真实 label (y_{i} in left{ 0, 1 right}),模型预测成功((y = y_{i}))的概率。当这个综合表达式被建立后,我们便可以通过最大似然估计(MLE)求出在训练集上最优的参数 (vec{w}, b),即:


[max quad prodlimits_{i} P(y = y_{i} ~ | ~ vec{x_{i}}, vec{w}, b) ]


周志华的《机器学习》里提到这么一种构建方法:


[P(y_{i} ~ | ~ vec{x_{i}}; vec{w}, b) = y_{i} P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b) + (1 - y_{i}) P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b) ]


这样构建能够满足我们的目标,即:当 (y_{i} = 1) 时,(P(y_{i} ~ | ~ vec{x_{i}}; vec{w}, b) = P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b));当 (y_{i} = 0) 时,(P(y_{i} ~ | ~ vec{x_{i}}; vec{w}, b) = P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b))。但是,这样会使得 MLE 求解变得复杂:


[begin{align*} maxlimits_{vec{w}, b} L(vec{w}, b) & = maxlimits_{vec{w}, b} quad prodlimits_{i} big( y_{i} P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b) + (1 - y_{i}) P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b) big) \ & = maxlimits_{vec{w}, b} quad prodlimits_{i} big( y_{i} frac{e^{vec{w}^{T} vec{x} + b}}{1 + e^{vec{w}^{T} vec{x} + b}} + (1 - y_{i}) frac{1}{1 + e^{vec{w}^{T} vec{x} + b}} big) end{align*} ]


哪怕取对数似然:


[begin{align*} maxlimits_{vec{w}, b} l(vec{w}, b) & = maxlimits_{vec{w}, b} quad ln Big( prodlimits_{i} big( y_{i} P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b) + (1 - y_{i}) P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b) big) Big) \ & = maxlimits_{vec{w}, b} quad ln Big( prodlimits_{i} big( y_{i} frac{e^{vec{w}^{T} vec{x} + b}}{1 + e^{vec{w}^{T} vec{x} + b}} + (1 - y_{i}) frac{1}{1 + e^{vec{w}^{T} vec{x} + b}} big) Big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} ln big( y_{i} frac{e^{vec{w}^{T} vec{x} + b}}{1 + e^{vec{w}^{T} vec{x} + b}} + (1 - y_{i}) frac{1}{1 + e^{vec{w}^{T} vec{x} + b}} big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} ln frac{y_{i} e^{vec{w}^{T} vec{x} + b} + 1 - y_{i}}{1 + e^{vec{w}^{T} vec{x} + b}} \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} big( ln (y_{i} e^{vec{w}^{T} vec{x} + b} + 1 - y_{i}) - ln (1 + e^{vec{w}^{T} vec{x} + b}) big) end{align*} ]


并不能直接得到书中的目标结果:


[minlimits_{vec{w}, b} quad sumlimits_{i} big( -y_{i} (vec{w}^{T} vec{x} + b) + ln (1 + e^{vec{w}^{T} vec{x} + b}) big) ]


一个更好的 (P(y_{i} ~ | ~ vec{x_{i}}; vec{w}, b)) 设计方法是:


[P(y_{i} ~ | ~ vec{x_{i}}; vec{w}, b) = P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b)^{y_{i}} cdot P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b)^{1 - y_{i}} ]


这种形式也能满足我们上述的要求,并且我们对参数求解 MLE:


[begin{align*} maxlimits_{vec{w}, b} l(vec{w}, b) & = maxlimits_{vec{w}, b} quad ln prodlimits_{i} big( P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b)^{y_{i}} cdot P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b)^{1 - y_{i}} big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} ln big( P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b)^{y_{i}} cdot P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b)^{1 - y_{i}} big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} big( y_{i} ln P(y=1 ~ | ~ vec{x_{i}}; vec{w}, b) + (1 - y_{i}) ln P(y = 0 ~ | ~ vec{x_{i}}; vec{w}, b) big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} big( y_{i} ln frac{e^{vec{w}^{T} vec{x} + b}}{1 + e^{vec{w}^{T} vec{x} + b}} + (1 - y_{i}) ln frac{1}{1 + e^{vec{w}^{T} vec{x} + b}} big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} big( y_{i} (vec{w}^{T} vec{x} + b) - y_{i} ln (1 + e^{vec{w}^{T} vec{x} + b}) + (y_{i} - 1) ln (1 + e^{vec{w}^{T}vec{x} + b}) big) \ & = maxlimits_{vec{w}, b} quad sumlimits_{i} big( y_{i} (vec{w}^{T} vec{x} + b) - ln (1 + e^{vec{w}^{T} vec{x} + b}) big) \ & = minlimits_{vec{w}, b} quad sumlimits_{i} big( - y_{i} (vec{w}^{T} vec{x} + b) + ln (1 + e^{vec{w}^{T} vec{x} + b}) big) end{align*} ]


即为书中所求。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/chetianjian/p/17532510.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!