點擊標題下藍色字可快速關注
前面我們介紹了線性、非線性SVM算法的原理和公式推導,也陸續的對Apriori、KNN等機器學習算法進行了分享,本周我們將介紹另一種比較常用的分類算法:Logistics回歸模型,並在垃圾郵件識別的場景中比較Logistics回歸與SVM分類的效果和性能,以幫助大家更好的學習、掌握和運用該算法(小貼士:自己動手,豐知足識。訓練、測試集及Python代碼下載見文章末處)。
如內容有不足之處,歡迎給我們留言,共同探討學習。
1.Logistics回歸介紹
Logistic回歸模型是一種概率模型,其結果發生的變量(因變量)取值必須是二分或者多項分類,主要適合用於隨訪研究和病例對照研究等。下面主要介紹二元logistics回歸,即因變量y只取0和1兩個值情况下的回歸模型。
學習前需要先了解一下sigmoid函數,也稱為S型生長曲線,其函數表達式和圖形如下所示:
Sigmoid函數為連續、單調遞增的函數,當x趨近於負無窮的時候,y趨近於0,當x趨近於正無窮的時候,y趨近於1,值域為[0,1]。由於概率值的範圍也是[0,1],故可以與概率分布聯繫起來。
令y=1表示事件發生,y=0表示事件不發生,並將事件發生的概率記為P,則其與自變量X1,X2,…..,Xp之間的回歸模型可以寫為:
則事件不發生的概率可以表示為:
經過數學變化可以得到事件的發生比取對數的形式為:
定義logit(p) = ln[p/(1-p)]為Logistics變化,且:
這樣就得到了logit模型的函數表達式,再利用極大似然估計來求方程的參數,在求似然函數最大值的時候,使用梯度下降法或牛頓迭代等最優算法進行迭代更新。由於有關該推導過程的資料存在較多,本文不再進行叙述。
下面將具體介紹在相同語料和特徵選擇的條件下,使用python實現Logistics回歸和SVM算法對垃圾郵件的識別進行比較。
2.python實現垃圾郵件識別
首先搜集到目前使用較多的郵件語料,共包含5574條郵件文本數據,包括4827條正常的郵件和747條垃圾郵件數據,標籤分別為ham和spam。為了建模的需要,進一步將正常郵件標記為,垃圾郵件標記為1,最終得到一個Excel格式的郵件語料庫smsspamcollection.xlsx。
然後使用pandas庫將郵件語料以DataFrame的形式讀入內存中,並對郵件文本進行去標點符號及分詞等預處理,得到如下郵件文本內容數據:
接下來進行特徵提取,這裏將所有單詞都作為特徵引入到模型,通過使用TF-IDF方法計算每個關鍵詞的權重,建立文本的向量特徵模型,則每一條郵件文本內容都可以轉化為一個特徵向量,進而就可以利用機器學習進行訓練和預測了。Scikit-learn庫是基於python的機器學習庫,其包括分類、降維、回歸、聚類和模型選擇等相關數據挖掘算法。使用CountVectorizer和TfidfTransformer函數來計算關鍵詞的權重,將郵件文本轉化為一個5574x8709的特徵矩陣。
在進行建模之前需要將郵件樣本進行分割,用大部分郵件來進行模型訓練,留下小部分用來對模型進行測試。設置分割參數為0.25,保留25%的樣本作為測試集。然後在使用相同訓練集的情况下,分別構建Logistics回歸模型和SVM模型,並使用相同的測試集進行分類測試,得到分類結果和耗時情况如下:
Logistics回歸模型:
根據得到的混淆矩陣和計算的相關指標可以看到使用Logistics回歸模型進行分類,識別垃圾郵件的精度較高為0.993,但對垃圾郵件的召回率較低,為144/(49+144)=0.746,意思就是測試集中一共有193封垃圾郵件,但被正確識別為垃圾郵件的只有144封。綜合精確率和召回率得到該模型的f1-score為0.852,從模型構建到預測總共耗時0.123s。
SVM模型:
從結果看到構建的SVM模型,識別垃圾郵件的精度較高為0.983,對垃圾郵件的召回率為172/(21+172)=0.891。綜合精確率和召回率得到該模型的f1-score為0.935,高於前面的Logistics回歸模型,說明該模型分類效果較好,但該模型共耗時50.19s,明顯高於Logistics回歸模型。
3.總結
Logistics回歸模型和SVM模型其實是兩種比較類似的算法,主要區別在於Logistics回歸通過非線性映像,對不同數據點的權重進行了調整,而SVM主要是只考慮支持向量上的點,即與分類最相關的點來學習分類器。通常會根據樣本和特徵的數量來對這兩種分類算法進行選擇,例如當樣本較多,特徵較少時,有足够的樣本來訓練複雜的模型,此時可以選擇Logistics回歸或線性SVM算法。
如需下載本文所用的數據集和代碼,請關注“易研数据”公眾號(微信號:ersdata)並發送“logistics”獲取。
易研數據
微信號:ersdata
長按識別二維碼關注
领取专属 10元无门槛券
私享最新 技术干货