逻辑回归也可以说是一个分类器。在二分类器中,输出要么是0,要么是1。所以对于一组输入来说,我们要做的就是通过这个输入的数据,经过假设函数的处理之后,输出结果是1的概率。也就是说,输出是一个概率值。所以现在要转成逻辑函数:
hθ(x)=11+e−θTx
如何理解这个逻辑函数呢?
这个函数就是为了评估输入为x时,输出的结果刚好是y=1的概率。所以如果我们有一组数据 (x(i),y(i)=1) 那么
hθ(x(i))=11+e−θTx(i)
的结果应该尽可能使得
hθ(x(i))
的结果接近于1(通过调整
θ
)。
那么,当我们有m组数据时,哪一组
θ
是拟合得最好(效果最好)的呢?拟合得最好的那组
θ
就是我们想要的。所以我们可以定义代价函数为:
Cost(hθ(x),y)={−log(hθ(x))if y=1−log(1−hθ(x))if y=0
为什么这么定义呢?
我们可以画出 −log(hθ(x)) 的图形:
从图中我们可以看到,当 hθ(x) 趋向于1的时候,说明有更高的概率y=1,而这个函数也是当y=1的时候的函数形式。y=1时, hθ(x) 趋向于1, −log(hθ(x)) 的值越小,也就是代价越小。同理,当y=0时, −log(1−hθ(x)) 也是这种趋势。
因为y要么是1,要么是0,所以代价函数可以写为:
Cost(hθ(x),y)=−y log(hθ(x))−(1−y)log(1−hθ(x))
所以:
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))=−1m[∑i=1my(i)log(hθ(x))+(1−y(i))log(1−hθ(x(i)))]
我们的目标就是获得 J(θ) 最小值时的那组 θ 值。
事实上,我们也可以使用平方差来作为代价函数:
Cost(hθ(x),y)=(hθ(x(i))−y(i))2
虽然它们在形式上不一样,但是它们的意义是一样。都是刻画了每一组输入x与对应的y之间的差距。我们的目标都是为了找到一组 θ 来最小化这个差距。写成这种形式之后,又可以使用梯度下降算法来拟合参数了。关于梯度下降算法可以参考我的 上一篇博文。