社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

NYU 金融机器学习笔记 1.2.4 线性回归

ApacheCN_飞龙 • 7 年前 • 701 次点击  

现在是时候介绍我们的第一个机器学习算法了。

而出人意料,这个算法是着名的线性回归,这是一种你可能熟悉的算法。我们将通过将其视为典型的机器学习算法,来了解线性回归的原理,算法具有我们之前介绍的任务,表现测量和机器学习方法的其他属性。

为了稍微调整一下,我们将从一开始就考虑一般的多变量情况。

首先,让我们从任务 T 开始。我们的任务是预测标量变量 y 的值,给定预测器或特征向量 X0 到 XD-1,这将是 D 维空间 RD 中的向量。

现在,为了从经验中学习,我们给出了一对 X 和 y 的数据集,我们可以像以前一样分成两个数据集,X_train,y_train 和 X_test,y_test。假设这两个数据集都是来自某些数据生成分布 P 数据的 IAD 样本。接下来,考虑我们想要使用的模型架构。由此,我们的意思是定义一个 X 函数空间,我们试图拿它拟合我们数据。

在这种情况下,我们选择线性架构。也就是说,我们将自己约束为 X 的一类线性函数。这里,y 是 N 个预测值的向量。X 是尺寸为 N×D 的设计矩阵。W 是长度为 D 的回归系数的向量。

这种向量通常也被称为机器学习中的权重向量。

现在,这种线性回归模型的一个例子是,试图预测某些股票的每日回报的模型。让我们例举亚马逊股票。虽然 X 将是各种市场指数回报的向量,例如标准普尔 500 指数,纳斯达克综合指数,VIX 等。现在我们必须指定表现指标。我们将其定义为,在测试集上计算的均方误差或简称 MSE。因此,为了计算它,我们计算测试集中 O 个点的不同 Y,和模型预测 Y hat 之间的平方差的平均值。同样的事情也可以更紧凑地写成,因为向量 Y hat 和 Y 之间的重缩放的平方距离。

现在我们可以用上面的模型方程代替 Y hat,并用这种形式写出来。

接下来的问题是如何找到最佳参数 W。

我们按照在上一讲中讨论的那样继续进行,并寻找最小化另一个目标的参数 W,即训练集上的 MSE 误差。这将是与此处相同的等式,但 X_test 由 X_train 代替,Y_test 由 Y_train 代替。

原因是两个均方误差以及训练和测试数据都估计相同的数量,这是泛化误差。

现在,为了找到 W 的最佳值,我们需要将 MSE 训练误差的梯度设置为 0。这给出了这个表达式,对于 W 的最佳向量,它应该等于 0。现在,让我们在 N_train 上添加一个不必要的常数乘数 1,并将梯度写为向量范数的梯度,我们将其写为向量和自身的标量积。

这里,符号 T 代表转置向量。

现在,让我稍微简化一下这个关系,省略上标,因为我们不需要它们。我们只记得在这个计算中我们只使用训练数据。

现在,下一步,我们扩展标量乘积并计算相对于 W 的整个表达式的导数。

由于第一项是 W 的二次方,第二项几乎是线性的,而最后一项完全不依赖于 W,它会在微分时省略。结果,我们得到了这个表达式。对于最佳向量 W,它应该等于 0。现在通过简单地对等式求逆来获得 W 最佳值。所以我们最终得到了这个公式。

这种关系也称为回归分析中的正规方程。让我们回想一下,这里的 X 和 y 指的是训练集中的值。

为了了解此处涉及的矩阵运算,如此处所示,可视化此关系也很有用。

现在,给定估计向量 W,我们可以用它做一些事情。首先,我们可以通过将 X_train 左乘 W 来计算训练或样本内误差。

如果我们用这个表达式代替 W,我们看到它可以表示为矩阵 H 的乘积,由数据矩阵 X_train 和向量 y_train 组成。该矩阵有时称为 H hat 矩阵。你可以检查此矩阵是否为投影矩阵。

特别是,它是对称的和幂等的,意味着它的平方等于矩阵本身。

估计向量 W 的另一个方面是使用它来进行预测。

例如,如果我们使用测试数据集来预测样本,那么答案就是 X_test 和向量 W 的乘积。

现在,请注意这种关系中有趣的事情。我们看到 W 的表达式包括 X 转置和 X 矩阵的乘积的倒数。如果数据矩阵 X 包含几乎相同或非常强相关的列,则可能导致该乘积几乎是退化矩阵的情况。

当一列可以表示为其他列的线性组合时,会发生另一种常见情况,产生几乎退化矩阵。这在统计学上被称为多重共线性现象。这是该矩阵的行列式。在所有这些情况下,我们在数字上非常接近于零。这可能导致预测值不稳定或无穷大。

有多种方法可以防止线性回归中的这种不稳定性。其中之一是扫描预测变量集以排除可能的多重共线性。但也有一些其他方法。特别是,在下一个视频中,我们将讨论平等化,是一种在监督学习算法中提供更好的样本外性能的方法。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/WPbC0CfPF2
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25520