1、分类问题
分类问题在前面已经讲过了,典型的例子有判断一封邮件是否为垃圾邮件,肿瘤类型是良性还是恶性等等。
通常用y=0(negative class) 或 1 (positive class)来表示两种结果。另外还有多集合的分类问题,如y可以等于0,1,2,3。。。
上一节所讲的线性回归模型只能预测连续的值,对于二分类问题,我们需要输出0或1。所以我们可以将h>=0.5时预测值设为1,h<0.5时设为0。但是,由于线性回归的预测值可以大于1也可以小于0,所以并不适合解决这类问题,所以我们引入了一个新的模型——逻辑回归。逻辑回归hypothesis的输出范围为【0,1】。
2、Hypothesis Representation
对hypothesis的理解:
h=对于给定的x和theta, y=1的概率。
对于二分类问题有:
3、决策边界(decision boundary)
在逻辑回归中:当h>=0.5时预测y=1; h<0.5时预测y=0. 根据上面的Sigmoid函数图形,可知:
z=0 时 g=0.5; z>0 时,g>0.5; z<0时,g<0.5 其中z=theta的转置*X
举例说明:
x1+x2=3这条线就是此模型的分界线,将预测为1的区域和预测为0的区域分开。
4、cost function
对于线性回归模型,我们有
如果我们在逻辑回归仍然沿用这一代价函数,我们将sigmoid函数代入到上式时得到的代价函数是一个非凸函数。这将影响梯度下降算法寻找全局最小值。
因此在逻辑回归中我们重新定义代价函数如下:
留坑:极大似然估计
将cost 进行简化后代入J 中得到代价函数如下:
它是一个凸函数,然后我们就可以用梯度下降算法来求参数theta,从而使得代价函数最小。
实现算法:
注:上式通过求导可以得到,具体不展开了。看上去与线性回归是一样的,但是这里的h 是进过sigmoid函数转换的,需要注意。另外,在逻辑回归中运行梯度下降算法时,特征缩放仍然很有必要。
高级优化算法:
OCTAVE 实现:
上面是costfunction的实现,下面在octave中输入:
5、多类分类问题
在多类分类问题中,训练集中有多个类(>2),我们无法仅仅用0和1来做判断。
这里采用的解决多类分类问题的方法是one-vs-all ——一对多方法。在一对多方法中,我们将多类分类问题转化为二元分类问题。即将多个类中的一个标记为正向类(y=1),其它所有类都属于负向类。这个模型记作h1, 类似的有h2, h3,...hk.
对于新输入的变量x,我们需要对其进行预测,how to do ?
将所有分类机都运行一次,然后选择最大可能性的输出变量
参考:
http://www.360doc.com/content/14/0322/09/16420473_362632285.shtml