首页 > 代码库 > 第一个分类算法
第一个分类算法
以前我们要预测的y是连续的,现在我们即将要讨论的分类算法中,y是离散的值。
先看一些分类的问题,像medical diagnosis——医学诊断,判断你是否生病;垃圾邮箱过滤器——判断一封邮件是不是垃圾邮箱。
也不是说这样的问题完全不能用线性回归的方式进行分类,但有很多时候,线性回归不能很好地进行分类。
假设现在我们知道这个y∈{0,1},y只能取0或1. ,所以我们的假设hθ(x)不能再是线性函数 所以现在我们要改变我们的hypothesis,即hθ(x) ,使新的hθ(x) 的值在[0,1]里。
我们选择
hθ(x) = g(θT*x) = 1 / ( 1+exp(-θT*x) )
g(z) = 1/(1+e^-z)
is called the logistic function or the sigmoid function
P(y = 1 | x;θ) = hθ(x)
P(y = 0 | x;θ) = 1?hθ(x) 即用这个hθ(x)来预测y=1或0的概率
合在一条式子里就是:p(y | x;θ) = (hθ(x))^y* (1?hθ(x))^(1?y)
和之前一样:L(θ)=p(y | x;θ)=
=(连乘,从i=1到i=m)p(y^(i) | x^(i);θ)
= (连乘,从i=1到i=m) (hθ*(x^(i))^y(i) * (1?hθ(x^(i)) ^(1?y(i))
同样的,为了更好的数学计算,我们又定义?(θ) = logL(θ)
= (连加,从i=1加到i=m)y(i) logh(x^(i)) + (1?y^(i))log(1?h(x^(i))) 这里hθ(x^(i))漏写了θ
好的那么我们怎么另这个函数最大化呢?
我们可以用之前学过的梯度下降算法,虽然那个是最小化。
这就是logistics regression
这玩意看起来是不是很眼熟!!感觉和之前那个线性回归的表达式一毛一样,就是那个减号变成加号而已
但这根本是两个完全不同的算法!因为这个hθ(x^(i))不是线性函数
来再讲一下这个感知器算法(perceptron algorithm)
在logistic regression中,我们的 g(z)会生成0-1之间的数,而感知器算法的g(z)是这样设定的:
第一个分类算法