
R文本分類之RTextTools
古有曹植七步成詩,而RTextTools是一款讓你可以在十步之內(nèi)實現(xiàn)九種主流的機器學習分類器模型的文本分類開發(fā)包。
它集成了(或者說支持)如下算法相關的包:
支持向量機(Support Vector Machine from e1071)
glmnet(一個非常流行的用于變量選擇的R包,俗稱kaggle競賽“三駕馬車”之一)
最大熵模型(maximum entropy from maxent)
大規(guī)模線性判別(scaled linear discriminant,slda)
裝袋算法(bagging from ipred)
提升算法(boosting from caTools)
隨機森林(random forest from randomForest)
神經(jīng)網(wǎng)絡(neural networks from nnet)
回歸樹(regression tree from tree)
RTextTools有著不可不學的三大理由:
首先,RTextTools的設計哲學在于易學與靈活。從而,讓沒有任何R編程經(jīng)驗的社會科學研究者也能輕松實現(xiàn)高端的機器學習算法;并且,讓經(jīng)驗老道的R用戶充分發(fā)揮R的威力,與其他相關的包結合,如:文本預處理方面的tm包,實現(xiàn)LDA主題模型的topicmodels包等,實現(xiàn)高難度的模型,并且充分提高模型的精度等。
其次,RTextTools提供了從數(shù)據(jù)載入,數(shù)據(jù)清洗,到模型評價的所有功能,并且,實現(xiàn)的函數(shù)非常簡單易記。即所謂的『一條龍服務』。
最后,RTextTools還可以實現(xiàn)結構化數(shù)據(jù)的分類問題。也就是說,它可以像普通的機器學習包caret那樣使用。
下面,讓我們一起來見證一下RTextTools是如何在十步之內(nèi)演繹文本分類這一高端技術活的。
文本分類step-by-step
1.創(chuàng)建矩陣
首先,載入一個自帶的測試數(shù)據(jù)集:data(USCongress)。由于RTextTools集成了tm包的功能,所以tm包在文本預處理方面的功能,如去除空格、移除稀疏詞、移除停止詞、詞干化等功能,都可以輕松實現(xiàn)。
# 創(chuàng)建一個文檔-詞項矩陣doc_matrix<-create_matrix(USCongress$text,language="english",removeNumbers=TRUE,stemWords=TRUE,removeSparseTerms=.998)
2.創(chuàng)建容器(Container)
創(chuàng)建好文檔-詞項矩陣以后,下一步要做的就是對矩陣進行訓練集/測試集的劃分了。RTextTools中的容器(Container)概念,使得人們不必兩次讀入數(shù)據(jù),而將訓練集和測試集一并讀入,在容器內(nèi)做區(qū)分即可。
既然我們是有監(jiān)督的分類算法實現(xiàn),當然不能忘了指定因變量(即類別標簽)。在我們的測試數(shù)據(jù)集中,類別標簽為USCongress$major。
注意:類別標簽一定要為數(shù)值型!
這里,virgin =參數(shù)的設置影響到后續(xù)模型結果的分析解讀。virgin = FALSE意味著告訴R,我們的測試集是有真實的類別標簽的。
3.訓練模型
數(shù)據(jù)已經(jīng)準備妥當,下面就可以進行模型的訓練了。前面提到的九個機器學習算法的訓練,只需要寫成一個向量,作為參數(shù)傳入train_model()函數(shù)即可同時輕松實現(xiàn)各種高大上的分類器模型訓練。
我們來看一下train_model()函數(shù)的使用方法。
參數(shù)的設置也很簡單。如果你實在懶得設置,不妨先使用默認的參數(shù)試一試。
SVM<-train_model(container,"SVM")GLMNET<-train_model(container,"GLMNET")MAXENT<-train_model(container,"MAXENT")SLDA<-train_model(container,"SLDA")BOOSTING<-train_model(container,"BOOSTING")BAGGING<-train_model(container,"BAGGING")RF<-train_model(container,"RF")#NNET <- train_model(container,"NNET")TREE<-train_model(container,"TREE")
4.使用訓練好的模型進行文本分類
train_model()函數(shù)會返回一個訓練好的模型對象,我們可以把該對象作為參數(shù)傳給classify_model()函數(shù),進行測試集的分類。
SVM_CLASSIFY<-classify_model(container,SVM)GLMNET_CLASSIFY<-classify_model(container,GLMNET)MAXENT_CLASSIFY<-classify_model(container,MAXENT)SLDA_CLASSIFY<-classify_model(container,SLDA)BOOSTING_CLASSIFY<-classify_model(container,BOOSTING)BAGGING_CLASSIFY<-classify_model(container,BAGGING)RF_CLASSIFY<-classify_model(container,RF)#NNET_CLASSIFY <- classify_model(container, NNET)TREE_CLASSIFY<-classify_model(container,TREE)
5.結果分析
create_analytics()函數(shù)提供了對測試集的分類結果的四種解讀:從標簽出發(fā);從算法對比出發(fā);從角度文檔出發(fā);以及整體評價。
analytics<-create_analytics(container,cbind(SVM_CLASSIFY,SLDA_CLASSIFY,BOOSTING_CLASSIFY,BAGGING_CLASSIFY,RF_CLASSIFY,GLMNET_CLASSIFY,TREE_CLASSIFY,MAXENT_CLASSIFY))
6.測試分類器準確率(accuracy)
create_analytics()返回的對象適用于summary()和print()方法。
summary(analytics)返回了精度(precision),召回率(recall)和F-值(F-Score)等指標。這三個指標是文本分類中常用的評價指標。
精度的定義為預測為真實正例的個數(shù)除以所有被預測為正例樣本的個數(shù)。召回率則是預測為真實正例的個數(shù)除以所有真實正例樣本的個數(shù)。F-值則同時考慮了精度和召回率,是兩個指標的折衷。
7.整體效果評價(Ensemble agreement)
create_ensembleSummary()函數(shù)提供了整體評價功能。它反映了我們所應用的幾種分類算法的『同時命中率』。
整體評價函數(shù)提供了兩個評價指標:Coverage和Recall。
Coverage衡量了達到召回率閾值的文檔百分比。
Coverage的定義如下:
其中,k表示滿足閾值的算法個數(shù),n代表總的算法個數(shù)。
8.交叉驗證
為了進一步對比與驗證各種算法的精確度,我們可以使用cross_validate()函數(shù)進行k-折交叉驗證。
SVM<-cross_validate(container,4,"SVM")GLMNET<-cross_validate(container,4,"GLMNET")MAXENT<-cross_validate(container,4,"MAXENT")SLDA<-cross_validate(container,4,"SLDA")BAGGING<-cross_validate(container,4,"BAGGING")BOOSTING<-cross_validate(container,4,"BOOSTING")RF<-cross_validate(container,4,"RF")NNET<-cross_validate(container,4,"NNET")TREE<-cross_validate(container,4,"TREE")
9.導出數(shù)據(jù)
最后,可以導出結果,對未正確標簽的文檔做進一步研究處理。比如,看看是哪種情形下,分類算法準確率較低,需要人工干預。
write.csv(analytics@document_summary,"DocumentSummary.csv")
結論
至此,文本分類的『獨孤九劍』已然練成!然而,長路漫漫,我們要想提高模型的精度,還需要『勤修內(nèi)功』,進一步學習模型的細節(jié),加深對模型的理解,從而學會調(diào)節(jié)各種參數(shù),進行噪音過濾,模型調(diào)整等。否則,只怕是『Garbage in, Garbage out』了。數(shù)據(jù)分析師培訓
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03