HW1.1
题目
参见 textbook p4-12。完成以下任务:
(1) 生成正弦序列 s(n);
(2) 使用噪声函数对正弦序列加噪 x(n)=s(n)+w(n);
(3) 使用多项式回归模型对 x(n)进行拟合,并分析过拟合和欠拟合情况
问题分析
- 分析textbook中的问题,我们认为是要在[0,1]上取10个点的训练集,原函数设为sin(2πx),进行拟合。
- 拟合时,可采用np.polyfit函数。
效果
当M=3时:
当M=10时:
当M=20时:
效果分析
- 当M=3时,训练误差大,属于欠拟合。
- 当M=10时,训练误差为0,属于较拟合。
- 当M=20时,训练误差小,但测试集误差很大,拟合效果明显更差,属于过拟合。
HW1.2
1.Generate n = 2,000 points uniformly at random in the two-dimensional unit square. Which point do you expect the centroid to be?
(0.5, 0.5)
2.What objective does the centroid of the points optimize?
应当让中心点与所有点的欧式距离最小
化为代码即为
def cost(c, all_points):
return sum(sum((c - all_points) ** 2, axis=1) ** 0.5)
3.Apply gradient descent (GD) to find the centroid.
先根据损失函数, 写出求导公式
该公式会基于全部点的误差进行迭代。
每次迭代都计算全局误差和梯度,将梯度置于中心点,更新中心点。
重复迭代,直到更新步长小于某个定值为止。
具体见代码。
4.Apply stochastic gradient descent (SGD) to find the centroid. Can you say in simple words, what the algorithm is doing?
需要改变损失函数和迭代逻辑。
可见,使用SGD后,点的更新变得十分曲折。