機器學習算法起航系列一·支持向量機

上期我們分享了線性SVM的內容,並對凸二次規劃問題的求解進行了簡單的推導,最後得到分離超平面的函數能夠對新輸入的樣本進行分類。本期我們將繼續探討非線性SVM,了解核函數的概念,並利用Python sklearn庫中的SVM模塊對不同風格的歌曲進行分類(語料及.Py代碼下載見文章末處)。如內容有不足之處,歡迎給我們留言,共同探討學習。

1.非線性SVM

前面我們提過SVM處理非線性問題時需要轉化為線性問題,再用線性SVM的演算法進行求解,所以實質上SVM只能處理線性問題。這裡將非線性問題轉化為線性問題的方法主要是借助核函數將低維的數據映射到高維空間中,使得數據在高維空間中能夠線性可分,如下圖所示,圖左的樣本點無法使用直線分類面來劃分,但經過映射變成右圖的形式後線性可分。

這種變換可以理解為引入了一個非線性變換函數∅(·)將R^n空間的樣本X映射到R^m空間,其中n

通過構造一個5維空間,令

則在新的空間中分類方程可以寫為:

從而變成一個線性可分的問題,此時

然而隨著維度的增加,∅(·)函數的計算是非常困難的,甚至會導致維數災難,故需要引入核函數。核函數能夠接收低維空間的向量,計算出經過變換後在高維空間裡的向量內積值,而不用先映射到高維空間中再進行內積計算,不用顯示的寫出映射後的結果。關於核函數的選擇,雖然有一些經驗的結論,但缺乏比較系統有效的方法,故不進行詳細的討論,多數情況下還是通過多次實驗測試的結果來選擇最優的核函數。常用的核函數主要有:

加入核函數後分類判別函數表示為:

根據上節講到的拉格朗日方程得到對偶目標函數為:

C為加入的懲罰因數,表示對離群點的重視程度。最後根據線性SVM的演算法對目標函數進行求解,可以得到分類平面的函數。

當然本文只是用通俗淺顯的方式對SVM的知識進行了梳理,如果需要更深層的掌握核函數的運用和SVM的原理,需要大家繼續探索,相信通過初步的學習大家能夠對SVM演算法有個基本的認識。同時非常感謝在網絡中對該演算法無私分享的朋友(包括文章、圖片或著作等),若內容上有冒犯的地方請聯繫我們修改或刪除。

下面我們將分享一個簡單的使用SVM演算法對歌曲進行分類的實例。

2.利用SVM演算法進行歌曲分類

小編首先在歌詞網站上爬取了鄭源、張信哲、成龍等幾位歌手所唱歌曲的歌詞,并篩選出愛情類歌曲112首,勵志類歌曲94首,保存為songs_content.xlsx文件,并標注了具體的類別標籤。下面,我們將利用向量空間模型結合SVM算法對這兩類歌曲進行建模和分類。

首先導入後面需要用到的庫和函數,對歌詞進行預處理,使用jieba庫進行分詞,分詞后的效果如下圖所示,并將類別標籤保存在label列表。

然後通過計算歌詞中全部特征的tf-idf值,將歌詞文本轉化為向量,構建向量空間模型,得到一個206行4481維的特征向量矩陣。再使用train_test_split函數將樣本隨機分為訓練集和測試集,這裡我們取出20%的樣本用來測試,另80%的樣本用來建模。

構建SVM訓練模型,選擇參數gamma = 0.001,C為100,核函數默認為rbf核函數,將訓練集樣本輸入模型進行擬合后,再使用該模型對測試集進行預測,通過比較預測結果和實際結果,發現精確率、召回率和f1-score的值都比較低。接下來改變核函數,使用線性核linear試試,得到的模型的精確率為0.875,召回率為0.955,f1-score為0.913。

可以看出,使用線性核函數后模型能夠得到較高的精度。當然,感興趣的朋友也可以通過其他方式對該模型進一步優化,如增加樣本、刪除一些停用詞,使用其他方法對文本特征進行提取或調試模型參數等。

點擊查看》》》機器學習算法起航系列一·支持向量機(SVM)[上]

易研獨家研發的eMiner,是基於雲端、面向全球網絡數據、本土洞察的網絡大數據挖掘平台,爲企業、政府及研究機構提供品牌監測、輿情分析及各種研究項目的平台服務。點擊“閱讀原文”了解更多eMiner網絡大數據挖掘平台詳情。

本文来自企鹅号 - 易研数据媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非典型技术宅

Masonry的层层进阶1 基础写法:2 进阶写法3 自动装箱的写法4 Masonry的练习4.1 设置居中5. 更新及重建约束6. Masonry的两个宏

862
来自专栏移动开发

关于主线程中自动建立的Looper的思考:主线程中Looper中的轮询死循环为何没有阻塞主线程

Android中UI线程会自动给我们建立一个looper,但是looper中的loop方法是个死循环.为什么我们在UI线程中写的代码为何都能顺利执行?为什么没有...

614
来自专栏吉浦迅科技

NVIDIA GPU 助信息安全厂商免除惡意程式攻擊

電腦和行動裝置上的惡意軟體程式日漸增加,對於信息安全業界造成嚴重問題,由於資料量過於龐大,現時有部份公司陸續開始利用 NVIDIA GPU 解決惡意軟體的問題,...

3276
来自专栏Pythonista

主动学习与被动学习

美國學者艾德格‧戴爾(Edgar Dale)提出了「學習金字塔」(Cone of Learning)的理論:在初次學習兩個星期後,透過閱讀學習能夠記住內容的10...

492
来自专栏跟着阿笨一起玩NET

Div+CSS展示物流跟踪轨迹信息

642
来自专栏数据结构与算法

3315 时空跳跃者的魔法

3315 时空跳跃者的魔法 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description ...

34810
来自专栏移动开发面面观

Handler源码分析

1025
来自专栏前端儿

黑色帽子

    最近发现了一个搞笑的游戏,不过目前还没玩过。一个舞会上,每个人头上都戴着一顶帽子,帽子只有黑白两种,黑的至少有一顶。每个人都能看到别人帽子的颜色,可是看...

902
来自专栏Jack-Cui

第四天、婚礼上的谎言

       3对情侣参加婚礼,3个新郎为A、B、C,3个新娘为X、Y、Z,有人想知道究竟谁与谁结婚,于是就问新人中的三位,得到如下结果:A说他将和X结婚;X说...

1920
来自专栏iOS122-移动混合开发研究院

Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局

简介 简化iOS应用使用纯代码机型自适应布局的工作,使用一种简洁高效的语法替代NSLayoutConstraints. 最新示例: 点击下载 项目简议: 如果再...

1945

扫码关注云+社区