
在R中使用支持向量機(SVM)進行數(shù)據(jù)挖掘(下)
第二種使用svm()函數(shù)的方式則是根據(jù)所給的數(shù)據(jù)建立模型。這種方式形式要復(fù)雜一些,但是它允許我們以一種更加靈活的方式來構(gòu)建模型。它的函數(shù)使用格式如下(注意我們僅列出了其中的主要參數(shù))。
[plain] view plain copy
svm(x, y = NULL, scale = TRUE, type = NULL, kernel = "radial",
degree = 3, gamma = if (is.vector(x)) 1 else 1 / ncol(x),
coef0 = 0, cost = 1, nu = 0.5, subset, na.action = na.omit)
此處,x可以是一個數(shù)據(jù)矩陣,也可以是一個數(shù)據(jù)向量,同時也可以是一個稀疏矩陣。y是對于x數(shù)據(jù)的結(jié)果標簽,它既可以是字符向量也可以為數(shù)值向量。x和y共同指定了將要用來建模的訓(xùn)練數(shù)據(jù)以及模型的基本形式。
參數(shù)type用于指定建立模型的類別。支持向量機模型通??梢杂米鞣诸惸P?、回歸模型或者異常檢測模型。根據(jù)用途的差異,在svm()函數(shù)中的type可取的值有C-classification、nu-classification、one-classification、eps-regression和nu-regression這五種類型中。其中,前三種是針對于字符型結(jié)果變量的分類方式,其中第三種方式是邏輯判別,即判別結(jié)果輸出所需判別的樣本是否屬于該類別;而后兩種則是針對數(shù)值型結(jié)果變量的分類方式。
此外,kernel是指在模型建立過程中使用的核函數(shù)。針對線性不可分的問題,為了提高模型預(yù)測精度,通常會使用核函數(shù)對原始特征進行變換,提高原始特征維度,解決支持向量機模型線性不可分問題。svm()函數(shù)中的kernel參數(shù)有四個可選核函數(shù),分別為線性核函數(shù)、多項式核函數(shù)、高斯核函數(shù)及神經(jīng)網(wǎng)絡(luò)核函數(shù)。其中,高斯核函數(shù)與多項式核函數(shù)被認為是性能最好、也最常用的核函數(shù)。
核函數(shù)有兩種主要類型:局部性核函數(shù)和全局性核函數(shù),高斯核函數(shù)是一個典型的局部性核函數(shù),而多項式核函數(shù)則是一個典型的全局性核函數(shù)。局部性核函數(shù)僅僅在測試點附近小領(lǐng)域內(nèi)對數(shù)據(jù)點有影響,其學(xué)習(xí)能力強、泛化性能較弱;而全局性核函數(shù)則相對來說泛化性能較強、學(xué)習(xí)能力較弱。
對于選定的核函數(shù),degree參數(shù)是指核函數(shù)多項式內(nèi)積函數(shù)中的參數(shù),其默認值為3。gamma參數(shù)給出了核函數(shù)中除線性內(nèi)積函數(shù)以外的所有函數(shù)的參數(shù),默認值為l。coef0參數(shù)是指核函數(shù)中多項式內(nèi)積函數(shù)與sigmoid內(nèi)積函數(shù)中的參數(shù),默認值為0。
另外,參數(shù)cost就是軟間隔模型中的離群點權(quán)重。最后,參數(shù)nu是用于nu-regression、nu-classification和one-classification類型中的參數(shù)。
一個經(jīng)驗性的結(jié)論是,在利用svm()函數(shù)建立支持向量機模型時,使用標準化后的數(shù)據(jù)建立的模型效果更好。
根據(jù)函數(shù)的第二種使用格式,在針對上述數(shù)據(jù)建立模型時,首先應(yīng)該將結(jié)果變量和特征變量分別提取出來。結(jié)果向量用一個向量表示,特征向量用一個矩陣表示。在確定好數(shù)據(jù)后還應(yīng)根據(jù)數(shù)據(jù)分析所使用的核函數(shù)以及核函數(shù)所對應(yīng)的參數(shù)值,通常默認使用高斯內(nèi)積函數(shù)作為核函數(shù)。下面給出一段示例代碼
在使用第二種格式建立模型時,不需要特別強調(diào)所建立模型的形式,函數(shù)會自動將所有輸入的特征變量數(shù)據(jù)作為建立模型所需要的特征向量。在上述過程中,確定核函數(shù)的gamma系數(shù)時所使用的代碼所代表的意思是:如果特征向量是向量則gamma值取l,否則gamma值為特征向量個數(shù)的倒數(shù)。
在利用樣本數(shù)據(jù)建立模型之后,我們便可以利用模型來進行相應(yīng)的預(yù)測和判別?;谟蓅vm()函數(shù)建立的模型來進行預(yù)測時,可以選用函數(shù)predict()來完成相應(yīng)工作。在使用該函數(shù)時,應(yīng)該首先確認將要用于預(yù)測的樣本數(shù)據(jù),并將樣本數(shù)據(jù)的特征變量整合后放入同一個矩陣。來看下面這段示例代碼。
通常在進行預(yù)測之后,還需要檢查模型預(yù)測的準確情況,這時便需要使用函數(shù)table()來對預(yù)測結(jié)果和真實結(jié)果做出對比展示。從上述代碼的輸出中,可以看到在模型預(yù)測時,模型將所有屬于setosa類型的鳶尾花全部預(yù)測正確;模型將屬于versicolor類型的鳶尾花中有48朵預(yù)測正確,但將另外兩朵錯誤地預(yù)測為virginica類型;同樣,模型將屬于virginica類型的鳶尾花中的48朵預(yù)測正確,但也將另外兩朵錯誤地預(yù)測為versicolor類型。
函數(shù)predict()中的一個可選參數(shù)是decision.values,我們在此也對該參數(shù)的使用做簡要討論。默認情況下,該參數(shù)的缺省值為FALSE。若將其置為TRUE,那么函數(shù)的返回向量中將包含有一個名為“decision.values”的屬性,該屬性是一個n*c的矩陣。這里,n是被預(yù)測的數(shù)據(jù)量, c是二分類器的決策值。注意,因為我們使用支持向量機對樣本數(shù)據(jù)進行分類,分類結(jié)果可能是有k個類別。那么這k個類別中任意兩類之間都會有一個二分類器。所以,我們可以推算出總共的二分類器數(shù)量是k(k-1)/2。決策值矩陣中的列名就是二分類的標簽。來看下面這段示例代碼。
由于我們要處理的是一個分類問題。所以分類決策最終是經(jīng)由一個sign(?)函數(shù)來完成的。從上面的輸出中可以看到,對于樣本數(shù)據(jù)4而言,標簽setosa/versicolor對應(yīng)的值大于0,因此屬于setosa類別;標簽setosa/virginica對應(yīng)的值同樣大于0,以此判定也屬于setosa;在二分類器versicolor/virginica中對應(yīng)的決策值大于0,判定屬于versicolor。所以,最終樣本數(shù)據(jù)4被判定屬于setosa。依據(jù)同樣的羅輯,我們還可以根據(jù)決策值的符號來判定樣本77和樣本78,分別是屬于versicolor和virginica類別的。
為了對模型做進一步分析,可以通過可視化手段對模型進行展示,下面給出示例代碼。結(jié)果如圖14-15所示??梢?,通過plot()函數(shù)對所建立的支持向量機模型進行可視化后,所得到的圖像是對模型數(shù)據(jù)類別的一個總體觀察。圖中的“+”表示的是支持向量,圓圈表示的是普通樣本點。
[plain] view plain copy
> plot(cmdscale(dist(iris[,-5])),
+ col = c("orange","blue","green")[as.integer(iris[,5])],
+ pch = c("o","+")[1:150 %in% model3$index + 1])
> legend(1.8, -0.8, c("setosa","versicolor","virgincia"),
+ col = c("orange","blue","green"), lty = 1)
在圖14-15中我們可以看到,鳶尾花中的第一種setosa類別同其他兩種區(qū)別較大,而剩下的versicolor類別和virginica類別卻相差很小,甚至存在交叉難以區(qū)分。注意,這是在使用了全部四種特征之后仍然難以區(qū)分的。這也從另一個角度解釋了在模型預(yù)測過程中出現(xiàn)的問題,所以模型誤將2朵versicolor 類別的花預(yù)測成了virginica 類別,而將2朵virginica 類別的花錯誤地預(yù)測成了versicolor 類別,也就是很正?,F(xiàn)象了。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10CDA 數(shù)據(jù)分析師:商業(yè)數(shù)據(jù)分析實踐的落地者與價值創(chuàng)造者 商業(yè)數(shù)據(jù)分析的價值,最終要在 “實踐” 中體現(xiàn) —— 脫離業(yè)務(wù)場景的分 ...
2025-09-10機器學(xué)習(xí)解決實際問題的核心關(guān)鍵:從業(yè)務(wù)到落地的全流程解析 在人工智能技術(shù)落地的浪潮中,機器學(xué)習(xí)作為核心工具,已廣泛應(yīng)用于 ...
2025-09-09SPSS 編碼狀態(tài)區(qū)域中 Unicode 的功能與價值解析 在 SPSS(Statistical Product and Service Solutions,統(tǒng)計產(chǎn)品與服務(wù)解決方案 ...
2025-09-09