假设函数
对于监督学习,有线性回归和分类两种,对于分类来说所得的结果是离散的,但是我们可以忽略y是离散值的事实来处理分类问题,并使用我们的旧线性回归的算法来尝试预测给定的x。要解决y∈{0,1}时,取大于1或小于0的值的问题,我们可以改变假设函数的形式 也就是说,满足,通过插入logistic函数来完成。
我们使用“Sigmoid函数”,也称为“逻辑函数”:
下图显示sigmoid函数:
此处所示的函数g(z)将任何实数映射到(0,1)区间。
展示为我们输出为1的概率。例如,=0.7,即为输出为1的概率为70%,为0的概率为30%
小结:线性回归的假设函数展示的是拟合数据集的线,逻辑回归的假设函数展示的是将数据集分类的一条线。
决策边界
为了得到离散的0,1分类,我们可以将假设函数的输出转换如下:
即如果
h(x)=g(z)>=0.5
z>=0
>0
现在可以说
(少了x)
提示:对于,不需要一定是xianxianx线性的,非线性依然可行。
eg.
y=5+(-1)x1+0x2>=0
x1<=5 的区域为y=1 其余为y=0
代价函数
我们不能使用与线性回归相同的成本函数,因为Logistic函数会导致输出波动,从而出现许多局部最优解,换句话说,他不是凸函数。
我们的逻辑回归成本函数如下:
if y = 1
if y = 0
当y=1,得到下图:
当y=0,得到下图:
总结:
=0 if h(x)=y
if y=0 and h(x)->1
if y=1 and h(x)->0
注意:这种方式编写成本函数可以保证逻辑回归是凸的。
简化的成本函数:
梯度下降
使用微积分的方式进行求导,只不过h(x)与xian线性回归表达式不同
高级优化
“共轭梯度”,“BFGS”,“L-BFGS”,是更快速的 优化theta的方法,可以代替梯度下降,
简单写一个函数返回这两个值:
function [jVal, gradient] = costFunction(theta)jVal = [...code to compute J(theta)...];gradient = [...code to compute derivative of J(theta)...];
end
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
我们给函数“fminunc()”我们的成本函数,我们的θ值的初始向量,以及我们事先创建的“options”对象。