斯坦福深度学习-线性回归

线性回归

 

问题定义

    作为一种新事物,我们将从学习怎样实现线性回归开始。线性回归的主要思想是熟悉目标函数,计算出它们的梯度和通过一些列参数使目标达到最优化。这些基本的工具将组成后面更加复杂的算法。想要了解一些附加细节的读者可以参考监督学习的课程笔记。

    我们在线性回归课程的目标上是通过输入一个向量去预测目标值y.举个例子来说,我们可能想要预测一组房子的价格,我们用y代替房子的价格,并且在x向量中的

代表描述房子的某一个特征(比如说它的大小和卧室的数量)。假设我们有许多房子数据的样本,其中样本中的特征对应的价格为

    我们的目标是找到一个函数,所以对每一组样本数据我们可以有。如果我们能够成功找到这样的函数,并且我们已经看过足够多的房子和它们对应价格的数据,我们希望这个函数可以成为一个好的房子价格预测者,即使我们只知道一个新房子的一些特性,但是不知道它的价格。

    要找到这样的函数使得,第一步,我们必须决定怎样表达函数,开始我们将使用到线性函数:.在这里

代表的是一个θ组来参数化的函数(我们把这函数的空间称为"假设类"),通过这种表达方式来表达h,我们的目标是找到一组选择θ,来让尽可能的和 靠近。特别的是,我们将会找寻这组θ来使

这个函数最小化。这个函数是用来对我们用来评估对于一个特定的组θ的选择而导致错误的"成本函数"。这也可能被称为"损失","惩罚"或者或者"目标"函数。

 

函数最小化

    我们现在想要找到一组这样的θ来使上面得出的函数最小化。这里有许多的算法来最小化上面的函数,这里我们将用一些特别有效的算法来描述,这个算法在你们上了后一章节梯度下降后你们可以很容易自己实现。但是对于现在,让我先忽略掉这个现实--大部分常用的函数最小化算法要求我们提供的两部分信息。我们需要写出代码来计算,其要求遍历所有θ组。在这之后,使用最优化寻找最合适的θ组过程由最优化算法来处理(回想不同j的函数梯度是一组向量作为以θ为函数的最速增长方向-所以很容易发现最优化算法是怎样使用这点来对θ做出很小的改变来使增加或减少)

    上面通过一些列关于的训练数据给出的表达式非常容易在MATLAB上计算出的值-无论你给出的θ组是什么。剩下的要求是去计算梯度:

 

    对上面给出的一个特定参数对花费函数微分得出:

 

 

作业1A:线性回归

    在这次练习中你们将要在MATLAB上实现目标函数并且计算出线性回归的梯度。

    在starter code package 中的ex1/目录下你们将会看到文件ex1_linreg.m,它包含了一个简单线性回归线性回归的实验材料。这个文件给出了一些规格步骤给你。

    1、数据从housing.data载出。一个额外的特征"1"被添加到数据集,θ1将作为线性函数的截距项。

    2、数据集中的例子将会随机被翻换,然后数据将会被分成训练集和测试集。用来作为学习算法输入的特征们被储存在变量train.X 和 test.X中。要预测的目标值是每个示例的估计房价。训练集合测试集中的价格分别被储存在"train.y" 和 "test.y"中,。你将使用训练集去寻找最合适的θ来预测房子价格然后用测试集来检测它的性能。

    3、代码调用minfunc优化包。 minfunc将通过最小化在linear_regression.m.文件中实现的目标函数来尝试去寻找最合适的θ。实现linear_regression.m.去计算目标函数值并且通过参数组算出梯度将是你的任务。

    4、在minFunc完成后(即训练集完成后),训练和测试的错误将会被打印出来。    可选的,它将快速的可视化展示出在测试集上的预测价格和实际价格。

 

    ex1_linreg.m文件调用linear_regression.m(你需要自己写代码)。linear_regression.m接收训练集X,训练集目标值(房子价格)y,和当前参数组θ作为输入参数。

    完成下列练习步骤:

    1、填写linear_regression.m文件中的代码来计算上面描述的线性回归问题的,将计算得出的值存储在变量f中。

    你可能通过循环训练集中的例子(数据矩阵X中的列)来完成所有步骤。对于每一次循环,都改变f和g值。我们在下个练习会用另外一个更快的版本。

    一旦你成功的完成了练习,结果的展示应该和下面的图看起来很像。

(你的可能因为对训练集和数据集的随机选择不同而和我的有些不同)均方根训练和测试误差的典型值分别为5和4.5之间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值