R: 分阶段回归,使用基向量进行乘法

我从这篇论文中得到了这个算法:enter image description here

我尝试在R中实现它,但在与第i个标准基向量)相乘时,维度不正确,

这是我目前的代码:

#initializing matricesBoston <- read.csv("train.csv")Boston=na.omit(Boston)x=model.matrix(crim~.,Boston)[,-c(1,2)]rownames(x)=c()y=as.matrix(Boston$crim)value1=matrix(0,13,1)value=matrix(0,13,1)#defining a 0 beta vector 13x1 and epsilonbeta=as.matrix(rep(0,13))epsilon=0.1#defining a matrix for the standard basis vecore=matrix(0,13,13)for(t in 1:13){  e[t,t]=as.matrix(1)}for(k in 1:13){ #Finding the maximum i  for(j in 1:13){    value[j]=t(x)[j,]%*%(y-x%*%beta)    value=abs(value)    i=which.max(value)  }  #defining the standard basis vector  e_basis=matrix(e[,i],13,1)  value1[k]=epsilon*sign(t(x)[i,]%*%(y-x%*%beta))  beta=beta+value1}

代码可以编译,但我不知道除了基向量之外的其他部分是否正确实现了。

train.csv文件(波士顿数据集)可以在这里找到。


回答:

你得到的错误是因为当你计算sign(t(x)[i,]%*%(y-x%*%beta))时,你得到的不是一个数值,而是一个大小为1的矩阵。你可以通过添加[1,1]来从矩阵中提取符号值。这样,你就可以计算epsilon*sign(t(x)[i,]%*%(y-x%*%beta))[1,1]*e_basis了。

另一件让我惊讶的事情是,在你的代码中,k从1循环到13,这是预测变量的数量,但k与这个数量完全无关,因为k代表你的算法的迭代步骤。

话虽如此,value1(不是value1[k])应该存储向量epsilon*sign(t(x)[i,]%*%(y-x%*%beta))[1,1]*e_basis

现在,如果我没有理解错,为了让你的代码按照论文中描述的那样工作,我会这样重写你的解决方案:

Boston <- read.csv("../train.csv")#initializing matricesBoston=na.omit(Boston)x=model.matrix(crim~.,Boston)[,-c(1:2)]rownames(x)=c()y=as.matrix(Boston$crim)value1=matrix(0,13,1)value=matrix(0,13,1)#defining a 0 beta vector 13x1 and epsilonbeta=as.matrix(rep(0,13))epsilon=0.1#defining a matrix for the standard basis vecore=matrix(0,13,13)for(t in 1:13){  e[t,t]=as.matrix(1) }n_iterations <- 10for(k in 1:n_iterations){  #Finding the maximum i  for(j in 1:13){    value[j]=t(x)[j,]%*%(y-x%*%beta)    value=abs(value)  }  i=which.max(value)  #defining the standard basis vector  e_basis=matrix(e[,i],13,1)  value1=epsilon*sign(t(x)[i,]%*%(y-x%*%beta))[1,1]*e_basis  beta=beta+value1}

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中创建了一个多类分类项目。该项目可以对…

发表回复

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