逻辑回归 logistic regression
5.1 分类问题
在分类问题中,我们尝试预测新出现的物体是否属于某个类,从二元分类开始,我们将两个种类分为负向类和正向类,则因变量 y∈(0,1)
回顾乳腺癌问题,我们用线性回归方法求出合适的方法求出适合数据的一条直线,如果对于
hθ
,我们可以预测
- 当
hθ
大于或等于0.5的时候,y=1
- 当
hθ
小于0.5的时候,y=0
对于上面这个例子,似乎这条直线可以很好的解决这个问题,但是,如果我们这时候又观测到一个非常大的恶性肿瘤,加入数据,得到一个新的直线,此时,0.5的标准就不那么合适了。
我们这里引入一个新的模型,称为逻辑回归模型,该模型的输出范围始终处于0到1之间:
hθ(x)=g(θTX)
其中:
- X代表特征向量
- g代表逻辑函数,是一个非常常用的s形函数 Sigmoid function,
图像如下:
合起来,有:
如果用此模型,则对于给定的输入变量,根据选择的参数计算输出变量=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;
既
- 当
θTX≥0时
,预测y=1;
- 当
θTX<0时
,预测y=0;
现在假设我们有一个模型
hθ(x)=g(θ0+θ1x1+θ2x2),θ
是[-3 1 1]
当
−3+x1+x2≥0
,预测y=1,可以用
x1+x2=3
这条线分开数据点。
也有可能我们的分割线不是直线,二是曲线,例如下面这个,分割线我们可以设为
5.3 代价函数
对于线性回归模型,我们定义的代价函数是所有模型误差的平方和,但对于逻辑回归来说,此时
hθ(x)=11+e−θTX
,这样,代价函数J将是一个非凸函数,它有着许多局部最小值,将影响算法寻找最小值
所以,我们将对逻辑回归的例子重新定义代价函数,
从上图可以看出,当实际y=1时, hθ 等于1则代价为0,越偏离1,代价越高,实际y=0时, hθ 等于0则代价为0,越偏离0,代价越高。
将构造的新
Cost(hθ(x),y)
函数简化如下:
带入代价函数中,得到新的代价函数为:
得到新的代价函数以后,我们可以继续用梯度下降算法来求得能使代价函数最小的参数:
循环,直到收敛:
看起来与线性回归的结果是一致的,但这里的 hθ(x)=g(θTX) 与前面的不同,所以答案是不一样的。
fminunc是matlab中自带的最小值优化函数,具体使用如下:
function[jval,gradient]=costfunction(theta)
jval=[求出J(theta)的代码]
gradient=[求出J(theta)倒数的代码]
end
options=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
如果是上一节中第一种预测的过拟合,此时我们的模型是:
我们要做的就是减少 θ3和θ4 的作用,主要目标就是最后选择较小的 θ3和θ4 ,
我们可以做的是在代价函数中加重 θ3和θ4 的比重,这样在整个学习过程的时候最后得到的 θ3和θ4 就比较小。
λ 又称归一化参数,经过归一化处理的模型与原模型的可能对比如下:
如果 λ 选择过大,则所有参数都变小了,就像上图的中线一样,低度拟合
6.3 归一化线性回归
归一化线性回归的代价函数为:
如果我们要进行梯度算法,因为我们未对 θ0 进行归一化,所以将变为:
其中第二式子可以写为:
可以看出,归一化线性回归的算法在于每一次递减的基础上再额外令 θ 减少了一个值
同样我们可以用正规解方程的方法来解决归一化的问题。
6.4 归一化逻辑回归
- 对于逻辑回归,我们也可以增加一个归一化表达式,其代价函数可以写为:
J(θ)=−1m[∑i=1myilog(hθ(xi))+(1−yi)log(1−hθ(xi))]+λ2m∑j=1iθ2j
如果此时用梯度下降算法,有:
循环直至收敛:
θ0=θ0−α1m∑i=1m((hθ(xi)−yi)·xi0)
θj=θj−α1m∑i=1m((hθ(xi)−yi)·xij+λmθj) - 与线性回归一致,但此时 hθ(x)=g(θTX)