码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习——logistic regression

时间:2015-07-24 18:28:22      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:逻辑回归

【一、逻辑回归模型】

逻辑回归不同于线性回归,它实际上一种分类方法,用于二分类问题(y=0或者1)。逻辑回归模型如下:
技术分享
即当技术分享>=0.5时,预测输出值y=1;否则预测输出值y=0;且有:
技术分享

【二、决策边界】

所谓Decision Boundary就是能够将所有数据点进行很好地分类的h(x)边界。
例1
技术分享
由图可知:
技术分享
对应的线性回归模型为:
技术分享
决策边界为粉色直线:
技术分享
【例2】
技术分享
由图可知:
技术分享
对应的线性回归模型为:
技术分享
决策边界为粉色曲线:
技术分享

【三、代价函数】

技术分享
技术分享

代价函数 J(θ)的推导如下:
对于每个样本:
技术分享
于是似然函数为:
技术分享
则对数似然函数为:
技术分享
那么代价函数J(θ)取为技术分享,即
技术分享
因为最大似然估计是求使l(θ)最大的θ,那么这个θ也是使代价函数J(θ)最小的θ。

【四、梯度下降法求最佳theta】

技术分享
其中α为学习率。
偏导的推导过程如下:
技术分享
技术分享

【五、利用matlab自带优化函数求最佳theta】

除了gradient descent 方法之外,我们还有很多方法可以使用,如下图所示,左边是另外三种方法,右边是这三种方法共同的优缺点,无需选择学习率α,更快,但是更复杂。

技术分享

matlab中已经帮我们实现好了一些优化参数θ的方法,那么这里我们需要完成的事情只是写好cost function,并告诉系统,要用哪个方法进行最优化参数。比如我们用‘GradObj’, Use the GradObj option to specify that FUN also returns a second output argument G that is the partial derivatives of the function df/dX, at the point
伪代码:
技术分享
cost function具体实现如下:

function [J, grad] = costFunction(theta, X, y)
m = length(y); % number of training examples
J = 0;
grad = zeros(size(theta));

J=-sum(y.*(log(sigmoid(X*theta)))+(1.0-y).*(log(1.0-sigmoid(X*theta))))/m;

for j=1:size(theta)
     grad(j)=sum((sigmoid(X*theta)-y).*X(:,j))/m;
end

=============================================================

end
%  Set options for fminunc
options = optimset(‘GradObj‘, ‘on‘, ‘MaxIter‘, 400);

%  Run fminunc to obtain the optimal theta 
[theta, cost]=fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

【使用逻辑回归解多类问题】

技术分享
即对于一个输入样本x,获得最大hθ(x)的类就是x所分到的类。
技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

机器学习——logistic regression

标签:逻辑回归

原文地址:http://blog.csdn.net/adminabcd/article/details/47043577

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!