機器學習筆記三 支援向量機

2021-08-11 07:30:42 字數 2412 閱讀 1010

給定訓練集d,在樣本空間上找到最魯棒的超平面,將不同類別的樣本分開。對於線性可分問題,超平面的線性方程為

優化目標:找到引數w和b在劃分正確的前提下使得間隔最大,即

上述問題等價於:

此為支援向量機(svm)的基本型,將引數求解問題轉化為凸二次規劃問題,為了方便求解且易於推廣到非線性情況下的核函式,採用拉格朗日乘子法引入對偶問題,實為目標函式加入了懲罰項,對於支援向量,故,而非支援向量為使懲罰項小,。對偶問題最終求得(smo演算法):

訓練完成後,大部分訓練樣本都不需要保留,最終模型僅有支援向量有關。對於新點的**,只需與支援向量進行內積運算後疊加。從海量資料中篩選出最有效的少數樣本,節約學習記憶體,提高**效能,但付出計算代價。

對於線性不可分問題,將樣本從原始空間對映到乙個更高維的特徵空間,使其變為線性可分。對於高維樣本的內積計算比較困難,故利用原始空間的核函式來表示在特徵空間的內積,將對映和計算合二為一,在低維計算,實質分類效果體現在高維,避免複雜運算。

常用的核函式有線性核,多項式核,高斯核等,一般來說文字資料通常採用線性核,情況不明時採用高斯核。

在現實任務中往往很難確定合適的核函式,也很難確定是否線性可分,故允許支援向量機在一些樣本上出錯,但盡量的少,為此,引入軟間隔的概念,優化目標變為:

每個樣本對應乙個鬆弛變數,稱為軟間隔支援向量機。

**實踐:使用邏輯回歸和隨機梯度**疾病

# 從sklearn.datasets裡匯入手寫體數字載入器。

from sklearn.datasets import load_digits

# 從通過資料載入器獲得手寫體數字的數碼影象資料並儲存在digits變數中。

digits = load_digits()

# 檢視資料規模和特徵維度。

digits.data.shape

# 從sklearn.cross_validation中匯入train_test_split用於資料分割。

from sklearn.model_selection import train_test_split

# 隨機選取75%的資料作為訓練樣本;其餘25%的資料作為測試樣本。

x_train, x_test, y_train, y_test = train_test_split(digits.data,digits.target, test_size=0.25, random_state=33)

y_train.shape

y_test.shape

# 從sklearn.preprocessing裡匯入資料標準化模組。

from sklearn.preprocessing import standardscaler

# 從sklearn.svm裡匯入基於線性假設的支援向量機分類器linearsvc。

from sklearn.svm import linearsvc

# 仍然需要對訓練和測試的特徵資料進行標準化。

ss = standardscaler()

x_train = ss.fit_transform(x_train)

x_test = ss.transform(x_test)

# 初始化線性假設的支援向量機分類器linearsvc。

lsvc = linearsvc()

#進行模型訓練

lsvc.fit(x_train, y_train)

# 利用訓練好的模型對測試樣本的數字類別進行**,**結果儲存在變數y_predict中。

y_predict = lsvc.predict(x_test)

# 使用模型自帶的評估函式進行準確性測評。

print('the accuracy of linear svc is', lsvc.score(x_test, y_test))

# 依然使用sklearn.metrics裡面的classification_report模組對**結果做更加詳細的分析。

from sklearn.metrics import classification_report

print(classification_report(y_test, y_predict,target_names=digits.target_names.astype(str)))

--來自《python機器學習及實踐 —— 從零開始通往kaggle競賽之路》

機器學習(三) 支援向量機

支援向量機是一種判別模型,它構建乙個超平面使得距離這個超平面最近的點的距離最大。支援向量機的任務是在較低的模型泛化誤差下尋找乙個合適的超平面。如果超平面的函式是如下表示式 那麼超平面與資料點 label 1 之間的幾何關係為 定義 幾何間隔和函式間隔 因此,轉換為帶約束的優化問題 我們無法保證資料是...

機器學習(三)支援向量機

本文只涉及二分類支援向量機。支援向量機問題可以分為三種情況來討論 1 硬間隔支援向量機 用於可以被乙個超平面嚴格分開的問題中,又稱為線性可分支援向量機 2 軟間隔支援向量機 用於可以被乙個超平面非嚴格分開的問題中,又稱線性支援向量機 3 核支援向量機 用於可以被乙個超曲面分開的問題中,又稱非線性支援...

機器學習筆記(二 支援向量機)

本次筆記基於mooc平台浙江大學的機器學習課程 對於乙個訓練樣本集,i 1 n,若存在 w,b 使得使得滿足下式,則是線性可分問題。要求這樣的乙個超平面 在二維平面中是一條直線 則要滿足以下公式 證明過程如下 首先要確認兩個事實,即 和 則可以根據線性可分問題的滿足式,用a來縮放 w,b 使得找到某...