最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|R語言進行支持向量機回歸SVR和網(wǎng)格搜索超參數(shù)優(yōu)化

2021-08-09 11:21 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=23305?

原文出處:拓端數(shù)據(jù)部落公眾號

在這篇文章中,我將展示如何使用R語言來進行支持向量回歸SVR。

我們將首先做一個簡單的線性回歸,然后轉(zhuǎn)向支持向量回歸,這樣你就可以看到兩者在相同數(shù)據(jù)下的表現(xiàn)。
?

一個簡單的數(shù)據(jù)集

首先,我們將使用這個簡單的數(shù)據(jù)集。

正如你所看到的,在我們的兩個變量X和Y之間似乎存在某種關系,看起來我們可以擬合出一條在每個點附近通過的直線。

我們用R語言來做吧!

第1步:在R中進行簡單的線性回歸

下面是CSV格式的相同數(shù)據(jù),我把它保存在regression.csv文件中。

我們現(xiàn)在可以用R來顯示數(shù)據(jù)并擬合直線。

  1. # 從csv文件中加載數(shù)據(jù)


  2. dataDirectory <- "D:/" #把你自己的文件夾放在這里


  3. data <- read.csv(paste(dataDirectory, 'data.csv', sep=""), header = TRUE)




  4. # 繪制數(shù)據(jù)


  5. plot(data, pch=16)




  6. # 創(chuàng)建一個線性回歸模型


  7. model <- lm(Y ~ X, data)




  8. # 添加擬合線


  9. abline(model)

上面的代碼顯示以下圖表:

第2步:我們的回歸效果怎么樣?

為了能夠比較線性回歸和支持向量回歸,我們首先需要一種方法來衡量它的效果。

為了做到這一點,我們改變一下代碼,使模型做出每一個預測可視化



  1. # 對每個X做一個預測


  2. pred <- predict(model, data)




  3. # 顯示預測結(jié)果


  4. points(X, pred)

產(chǎn)生了以下圖表。

對于每個數(shù)據(jù)點Xi,模型都會做出預測Y^i,在圖上顯示為一個紅色的十字。與之前的圖表唯一不同的是,這些點沒有相互連接。

為了衡量我們的模型效果,我們計算它的誤差有多大。

我們可以將每個Yi值與相關的預測值Y^i進行比較,看看它們之間有多大的差異。

請注意,表達式Y(jié)^i-Yi是誤差,如果我們做出一個完美的預測,Y^i將等于Yi,誤差為零。

如果我們對每個數(shù)據(jù)點都這樣做,并將誤差相加,我們將得到誤差之和,如果我們?nèi)∑骄?,我們將得到平均平方誤差(MSE)。

在機器學習中,衡量誤差的一個常見方法是使用均方根誤差(RMSE),所以我們將使用它來代替。

為了計算RMSE,我們?nèi)∑淦椒礁?,我們得到RMSE

使用R,我們可以得到以下代碼來計算RMSE

  1. rmse <- function(error)


  2. {


  3. ??sqrt(mean(error^2))


  4. }


我們現(xiàn)在知道,我們的線性回歸模型的RMSE是5.70。讓我們嘗試用SVR來改善它吧!

第3步:支持向量回歸

用R創(chuàng)建一個SVR模型。

下面是用支持向量回歸進行預測的代碼。

model <- svm(Y ~ X , data)

如你所見,它看起來很像線性回歸的代碼。請注意,我們調(diào)用了svm函數(shù)(而不是svr!),這是因為這個函數(shù)也可以用來用支持向量機進行分類。如果該函數(shù)檢測到數(shù)據(jù)是分類的(如果變量是R中的一個因子),它將自動選擇SVM。

代碼畫出了下面的圖。

這一次的預測結(jié)果更接近于真實的數(shù)值 ! 讓我們計算一下支持向量回歸模型的RMSE。

  1. # 這次svrModel$residuals與data$Y - predictedY不一樣。

  2. #所以我們這樣計算誤差



  3. svrPredictionRMSE

正如預期的那樣,RMSE更好了,現(xiàn)在是3.15,而之前是5.70。

但我們能做得更好嗎?

第四步:調(diào)整你的支持向量回歸模型

為了提高支持向量回歸的性能,我們將需要為模型選擇最佳參數(shù)。

在我們之前的例子中,我們進行了ε-回歸,我們沒有為ε(?)設置任何值,但它的默認值是0.1。 ?還有一個成本參數(shù),我們可以改變它以避免過度擬合。

選擇這些參數(shù)的過程被稱為超參數(shù)優(yōu)化,或模型選擇。

標準的方法是進行網(wǎng)格搜索。這意味著我們將為?和成本的不同組合訓練大量的模型,并選擇最好的一個。

  1. # 進行網(wǎng)格搜索


  2. tuneResultranges = list(epsilon = seq(0,1,0.1), cost = 2^(2:9))



  3. # 繪制調(diào)參圖


  4. plot(Result)

在上面的代碼中有兩個重要的點。

  • ?我們使用tune方法訓練模型,?=0,0.1,0.2,...,1和cost=22,23,24,...,29這意味著它將訓練88個模型(這可能需要很長一段時間

  • tuneResult返回MSE,別忘了在與我們之前的模型進行比較之前將其轉(zhuǎn)換為RMSE。

最后一行繪制了網(wǎng)格搜索的結(jié)果。

在這張圖上,我們可以看到,區(qū)域顏色越深,我們的模型就越好(因為RMSE在深色區(qū)域更接近于零)。

這意味著我們可以在更窄的范圍內(nèi)嘗試另一個網(wǎng)格搜索,我們將嘗試在0和0.2之間的?值。目前看來,成本值并沒有產(chǎn)生影響,所以我們將保持原樣,看看是否有變化。

  1. rangelist(epsilo = seq(0,0.2,0.01), cost = 2^(2:9))



我們用這一小段代碼訓練了不同的168模型。

當我們放大暗區(qū)域時,我們可以看到有幾個較暗的斑塊。

從圖中可以看出,C在200到300之間,?在0.08到0.09之間的模型誤差較小。

希望對我們來說,我們不必用眼睛去選擇最好的模型,R讓我們非常容易地得到它,并用來進行預測。



  1. # 這個值在你的電腦上可能是不同的


  2. # 因為調(diào)參方法會隨機調(diào)整數(shù)據(jù)


  3. tunedModelRMSE <- rmse(error)?

我們再次提高了支持向量回歸模型的RMSE !

我們可以把我們的兩個模型都可視化。在下圖中,第一個SVR模型是紅色的,而調(diào)整后的SVR模型是藍色的。


我希望你喜歡這個關于用R支持向量回歸的介紹。你可以查看原文得到本教程的源代碼。

最受歡迎的見解

1.R語言多元Logistic邏輯回歸 應用案例

2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實現(xiàn)

3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)

4.R語言泊松Poisson回歸模型分析案例

5.R語言混合效應邏輯回歸Logistic模型分析肺癌

6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實現(xiàn)

7.R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機森林算法預測心臟病

8.python用線性回歸預測股票價格

9.R語言用邏輯回歸、決策樹和隨機森林對信貸數(shù)據(jù)集進行分類預測


拓端tecdat|R語言進行支持向量機回歸SVR和網(wǎng)格搜索超參數(shù)優(yōu)化的評論 (共 條)

分享到微博請遵守國家法律
峨边| 柳州市| 延吉市| 哈尔滨市| 望谟县| 独山县| 永善县| 德庆县| 清新县| 高州市| 莎车县| 沐川县| 英德市| 迁安市| 凤冈县| 武穴市| 宿迁市| 嘉善县| 新建县| 永春县| 舟山市| 濉溪县| 武义县| 依安县| 兴安盟| 保山市| 沈阳市| 资阳市| 翁牛特旗| 永善县| 鄯善县| 东莞市| 仁寿县| 巴彦淖尔市| 北宁市| 桂林市| 崇州市| 黔南| 闵行区| 金塔县| 东丽区|