當前位置:
首頁 > 最新 > 詳解支持向量機SVM:快速可靠的分類演算法

詳解支持向量機SVM:快速可靠的分類演算法

選自Monkey Learn

作者:Bruno Stecanella

參與:李澤南、李亞洲

當處理文本分類問題時,你需要不斷提煉自己的數據集,甚至會嘗試使用樸素貝葉斯。在對數據集滿意後,如何更進一步呢?是時候了解支持向量機(SVM)了:一種快速可靠的分類演算法,可以在數據量有限的情況下很好地完成任務。在本文中,Bruno Stecanella 將對這一概念進行通俗易懂的解釋,希望能對你有所幫助。

或許你已經開始了自己的探索,聽說過線性可分、核心技巧、核函數等術語。支持向量機(SVM)演算法的核心理念非常簡單,而且將其應用到自然語言分類任務中也不需要大部分複雜的東西。

在開始前,你也可以閱讀樸素貝葉斯分類器指南,其中有很多有關文本處理任務的內容。

鏈接:https://monkeylearn.com/blog/practical-explanation-naive-bayes-classifier/

SVM 是如何工作的?

支持向量機的基礎概念可以通過一個簡單的例子來解釋。讓我們想像兩個類別:紅色和藍色,我們的數據有兩個特徵:x 和 y。我們想要一個分類器,給定一對(x,y)坐標,輸出僅限於紅色或藍色。我們將已標記的訓練數據列在下圖中:

支持向量機會接受這些數據點,並輸出一個超平面(在二維的圖中,就是一條線)以將兩類分割開來。這條線就是判定邊界:將紅色和藍色分割開。

但是,最好的超平面是什麼樣的?對於 SVM 來說,它是最大化兩個類別邊距的那種方式,換句話說:超平面(在本例中是一條線)對每個類別最近的元素距離最遠。

這裡有一個視頻解釋可以告訴你最佳的超平面是如何找到的。

線性數據

上面的例子很簡單,因為那些數據是線性可分的——我們可以通過畫一條直線來簡單地分割紅色和藍色。然而,大多數情況下事情沒有那麼簡單。看看下面的例子:

很明顯,你無法找出一個線性決策邊界(一條直線分開兩個類別)。然而,兩種向量的位置分得很開,看起來應該可以輕易地分開它們。

這個時候我們需要引入第三個維度。迄今為止,我們有兩個維度:x 和 y。讓我們加入維度 z,並且讓它以直觀的方式出現:z = x2 + y2(沒錯,圓形的方程式)

於是我們就有了一個三維空間,看看這個空間,他就像這樣:

支持向量機將會如何區分它?很簡單:

太棒了!請注意,現在我們處於三維空間,超平面是 z 某個刻度上(比如 z=1)一個平行於 x 軸的平面。它在二維上的投影是這樣:

於是,我們的決策邊界就成了半徑為 1 的圓形,通過 SVM 我們將其成功分成了兩個類別。下面的視頻用 3D 形式展現了一個類似的分類效果:

核函數技巧

在以上例子中,我們找到了一種通過將空間巧妙地映射到更高維度來分類非線性數據的方法。然而事實證明,這種轉換可能會帶來很大的計算成本:可能會出現很多新的維度,每一個都可能帶來複雜的計算。為數據集中的所有向量做這種操作會帶來大量的工作,所以尋找一個更簡單的方法非常重要。

還好,我們已經找到了訣竅:SVM 其實並不需要真正的向量,它可以用它們的數量積(點積)來進行分類。這意味著我們可以避免耗費計算資源的境地了。我們需要這樣做:

想像一個我們需要的新空間:

z = x2 + y2

找到新空間中點積的形式:

a · b = xa· xb + ya· yb + za· zb

a · b = xa· xb + ya· yb + (xa2 + ya2) · (xb2 + yb2)

讓 SVM 處理新的點積結果——這就是核函數

這就是核函數的技巧,它可以減少大量的計算資源需求。通常,內核是線性的,所以我們得到了一個線性分類器。但如果使用非線性內核(如上例),我們可以在完全不改變數據的情況下得到一個非線性分類器:我們只需改變點積為我們想要的空間,SVM 就會對它忠實地進行分類。

注意,核函數技巧實際上並不是 SVM 的一部分。它可以與其他線性分類器共同使用,如邏輯回歸等。支持向量機只負責找到決策邊界。

支持向量機如何用於自然語言分類?

有了這個演算法,我們就可以在多維空間中對向量進行分類了。如何將它引入文本分類任務呢?首先你要做的就是把文本的片斷整合為一個數字向量,這樣才能使用 SVM 進行區分。換句話說,什麼屬性需要被拿來用作 SVM 分類的特徵呢?

最常見的答案是字頻,就像在樸素貝葉斯中所做的一樣。這意味著把文本看作是一個詞袋,對於詞袋中的每個單詞都存在一個特徵,特徵值就是這個詞出現的頻率。

這樣,問題就被簡化為:這個單詞出現了多少次,並把這個數字除以總字數。在句子「All monkeys are primates but not all primates are monkeys」中,單詞 mokey 出現的頻率是 2/10=0.2,而 but 的頻率是 1/10=0.1。

對於計算要求更高的問題,還有更好的方案,我們也可以用 TF-IDF。

現在我們做到了,數據集中的每個單詞都被幾千(或幾萬)維的向量所代表,每個向量都表示這個單詞在文本中出現的頻率。太棒了!現在我們可以把數據輸入 SVM 進行訓練了。我們還可以使用預處理技術來進一步改善它的效果,如詞幹提取、停用詞刪除以及 n-gram。

選擇核函數

現在我們有了特徵向量,唯一要做的事就是選擇模型適用的核函數了。每個任務都是不同的,核函數的選擇有關於數據本身。在我們的例子中,數據呈同心圓排列,所以我們需要選擇一個與之匹配的核函數。

既然需要如此考慮,那麼什麼是自然語言處理需要的核函數?我們需要費線性分類器嗎?亦或是數據線性分離?事實證明,最好堅持使用線性內核,為什麼?

回到我們的例子上,我們有兩種特徵。一些現實世界中 SVM 在其他領域裡的應用或許會用到數十,甚至數百個特徵值。同時自然語言處理分類用到了數千個特徵值,在最壞的情況下,每個詞都只在訓練集中出現過一次。這會讓問題稍有改變:非線性核心或許在其他情況下很好用,但特徵值過多的情況下可能會造成非線性核心數據過擬合。因此,最好堅持使用舊的線性核心,這樣才能在那些例子中獲得很好的結果。

為我所用

現在需要做的就是訓練了!我們需要採用標記文本集,使用詞頻將他們轉換為向量,並填充演算法,它會使用我們選擇的核函數,然後生成模型。然後,當我們遇到一段未標記的文本想要分類時,我們就可以把它轉化為向量輸入模型中,最後獲得文本類型的輸出。

結語

以上就是支持向量機的基礎。總結來說就是:

支持向量機能讓你分類線性可分的數據;

如果線性不可分,你可以使用 kernel 技巧;

然而,對文本分類而言最好只用線性 kernel。

相比於神經網路這樣更先進的演算法,支持向量機有兩大主要優勢:更高的速度、用更少的樣本(千以內)取得更好的表現。這使得該演算法非常適合文本分類問題。

厲害了!年化收益上百倍的爆髮型交易員居然來自這裡!

微波段穩定盈利的原理和必要因素

交易系統的組成和木桶效應

勢與格局的判斷

形態和k線組合……

2017年7月16日—8月11日 鄭州

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據實驗室 的精彩文章:

互聯網裡的人生百態:四大互聯網人群&五大人生階段
霍金:人類只剩不到200年逃離地球
《未來簡史》嚴重低估了人類,人類真正厲害之處並不是智能
探究數學在經濟學中的運用
馬化騰:雲份額將超數據中心 未來雲時代有三大趨勢

TAG:大數據實驗室 |

您可能感興趣

NLP概述和文本自動分類演算法詳解
詳解IPFS技術架構與應用
顯示器面板,TN、VA、PLS、IPS,優劣,詳解顯示器該怎麼選。
詳解POW與如何應對量子計算機的威脅
持續擴展細分領域,湯臣倍健CEO詳解溢價收購LSG邏輯
DXO稱之為「改變遊戲規則」的手機,相機詳解!
技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突
詳解SSD可靠性影響因素、原理和解決方法
跑分不能說明一切 雙GPU加THE NINE液冷散熱技術詳解
人人都能看懂的機器學習!3個案例詳解聚類、回歸、分類演算法
詳解NVMe SSD存儲性能影響因素
一文快速詳解前端框架 Vue 最強大的功能
NBA規則詳解
DNF:平民暗槍士玩法詳解,一個能輸出能輔助的職業
詳解RDMA架構和技術原理
DDOS攻擊詳解
詳解 vivo NEX 遊戲模式,不誇張手機中的遊戲機
iPhoneX有哪些特別的功能 快速切換應用功能詳解
RPC框架測試詳解
大咖Live X 黑芝麻智能科技:ADAS 如何精準感知——視覺感知演算法與晶元詳解