caozhenjun0 2016-09-25
如果了解了线性回归,那么对于逻辑回归,基本上同理,只是具体上有些差别。
对于预测结果是0,和1这样的应用,我们有时也叫分类(classification).
如果我们使用线性回归来处理这样的问题,那么会发现效果不是很好,而且很容易受到干扰。
这里,NG使用了“肿瘤预测”的案例来说明问题。
上图是使用线性回归来解决这个问题,我们很明显可以从中间划一条线来分割,左边的就是良性,右边的是恶性。也就是有个明显的肿瘤大小值来划分。这样似乎问题得到解决。假设又来一个数据。
这时,拟合的直线向右倾斜了,这样导致原本属于应该判定为恶性的肿瘤变成良性了。
实际上,这个新的数据,并未提供任何新的信息。
分析问题,那就是我们期望的结果是1或者0,但是线性回归给我们的假想函数h通常都是大于1或者小于0的,如果我们的假想函数h是 0 <=hθ(x)<=1, 那么对于分类问题,就可以使用概率来预测0或者1了。
这里找到的是一个神奇的函数,
很形象,s型的函数,这个函数表达的,也就是结果为1的一个可能的概率。
可以用概率 表示 h(x)=P(y=1|x;θ), 意思就是 给定x,参数θ,y=1的概率
这里如果是y=0的,那么就是1-P(y=1|x;θ),他们加起来应该是1
找到了假想函数,那么我们还是寻找cost 函数。如果按照线性回归,我们可能得出以下公式
但是……我们画出的J(θ) 图像显示,如果在逻辑回归中使用一上cost function,那么我们得到的图像如下:
NG老师说的non-convex,意思就不是凸型的,这样的问题是,使用梯度下降很难找到全局的最优解。
所以,这个J(θ)不能使用线性回归的这种方法。
那么应该使用什么方式呢?
这里我们可以这样考虑,如果实际情况与假想函数预测的相反,那么cost function的值应该是很大的。
反之,如果实际情况和预测函数一致,那么我们可以认为cost function的值为0
这时,我们可能就想到log函数了。
我们看 -logx的情况 如上图中的蓝线。横坐标我们看做hθ(x),那么如果y=1,并且hθ(x)=1,这时候的J(θ)=0
说明预测与实际吻合,所以cost函数值为0.
有了思路,那么同理,我们分析 -log(1-hθ(x))
也就是在假想函数和实际情况吻合(y=-0,并且 hθ(x)=0)那么J(θ)也是0
相反,如果假想函数趋向1,而实际情况是y=0,那么,J(θ) 也趋向无穷大,这就是我们想要的cost function
这里做了同意。我们的J(θ)也就完成了。
接下来是梯度下降算法:
这里NG老师直接给出了公式,我们发现和线性回归简直一模一样,但是NG 老师说,hθ(x)函数不一样了,所以是不同的。如果我们学过微积分,可以试着通过对 θ求导 α 后的那一串。
好了。到这里,基本上逻辑回归就告一段落了。我们可以试着实现一个自己的逻辑回归。
当然,还有一些内容下次补充。
theta = np.zeros #theta = array,构造全为零的行向量。grad[0,j] = np.sum/len #∑term / m. return value > threshol