这是机器学习第二章第一节:Classification(分类) and Logistic regression model(逻辑回归模型)
第一章中介绍了机器学习中基于监督式学习(Supervised learning)下的线性回归(Linear regression)模型,根据一组连续的数据来判断任意给定新的一个数据对应的结果。在第二章中我们将学习Supervised learning下的另一个模型,逻辑回归模型(Logistic/Sigmoid regression model),即一组数据被分为不同的类别,是不连续的。
通过这一节的学习将会学习一个新的函数Logistic/Sigmoid function,并了解在Classification模型中的Hypothesis function和Cost function:
函数2.1.1-Logistic/Sigmoid function:\(g(z) = \frac{1}{1+e^{-z}}\)
函数2.1.2-Hypothesis(L):\(h_\theta(X) = g(\theta^Tx)\) (\(z = \theta^Tx\))
函数2.1.3-Cost function(L):\(\displaystyle J(\theta) = -\frac{1}{m} \sum_{i=1}^{m}\left [ y^{(i)}\log(h_\theta(x^{(i)})) + (1-y^{(i)}) \log(1-h_\theta(x^{(i)})) \right ] \)
(用(L)代表在Logistic regression model下的函数模型)
在本章的开始,首先介绍一下Classification的概念:与上一章的Linear regression不同,解决Classification problem希望得到一些独立的值(e.g. 我们想知道屋子里的灯是否是开着的,那么就可以用1表示打开,0表示未打开;我们想知道今天是星期几,就可以用数字1到7表示一个星期的七天)。 在这一章的学习中,我们将仅涉及到binary classification problem,即分类结果只有两种:0或1。
在了解了其概念之后,我们就想得到一个hypothesis function,无论它的输入是什么,输出都是0或1。在思考是否有这样一个函数之前,我们不妨还用之前的假设函数。为了达到同样的效果,我们可以设定一个threshold(阈值),将结果大于threshold的部分输出为1,比其小的部分规定其输出为0,如下图所示:
我们会发现,使用这种方法似乎也有很好的效果。不过当我们的数据如下图所示时,就会出现问题:
如图所示,我们的例子中多了一个较为“极端”的数据,它对Hypothesis function(蓝色)产生了较大影响,从而使结果出现了偏差。
因此,我们需要一个合适的函数,避免上述问题的产生,这就引出了函数2.1.1:\(g(z) = \frac{1}{1+e^{-z}}\),其图像如下所示:
我们发现,这一函数很好地将输出结果保持在\((0,1)\)之间,因此避免了当输出大于1或小于0时无法解释其含义。此时我们定义\(h_\theta(x) = g(\theta^Tx\),那么Hypothesis function的结果则在\((0,1)\)之间。且我们可以将\(h_\theta(x)\)的结果理解为输出为1的概率,例如\(h_\theta(x) = 0.7\)告诉我们有\(70%\)的概率输出结果为1(与此同时,它也说明了有\(30%\)的概率输出结果为0)。
接下来我们就可以根据这一函数进行分类,由于Logistic function定义域在实数范围,且0点处刚好输出0.5,因此可定义:
\(h_\theta(x)\geq0.5\rightarrow y=1\)
\(h_\theta(x)<0.5\rightarrow y=0\)
我们仔细分析以上式子,其中\(h_\theta(x) = g(z)=g(\theta^Tx)\),即:
\(\theta^Tx\geq0\Rightarrow y=1\)
\(\theta^Tx<0\Rightarrow y=0\)
有了Hypothesis function就可以写出Cost function了,不过,如果根据第一章中的函数1.1.2计算Cost function时,我们会得到一个波浪形的图像(有许多极小值),而无法计算最小值,我们希望得到一个只存在一个极小值也就是最小值的函数,又叫convex function,如下图所示:
因此我们同样需要改变Cost function的计算方法。我们将原Cost function的\(\frac{1}{2}\)移入求和部分中,如下所示:
\(\displaystyle J(\theta) = \frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2\)
并定义:\(\mbox{Cost}(h_\theta(x),y) = \frac{1}{2}(h_\theta(x)-y)^2\) (即定义Cost function求和内容,且去掉角标)
non-convex图像的产生即根据以上算法。在Logistic regression Cost function中,我们按照如下定义:
\(\mbox{Cost}(h_\theta(x),y)\left\{\begin{matrix}-\log(h_\theta(x)) & \mbox{if}\; y = 1\\ -\log(1-h_\theta(x)) & \mbox{if}\; y = 0\end{matrix}\right.\)
如上图所示,即当training set中\(y=1\)时,若计算得\(h_\theta(x)=1\),则对应\(\mbox{Cost} = 0\)。可以理解为,当实际情况为真时,若计算结果也为真,那么代价最小,为0,反之若计算结果为假,那么这时候代价就无穷大了。
同理对于training set中\(y=0\)的情况,若计算得\(h_\theta(x)=1\),则对应\(\mbox{Cost} \rightarrow +\infty \)。
我们再一次理解这一Cost function如下:
\(\mbox{Cost}(h_\theta(x),y) = 0 \mbox{ if } h_\theta(x) = y\)
\(\mbox{Cost}(h_\theta(x),y) \rightarrow \infty \mbox{ if } y = 0 \mbox{ and } h_\theta(x) \rightarrow 1\)
\(\mbox{Cost}(h_\theta(x),y) \rightarrow \infty \mbox{ if } y = 1 \mbox{ and } h_\theta(x) \rightarrow 0\)
这样我们就可以得到Cost function如下:
\(\displaystyle J(\theta) = \frac{1}{m}\sum_{i=1}^{m}\mbox{Cost}(h_\theta(x),y)\)
\(\mbox{Cost}(h_\theta(x),y)\left\{\begin{matrix}-\log(h_\theta(x)) & \mbox{if}\; y = 1\\ -\log(1-h_\theta(x)) & \mbox{if}\; y = 0\end{matrix}\right.\)
这时我们考虑用一种方法使这两种情况的式子合并成一个式子,如下所示:
\(\mbox{Cost}(h_\theta(x),y) = -y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))\)
即当\(y=1\)时,等式右边的第一项为零,当\(y=0\)时,等式右边的第一项为零,符合合并前的计算公式。由此我们便可以得到最终在Logistic regression model下的Cost function为:
\(\displaystyle J(\theta) = -\frac{1}{m} \sum_{i=1}^{m}\left [ y^{(i)}\log(h_\theta(x^{(i)})) + (1-y^{(i)}) \log(1-h_\theta(x^{(i)})) \right ] \)
最后,对于多个分类的情况,如下图所示:
对于有\(n\)个分类的情况,我们将其分为\(n\)种二元分类的模型(即将左图变成右边三个图),然后计算右图中对应分类的\(h_\theta^{(i)}(x)\)的值(\(i \in (1,n)\)),并选取其中最大的值对应的部分作为分类的结果。
end~