Logistic Regression Problem

考虑这样的情形:在医院中医生需要根据病人的情况,对其接下来患心脏病的概率作出预测,给出患病的概率。这种情况不是简单的二元分类,也不是线性回归,因为其输出的值是一个概率,处于 0~1 之间。

这种问题适合使用 Logistic Regression ,其学习流程如下:

  • 有时称之为“soft”二元分类,其目标函数为:

Why don't translate it as "逻辑回归"?

周志华西瓜书(Page 58)上指出,中文的逻辑与此处的 logistic 含义相去甚远,并且在这个算法中取对数操作占据了很重要的地位,因此建议称之为“对数几率回归”,或者干脆不译。

Feature of Data

Logistic Regression 的训练数据比较难得,因为我们无法获取以概率标好的样本,因为我们只能知道一个病人是否患了心脏病,而不是知道其患病概率:

  • 实际的数据是有噪音的,因为高概率患病的人实际上并不一定患病,低概率患病的人却有可能患病,这可以看作是一种服从正态分布的采样。

Logistic Function

对于 Logistic Regression ,其输入样本的特征向量为

  • 为各维分配权重后相乘,可以得到一个分值 ,如果能够将结果 映射到 区间内,就得到了概率;
  • 实现这一映射的函数称为 Logistic Function ,它的形式是 ,这是一个光滑的单调递增的S 形的(sigmoid)函数:
  • 可以看出,这个函数在 较大时变化平缓,而在 时变化剧烈,函数关于 对称,因此有

另外,我们考虑 ,则取对数后有 ,如果把 看作 为正例的可能性,则 就是 为反例的可能性, 就是 作为正例的相对可能性,称为几率(odds),取对数后就能化为线性关系,这就是西瓜书中认为它应该叫作对数几率的由来;不过这里林老师没有提及,仅作补充了解

综合起来,我们对 Logistic Regression 的假设为 ,它是对目标函数 的近似。

练习:理解 Logistic Regression 与二元分类

Logistic Regression Error

回想一下学过的三种线性模型,它们的 scoring function 都是一样的: ,分析三者的特点我们尝试推导 Logistic Regression 的错误估计

Logistic Regression 的目标函数为 ,写成目标分布的形式,等价于

Cross-Entropy

考虑这样的样本数据: ,要使用目标函数生成这样的数据,其概率(probability)为

,类似的,我们的假设 要同样生成这样的数据,其可能性(likelihood)为

,因此如果假设与目标接近,那么应有

likelihood 翻译

大陆概率论课本中将 likelihood 通常翻译为“似然”。

目标函数 是理想的,因此其产生对应样本的概率是很大的,因此最佳估计 g 应当取自所有假设中可能性最高者: ,而对于 Logistic Regression 的假设函数 ,由其对称性可得:

,从而得知假设 的可能性与假设在每个样本上的结果的连乘成正比:

我们取所有 Logistic Regression 假设的最大者,即有

,以权重向量替换其中的假设 ,则得到

,对其取对数,得

,将 代入并增添一个取均值的操作(为了与之前的错误估计在形式上统一),得到

此时,我们称 cross-entropy error ,这就是 Logistic Regression 的错误估计函数。

练习:理解交叉熵错误估计

Gradient of Logistic Regression Error

接下来我们思考如何使 取得最小:

  • 思考之前的情况, 如果是连续、可微、凸的(矩阵的二阶导数形式如果是正定的,那么就是凸的),那么就很容易找到 ,此处自然是最小值点;
  • 因此对其求导:

但是,在令 时,并不像之前那么轻松:我们可以将 看作是对 的加权平均,要使其为零,有两种可能:

  1. 所有 ,回想 Logistic Function 的定义,此时相当于 ,这意味着每个 都与输入样本加权后的 是同号的,即输入样本 是线性可分的;但这种情况可遇而不可求😢
  2. 所以不得不求解 ,这又是一个非线性的方程,没法像线性回归那样一步登天地找到确切的解。于是,我们求助于 PLA 的思路:
    • PLA 中我们迭代地更新 ,其规则是自 起始,每轮修正一个错误: ,当不再犯错时就得到最佳近似 g
    • PLA 的思路是一种 iterative optimization approach ,我们下一部分讲的梯度下降法也是如此。

练习:理解样本对梯度的影响

  • 最小的 代表预测是错误的,而犯错在迭代式优化的方法里权重更高;

Gradient Descent

Understand Gradient

迭代式优化的步骤可以写作: ,对于 PLA ,这里的 来自于犯错,而对 Logistic Regression ,从梯度的视角来看,相当于从山顶(或山坡的某个高度)下降到山谷:

  • 代表着方向(单位向量), 代表着步长(通常为正),要找到 的最小值,通常使用贪心策略——每一步都走到当前最低处:
  • 不过这个形式仍然不是线性的,我们可以从微元的角度——每次都走一小步,则每一小步都是线性的——来近似成线性: ,这里 ,实际上是泰勒展开在高维中的应用;

因此最小的 可以通过贪心策略近似地转换为线性关系:

,要使其最小,则 方向相反,即

综合起来,梯度下降的迭代步骤就是,对足够小的

Fixing Learning Rate

现在来看看 的取值:

  • 显然它过小时梯度下降缓慢,过大时甚至可能出错,而最佳的方法应当是在梯度大时较大,梯度小时较小,动态地变化,即与 正相关,
  • 不妨记其相关比例为 ,则有 ,在 ML 中 称为 fixing learning rate .

因此,完整的 Logistic Regression Algorithm 的流程是这样: 0. 初始设置一个 ,每一轮迭代,都做如下步骤:

  1. 计算
  2. 每轮通过梯度下降法 进行更新,直到 或经历过足够多的迭代轮次
  3. 返回最后的 作为最佳估计 g

练习:理解 Logistic Regression 的迭代