专栏首页人工智能機器學習算法起航系列一·支持向量機

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

上期我們分享了線性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 条评论
登录 后参与评论

相关文章

  • 腾讯赵建春:AI浪潮下的高效运维思考及实践

    腾讯 SNG 助理总经理、GOPS 金牌讲师赵建春老师受邀出席大会,并带来精彩演讲《AI 浪潮下的高效运维思考与实践》。

    织云平台团队
  • 一个 RNN 调研引发的点评推荐血案

    在这篇文章里,作者基于用户的评论内容,评估了十多种不同的 RNN 框架。这些 RNN 框架包括多层双向 GRU 和 LSTM,同时有 attention-bas...

    serena
  • 机器学习库初探之 Caffe

    Caffe 是一个清晰而高效的深度学习框架,其作者是博士毕业于 UC Berkeley 的贾扬清,目前在 Facebook 工作。Caffe 是纯粹的 C++/...

    吕晟
  • 腾讯AI Lab斩获知识图谱顶级赛事KBP 2017世界冠军

    感谢阅读腾讯AI Lab微信号文章,恭喜知识图谱团队首次出战KBP大赛就获得实体发现与链接任务三语总分第一名好成绩!

    旺仔小小鹿
  • XGBoost 源码阅读笔记(2):树构造之 Exact Greedy Algorithm

    本篇将继续向大家介绍 XGBoost 源码是如何构造一颗回归树,不过在分析源码之前,还是有必要先和大家一起推导下 XGBoost 的目标函数。

    程飞翔
  • 学习笔记DL001 : 数学符号、深度学习的概念

    深度学习是机器学习拉出的分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。本文主要介绍深度学习中的数学符号、数和数组。

    利炳根
  • 腾讯AI Lab斩获知识图谱顶级赛事KBP 2017世界冠军

    谢阅读腾讯AI Lab微信号文章,恭喜知识图谱团队首次出战KBP大赛就获得实体发现与链接任务三语总分第一名好成绩!

    旺仔小小鹿
  • Tensorflow 的 word2vec 详细解释:basic篇

    Word2Vec即Word to vector(词汇转向量)。我们希望词义相近的两个单词,在映射之后依然保持相近,词义很远的单词直接则保持很远的映射距离。

    腾讯移动品质中心TMQ
  • 机器学习概念总结笔记(一)

    本部分介绍了机器学习算法的四大分类,即:监督学习、半监督学习、无监督学习和增强学习以及包括最小二乘回归、岭回归、LASSO回归、LARS回归在内的26大常见算法...

    serena
  • Tensorflow 术语表

    本文主要简要介绍了广播操作、Graph(图)、Session(会话)、Tensor 等13个 Tensorflow 术语表。希望对大家了解学习 Tensorfl...

    Star先生

扫码关注云+社区

领取腾讯云代金券