首页 > 代码库 > 第一个分类算法

第一个分类算法

以前我们要预测的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)是这样设定的:

技术分享

第一个分类算法