簡單安裝幾個R軟件包,你就直接在自己電腦上打造出一個文本分類器,用進行機器來評估人類寫作。
本文是一篇極簡的上手教程,它想用清晰明了的步驟告訴讀者,機器學(xué)習(xí)不神秘,關(guān)鍵是動手!僅需七步,你也一樣能“作詩”,完全無需像曹子建那樣“才高八斗”。
作者 | Fedor
翻譯 | AI科技大本營()
參與 | Joe,波波
在本教程中,我們將用到大量的R軟件包,以快速實現(xiàn)一個用于亞馬遜評論數(shù)據(jù)的分類器算法。該分類器能以極高的準確度來判斷一個評論是正面的還是負面的。
為了明確地給出分類算法的工作用例,這里采用了斯坦福網(wǎng)絡(luò)分析項目( )的數(shù)據(jù),該數(shù)據(jù)已被解析成小的文本塊,并進行過適當?shù)臉俗ⅰD憧梢詮乃拇a庫獲取到這些數(shù)據(jù)。
斯坦福網(wǎng)絡(luò)分析項目
鏈接
%%%20R%
開始前的數(shù)據(jù)策管,是整個數(shù)據(jù)處理過程中至關(guān)重要的一環(huán):要確保所用的信息都已被恰當?shù)胤诸惡蜆俗ⅰ?/p>
在機器學(xué)習(xí)中,數(shù)據(jù)的標注和分類的質(zhì)量往往能決定整個模型的準確度。也就是說,熟悉一下文件內(nèi)容在被如何組織與標注,會非常有價值:“Train”文件夾包含了400條被標為“Neg”(,負面)的1星書評,與400條被標為“Pos”(r語言 沒有這個數(shù)據(jù)集,“正面”)的5星評論。這就是我們的“黃金標準”:我們根據(jù)用戶撰寫書評時所給的評分星級來判斷評論內(nèi)容正面與否。我們使用“Train”文件夾內(nèi)的數(shù)據(jù)來訓(xùn)練分類器,然后它用訓(xùn)練所得的規(guī)律來推測“Test”文件夾內(nèi)的評論是正面還是負面。
通過這種方式,我們就能打造出一個基于機器學(xué)習(xí)的文本分類器,它可以準確判斷每條亞馬遜書評正面與否,或任何短文本信息的正面與否r語言 沒有這個數(shù)據(jù)集,以此來評估給定產(chǎn)品的消費體驗。
從更大的視角看,這一過程所演示的是如何用最簡單的R語言來學(xué)習(xí)并預(yù)測人類寫作。這是一個用R語言進行機器學(xué)習(xí)的有效用例。
該教程運行在R語言的 環(huán)境:
你可以在任何能編譯并運行R腳本的平臺上來練習(xí)。
我們將使用R語言的“caret”、“tm”和“”包來解析和讀取數(shù)據(jù),然后進行模型訓(xùn)練。如果你沒裝這些包,請用下面的命令安裝。
關(guān)于R軟件包如何安裝的更多說明,請參考這里
。
其中,“dplyr”包和” ”是用來幫我們控制數(shù)據(jù)的,并把它們組織成模型能夠使用的數(shù)據(jù)。接著,讓我們激活這些已安裝好的R軟件包,并展開機器學(xué)習(xí)的實踐操作。
第一步是導(dǎo)入并清洗所有的數(shù)據(jù)。因此,我們將使用”tm”包,它用 ”” 函數(shù)和 ”” 函數(shù)來使數(shù)據(jù)變得可用。下面將用到大段大段的代碼塊,我們希望其中的注釋能有助于你理解里面的機制。
1. 導(dǎo)入并清洗數(shù)據(jù)
2. 為訓(xùn)練數(shù)據(jù)創(chuàng)建文本矩陣
3. 重復(fù)以上兩步來準備測試數(shù)據(jù)
上述代碼給出了兩個新的數(shù)據(jù)矩陣:一個是”data.dtm”,包含了“”文件夾內(nèi)的所有數(shù)據(jù),另一個是”test.dtm”,包含了“Test”文件夾內(nèi)的所有數(shù)據(jù)。本教程的絕大部分,我們都是在跟”train.dtm”打交道,用于生成、訓(xùn)練和驗證結(jié)果。先不停地使用訓(xùn)練數(shù)據(jù),然后再用測試數(shù)據(jù)進行模型驗證,這是用R進行機器學(xué)習(xí)實踐的基本步驟。
以下兩步涉及到數(shù)據(jù)處理過程中非常重要的兩個方面,從而能確保分類器很好地工作。
4. 確保測試矩陣和訓(xùn)練矩陣的列向量一致(找到交集)
5. 獲取訓(xùn)練數(shù)據(jù)的正確標注,并為測試數(shù)據(jù)設(shè)置相應(yīng)的空值
如果以上步驟的運行都正確無誤,你可以開始訓(xùn)練分類器了!
注意:本教程將不對模型作交叉驗證(cross-),但更高水平的用戶或研究者應(yīng)當創(chuàng)建多個數(shù)據(jù)包,并用它們來對模型進行交叉驗證,從而獲得更加可靠的模型準確值。
不管怎樣,這里的模型只會用下面的混淆矩陣( )來進行一次模型準確度驗證。這將會生成一些指標,以幫助我們計算剛剛建好的預(yù)測模型的準確度。
6. 準備好數(shù)據(jù)集,進行模型訓(xùn)練并檢驗結(jié)果
如上所述,我們用訓(xùn)練數(shù)據(jù)來對模型進行訓(xùn)練和測試。如果一切順利,你應(yīng)該能看到以下的輸出:
混淆矩陣( )以盡可能簡單的形式給出了最終的輸出結(jié)果,以及模型在訓(xùn)練數(shù)據(jù)上預(yù)測的性能分析。例如“”(準確度)表明分類器在訓(xùn)練數(shù)據(jù)集上的預(yù)測精度:這里高達92.8%!這就意味著大致有93%的情況,分類器僅根據(jù)文本內(nèi)容就準確地判斷它是正面的還是負面的。
在更嚴謹?shù)膱鼍跋拢阈枰诓煌臄?shù)據(jù)集(通常是隨機從訓(xùn)練數(shù)據(jù)集中獲得的子集)上進行同樣的流程,以進行交叉驗證。比如上面的例子,很明顯構(gòu)建的分類器能非常好地判斷亞馬遜書評是負面的還是正面的。因此,我們進行下一步的測試。我們已經(jīng)基于使用R進行機器學(xué)習(xí)的知識,構(gòu)建了一個非常好的分類器。但是,這個模型還不能用于實踐。幸運的是,在測試數(shù)據(jù)上運行這個模型,只需修改“df.test”變量即可。
7. 在測試數(shù)據(jù)上進行最終預(yù)測,并標注文件名
以上代碼表示,預(yù)測模型在測試數(shù)據(jù)上運行并輸出結(jié)果””。然后,我們使用原始數(shù)據(jù)行名作為預(yù)測結(jié)果向量行名,并最終生成測試數(shù)據(jù)的預(yù)測結(jié)果。
總的來說,以上使用R構(gòu)建機器學(xué)習(xí)模型的流程幫助你快速實現(xiàn)一個分類器。它以相當高的準確度區(qū)分在線書評的情感種類。當你有大量的用戶評論數(shù)據(jù)(用來分析某個產(chǎn)品或服務(wù)的客戶體驗度),這樣一個分類器非常實用。此外,還能用于幫助研究者構(gòu)建可以自動清除差評或者好評的算法。我們希望這個教程能讓你感受到使用R進行機器學(xué)習(xí)實踐的威力。
原文鏈接