Merge pull request #150 from chenyyx/master

修改 5.逻辑回归的文档
This commit is contained in:
Joy yx
2017-09-12 14:33:12 +08:00
committed by GitHub

View File

@@ -56,31 +56,15 @@ Sigmoid 函数的输入记为 z ,由下面公式得到:
▽f(w):代表沿着梯度变化的方向。
```
如果大家对上面的例子不理解,下面我们看一个比较容易理解的例子。
**Note:** 我们常听到的是梯度下降算法,它与这里的梯度上升算法是一样的,只是公式中的加法需要变成减法。因此,对应的公式可以写成
我们要做一个房屋价值的评估系统,一个房屋的价值来自很多地方,比如说面积、房间的数量(几室几厅)、地 段、朝向等等,这些影响房屋价值的变量被称为特征(feature)。我们用 X1X2..Xn 去描述 feature 里面的分量,比如 x1=房间的面积x2=房间的朝向,等等,我们可以做出一个估计函数:
![梯度下降迭代公式](../images/5.Logistic/LR_10.png)
![估计函数](../images/5.Logistic/LR_14.png)
梯度上升算法用来求函数的最大值,而梯度下降算法用来求函数的最小值。
θ 在这儿称为参数,在这儿的意思是调整 feature 中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。如果我们令 X0 = 1就可以用向量的方式来表示了
**如果大家对上面的例子不理解,下面我们看一个比较容易理解的例子。**
![估计函数的向量形式](../images/5.Logistic/LR_15.png)
我们要写的程序是创造一个机制来评估我们的 θ 是否比较好,所以说需要对我们做出的 h 函数进行评估,一般这个函数称为 损失函数 loss function 或者错误函数error function描述 h 函数 **不好** 的程度,我们这里把它写成 J 函数,如下:
![损失函数](../images/5.Logistic/LR_16.png)
这个错误估计函数是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数前面乘上的1/2是为了在求导的时候这个系数就不见了。
梯度下降法是按下面的流程进行的:
1首先对θ赋值这个值可以是随机的也可以让θ是一个全零的向量。
2改变θ的值使得J(θ)按梯度下降的方向进行减少。
为了更加清楚地介绍,我们可以看下面的图:
![梯度下降图_1](../images/5.Logistic/LR_17.png)
![梯度下降图_4](../images/5.Logistic/LR_20.png)
上图表示参数 θ 与误差函数 J(θ) 的关系图,红色的部分是表示 J(θ) 有着比较高的取值,我们需要的是,能够让 J(θ) 的值尽量的低。也就是深蓝色的部分。θ0θ1 表示 θ 向量的两个维度。
@@ -88,24 +72,9 @@ Sigmoid 函数的输入记为 z ,由下面公式得到:
然后我们将 θ 按照梯度下降的方向进行调整,就会使得 J(θ) 往更低的方向进行变化,如图所示,算法的结束将是在θ下降到无法继续下降为止。
![梯度下降图_2](../images/5.Logistic/LR_18.png)
当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,可能是下面的情况:
![梯度下降图_3](../images/5.Logistic/LR_19.png)
上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点。
我们再来整体看一下,刚才的例子的求解过程:
![梯度下降图_4](../images/5.Logistic/LR_20.png)
**Note:** 我们常听到的是梯度下降算法,它与这里的梯度上升算法是一样的,只是公式中的加法需要变成减法。因此,对应的公式可以写成
![梯度下降迭代公式](../images/5.Logistic/LR_10.png)
梯度上升算法用来求函数的最大值,而梯度下降算法用来求函数的最小值。
当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,如我们上图中的右边的梯度下降曲线,描述的是最终到达一个局部最小点,这是我们重新选择了一个初始点得到的。
看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点。
## Logistic 回归 原理