吴恩达 机器学习笔记六(lecture 6)(逻辑回归LR)
逻辑回归(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、高级优化算法
损失函数返回两个值: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);
‘GradObj’, ‘on’就是设置梯度目标参数为打开(on),意味着你现在确实要给这个算法提供一个梯度
‘MaxIter’, ‘100’设置最大迭代次数 100
initialtheta 初始化theta值@指向损失函数的指针,如果调用这个fminunc函数,他就会使用众多高级优化算法中的一个,也可以把它当成梯度下降(不用设置学习率),像一个加强版的梯度下降,找到theta值
exitFlag帮助我们查看是否收敛
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] ...
= fminunc(@costFunction, initialTheta, options);
7、多分类问题
eg
例如三分类问题,我们可以构造三个分类器,这样就能分成三类