久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 拓端數(shù)據(jù) 2021-08-06

原文鏈接:http:///?p=23305 

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

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

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

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

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

我們用R語言來做吧!

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

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

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

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

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

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



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

plot(data, pch=16)



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

model <- lm(Y ~ X, data)



# 添加擬合線

abline(model)

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

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

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

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

# 對每個X做一個預(yù)測

pred <- predict(model, data)



# 顯示預(yù)測結(jié)果

points(X, pred)

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

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

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

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

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

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

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

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

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

rmse <- function(error)

{

  sqrt(mean(error^2))

}

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

第3步:支持向量回歸

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

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

model <- svm(Y ~ X , data)

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

代碼畫出了下面的圖。

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

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

#
所以我們這樣計算誤差


svrPredictionRMSE

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

但我們能做得更好嗎,?

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

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

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

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

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

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

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


# 繪制調(diào)參圖

plot(Result)

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

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

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

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

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

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

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

我們用這一小段代碼訓(xùn)練了不同的168模型。

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

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

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

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

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

tunedModelRMSE <- rmse(error)

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

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

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


    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多