机器学习吴恩达Matlab实现代价函数(1)
我今天学习了第六章的高级优化,是用matlab实现的
首先是我们的代价函数costFunction
function [jVal,gradient]=costFunction(theta)
jVal = (theta(1)-5)^2+(theta(2)-5)^2;
gradient=zeros(2,1);
gradient(1)=2*(theta(1)-5);
gradient(2)=2*(theta(2)-5);
然后我是使用的matlab7.1 所以就保存的是名字就是函数名字,然后传入参数theta
然后就是实现最优化其中有
options=optimset('GradObj','on','MaxIter',100); % 这里是设置的参数,我这里没有显示
initialTheta=zeros(2,1);
[optTheta,functionVal,exitFlag]=fminunc(@costFunction,initialTheta,options)
optimset是matlab自带的一个函数,主要是设置options,所以我们的参数名通常也设置为options
options=optimset('GradObj','on','MaxIter',100);
就是设置是否使用用户自己定义的梯度下降公式——(GradObj=’on‘,就是打开),还有设置迭代次数 *(MaxIter=100,这里的100不能打引号,否则就会报错)
自己也可以使用help optimset看一下帮助文件
fminunc 的输出参数中[optTheta,functionVal,exitFlag]
- 第一个 返回值 为我们定义的costFunction 中的gradient值
- 第二个返回值就是返回我们的costFunction中的第一个值jVal,这两个关系很重要
- 第三个返回值是为0或者1 表示子啊theta点定义的Jval是否收敛
写到最后我们一起加油,暑假把我们的机器学习学明白点,有想交流的小伙伴我们可以一起交流,我的qq:3022949790