Coursera_Stanford_ML_ex1 作业记录
2015-09-19 13:09
183 查看
完成ex1也有一段时间了,看网上并没有类似的作业解答,所以今天就打算新开一个专题,记录一下自己在做作业的过程中遇到的困难,我全程使用MATLAB完成作业,希望也能帮助到学习这门课的同学。
首先让我们看一下作业的要求:
一.打星号的.m文件中,plotData,warmUpExercise基本没有什么难度,现在我把我实现的部分贴出来供大家参考
warmUpExercise:
A=eye(5); %Return the 5x5 identity matrix
plotData(plot的句柄表示标记数据点的方式):
figure; % open a newfigure window
plot(x, y, 'rx','MarkerSize', 10,'LineWidth', 2);
xlabel('population');
ylabel('profit');
实现效果:
computCost和gradientDescent目的是使用梯度下降法得到使误差达到最小时的参数
误差以方差来代替:
在计算时就可以直接使用矩阵相乘的形式简化计算:
J=(X*theta-y)'*(X*theta-y)/2/m;
参数向着误差减小的方向变化,α之前是减号的原因是在计算导数的时候,如果所处的位置是单调增的,导数大于0,那么误差随着对应参数的增大就有远离最小值得趋势(可能是局部最小值,但是在这一章中,误差函数为凸函数只有一个最小值点不用担心算法陷入到局部最优解):
在计算时依然可以利用矩阵运算简化计算:
theta=theta-alpha/size(X,1)*X'*(X*theta-y);
注意:这两行是写在一个for内的,而且每次迭代不能计算一个赋一个值,会导致计算其他参数时赋值参数位置的改变,无法得到最优解。
拟合曲线(误差32.0727):
参数选择:
二.附加题中将一元的函数换成二元的函数,最高次仍为一次,程序基本一致。
误差随迭代次数的变化:
梯度下降与正规矩阵法得出结果的比较,可以看出在最值点的误差较大。
总结一下,ex1基本没有什么难度,主要是练习使用矩阵运算,在MATLAB中尽量不要使用for会降低运算速度,能用矩阵运算就用矩阵运算。
首先让我们看一下作业的要求:
一.打星号的.m文件中,plotData,warmUpExercise基本没有什么难度,现在我把我实现的部分贴出来供大家参考
warmUpExercise:
A=eye(5); %Return the 5x5 identity matrix
plotData(plot的句柄表示标记数据点的方式):
figure; % open a newfigure window
plot(x, y, 'rx','MarkerSize', 10,'LineWidth', 2);
xlabel('population');
ylabel('profit');
实现效果:
computCost和gradientDescent目的是使用梯度下降法得到使误差达到最小时的参数
误差以方差来代替:
在计算时就可以直接使用矩阵相乘的形式简化计算:
J=(X*theta-y)'*(X*theta-y)/2/m;
参数向着误差减小的方向变化,α之前是减号的原因是在计算导数的时候,如果所处的位置是单调增的,导数大于0,那么误差随着对应参数的增大就有远离最小值得趋势(可能是局部最小值,但是在这一章中,误差函数为凸函数只有一个最小值点不用担心算法陷入到局部最优解):
在计算时依然可以利用矩阵运算简化计算:
theta=theta-alpha/size(X,1)*X'*(X*theta-y);
注意:这两行是写在一个for内的,而且每次迭代不能计算一个赋一个值,会导致计算其他参数时赋值参数位置的改变,无法得到最优解。
拟合曲线(误差32.0727):
参数选择:
二.附加题中将一元的函数换成二元的函数,最高次仍为一次,程序基本一致。
误差随迭代次数的变化:
梯度下降与正规矩阵法得出结果的比较,可以看出在最值点的误差较大。
总结一下,ex1基本没有什么难度,主要是练习使用矩阵运算,在MATLAB中尽量不要使用for会降低运算速度,能用矩阵运算就用矩阵运算。
相关文章推荐
- 实训以来的感受
- oracle 10g 创建数据库(手工)
- hdu 5077 NAND(暴力打表)
- 在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)支持。
- 我的emacs 配置
- 日志打印
- 通过绑定的方式启动service
- 技术人生:故事之二十二 软件门派,谁主沉浮?
- Scala深入浅出实战经典:18,Scala中文件的读取、写入、控制台输入操作代码实战
- nginx(四)初识nginx日志文件
- nginx(三)初步搭建nginx虚拟主机
- MySQL二进制日志中保存的上下文信息
- shell脚本基础进阶(二)----变量及运算符
- Activity启动过程
- 继承IntentService
- 今日感受—我再也不加班了
- Android UI与资源总结(一)
- Cookie
- 黑马程序员_java基础_Map集合
- 第一个service