一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【典型算法】SVM算法

 Y_三木 2016-08-22

小編說:機器學(xué)習(xí)算法眾多,全部掌握,一則不可能,二則沒必要。如何靈活掌握和應(yīng)用機器學(xué)習(xí)算法呢?小編認(rèn)為,精通機器學(xué)習(xí)一些典型的算法,包括算法的原理、算法的演變、算法的優(yōu)劣、算法的應(yīng)用等。從今日起,【R語言】公眾號會陸續(xù)推出機器學(xué)習(xí)典型算法一系列文章。這些文章的來源,要么是轉(zhuǎn)載,要么是翻譯,要么是投稿,要么是眾包等。從多個途徑,多個維度,利用R語言來理解和實現(xiàn)機器學(xué)習(xí)中典型算法。歡迎伙伴們參與進(jìn)來,你可以分享你所認(rèn)為的機器學(xué)習(xí)典型算法是什么?你可以向小編投稿。你可以向小編推送好的資源。

支持向量機是一個相對較新和較先進(jìn)的機器學(xué)習(xí)技術(shù),最初提出是為了解決二類分類問題,現(xiàn)在被廣泛用于解決多類非線性分類問題和回歸問題。繼續(xù)閱讀本文,你將學(xué)習(xí)到支持向量機如何工作,以及如何利用R語言實現(xiàn)支持向量機。

支持向量機如何工作?

簡單介紹下支持向量機是做什么的:

假設(shè)你的數(shù)據(jù)點分為兩類,支持向量機試圖尋找最優(yōu)的一條線(超平面),使得離這條線最近的點與其他類中的點的距離最大。有些時候,一個類的邊界上的點可能越過超平面落在了錯誤的一邊,或者和超平面重合,這種情況下,需要將這些點的權(quán)重降低,以減小它們的重要性。

這種情況下,“支持向量”就是那些落在分離超平面邊緣的數(shù)據(jù)點形成的線。

無法確定分類線(線性超平面)時該怎么辦?

此時可以將數(shù)據(jù)點投影到一個高維空間,在高維空間中它們可能就變得線性可分了。它會將問題作為一個帶約束的最優(yōu)化問題來定義和解決,其目的是為了最大化兩個類的邊界之間的距離。

我的數(shù)據(jù)點多于兩個類時該怎么辦?

此時支持向量機仍將問題看做一個二元分類問題,但這次會有多個支持向量機用來兩兩區(qū)分每一個類,直到所有的類之間都有區(qū)別。

工程實例

讓我們看一下如何使用支持向量機實現(xiàn)二元分類器,使用的數(shù)據(jù)是來自MASS包的cats數(shù)據(jù)集。在本例中你將嘗試使用體重和心臟重量來預(yù)測一只貓的性別。我們拿數(shù)據(jù)集中20%的數(shù)據(jù)點,用于測試模型的準(zhǔn)確性(在其余的80%的數(shù)據(jù)上建立模型)。

# Setuplibrary(e1071)data(cats, package='MASS')inputData <- data.frame(cats[,="" c="" (2,3)],="" response="as.factor(cats$Sex))" #="" response="" as="">

線性支持向量機

傳遞給函數(shù)svm()的關(guān)鍵參數(shù)是kernel、cost和gamma。Kernel指的是支持向量機的類型,它可能是線性SVM、多項式SVM、徑向SVM或Sigmoid SVM。Cost是違反約束時的成本函數(shù),gamma是除線性SVM外其余所有SVM都使用的一個參數(shù)。還有一個類型參數(shù),用于指定該模型是用于回歸、分類還是異常檢測。但是這個參數(shù)不需要顯式地設(shè)置,因為支持向量機會基于響應(yīng)變量的類別自動檢測這個參數(shù),響應(yīng)變量的類別可能是一個因子或一個連續(xù)變量。所以對于分類問題,一定要把你的響應(yīng)變量作為一個因子。

# linear SVMsvmfit <- svm(response="" ~="" .,="" data="inputData," kernel='linear' ,="" cost="10," scale="FALSE)" #="" linear="" svm,="" scaling="" turned="" offprint(svmfit)plot(svmfit,="" inputdata)comparetable=""><- table="" (inputdata$response,="" predict(svmfit))="" #="" tabulatemean(inputdata$response="" !="predict(svmfit))" #="" 19.44%="" misclassification="">

徑向支持向量機

徑向基函數(shù)作為一個受歡迎的內(nèi)核函數(shù),可以通過設(shè)置內(nèi)核參數(shù)作為“radial”來使用。當(dāng)使用一個帶有“radial”的內(nèi)核時,結(jié)果中的超平面就不需要是一個線性的了。通常定義一個彎曲的區(qū)域來界定類別之間的分隔,這也往往導(dǎo)致相同的訓(xùn)練數(shù)據(jù),更高的準(zhǔn)確度。

# radial SVMsvmfit <- svm(response="" ~="" .,="" data="inputData," kernel='radial' ,="" cost="10," scale="FALSE)" #="" radial="" svm,="" scaling="" turned="" offprint(svmfit)plot(svmfit,="" inputdata)comparetable=""><- table="" (inputdata$response,="" predict(svmfit))="" #="" tabulatemean(inputdata$response="" !="predict(svmfit))" #="" 18.75%="" misclassification="">

尋找最優(yōu)參數(shù)

你可以使用tune.svm()函數(shù),來尋找svm()函數(shù)的最優(yōu)參數(shù)。

### Tuning# Prepare training and test dataset.seed(100) # for reproducing resultsrowIndices <- 1="" :="" nrow(inputdata)="" #="" prepare="" row="" indicessamplesize=""><- 0.8="" *="" length(rowindices)="" #="" training="" sample="" sizetrainingrows=""><- sample="" (rowindices,="" samplesize)="" #="" random="" samplingtrainingdata=""><- inputdata[trainingrows,="" ]="" #="" training="" datatestdata=""><- inputdata[-trainingrows,="" ]="" #="" test="" datatuned=""><- tune.svm(response="" ~.,="" data="trainingData," gamma="10^(-6:-1)," cost="10^(1:2))" #="" tunesummary="" (tuned)="" #="" to="" select="" best="" gamma="" and="">
# Parameter tuning of 'svm':# - sampling method: 10-fold cross validation## - best parameters:# gamma cost# 0.001 100## - best performance: 0.26## - Detailed performance results:# gamma cost error dispersion# 1 1e-06 10 0.36 0.09660918# 2 1e-05 10 0.36 0.09660918# 3 1e-04 10 0.36 0.09660918# 4 1e-03 10 0.36 0.09660918# 5 1e-02 10 0.27 0.20027759# 6 1e-01 10 0.27 0.14944341# 7 1e-06 100 0.36 0.09660918# 8 1e-05 100 0.36 0.09660918# 9 1e-04 100 0.36 0.09660918# 10 1e-03 100 0.26 0.18378732# 11 1e-02 100 0.26 0.17763883# 12 1e-01 100 0.26 0.15055453

結(jié)果證明,當(dāng)cost為100,gamma為0.001時產(chǎn)生最小的錯誤率。利用這些參數(shù)訓(xùn)練徑向支持向量機。

svmfit <- svm="" (response="" ~="" .,="" data="trainingData," kernel='radial' ,="" cost="100," gamma="0.001," scale="FALSE)" #="" radial="" svm,="" scaling="" turned="" offprint(svmfit)plot(svmfit,="" trainingdata)comparetable=""><- table="" (testdata$response,="" predict(svmfit,="" testdata))="" #="" comparison="" tablemean(testdata$response="" !="predict(svmfit," testdata))="" #="" 13.79%="" misclassification="">
F MF 6 3M 1 19

網(wǎng)格圖

一個2-色的網(wǎng)格圖,能讓結(jié)果看起來更清楚,它將圖的區(qū)域指定為利用SVM分類器得到的結(jié)果的類別。在下邊的例子中,這樣的網(wǎng)格圖中有很多數(shù)據(jù)點,并且通過數(shù)據(jù)點上的傾斜的方格來標(biāo)記支持向量上的點。很明顯,在這種情況下,有很多越過邊界違反約束的點,但在SVM內(nèi)部它們的權(quán)重都被降低了。

# Grid Plotn_points_in_grid = 60 # num grid points in a linex_axis_range <- range="" (inputdata[,="" 2])="" #="" range="" of="" x="" axisy_axis_range=""><- range="" (inputdata[,="" 1])="" #="" range="" of="" y="" axisx_grid_points=""><- seq="" (from="x_axis_range[1]," to="x_axis_range[2]," length="n_points_in_grid)" #="" grid="" points="" along="" x-axisy_grid_points=""><- seq="" (from="y_axis_range[1]," to="y_axis_range[2]," length="n_points_in_grid)" #="" grid="" points="" along="" y-axisall_grid_points=""><- expand.grid="" (x_grid_points,="" y_grid_points)="" #="" generate="" all="" grid="" pointsnames="" (all_grid_points)=""><- c('hwt',="" 'bwt')="" #="" renameall_points_predited=""><- predict(svmfit,="" all_grid_points)="" #="" predict="" for="" all="" points="" in="" gridcolor_array=""><- c('red',="" 'blue')[as.numeric(all_points_predited)]="" #="" colors="" for="" all="" points="" based="" on="" predictionsplot="" (all_grid_points,="" col="color_array," pch="20," cex="0.25)" #="" plot="" all="" grid="" pointspoints="" (x="trainingData$Hwt," y="trainingData$Bwt," col="c('red'," 'blue')[as.numeric(trainingdata$response)],="" pch="19)" #="" plot="" data="" pointspoints="" (trainingdata[svmfit$index,="" c="" (2,="" 1)],="" pch="5," cex="2)" #="" plot="" support="">

來源:http://blog./84714/

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美激情视频一区二区三区| 91在线国内在线中文字幕| 欧美亚洲美女资源国产| 视频一区中文字幕日韩| 国产一区二区熟女精品免费| 美女黄色三级深夜福利| 国产不卡最新在线视频| 在线免费国产一区二区| 男生和女生哪个更好色| 中国日韩一级黄色大片| 久草热视频这里只有精品| 日韩成人免费性生活视频| 亚洲成人精品免费在线观看| 国产性色精品福利在线观看| 91在线国内在线中文字幕| 国产精品一区二区成人在线| 久草热视频这里只有精品| 少妇肥臀一区二区三区| 日韩黄色大片免费在线| 午夜色午夜视频之日本| 亚洲一区二区三区在线中文字幕| 又大又紧又硬又湿又爽又猛| 黄男女激情一区二区三区| 亚洲最新中文字幕在线视频| 免费观看一区二区三区黄片| 国产99久久精品果冻传媒| 黄色片一区二区在线观看| 91亚洲国产—区=区a| 午夜精品在线观看视频午夜| 91插插插外国一区二区婷婷| 香蕉尹人视频在线精品| 久久偷拍视频免费观看| 欧美一级黄片免费视频| 日韩精品一区二区一牛| 国产香蕉国产精品偷在线观看| 日韩人妻中文字幕精品| 色一情一伦一区二区三| 亚洲一级二级三级精品| 老司机精品国产在线视频| 久久精视频免费视频观看| 加勒比东京热拍拍一区二区|