91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言中的前向逐步回歸是怎樣的

發布時間:2021-11-22 09:25:48 來源:億速云 閱讀:290 作者:柒染 欄目:大數據

這篇文章給大家介紹R語言中的前向逐步回歸是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

 建模過程中,選擇合適的特征集合,可以幫助控制模型復雜度,防止過擬合等問題。為了選取最佳的特征集合,可以遍歷所有的列組合,找出效果最佳的集合,但這樣需要大量的計算。本文介紹的前向逐步回歸法是針對最小二乘法的修改。相對于要將所有組合情況遍歷一遍,前向逐步回歸可以大大節省計算量,選擇最優的特征集合,從而解決過擬合問題。

  • 前向逐步回歸

前向逐步回歸的過程是:遍歷屬性的一列子集,選擇使模型效果最好的那一列屬性。接著尋找與其組合效果最好的第二列屬性,而不是遍歷所有的兩列子集。以此類推,每次遍歷時,子集都包含上一次遍歷得到的最優子集。這樣,每次遍歷都會選擇一個新的屬性添加到特征集合中,直至特征集合中特征個數不能再增加。

  • 實例代碼

1、數據導入并分組。導入數據,將數據集抽取70%作為訓練集,剩下30%作為測試集。特征與標簽分開存放。

target.url <- "http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv"

data <- read.csv(target.url,header = T,sep=";")


#divide data into training and test sets

index <- which((1:nrow(data))%%3==0)

train <- data[-index,]

test <- data[index,]


#arrange date into list and label sets

trainlist <- train[,1:11]

testlist <- test[,1:11]

trainlabel <- train[,12]

testlabel <- test[,12]

2、前向逐步回歸構建輸出特征集合。通過for循環,從屬性的一個子集開始進行遍歷。第一次遍歷時,該子集為空。每一個屬性被加入子集后,通過線性回歸來擬合模型,并計算在測試集上的誤差,每次遍歷選擇得到誤差最小的一列加入輸出特征集合中。最終得到輸出特征集合的關聯索引和屬性名稱。

#build list of attributes one-at-a-time, starting with empty

attributeList<-as.numeric()

index<-1:ncol(trainlist)

indexSet<-as.numeric()

oosError<-as.numeric()


for(i in index){

  #attributes not in list already

  attTry<-setdiff(index,attributeList)

  #try each attribute not in set to see which one gives least oos error

  errorList<-as.numeric()

  attTemp<-as.numeric()

  for(ii in attTry){

    attTemp<-append(attTemp,attributeList)

    attTemp<-append(attTemp,ii)

    xTrainTemp<-as.data.frame(trainlist[,attTemp])

    xTestTemp<-as.data.frame(testlist[,attTemp])

    names(xTrainTemp)<-names(trainlist[attTemp])

    names(xTestTemp)<-names(testlist[attTemp])

    lm.mod <- lm(trainlabel~.,data=xTrainTemp)

    rmsError<-rmse(testlabel,predict(lm.mod,(xTestTemp)))

    errorList<-append(errorList,rmsError)

    attTemp<-as.numeric()

  }

  iBest<-which.min(errorList)

  attributeList<-append(attributeList,attTry[iBest])

  oosError<-append(oosError,errorList[iBest])

}

cat("Best attribute indices: ", attributeList, "\n","Best attribute names: \n",names(trainlist[attributeList]))

索引與名稱如下:

Best attribute indices:  11 2 10 7 6 9 1 8 4 3 5 

 Best attribute names: 

 alcohol volatile.acidity sulphates total.sulfur.dioxide free.sulfur.dioxide pH fixed.acidity density residual.sugar citric.acid chlorides

屬性名列表的順序也是屬性的     重要性排序,了解屬性重要性,可以增加模型的解釋性。

3、模型效果評估。分別畫出RMSE與屬性個數之間的關系,前向逐步預測算法對數據預測對錯誤直方圖,和真實標簽與預測標簽散點圖。

plot(oosError,type = "l",xlab = "Number of Attributes",ylab = "ERMS",main = "error versus number of attributes")


finaltrain<-trainlist[,attributeList[1:which.min(oosError)]]

finaltest<-testlist[,attributeList[1:which.min(oosError)]]

lm.finalmol<-lm(trainlabel~.,data = finaltrain)

finalpre<-predict(lm.finalmol,finaltest)

errorVector<-testlabel-finalpre

hist(errorVector)


plot(predict(lm.finalmol,finaltest),testlabel,xlab = "Predicted Taste Score",ylab = "Actual Taste Score")

R語言中的前向逐步回歸是怎樣的

R語言中的前向逐步回歸是怎樣的

R語言中的前向逐步回歸是怎樣的

從圖上可以看出,使用前9個屬性,誤差值一直在降低,加入第十個屬性后,誤差值開始增加。因此,我們選取輸出特征集合的前9項,作為最終的最優特征集合。從散點圖上看,得分在5、6時,預測情況非常好,因為區域的顏色深度可以反映點的堆積程度,一般情況下,機器學習算法對邊緣數據預測效果不好。由于真正的標簽是整數,所以散點圖呈水平狀分布。后兩張圖,均可通過分析圖像形態,指出模型性能提升途徑。

關于R語言中的前向逐步回歸是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图木舒克市| SHOW| 汉沽区| 贡山| 宜川县| 昌图县| 阿勒泰市| 页游| 白水县| 大邑县| 晋城| 遂川县| 伊宁县| 都兰县| 晋江市| 乐至县| 达尔| 军事| 铁岭县| 张家港市| 万载县| 新化县| 平武县| 宜川县| 江源县| 德化县| 汉阴县| 呼图壁县| 曲阳县| 科尔| 普格县| 乐安县| 永和县| 镶黄旗| 杂多县| 西峡县| 绥滨县| 区。| 克山县| 桃园市| 大足县|