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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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