week3 归一化

来源:互联网 发布:js定义数组的方法 编辑:程序博客网 时间:2024/06/14 18:36

逻辑回归 logistic regression

5.1 分类问题

在分类问题中,我们尝试预测新出现的物体是否属于某个类,从二元分类开始,我们将两个种类分为负向类和正向类,则因变量y(0,1)

回顾乳腺癌问题,我们用线性回归方法求出合适的方法求出适合数据的一条直线,如果对于hθ,我们可以预测
- 当hθ大于或等于0.5的时候,y=1
- 当hθ小于0.5的时候,y=0

乳腺癌

对于上面这个例子,似乎这条直线可以很好的解决这个问题,但是,如果我们这时候又观测到一个非常大的恶性肿瘤,加入数据,得到一个新的直线,此时,0.5的标准就不那么合适了。

乳腺癌2

我们这里引入一个新的模型,称为逻辑回归模型,该模型的输出范围始终处于0到1之间:hθ(x)=g(θTX)
其中:
- X代表特征向量
- g代表逻辑函数,是一个非常常用的s形函数 Sigmoid function,

g(z)=11+ez

图像如下:

g

合起来,有:

hθ(x)=11+eθTX

如果用此模型,则对于给定的输入变量,根据选择的参数计算输出变量=1的可能性hθ(x)=P(y=1|x;0)
例如,对于给定的x,通过已经确定的参数计算出hθ(x)=0.7,那么表示有70%的几率为正向类,相应的有30%几率负向

5.2判定边界

在逻辑回归中,我们预测:
- 当hθ0时,预测y=1;
- 当hθ<0时,预测y=0;

- 当θTX0,预测y=1;
- 当θTX<0,预测y=0;

现在假设我们有一个模型hθ(x)=g(θ0+θ1x1+θ2x2),θ是[-3 1 1]
3+x1+x20,预测y=1,可以用x1+x2=3这条线分开数据点。

这里写图片描述

也有可能我们的分割线不是直线,二是曲线,例如下面这个,分割线我们可以设为

hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x22)

这里写图片描述

5.3 代价函数

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和,但对于逻辑回归来说,此时hθ(x)=11+eθTX,这样,代价函数J将是一个非凸函数,它有着许多局部最小值,将影响算法寻找最小值

这里写图片描述

所以,我们将对逻辑回归的例子重新定义代价函数,

J(θ)={1mmi=1(log(hθ(x)))1mmi=1(log(1hθ(x)))y=1y=0

hθ(x)Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))y=1y=0

这里写图片描述

从上图可以看出,当实际y=1时,hθ等于1则代价为0,越偏离1,代价越高,实际y=0时,hθ等于0则代价为0,越偏离0,代价越高。

将构造的新Cost(hθ(x),y)函数简化如下:

Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(xi))

带入代价函数中,得到新的代价函数为:
J(θ)=1m[i=1myilog(hθ(xi))+(1yi)log(1hθ(xi))]

得到新的代价函数以后,我们可以继续用梯度下降算法来求得能使代价函数最小的参数:
循环,直到收敛:

θj=θjαθjJ(θ)

=θjαi=1m(hθ(xi)yi)xij

看起来与线性回归的结果是一致的,但这里的hθ(x)=g(θTX)与前面的不同,所以答案是不一样的。
fminunc是matlab中自带的最小值优化函数,具体使用如下:

function[jval,gradient]=costfunction(theta)    jval=[求出J(theta)的代码]    gradient=[求出J(theta)倒数的代码]endoptions=optimset('GradOBJ','on','MaxIter','100');inittheta=zeros(2,1);[opttheta,functionval,exitflag]=fminunc(@costfunction,inittheta,options)

5.4 多类分类

多类分类中,我们有多个最后的类别,无法使用二元变量(0 or 1)来分类,解决这种问题通常采用一对多的方法来做,我们将多类分类问题转化为二元分类问题,将多个类的其中一个类标记为正向类(y=1),此外其他的标记为负向类,当训练完成后,我们将另外一个类标记为正向类(y=2), 其他都为负向类,以此类推。
最后当我们需要预测时,每个分类机都运行一遍,得到每种正向类的概率,得到概率最高的那个。

这里写图片描述

6 归一化

6.1 过拟合问题 overfitting

下面三个分别是低度拟合,正常拟合,过度拟合:

这里写图片描述

在分类问题中也有这种情况发生:

这里写图片描述

在低度拟合中,我们不能很好的利用训练集来得到准确的结果,而如果是过度你和,虽然我们拟合的结果非常适应训练集,但往往用它进行预测的时候效果不好,或者所花时间过长。
我们可以采取的措施有:
- 丢弃一些无关特征
- 保留特征,但是减小参数的大小

6.2 归一化代价函数 regularization cost function

如果是上一节中第一种预测的过拟合,此时我们的模型是:

hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44

我们要做的就是减少θ3θ4的作用,主要目标就是最后选择较小的θ3θ4,
我们可以做的是在代价函数中加重θ3θ4的比重,这样在整个学习过程的时候最后得到的θ3θ4就比较小。
J(θ)=12mi=1m(hθ(xi)yi)2+λj=1nθ2j

λ又称归一化参数,经过归一化处理的模型与原模型的可能对比如下:

这里写图片描述
如果λ选择过大,则所有参数都变小了,就像上图的中线一样,低度拟合

6.3 归一化线性回归

归一化线性回归的代价函数为:

J(θ)=12mi=1m(hθ(xi)yi)2+λj=1nθ2j

如果我们要进行梯度算法,因为我们未对θ0进行归一化,所以将变为:
θ0=θ0α1mi=1m((hθ(xi)yi)·xi0)

θj=θjα1mi=1m((hθ(xi)yi)·xij+λmθj)

其中第二式子可以写为:
θj=θj(1αλm)α1mi=1m((hθ(xi)yi)·xij)

可以看出,归一化线性回归的算法在于每一次递减的基础上再额外令θ减少了一个值
同样我们可以用正规解方程的方法来解决归一化的问题。

6.4 归一化逻辑回归

  • 对于逻辑回归,我们也可以增加一个归一化表达式,其代价函数可以写为:
    J(θ)=1m[i=1myilog(hθ(xi))+(1yi)log(1hθ(xi))]+λ2mj=1iθ2j

    如果此时用梯度下降算法,有:
    循环直至收敛:
    θ0=θ0α1mi=1m((hθ(xi)yi)·xi0)

    θj=θjα1mi=1m((hθ(xi)yi)·xij+λmθj)
  • 与线性回归一致,但此时hθ(x)=g(θTX)