[关闭]
@FE40536 2019-06-22T16:58:08.000000Z 字数 2052 阅读 954

吴恩达机器学习006分类问题

octave 算法 机器学习



分类


首先从最简单地分类开始即只有两种情况地分类,0被叫做负类,1被叫做正类。
我们已经学过了线性回归算法,假设在分类问题运用线性回归算法,我们可以设置阈值来进行分类。



但是如果现在再添加一个比较远地样本进去,显然该样本应该是被判为恶性肿瘤,但是拟合曲线这时更新后会对原来0.5阈值地地方产生不准确的预测,所以线性回归算法不太适合用来处理分类问题。




假设陈述

对于分类问题,我们希望分类器输出的值在[0,1]之间,于是我们将假设函数设置成新的形式(Sigmoid function/Logistic function).


函数图像大致如下


对于假设函数地输出,可以用如下方程解释





决策界限






从图中我们可以看出,只要θTx>0,那么y就被判断为1,反之小于0,那么y就被判断为0.



假定了θ参数后,就是此时可以拟合出一条直线将坐标系分成两部分,这条线就叫做决策边界。



通过改变训练集的形式我们可以得到更加复杂的决策边界。



代价函数





对于一个逻辑回归问题,我们应该如何选择参数,接下来将讨论这个问题。



假设我们任然用线性回归的代价函数来解决分类问题,那将会得到一个非凸函数,从而导致梯度下降不能落在全局最小值。



所以我们重新定义了一个新的适用于逻辑回归的代价函数


假设假设函数输出值为1,那么对于y=1的情况来说,代价函数值就是0,我们不需要做任何事来使这个事情成立,因为它已经不需要代价了;但是要是假设函数的输出无限接近于0,这时代价函数的值就趋近于无穷大,我们将要用无穷大的代价来让这个事件成立,举例说就是当假设函数输出为1时就是对病人说肿瘤是恶性的,而且这是板上钉钉的事情了,对于输出为0时,你还对病人说你的肿瘤是恶性的,但实际上你需要花无穷大的代价才能让这件事情成真




对于y=0的情况就不详细描述了,道理是一样的。



简化代价函数与梯度下降





对于如下两个函数,我们可以作简化处理:






对于

可以写成如下形式:



将Cost函数带入J函数



为了得到代价函数的最小值
同样的进行梯度下降:


这里形式虽然和线性回归的梯度下降一样,但是hθ代表的是




高级优化





一些高级优化算法


  1. % 代价函数
  2. function [jVal,gradient]=costFunction(theta)
  3. jVal=(theta(1)-5)^2+(theta(2)-5)^2;
  4. gradient=zeros(2,1);
  5. gradient(1)=2*(theta(1)-5);
  6. gradient(2)=2*(theta(2)-5);
  7. >> options = optimset('GradObj','on','MaxIter','100');
  8. >> initialTheta=zeros(2,1);
  9. >> [optTheta, functionVal, exitFlag]=fminunc(@costFuntion,initialTheta,options)








多元分类:一对多





对于多类别分类问题,可以将数据集分成两两一组,用训练集多次训练






添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注