非监督特征学习与深度学习(一)----线性回归
注:本文转载自https://github.com/ysh329/Chinese-UFLDL-Tutorial
因为github上的makedown格式显示的不够完全,看的非常不方便,因此放到****上比较好查阅学习。
常用矩阵计算公式:http://www.psi.toronto.edu/matrix/calculus.html
线性回归(Linear Regression)
问题描述(Problem Formulation)
不妨回顾一下知识点,从如何实现线性回归(Linear Regression)开始。这一节的主要思想是知道什么是目标函数(Objective Functions),计算其梯度(Gradients)以及通过一组参数来优化目标(函数)。这些基本的工具将会构建(在之后的教程中会讲到)复杂的算法。想要更多学习资料的读者可以在参考 监督学习讲座笔记。
在线性回归中,目标是从一个
为了能找到满足
上面这个函数就是当前问题的“成本函数”或“代价函数”(Cost Function),它测量的是在特定
函数最小化(Function Minimization)
现在,要找到函数
之后,找到参数
对于上述
在给定
练习 1A:线性回归(Exercise 1A: Linear Regression)
在本次练习中您将会使用MATLAB实现线性回归中的目标函数(Objective Function)和梯度计算(Gradient Copmutation)。
在初学者代码(Starter Code)包中的 ex1/
目录下,您将会找到 ex1_linreg.m
文件,其包含了一个简单的线性回归(Linear Regression)的实验。该文件为您提供了大部分较为固定的步骤流程:
数据从
housing.data
文件中加载。一个额外的特征值“1”加入到数据集中,(与其对应的)θ1 (即θ 向量中的第一个元素)在线性函数中是作为(假设函数的)截距项存在。在数据集中的样本顺序是随机排列的,同时数据被分成了训练集和测试集。被用来给学习算法作为输入的特征数据存储在变量
train.X
和tests.X
,被预测的目标值对每个样本即估计的房价。训练集样本和测试集样本的房价分别存储在train.y
和test.y
中。您将会用到训练集寻找最优的参数θ 值来预测房价,并之后在测试集上检查(该最优参数θ 的)表现。该代码调用 minFunc 优化包。 minFunc 将试图在目标函数的最小值处,找到
θ 参数的最优值,目标函数已经在linear_regression.m
中实现。您的任务是(在 linear_regression.m 中)实现在参数θ 下目标函数和梯度的计算。在minFunc(包的计算任务)完成后(如训练结束后),训练集和测试集的误差被打印出来。这一部分作为可选任务,您可以在测试集上对预测和实际价格进行快速的(数据)可视化。
ex1_linreg.m
文件会调用 linear_regression.m
文件,换句话说,在您完成 linear_regression.m
文件里的代码后,您才可执行 ex1_linreg.m
文件(调用 linear_regression.m
文件)。linear_regression.m
文件接收训练数据
完成本练习的步骤如下:
- 完成
linear_regression.m
文件中的代码,使其可以针对线性回归问题计算早先定义的目标函数J(θ) ,将计算结果保存至名为f 的变量中。您完成这两个步骤可通过循环训练集(数据矩阵X 中的列数据)上的样本进行,并且对于每个样本,将其贡献值增加给f 和g 。将在下一个练习中创建一个比当前更快的版本。
当您成功地完成了练习,绘制的结果图看起来应该像下面这样:
(您的图看起来可能会略有不同,这取决于随机选择的训练和测试集数据)
特别地,训练集和测试集的均方根(RMS,Root Mean Square)误差值都是介于4.5和5之间。