一个简单线性回归的一个实例(图)实例分析

上次,我使用 Neo4j 浏览器中的简单线性回归在德克萨斯州奥斯汀创建了一个短期租赁模型。(链接:)在这篇文章中,我演示了如何通过一些小的调整,同一组用户定义的程序可以创建具有多个自变量的线性回归模型。这称为多元线性回归。

我们之前使用短期租赁列表中的房间总数来预测其每晚价格。但是,显然还有其他因素可能会影响价格。例如,一个人靠近热门旅游区会极大地影响其价值。让我们再看一下下面的数据模型,并考虑可以使用哪些附加信息来预测租金价格。

由于我们没有收到地址,因此很难分析相对于奥斯汀最受欢迎的目的地的位置。但考虑 (:Review)-[:REVIEWS]->(:Listing) 关系。在我之前的文章中,我将我的数据集限制为仅包含具有至少一个客户评论的列表。我这样做是为了消除市场上可能定价不可靠的新产品,它极大地提高了我模型的适应性。现在,让我们更深入地挖掘,并使用列表的评论数量以及它必须预测每晚价格的房间数量。

请注意,我并没有真正的统计理由来假设评论数量会影响上市价格,主要是为了演示如何创建具有多个自变量的模型。

背景知识

在我们回到奥斯汀租赁市场之前,将回顾多元线性回归的重要细节。请记住,在简单线性回归中,我们希望使用单个自变量“x”的值来预测因变量“y”的值。不同之处在于,在多元线性回归中,我们使用多个自变量(x1、x2、…、xp)来预测 y,而不是仅使用一个自变量。

多元线性回归的直观理解有点复杂,它取决于自变量(p)的数量。这只是简单线性回归的一个示例:如果 p = 1,则 (x1, y) 数据点位于标准 2D 坐标系(具有 x 和 y 轴)上。线性回归通过最适合数据的点获得一条直线。

如果 p = 2,这些 (x1, x2, y) 数据点位于 3D 坐标系(具有 x、y 和 z 轴)中,在多元线性回归中以找到最适合数据点的平面。

对于更多的自变量,视觉理解更抽象。对于 p 个自变量,数据点 (x1,x2,x3…,xp,y) 存在于 p+1 维空间中。真正重要的是线性模型(p维)可以用p+1个系数β0, β1, …, βp来表示,所以y近似为方程y = β0+β1* x1 + β2* x2 + … + βp* xp。

你需要知道这个

多元线性回归有两种类型:普通最小二乘 (OLS)() 和广义最小二乘 (GLS)()。两者的主要区别在于,虽然 OLS 假设任何两个自变量之间没有强相关性,但 GLS 通过转换数据然后使用 OLS 用转换后的数据建立模型来处理相关的自变量。

这些过程使用 OLS 的方法。因此,要建立一个成功的模型,首先应该考虑变量之间的关系。将卧室和住宿作为两个独立的自变量包括在内可能不是一个好主意,因为卧室的数量和入住的客人数量可能具有很强的正相关性。另一方面,评论数和房间数之间没有明确的逻辑关系。对于定量分析,需要选择自变量,使每一对的 Pearson 相关系数接近于零(见下文)。( )

多个 LR 在行动

好吧,让我们看一下 Neo4j 中构建的多元线性回归模型的一组查询。

建立

从最新的线性回归版本下载并安装 jar 文件。() 运行:从 Neo4j 浏览器播放并按照导入查询创建 Will 的短租列表图表。有关安装线性回归程序和导入 Austin 租赁数据集的更全面的指南,请参阅我之前的帖子。

拆分训练和测试数据

导入数据集并安装后,我们将数据集拆分为 75:25(训练:测试)样本。让我们从最后一个最终模型构建r软件中多元线性回归,并且只考虑至少有一个客户评论的列表。标签 75%:训练。

添加:测试选项卡到剩余的 25%。

定量相关

如果您想知道自变量之间的 Pearson 相关性,请使用函数 regression.linear.correlation(List first, List second)。该函数的列表输入之一包含来自许多列表的聚合“评论计数”数据,并且每个“评论计数”是通过聚合每个列表的关系来计算的。我们不能在同一个查询中执行两个级别的聚合 (collect(count(r)))。因此,我们必须执行两次查询。

首先将 num_reviews 存储在数据集列表中。

然后从所有列表中收集 (num_reviews, rooms) 数据并计算相关性。

Pearson相关系数在[-1,1]范围内,0表示无相关,1表示完全正相关,-1表示完全负相关。评论数和房间数之间的相关性为-0.125,表明负相关性非常弱。对于如此小的相关性,OLS 是一种可以接受的方法,因此我们可以继续使用该模型。您可以在下面阅读有关解释相关系数的更多信息。( )

初始化模型

我们称其为相同的创建过程,但现在我们的模型框架是“多”而不是“简单”,自变量的数量是 2 而不是 1。

添加训练数据

以与简单线性回归相同的格式添加已知数据。只需在参数列表中添加另一个条目(评论数)。

训练模型

在接受测试数据或进行预测之前,我们必须训练模型来计算线参数(βi)、决定系数(R²)等。如果您忘记了这一步,然后尝试添加测试数据或进行预测,您的模型将首先自动训练。

请注意,您仍然可以在调用培训师后添加更多培训数据。您只需要在测试新模型之前再次训练!

添加测试数据

分析您的模型如何处理看不见的数据。请记住,在添加测试数据时,您需要使用附加参数“test”作为程序regression.linear.add 的输入。

测试模型

现在已经添加了所有测试数据,调用测试程序来计算测量值(在下面的 testInfo 中),以便我们可以分析模型的性能。

您也可以随时调用 info 过程以返回有关模型的信息。

我们来看看调整后的 R²。这个值类似于我在上一篇文章中提到的 R²,但它经过调整,以便随着自变量添加到模型中,调整后的 R² 不会增加,除非模型有很大的机会改进。因此,当我们将多元线性回归模型(有两个自变量)与之前的模型(只有一个自变量)进行比较时,调整后的 R² 是衡量成功的更好指标。

我们通常寻找大于0.6,但接近1的R²值,表示更好的线性拟合。在这里,训练调整的 R² = 0.517 和测试调整的 R² = 0.556。上次,我们的 R² 值是 0.500 和 0.559 用于训练和测试。使用多元线性回归创建的模型在最后一个训练数据上略好于简单回归模型,在测试数据上也差不多。

退后一步

在 Neo4j,我和我的同事都面临一个问题:机器学习和人工智能在图数据库中属于哪里?这个问题有几个答案r软件中多元线性回归,没有一个是“正确”的答案。在我之前的文章中,我演示了如何在图中的数据上构建一个简单的机器学习模型,以避免导出到另一个软件。在这篇文章中,出现了另一个有趣的方面:​​使用存储在图结构中的数据来构建模型的能力。通过计算每个列表上的 (:Review)-[:REVIEWS]->(:Listing) 关系的数量,我们能够轻松检索“评论数量”数据。在这方面,图数据库增加了我们可以轻松访问的数据类型,以便构建机器学习模型。

展望未来,我很想探索机器学习模型如何使用数据集的图形结构更有效地学习和预测。

总结

以下是使用 itgression.linear 对多线性回归进行程序调整的快速列表:

编译生成

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论