线性回归与随机梯度下降
机器学习
实验
You can click here to get the English version.
实验目的
- 进一步理解线性回归,闭式解和随机梯度下降的原理。
- 在小规模数据集上实践。
- 体会优化和调参的过程。
数据集
线性回归使用的是LIBSVM Data中的Housing数据,包含506个样本,每个样本有13个属性。请自行下载scaled版本,并将其切分为训练集,验证集。
实验环境
python3,至少包含下列python包:sklearn,numpy,jupyter,matplotlib。
建议直接安装anaconda3,其已经内置了以上python包。
提交截止时间
2018-10-28 上午12:00
实验形式
个人独立完成
实验步骤
本次实验代码及画图均在jupyter上完成。
线性回归的闭式解
- 读取实验数据,使用sklearn库的load_svmlight_file函数读取数据。
- 将数据集切分为训练集和验证集,本次实验不切分测试集。使用train_test_split函数切分数据集。
- 线性模型参数初始化,可以考虑全零初始化,随机初始化或者正态分布初始化。
- 选取一个Loss函数,计算训练集的Loss函数值,记为。
- 获取闭式解的公式,过程详⻅课件ppt。
- 通过闭式解得到参数的值,更新参数。
- 在训练集上测试并获得函数值,在验证集上获得函数值。
- 输出,和的值。
线性回归和随机梯度下降
- 读取实验数据,使用sklearn库的load_svmlight_file函数读取数据。
- 将数据集切分为训练集和验证集,本次实验不切分测试集。使用train_test_split函数切分数据集。
- 线性模型参数初始化,可以考虑全零初始化,随机初始化或者正态分布初始化。
- 选择Loss函数及对其求导,过程详见课件ppt。
- 随机选取训练集中的一个样本,求得该样本对函数的梯度。
- 取梯度的负方向,记为。
- 更新模型参数,。为学习率,是人为调整的超参数。
- 在训练集上测试并得到函数值,在验证集上测试并得到函数值。
- 重复步骤5-8若干次,输出和的值。
整理实验结果并完成实验报告(实验报告模板将包含在示例仓库中)
评分标准
评分项 |
占比 |
说明 |
出勤 |
40% |
特殊情况可向学院请假 |
代码有效 |
20% |
代码有效是指代码中是否存在语法错误 |
实验报告 |
30% |
是否认真按照实验模板填写 |
代码规范 |
10% |
主要考核代码变量命名是否规范 |
实验提交方式
提交流程
- 访问222.201.187.50:7001
- 点击对应的提交入口
- 填写自己的姓名、学号,上传pdf格式的报告和zip格式的代码压缩包
注意事项
- 实验报告和代码可以多次上传,多次上传会覆盖之前提交的文件。
- 上传之后可以刷新页面,在下面的文件列表里面检查是否上传成功。
- 助教会在实验截止时间保存所有上传的结果,截止时间之后上传的文件无效。
- 如果用Word编写实验报告,需导出成pdf格式。
- 代码文件打包格式必须为zip,请不要提交rar格式的压缩文件。
- 提交网址只能校园网访问。
- 代码用python语言写,实验报告评分标准英文好于中文,latex好于word。
有任何的意见或者建议都可以直接在qq群中向助教反映。