teleSOHO.com

分类问题

6-1 逻辑回归

线性回归的缺点:

  1. 新的训练数据可能会导致评估曲线发生变化,而导致分类错误
  2. 线性回归会产生的[0,1]以外的输出

通常在分类问题上不使用线性回归函数模型。

为了解决线性回归会产生的[0,1]以外的输出,通常使用Sigmoid函数(也称为Logistic函数)将输出现在在(0,1)范围内

6-2 假设函数的表示

6-3 决策边界

Decision Boundary

6-4 Cost function

TODO

6-5 简单代价函数和梯度下降

TODO

6-6 高级优化

通常情况下使用梯度下降法基本就可以解决问题了,但是还有其他的一些算法如:BFGS,L-BFGS,这些算法有两个好处:

  1. 不需要手动选择学习率
  2. 通常比梯度下降法要快

缺点是比梯度下降法要复杂的多,因此不建议使用,除非你是数值计算的专家。

这里我们需要学会的是使用Octave写出costFunction:

function [jVal, gradient] = costFunction(theta)
  jVal = (theta(1)-5)^2 + (theta(2)-5)^2;
  gradient = zeros(2,1);
  gradient(1) = 2*(theta(1)-5);
  gradient(2) = 2*(theta(2)-5);

然后执行如下指令:

>> options = optimset('GradObj', 'on', 'MaxIter', '100');
>> initialTheta = zeros(2,1);
>> [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
optTheta =

   5.0000
   5.0000

functionVal =   1.5777e-030
exitFlag =  1
>>

可以看到exitFlag=1表示函数结果收敛。

6-7 一对多分类

有一个输入,需要产生多个输出,如输入天气信息,判断是晴天、雨天还是阴天。

我们可以多次使用二分法,第一次先算出晴天对其他天气的概率,第二次算出雨天对其他天气的概率,第三次算出阴天对其他天的概率,最后选择最大概率的那个。

← Octave tutorial