Logistic Function
Logistic Function 针对某一类问题往往会比线性回归更加有效。如下图:
假如使用线性回归处理的话,针对离散值,如上图最右边一点,会导致线性函数向X轴正向倾斜,预测结果出现较大的改动。这个就不是一类很好的分类函数了,因为它对离散值敏感。
通过分析,我们可以知道它是一个二元问题。针对二元问题可以使用特殊的模型,如下:
这个Logistic Function或另称Sigmoid Function,与之前所说的线性回归方程最大的不同就在:\(0<=h_\theta(X)<=1\)。从曲线中也可以看出,它对之前提到的离散值不敏感,不容易出现过拟合的情况。
下面是Logistic Function的函数:
\[ g(z)=\frac{1}{1+e^{-z}} \]
Decision Boundary
这里记录Decision Boundary,即决策边界,算是一个新知识点。
个人的理解是,Decision Boundary存在于在分类问题中,即它用于划分类与类之间的分界线;而线性回归问题更偏向预测分析,这应该是两类问题最大的不同点。如下:
可以看到,\(\theta\)的值决定了边界的位置。对于非线性的分类问题,我们还可以通过增加\(\theta\)的维度来拟合。
从上图也可以看出,\(\theta\)的维度越高,它能拟合的形状越细腻。但也容易猜想到,它的维度越高,对计算量和数据量的要求也更高,同时也更容易出现过拟合的问题。
Cost Function
Logistic Regression问题中,对分类函数参数\(\theta\)的选择也是通过Cost Function最小化来实现的。但如果直接采用线性回归里的形式,就会出现多个局部最优点的问题:
为了避免出现这种情况,这里的Cost Function采用以下形式:
大概是因为代价函数是对数形式的,所以Logistics Regression又被翻译为对率回归,当然,它本质还是一个二元分类问题。
这里简要记录以下Logistics Function和Cost Function:
\[ J(\theta) = \frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)}), y^{(i)}) \]
\[ Cost(h_\theta(x), y) = -ylog(h_\theta(x)) - (1-y)log(1-h_\theta(x)) , y = (0, 1)\]
\[ h_\theta(x) = \frac{1}{1+e^{- \theta T x}} \]
其中第一个函数就是代价函数最小化所使用的梯度下降函数,形式上和线性回归问题大概类似。
Advanced Optimization
这里NG列举了其他方法来实现代价函数的最小化。他的建议是,尽可能地使用各工具包中的优化方法,而不是自己去写。最近也在学数值分析,确实一个好的优化方法在实现原来目标的情况下,可以减少大量运算时间和内存。