1、逻辑回归的监督学习模型
训练集: { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . , ( x ( m ) , y ( m ) ) }共有m个训练个体数据
每个训练数据包含 n+1个特征,
假设函数:
需要训练最佳参数 θ。
2、成本函数-cost function
在线性回归中,使用的成本函数形式如下所示:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
将 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2
Cost(hθ(x(i)),y(i))=21(hθ(x(i))−y(i))2
线性回归的成本函数不能用作逻辑回归的成本函数,因为逻辑回归假设函数的形式是非线性的,使用上述线性回归的成本函数之后,总的成本函数的图形将是非凸函数,这将会导致梯度下降算法不能保证收敛到最优解。
所以针对逻辑回归提出新的成本函数形式如下所示:
J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))
其中,单项成本函数表示如下所示:
Cost(hθ(x(i)),y(i))=−log(hθ(x))ify=1
Cost(hθ(x(i)),y(i))=−log(1−hθ(x))ify=0
其函数图像如下所示:
若训练数据中的结果值y=1,同时假设函数 hθ(x)估计出来的值同样为1,则此时说明完美估计,没有惩罚成本;但是若假设函数 hθ(x)估计出来的值为0,则说明估计效果很差,给予极大地惩罚成本-无穷大。当 y=0时可以同样进行分析。
下面是单项成本函数图像的推导过程:
3、简化的成本函数和梯度下降法
上述成本函数可以通过“压缩”变成下面的简化形式,二者的效果相同:
Cost(hθ(x(i)),y(i))=−y(i)∗log(hθ(x(i)))−(1−y(i))∗log(1−hθ(x(i)))
所以总的成本函数可以表示为:J(θ)=−m1i=1∑m[y(i)∗log(hθ(x(i)))+(1−y(i))∗log(1−hθ(x(i)))]
目标是最小化成本函数: m i n θ J ( θ ),梯度下降的通用算法流程如下所示:()需要同时对所有参数 θ进行更新)
Repeat{θj:=θj−α∂θj∂J(θ0,θ1,...,θn)}
将成本函数 J ( θ ) J(\theta) J(θ)的偏导数代入上述迭代过程之后,可以得到下式:
Repeat{θj:=θj−mα∑i=1m(hθ(x(i))−y(i))xj(i)}
上式更新规则和线性回归的梯度下降更新式相同,只是改变了单项成本函数 h θ ( x ) h_\theta(x) hθ(x)的形式。
上述迭代过程可以转化为向量相乘的形式:
θ=θ−mαXT(g(Xθ)−y)
4、高级优化算法
假如给定了 J ( θ )和 ∂ ∂ θ j J ( θ ) , f o r j = ( 0 , 1 , . . . , n )for j=(0,1,...,n),我们可以使用下述更加高效的优化算法:
共轭梯度法-conjugate gradient,BFGS和L-BFGS,这些算法不需要手动确定步长 α的值,算法内部会通过线搜索的方法自动优化步长 α的值;同时这些算法通常比梯度下降运算速度快。但这些算法比较复杂。下面通过一个小例子来说明怎样使用这些算法来计算最优参数:
注意,options中的 ‘ 100 ‘ `100` ‘100‘不用打引号,直接输入数值100即可。fminunc()返回值中,optTheta返回最优的参数 θ 的;functionVal返回最优参数 θ \theta θ的值对应的成本函数的目标值;exieFlag返回是否收敛的标志,1表示收敛,0表示不收敛。
应用这些算法的通用代码模板如下所示:
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);
5、多类别分类问题
多类别分类问题指的是结果值 y y y可以取值多个离散值,如1,2,3… …下面是一些多类别分类问题的例子:邮件标签问题:将邮件划分到工作邮件、朋友邮件、家庭邮件或者兴趣邮件;医疗诊断问题:将一起感冒判定为:没有生病;普通风寒或者流感;天气预测问题,预测是晴天,大风天,雨天还是雪天。
解决多类别分类问题的方法是,首先挑出一个类别,将其和其他训练样本进行训练,训练出一个分类模型,之后在依次分类其他训练样本,直到所有类别的训练样本都有一个分类模型,之后在进行预测分类时,将预测信息输入所有的分类模型中,选择概率最大的一个作为分类的结果。
y∈{0,1,...,n}hθ(0)=P(y=0∣x;θ)hθ(1)=P(y=1∣x;θ)...hθ(n)=P(y=n∣x;θ)
prediction=maxi(hθ(i))