ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)

本节学习链接http://ufldl.stanford.edu/tutorial/supervised/LogisticRegression/


逻辑回归,顾名思义,就是只能判断逻辑问题的一种算法,具体来说,就是只能在结果中给出‘0’或者‘1’。所以本质上来说,这是解决分类问题的算法。
具体来说,逻辑回归的步骤和线性回归很像,下面给出假设函数 hθ(x)

P(y=1|x)P(y=0|x)=hθ(x)=11+exp(θx)σ(θx),=1P(y=1|x)=1hθ(x).

可以看到,这里的 hθ(x) 表示的是一种概率,通过判断概率大小来判定结果应该取‘1’或‘0’。
相应的,代价函数 J(θ) 也变成了下面的形式:
J(θ)=i(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))).

梯度函数和它的向量形式如下:
J(θ)θj=ix(i)j(hθ(x(i))y(i)).

θJ(θ)=ix(i)(hθ(x(i))y(i))

这部分的编程作业是识别 MNIST dataset中的手写体0和1,任务和上次一样,自己写代价函数和梯度函数,优化算法已经给出。

h = 1./(1+(exp(-(X'*theta))));
%h = sigmoid(X'*theta); 
f=-y*log2(h)+(1-y)*log2(1-h);
g=X*(h-y');

注释中的sigmoid函数是资料中已经写好的函数,不是MATLAB自带函数,具体作用和上面未注释的式子是一个意思,这部分的代码都是用矩阵运算完成的,所以下一课的矢量化编程不打算写了,以前没有经常使用MATLAB的同学,或是只用来画图的同学(就是我/(ㄒoㄒ)/~~),对于矢量化可以在纸上画一画矩阵理解一下,MATLAB的工作区里也可以看到参数的矩阵的相应形式,相比用for循环,矩阵运算在MATLAB中确实很快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值