warmUpExercise 热身题

在命令行调用warmUpExercise() 函数,生成一个5x5的单位矩阵。如下:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
实现如下:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
A = eye(5) 通过eye(n) 生成 nxn的单位矩阵。

plotData 显示数据图形

首先加载数据集:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
得到如下数据:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
生成的是97 * 2的矩阵。其中第一列是参数X,第二列是结果y。分离X, y。

机器学习(第二周)(2) 第一周第二周相关习题和答案解析
这里X,y分别是97 * 1的矩阵。通过X,y 生成图形
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
横轴是X,纵轴是y。通过红色的X,来表示每个点的位置。
实现如下:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
其中plot(X, y, ‘rx’, ‘MarkerSize’, 10); 是显示图形的函数。前2个参数分别是横轴纵轴数据集。第三个参数rx代表是红色的x为标记。MarkerSize 10 意思是标记的大小。

computeCost 通过代价函数,计算代价值。

已知代价函数:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
线性回归函数
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
由此设置x0 = 1
通过之前获得的数据集,计算给定的theta 所求的代价值。

1.填充X 数据集第一列为1 满足X0 = 1 第二列为数据集。
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
2. 设置theta 值
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
3.根据代价函数,写出实现方法,如下:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析

gradientDescent 梯度下降

有了代价函数,我们就可以通过以下函数
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
不断的优化theta的值,得到theta值的最优解。

1.设置参数 iterations = 1500 执行1500次的下降计算,alpha = 0.01 梯度下降的缩放倍率为0.01。
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
2.实现以下梯度下降的过程,并求出一个theta值。
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
3.绘制出线性回归的图像,可以看出接近最优解
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
4.做一些值预测
假设参数值分别是3.5和7 得出预测结果
机器学习(第二周)(2) 第一周第二周相关习题和答案解析

绘制代价函数的表面图和等高线

首先 生成theta0和theta1的一系列参数各100个 如下:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
其中linspace(-10,10,100) 生成1*100的矩阵,区间是-10到10之间的等差数列。
然后求出每个theta0;theta1对应的代价值,生成
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
绘制表面图
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
绘制等高线
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
绘制之前算出来的theta的最右解
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
得到以下点
机器学习(第二周)(2) 第一周第二周相关习题和答案解析

多变量下的线性回归

Normalization 规整数据

在线性回归的计算过程中,往往涉及到次方运算。当变量值比较大的情况下,需要将变量值压缩到比较小的范围。
首先加载数据,当前为2个变量,1个结果 3列数据。
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
有47行数据
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
分离数据,分成47x2的参数X。和47x1的结果y。
机器学习(第二周)(2) 第一周第二周相关习题和答案解析

mean函数求出每一列的平均值
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
std函数求出每一列的方差
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
按照X的行数平铺平均值和方差
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
得出规整后的数据
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
大部分的数据将被压缩在-1 - 1的范围之内。

computeCostMulti 多变量的代价函数

和单变量的代价函数计算方式没什么太大区别 如下
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
其中X 是 47x3的矩阵,其中x0 = 1。为2变量。 theta为3x1的矩阵 对应的theta0,theta1,theta2。

gradientDescentMulti 多变量梯度下降

计算方式和单变量梯度下降没什么区别 如下
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
其中X是训练样本 y是结果集theta是初始的参数值 这里是[0;0;0]。
alpha是特征缩放值num_iters是迭代次数。
通过公式
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
求出最优theta值。将梯度下降时的代价值记录在J_History
调用过程如下:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
然后绘制出J_History的下降图示:
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
通过代价值的梯度下降图示我们可以知道。已经获取到theta的一个最优解。
通过参数来预测结果,来验证是否正确。假设X1 = 1650 X2 = 3 得到的解为
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
符合预期。

Normal Equations 正规方程

在样本数据较小的情况下,使用正规方程计算方式优于梯度下降算法。方程如下
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
因为要求逆矩阵,所以如果是奇异矩阵。这个方式无法求解。
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
带入之前的参数验证
机器学习(第二周)(2) 第一周第二周相关习题和答案解析
结果接近,接近最优解。

附个自己写的地址 https://github.com/kimi987/machineLearningExercise

end

相关文章:

  • 2021-06-03
  • 2021-06-17
  • 2021-10-06
  • 2021-05-04
  • 2021-08-13
猜你喜欢
  • 2021-08-26
  • 2021-12-14
  • 2021-11-18
  • 2021-12-18
  • 2021-10-20
  • 2021-08-08
  • 2021-06-14
相关资源
相似解决方案