機器學習-監督學習之決策向量機算法
首先我們看下面的例子,我們有一些藍色的點和一些紅色的點,現在想用一條線來分割他們,我們的目标是讓點到分割線的距離盡可能遠,這個距離稱為Margin。
對于複雜問題如下圖,我們用兩種名額來衡量:1.margin的寬度 2.錯分類的數量
Error = Classification error + margin error
Perceptron 算法
之前學的perceptron算法強調計算error function,然後用gradient descent方法找到最佳的w和b的值。
分類算法
對于分類算法的error計算類似perceptron,根據兩方的邊際線計算出距離的誤差。
Margin Error 邊際誤差
Margin = 2 / |W|
Error = | W | 2
對應的margin越大則誤差越小,margin越小則誤差越大
C Parameter
對于複雜問題,可能有時關注點不同,這是設定一個C參數。
當C參數大時,更關注于分類誤差。
當C參數小時,則更關注于邊界誤差
Kernel trick 多項式核心
當一條直線點分布的比較不均勻時,就要把直線一維問題轉換為多項式問題。
多項式核心2
當處理此類複雜問題時,有兩種方式進行分類:
- 多項式核心:
- 轉換為多元問題 但是實際上兩種方法得到的結果都是一樣的:
Polynominal Kernel 多項式核函數
多項式核函數将會得到五個變量,x y xy x2 y2
Higher degree 的Polynomial kernel 将會幫助我們更加細分資料
RBF核函數
Gamma parameter
large gamma 趨向于overfit, 而small gamma趨向于underfit
gamma定義
SVC 的sklearn實作
>>> from sklearn.svm import SVC
>>> model = SVC()
>>> model.fit(x_values, y_values)
在上述示例中,model 變量是一個拟合到資料 x_values 和 y_values 的支援向量機模型。拟合模型是指尋找拟合訓練資料的最佳界線。我們使用模型的 predict() 函數進行兩項預測。
超參數
當我們定義模型時,可以指定超參數。正如在此部分中看到的,最常見的超參數包括:
C:C 參數。
kernel:核心。最常見的核心為 ‘linear’、‘poly’ 和 ‘rbf’。
degree:如果核心是多項式,則此參數為核心中的最大單項式次數。
gamma:如果核心是徑向基函數,則此參數為 γ 參數。
例如,下面我們定義了一個次數為4、C 參數為 0.1 的多項式核心模型。