@FE40536
2019-06-22T16:58:08.000000Z
字数 2052
阅读 954
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函数
为了得到代价函数的最小值
同样的进行梯度下降:
一些高级优化算法
% 代价函数
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(@costFuntion,initialTheta,options)
对于多类别分类问题,可以将数据集分成两两一组,用训练集多次训练