Lesson 3 Part 2 logistic regression

logistic regression简单来说就是将output variable(这里表示成y)分成两类的一种分类算法


其实就是y服从伯努力分布,那这里我们需要模拟什么呢?

我们需要模拟的是y = 1的概率,所以我们设


由于概率P需要满足 大于等于0 而且 小于等于1

所以我们的模拟函数也需要满足


那么我们该如何选择我们的模拟函数呢?

logistic function, 

为何选择这个函数?

At least, I don't know at the moment, nor do I care. Because it's not our topic today.

然后我们介绍下logistic function



所以将y的分布用模拟函数表示出来就为:



写在一起变为:




假设我们的模拟是100%正确,那么对于给定的x和θ,得到y的概率为1

但是我们不能保证我们的模拟是100%正确,所以我们只能尽量使P变大

然后我们求θ的极大似然估计

最大化P就等价于最大化L(θ)


取对数



然后用梯度下降法求得l(θ)的极大值点




最后介绍一下感知器算法:







然后我们看看matlab程序


clc; clear; close all;

load datax.dat;
load datay.dat;

X = [ones(size(datax, 1),1) datax];
Y = datay;

m = size(X,1);
n = size(X,2)-1;

%initialize
theta = zeros(n+1,1);
thetaold = ones(n+1,1);

while ( ((theta-thetaold)'*(theta-thetaold)) > 0.0000001 )
	%calculate dellltheta
    dellltheta = zeros(n+1,1);
	for j=1:n+1,
		for i=1:m,
			dellltheta(j,1) = dellltheta(j,1) + [Y(i,1) - (1/(1 + exp(-theta'*X(i,:)')))]*X(i,j);
		end;
	end;
	%calculate hessian
	H = zeros(n+1, n+1);
	for j=1:n+1,
		for k=1:n+1,
				for i=1:m,
					H(j,k) = H(j,k) -[1/(1 + exp(-theta'*X(i,:)'))]*[1-(1/(1 + exp(-theta'*X(i,:)')))]*[X(i,j)]*[X(i,k)];
				end;
		end;
	end;
	thetaold = theta;
	theta = theta - inv(H)*dellltheta;
	(theta-thetaold)'*(theta-thetaold)
end



%part b
figure(1); hold on;
X0 = []; Y0 = []; X1 = []; Y1 = [];

%training points
for i=1:m,
	if Y(i)==0
		X0 = [X0 X(i,2)];
		Y0 = [Y0 X(i,3)];
	else
		X1 = [X1 X(i,2)];
		Y1 = [Y1 X(i,3)];
	end;
end;
scatter(X0, Y0, 'o');
scatter(X1, Y1, '+');

%decision boundary
Xb = -2:0.01:8;
Yb = (0.5 - theta(1) - theta(2)*Xb)/(theta(3));
plot(Xb, Yb);




注意这里他采用的是牛顿法求 ∂l(θ) / θ = 0



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值