山东大学计算机学院机器学习实验一
From lyz103
实验目的: 学习线性回归:学习到了线性回归的实践经验。线性回归模型为 (hθ(x)=θ^T x),其中 (θ)是我们需要优化的参数,x是(n + 1)维特征向量。给定一个训练集,我们的目标是找到(θ)的最优值,使得目标函数 J(θ)最小化。
④ 学习多变量线性回归:现在我们看一个更复杂的情况,其中每个训练数据包含多个特征。这是俄勒冈州波特兰的房价的训练集,其中输出y是价格,输入x是生活区域和卧室数量。
② 练习2D线性回归:我们从一个非常简单的情况开始,其中 n = 1。这部分的数据包含了不同年龄段(2到8岁)的男孩的身高测量值。y值是以米为单位的身高,x值是与身高对应的男孩的年龄。每个身高和年龄的元组构成我们数据集中的一个训练样本。使用这50个训练样本,使用梯度下降算法开发一个线性回归模型,基于此模型,我们可以预测给定新的年龄值的身高。
③ 理解 J(θ):我们希望更好地理解梯度下降已经做了什么,并可视化参数 (θ) 和 J(θ)之间的关系。在这个问题中,我们将J(θ) 绘制为一个3D曲面图。
实验步骤:
身高预测
① 首先读取数据集并加载数据:从两个数据文件中读取年龄(作为输入特征)和身高(作为目标变量)。
② 数据可视化: 打开一个新的图形窗口,并绘制年龄与身高的散点图。这有助于我们直观地看到数据的分布和潜在的关系。
③ 数据预处理:为输入数据添加一个全为1的列。这是线性回归中常见的做法,用于处理模型的截距项。
⑥ 绘制线性回归结果:在原始的散点图上,绘制了线性回归模型的预测结果,形成了一条线。这条线表示了年龄与身高之间的最佳线性关系。
④ 设置梯度下降参数:定义了学习率、迭代次数和初始的模型参数。这些参数将在后续的梯度下降算法中使用。
⑤ 梯度下降算法:使用当前的模型参数计算假设函数的值。根据误差(即假设函数的值与实际值之间的差异)更新模型参数。计算当前和上一次迭代的代价函数值,以监控模型的训练进度。
⑥ 绘制线性回归结果:在原始的散点图上,绘制了线性回归模型的预测结果,形成了一条线。这条线表示了年龄与身高之间的最佳线性关系。

⑦ 进行预测:使用训练好的模型,预测了两个特定年龄的男孩的身高。三岁半的男生的身高大约是0.9737米五岁的男生的身高大约是1.1973米
⑧ 对theta的值进行扫描。观测在不同的theta下的损失函数的值:对于一系列的模型参数值,计算了代价函数的值。这有助于我们了解不同参数值下模型的性能。
⑨ 绘制代价函数的3D曲面图:展示了代价函数与模型参数之间的关系。这有助于我们直观地看到哪些参数值能够使代价函数最小化。

房价预测
①数据预处理:从ex1_2x.dat和ex1_2y.dat加载数据。在x矩阵中添加一列全为1
的数据,以考虑截距项。使用均值归一化对x矩阵进行特征缩放。
②多个学习率的梯度下降:代码对线性回归运行了三次梯度下降算法,每次使用不同的学习率(alpha):0.12、0.15和0.18。对于每个学习率,算法迭代50次。在每次迭代中,它都会更新参(theta)并计算成本函数J,分别存储在J1、J2和J3中。
③预测:使用先前计算的均值和标准差对新数据点(1560, 3)进行缩放后进行预测。 预测的结果是:2.8088e+05
④可视化:为三个学习率绘制每次迭代(从0到49)的成本函数J的值。图表使用不
同的颜色来区分不同的学习率,并显示图例以识别它们。

结论分析与体会:
- 实验目的达成:
通过本次实验,我们成功地实现了线性回归的梯度下降算法,并对结果进行了可视化。我们不仅探索了单变量线性回归,还进一步研究了多变量线性回归的情况。 - 数据可视化的重要性:
通过绘制训练数据和线性回归的结果,我们可以直观地看到模型的拟合效果。这为我们提供了一个关于模型效果的直观印象,并有助于我们进一步调整模型参数。 - 学习率的选择:
本实验中,我们观察到学习率对梯度下降的影响。选择合适的学习率是非常关键的,因为太小的学习率会导致收敛速度过慢,而太大的学习率可能会导致算法不收敛。 - 代价函数的理解:
通过绘制J(θ)的3D曲面图,我们更深入地理解了代价函数与参数θ之间的关系。这种可视化方法为我们提供了关于如何优化代价函数的直观印象。 - 预测的应用:
使用训练好的模型,我们成功地预测了给定年龄的男孩的身高。这验证了我们的模型不仅可以拟合训练数据,而且还可以用于实际的预测任务。 - 总体评价:
本实验为我们提供了一个实际的机会,通过实践来理解线性回归和梯度下降的基本概念。通过不断的实验和调整,我们学习了如何优化模型以获得更好的结果。
身高预测 :
7. clear;clc;
8. x = load ('data1/ex1_1x.dat') ;
9. y = load ('data1/ex1_1y.dat') ;
10. figure % open a new figure window
11. plot(x,y,'o');
12. ylabel('Height in meters');
13. xlabel('Age in years');
14. m = length(y);
15. x = [ones(m,1),x];
16.
17. alpha = 0.07;
18. num_iterations = 1500;
19. J = zeros(num_iterations,1);
20. theta(1, :) = [0, 0];
21.
22. for i = 1:num_iterations
23.
24. h = x * theta(i, :)'; % hypothesis h calculation using matrix multi
plication
25.
26. theta(i + 1, 1) = theta(i, 1) - alpha * (1/m) * sum((h - y) .* x(:,
1));
27. theta(i + 1, 2) = theta(i, 2) - alpha * (1/m) * sum((h - y) .*

本文详细介绍了山东大学计算机学院的机器学习实验,涉及线性回归模型、梯度下降算法、多变量线性回归应用、数据可视化、学习率选择以及代价函数理解。通过实际操作演示了单变量和多变量线性回归的实现过程,强调了数据预处理、模型优化及可视化的重要性。
最低0.47元/天 解锁文章
1165

被折叠的 条评论
为什么被折叠?



