[HITML] 哈工大2020秋机器学习Lab1实验报告

这篇实验报告详细介绍了使用最小二乘法(无/有正则项)、梯度下降法和共轭梯度法在Python环境下对正弦函数的高阶多项式拟合。通过对比分析,探讨了过拟合现象及其解决方法,如增加训练数据和使用正则化。实验表明,正则项能有效缓解过拟合,而共轭梯度法在某些情况下比梯度下降法表现更优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gtihub仓库
不想白嫖的就来这投个币吧

在这里插入图片描述

2020年春季学期
计算学部《机器学习》课程


Lab1 实验报告








姓名
学号
班号
电子邮件
手机号码


1 实验目的

掌握最小二乘法求解(无惩罚项的损失函数)、掌握加惩罚项(2范数)的损失函数优化、梯度下降法、共轭梯度法、理解过拟合、克服过拟合的方法(如加惩罚项、增加样本)

2 实验要求及实验环境

2.1 实验要求

  1. 生成数据,加入噪声;

  2. 用高阶多项式函数拟合曲线;

  3. 用解析解求解两种loss的最优解(无正则项和有正则项)

  4. 优化方法求解最优解(梯度下降,共轭梯度);

  5. 用你得到的实验数据,解释过拟合。

  6. 用不同数据量,不同超参数,不同的多项式阶数,比较实验效果。

  7. 语言不限,可以用matlab,python。求解解析解时可以利用现成的矩阵求逆。梯度下降,共轭梯度要求自己求梯度,迭代优化自己写。不许用现成的平台,例如pytorch,tensorflow的自动微分工具。

2.2 实验环境

Windows10; python3.8.5; jupyter notebook

3 设计思想

由泰勒级数可知,足够高阶的多项式可以拟合任意的函数,所以本次实验使用多项式来拟合正弦函数 s i n ( 2 π x ) sin(2\pi x) sin(2πx)。在 m m m 阶多项式中,有 m + 1 m+1 m+1 个待定系数,这些系数(由低到高)组成的列向量记作 w w w。用最小二乘法确定 w w w,设 E ( w ) = 1 / 2 ∗ ( X w – Y ) T ( X w – Y ) E(w) = 1/2 * (Xw – Y)^T(Xw– Y) E(w)=1/2(XwY)T(XwY),其中, X X X 为多项式中各个未知项代入观测数据求得的矩阵,若记 X i X_i Xi X X X 的第 i i i 行的向量,则 X i [ j ] X_i[j] Xi[j] 为第 i i i 个观测数据 x i x_i xi j j j 次方,记有 n n n 组观测数据,多项式最高次为 m m m,易知 X X X的维度为 n ∗ ( m + 1 ) n*(m+1) n(m+1) Y Y Y 为观测标签向量, Y [ j ] Y[j] Y[j] 为第 j j j 组观测数据的标签值(即 y y y 值)。从而问题转化为:求向量 w w w,使得 E ( w ) E(w) E(w) 最小。

3.1 生成数据

根据输入的多项式阶数和训练集大小参数生成相应大小的数据集,根据输入的高斯分布的均值和标准差参数生成噪声,将噪声加入到数据集中,最后根据数据集生成训练集等数据。

def generate_data(order, size, mu=0, sigma=0.05, begin=0, end=1):
    x = np.arange(begin, end, (end - begin) / size)
    guass_noise = np.random.normal(mu, sigma, size) # 高斯分布噪声
    y = np.sin(2 * np.pi * x) + guass_noise
    train_y = y.reshape(size, 1)
    train_x = np.zeros((size, order + 1))
    nature_row = np.arange(0, order+1))

    for i in range(size):
        row = np.ones(order + 1) * x[i]
        row = row ** nature_row
        train_x[i] = row
    return train_x, train_y, x, y

3.2 最小二乘法求解析解(无正则项)

E ( w ) = 1 2 ( X w − Y ) T ( X w − Y ) = 1 2 ( w T X T − Y ) ( X w − Y )          = 1 2 ( w T X T X w − w T X T Y − Y T X w + X T Y )   = 1 2 ( w T X T X w − 2 w T X T Y + X T Y ) E(\pmb{w})=\frac 1 2(\pmb {Xw}-\pmb Y)^T(\pmb{Xw}-\pmb Y)\\ \qquad\quad=\frac 1 2(\pmb w^T\pmb X^T-\pmb Y)(\pmb {Xw}-\pmb Y)\\ \qquad\qquad\qquad\qquad\qquad\;\;\;\;=\frac 1 2(\pmb w^T\pmb X^T\pmb X\pmb w-\pmb w^T\pmb X^T\pmb Y-\pmb Y^T\pmb X\pmb w+\pmb X^T\pmb Y)\\ \qquad\qquad\qquad\quad\,=\frac 1 2(\pmb w^T\pmb X^T\pmb{Xw}-2\pmb w^T\pmb X^T\pmb Y+\pmb X^T\pmb Y)\\ E(www)=21(XwXwXwYYY)T(XwXwXwYYY)=21(wwwTXXXTYYY)(XwXwXwYYY)=21(wwwTXXXTXXXwwwwwwTXXXTYYYYYYTXXXwww+XXXTYYY)=21(wwwTXXXTXwXwXw2wwwTXXXTYYY+XXXTYYY)


∂ E ∂ w = X T X w − X T Y = 0 \frac{\partial E}{\partial \pmb w} = \pmb X^T\pmb{Xw}-\pmb X^T\pmb Y =0 wwwE=XXXTXwXwXwXXX

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值