MATLAB中多变量线性回归,公式与代码不匹配

我有以下数据集:

X

X =1.0000    0.1300   -0.22371.0000   -0.5042   -0.22371.0000    0.5025   -0.22371.0000   -0.7357   -1.53781.0000    1.2575    1.09041.0000   -0.0197    1.09041.0000   -0.5872   -0.22371.0000   -0.7219   -0.22371.0000   -0.7810   -0.22371.0000   -0.6376   -0.22371.0000   -0.0764    1.09041.0000   -0.0009   -0.22371.0000   -0.1393   -0.22371.0000    3.1173    2.40451.0000   -0.9220   -0.22371.0000    0.3766    1.09041.0000   -0.8565   -1.53781.0000   -0.9622   -0.22371.0000    0.7655    1.09041.0000    1.2965    1.09041.0000   -0.2940   -0.22371.0000   -0.1418   -1.53781.0000   -0.4992   -0.22371.0000   -0.0487    1.09041.0000    2.3774   -0.22371.0000   -1.1334   -0.22371.0000   -0.6829   -0.22371.0000    0.6610   -0.22371.0000    0.2508   -0.22371.0000    0.8007   -0.22371.0000   -0.2034   -1.53781.0000   -1.2592   -2.85191.0000    0.0495    1.09041.0000    1.4299   -0.22371.0000   -0.2387    1.09041.0000   -0.7093   -0.22371.0000   -0.9584   -0.22371.0000    0.1652    1.09041.0000    2.7864    1.09041.0000    0.2030    1.09041.0000   -0.4237   -1.53781.0000    0.2986   -0.22371.0000    0.7126    1.09041.0000   -1.0075   -0.22371.0000   -1.4454   -1.53781.0000   -0.1871    1.09041.0000   -1.0037   -0.2237

theta

000

y

y =  399900  329900  369000  232000  539900  299900  314900  198999  212000  242500  239999  347000  329999  699900  259900  449900  299900  199900  499998  599000  252900  255000  242900  259900  573900  249900  464500  469000  475000  299900  349900  169900  314900  579900  285900  249900  229900  345000  549000  287000  368500  329900  314000  299000  179900  299900  239500

X集合代表多变量回归的值,第一列代表X0,第二列代表X1,以此类推。

实现的公式大致如下:

enter image description here

我实现了一个MATLAB代码如下:

for i=1:size(theta,1)    h=X*theta;    sumE=sum((h-y).*X(:,i));    theta(i)=theta(i)-alpha*(1/m)*sumE;end

这段代码在一个从1到n次迭代的for循环中(m的值不重要,可以设置为40)。问题是,尽管代码运行正常,结果也符合预期,但当我提交到在线检查程序时,我的结果被判定为错误。原因是我应该同时更新theta。

我从网上找到了以下MATLAB代码:

h = X*theta;theta = theta - alpha / m * (X'*(h - y));

当我运行网上的解决方案时,它给出的答案与我的几乎相同,仅在第六位小数上略有不同。当我将这个答案提交到在线程序时,它被完全接受,但我很好奇求和部分去哪儿了?公式中明确指出了一个求和,但在网上的解决方案中没有。也许两种代码都正确,但我不知道网上的作者是否使用了某种线性代数技巧。有什么帮助吗?

谢谢


回答:

我不确定我是否理解了你的问题,但你从网上复制的公式是X'(h-y)。请注意X后面有一个转置符号!所以,这是一个矩阵乘法。你的求和(你的循环)被这个矩阵乘法所替代。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注