吴恩达 机器学习笔记六(lecture 6)(逻辑回归LR)

来源:互联网 发布:echo php 编辑:程序博客网 时间:2024/05/22 02:11


逻辑回归(Logistic Regression


1、classification

eg.垃圾邮件识别、交易是否是欺诈、肿瘤类别


2、Hypothesis Representation


很多时候,我们希望我们的预测值输出范围在0~1之间,

可以加入一个sigmoid函数(可以称为逻辑函数),类似神经网络的激活函数,输出范围就控制在了0~1之间



假设函数的输出含义,就是在输入X的条件下,假设函数输出是1的概率



3、决策边界(Decision boundary)


决策边界是假设函数的一个属性,有确定的参数值我们就可以直接得到决策边界。它不是数据集的属性


主要概率大于等于0.5,那么就当作y=1



如果假设函数是 (三个参数分别等于-3,1,1),所以参数向量就是(-3,1,1),则:决策边界的方程就是 x1+x2 = 3.


另外一个例子:假设    (参数向量为 -1,0,0,1,1)。所以决策边界不是训练集的属性,而是假设本身及其参数的属性,我们用训练集来拟合参数,参数决定了决策边界。也可能遇到更加复杂的假设函数



4、损失函数(cost function)


和线性回归一样,有m个样本,每个样本特征值看成一个n+1维向量,因为是分类问题,所以输出y是0 or 1,我们就是要找到(拟合)参数值



损失函数的选择

在之前线性回归的时候,我们使用的是差平方误差函数,我们能得到一个单弓形的凸函数,但是逻辑回归中,h函数是sigmoid函数,对应的J函数是左下角的形式,会形成很多局部最优解,用梯度下降的话就不能很好解决问题,因此需要换一个损失函数,希望它像右下角那样是单弓形的凸函数



我们选择的损失函数是对数函数:(单训练样本的损失函数)此处log=ln


如果预测值是0.7,实际值是1,我们就用上面的损失函数,如果实际值是0,就用下面的损失函数。我们画出 y=1 时损失函数图像:当预测值是1,实际值也是1的时候,损失函数就是0,如果预测接近0,那么也就表明误差接近∞



画出 y=0 的图像



5、损失函数简化和梯度下降(Simplified cost function and gradient descent

(1)损失函数简化

   可以把 y=1 和 y=0 两种情况合二为一:



逻辑回归损失函数:(这个是统计学中极大似然法得来)

 

根据损失函数,得到最小化损失函数时对应的参数值,根据参数值来预测新样本的输出是1的概率



(2)用梯度下降最小化损失函数

当我们求最小化损失函数的时候,就是对每一个theta求偏导数然后不断更新

 其中,偏导数化简后的结果就是蓝色笔记所示


将化简后的偏导数带入,我们发现和之前学的线性回归的偏导数一样。但是这里h函数不同。



6、高级优化算法

通常的梯度下降只需要编写代码求J函数和偏导数即可,还可以用更高级的优化算法,共轭梯度法,BFGS(变尺度法),L-BFGS(限制变尺度法)。都是求J函数和偏导数,然后进行优化。后三个算法优点:都不需要手动选择学习率阿尔法(他们有内部循环,线性搜索算法,可以自动尝试学习率,并选择最好的学习率);它们的收敛速度往往比梯度下降要快。缺点:更复杂

eg:




损失函数返回两个值:jVal(我们计算的损失函数J),gradient(梯度值)


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);


调用高级优化函数fminunc,他表示octave里无约束最小化函数,调用他的方法就是设置几个options,options变量作为一个数据结构可以存储你想要的options。

‘GradObj’, ‘on’就是设置梯度目标参数为打开(on),意味着你现在确实要给这个算法提供一个梯度

‘MaxIter’, ‘100’设置最大迭代次数 100

initialtheta 初始化theta值

@指向损失函数的指针,如果调用这个fminunc函数,他就会使用众多高级优化算法中的一个,也可以把它当成梯度下降(不用设置学习率),像一个加强版的梯度下降,找到theta值

exitFlag帮助我们查看是否收敛


options = optimset(‘GradObj’, ‘on’, ‘MaxIter’, ‘100’);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] ...

     = fminunc(@costFunction, initialTheta, options);


多个theta


7、多分类问题

eg


例如三分类问题,我们可以构造三个分类器,这样就能分成三类



最后比较在这三类分类器中,概率最大值就是所求




PPT地址:http://download.csdn.net/download/cheneykl/10127716

阅读全文
1 0
原创粉丝点击