机器学习基石笔记10——机器可以怎样学习(2)
Lecture:Logistic Regression
10.1 Logistic Regression Problem
图 10-1
如果二元分类算法来分析病人的心脏病,输出空间是 {-1, +1}。
图 10-2
但是,医生不知道心脏病会在什么时候发作,也不能告诉病人是有心脏病或者是没有心脏病。最好的是告诉病人患病的概率
我们拿到很多组用户数组,用户数据都是确定性的答案即某人心脏病发作过或者某人心脏病从未发作过(可能是时候未到,或者他就是很健康的人)。用户数据中标签只会是 0 或者 1, 但是我们希望拿到的数据的是某一组数据以及对应的患病概率Question1。获取的数据和我们想要的有很大的区别,如图 10-3 所示。下面我们将采用 logistic 回归来解决这个问题
图 10-3
首先,用 w 获得feature 的加权和 score(复杂如 kernel logistic regression 可能就不是 w 和 feature 加权和就可以了吧)。用 Logistic Regression 来将 score 转化为概率
图 10-4
图 10-5 逻辑回归和 sigmod 函数
logistic regression --- smooth、monitonic、sigmoid function of s
logistic regression 通常的表达式如公式 10-1 所示
$$\mathcal{h}(x) = \frac{1}{1+exp(-w^Tx)} $$
公式 10-1
10.2 Logistic Regression Error
现在我们拿 logistic regression 来对照一下之前学习的几个模型
图 10-6 线性模型和 logistic 回归
可以看出都是 hypothesis 函数作用线性组和的特征(后续的机器学习技法课程,林老师把这些都统称为 feature 转换)
现在我们来思考如何 minize Ein
图 10-7 数据集分布
出现数据集 D 的概率为:
$$P(\mathcal{D}) = \mathcal{P}(x_{1})\mathcal{P}(o|x_{1}) * \mathcal{P}(x_{2})\mathcal{P}(*|x_{2}) \ldots \mathcal{P}(x_{N})\mathcal{P}(*|x_{N})$$
$$ \mathcal{P}(y|x) = \left\{ \begin{array}{rcl} f(x) & \mbox{for}& y=+1 \\ 1 - f(x) & \mbox{for} & y = -1 \end{array}\right. $$
$$P(\mathcal{D}) = \mathcal{P}(x_{1})\mathcal{P}(o|x_{1}) * \mathcal{P}(x_{2})(1 - f(x_{2})) \ldots \mathcal{P}(x_{N})(1 - f(x_{N})$$
$$1 - h(x) = h(-x)$$
结合以上的几个公式,可以得出
$$ likelihood(\mathcal{h}) \varpropto \Pi\mathcal{h}(y_{n}x_{n})$$
图 10-8 采用最大似然估计来计算 g
连乘不容易求,用 log 函数将连乘变成连加。最终的公式如图 10-9 所示
图 10-9
10.3 Gradient of Logistic Regression Error
图 10-10
图 10-11
Ein 凸函数,在导数为 0 的地方取到极值
调过对 PLA 迭代的讨论,杜少的 blog 有很详细的讨论
10.4 Gradient Descent
但是图 10-11 中 WT 不容易求出来,我们采用 iteration 的方法来求出 WTbest。
我们设 W的初值为 (w1, w2, …, wn ), stepsize η 足够小, 对 Ein 做 taylor 展开得到如图 10-12 所示的结论。
图 10-12
图 10-13
从图 10-13 来看,我们还需要知道 η 和 v 的值。因为 η 是我们设定的,只需要考虑 v 的取值。因为 v 是单位向量,为了梯度下降最快, v 的取值应该是如图 10-14 所示.。
图 10-14
现在来讨论一下 η 的应该取什么值才合适, 从图 10-15 中可以看出 η 的值若太小则计算太慢,η 过大则计算时会发生震荡。最好的 η 应该要根据当前的梯度来取,如下面的公式所示
图 10-15
$$\eta \propto \Vert \nabla E_{in}(W_{t})\Vert $$
我们进行一次如图 10-16 所示的操作得到下面的公式Question2
图 10-16
$$ W_{t+1} = W_{t} -\eta \nabla E_{in}(W_{t})$$
图 10-17
现在,我们可以进行如图 10-17 所示的计算过程来计算出我们所需的 W
最后贴上本节 conclusion 截图
图 10-18
题外话:只让自己看懂~~
Questions1:假设采集的 feature 和 label 间有个概率关系,然后作了许多的数学公式推导。最后用似然估计来得到模型参数,但是不能确定 feature 和 label 有概率关系?另外训练集合的不一定支撑后续的计算?或许还有重要的隐变量没有被挖出来?也不知道如何做 feature transformer
只要样本数据足够大,就能得出 feature 和 label 分布关系,feature 可能和 label 没有任何关系(如果 feature 是取自 mysql 中自增 id)。
图 Q1-1 交叉熵错误
有关交叉熵的概念可以看知乎话题如何通俗的解释交叉熵与相对熵? 和 为什么交叉熵(cross-entropy)可以用于计算代价? 交叉熵可以用来度量训练集中的数据分布和模型分布中的差异,同时图 Q1 中的公式也是一步步推导出来。数学给了它形体,信息论给了它灵魂 (不知道谁说的)
图 Q1-1 kernel logistic regression
如果图 Q1-1 所示, 对于复杂情况,用 kernel 做了 feature transform 后,使用 logistic regression
T1. 不会对矩阵求导,暂不做深究
Question2: 我们要大费周章地获取到那个公式? 只是了解 η 和 v 的意义?
T2. 有的书籍是从其它点切入到 logistic regression 的讨论,找个时间总结一下。那些书籍从 sigmoid 函数不可导,所以需要一个可导且计算 loss 结果接近的函数。借此引出了 logistic regression (这种方式有点难解释清楚交叉熵等概念)