【HowTo ML】分类有关问题->逻辑回归
分类问题(Classification Problem)
样本因变量
支持向量机支持无数多的属性
逻辑回归(Logistic Regression)
逻辑回归:根据自变量确定因变量的种类,
逻辑回归通常使用的是二元,这类问题中
其中:
0: Negative Class
1: Positive Class
常见问题:垃圾邮件过滤,欺诈检测,肿瘤识别.
通常我们不会使用线性回归来解决分类问题.
对于两种分类来说,我们通常会引入阀值(Threshold),但当我们加入一个
但现实中影响却不大.
假设函数(Hypothesis Representation)
为了使
其中
带入可得
我们也能将
解释为:当给定
对于二元分类问题来说
决策边界(Decision boundary)
决策边界是决策函数的一个属性,由参数决定,能根据参数将样本分为不同类别的边界.
为了更好的理解决策边界,现在我们考虑逻辑函数
其实,也就是当
代价函数(Cost Function)
对于线性回归来说:
代价函数可以方便的表示为:
我们为什么不能直接套用线性回归的代价函数?因为我们期望代价函数能得到一个最小的值,但线性回归的代价函数是非凸函数(Non-convex),如左图,有多个局部最小值.我们期望能得到右图.
那么逻辑回归的代价函数应该设计成什么样呢?
假设有个目标的
但是有处于中部的预测错误,我们就不会受到较大惩罚.
为了方便编写,我们可将
所以
逻辑回归的梯度下降
梯度下降算法:
带入待解函数后可化简为
惊奇(?)的发现,里面的公式其实没有变!
其实改变的只有
特征缩放
线性回归的特征缩放是有效的!
其他参数求取方法
- Conjugate gradient
- 共轭梯度法BFGS(变尺度法)
- L-BFGS(限制变尺度法)
优点:
- 不需要手动选择学习率
α (通过线性搜索选择) - 比梯度下降快
Octave中使用函数:
fminunc(无约束最小化函数):
-- Function File: fminunc (FCN, X0)
-- Function File: fminunc (FCN, X0, OPTIONS)
-- Function File: [X, FVAL, INFO, OUTPUT, GRAD, HESS] = fminunc (FCN,
...)Octave:
具体用法
##定义代价函数
function [jVal, gradient] = costFunction(theta)
#...
options = optimset( 'GradObj', 'on', 'MaxIter', '100');
initialTheta=zeros(2,1);
[optTheta, functionVal, exitFlag] ...
= fminunc(@costFunction, initalTheta, option;
options 解释:
- 梯度下降
- 打开
- 最大迭代次数
- 100次
exitFlag:
如果为1就是收敛了,具体查阅手册.
解决多类别分类问题(Multi-class classification)
思想: 把多类别分类转化为多次逻辑回归,也就是每次分为两类,一类为本次所选取的类,另一类为剩下的(One-vs-Rest).
最后我们能得到K(种类个数)个逻辑分类器.也就可以得到每一种可能性的概率了,通常我们取最大的那个作为结果.