丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

1

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

本文作者: AI研習(xí)社-譯站 2018-07-25 10:49
導(dǎo)語:文本分類又又又又來了

雷鋒網(wǎng)按:本文為雷鋒字幕組編譯的技術(shù)博客,原標(biāo)題 Multi-Class Text Classification with Scikit-Learn,作者為 Susan Li 。

翻譯 | 朱茵      整理 | 余杭  MY

 

在商業(yè)領(lǐng)域有很多文本分類的應(yīng)用,比如新聞故事通常由主題來分類;內(nèi)容或產(chǎn)品常常被打上標(biāo)簽;基于如何在線談?wù)摦a(chǎn)品或品牌,用戶被分成支持者等等。

然而大部分的文本分類文章和網(wǎng)上教程是二進(jìn)制的文本分類,像垃圾郵件過濾(spam vs. ham)、情感分析(積極的和消極的)。在大量實(shí)例中,我們現(xiàn)實(shí)世界的問題要比這些復(fù)雜的多。因此,這是我們今天要做的:將消費(fèi)者的財(cái)務(wù)投訴分成12個(gè)預(yù)定義的類。這些數(shù)據(jù)可以從 data.gov 下載。

我們使用 Python 和 Jupyter Notebook 來開發(fā)我們的系統(tǒng),依靠 Scikit-Learn 作為機(jī)器學(xué)習(xí)的部件。如果你想看下在 PySpark 中的實(shí)現(xiàn),請(qǐng)閱讀下一篇文章。


問題形成

我們的問題是有監(jiān)督的文本分類問題,目標(biāo)是調(diào)查哪一種有監(jiān)督的機(jī)器學(xué)習(xí)方法最適于解決該問題。

鑒于新的投訴的到來,我們想將它歸到12個(gè)分類目錄中。分類器使得每個(gè)新投訴被歸類到一個(gè)僅且一個(gè)類別中。這是一個(gè)多類文本分類問題。我已經(jīng)迫不及待地想看下我們完成的結(jié)果。


數(shù)據(jù)瀏覽

在投入訓(xùn)練機(jī)器學(xué)習(xí)模型前,我們應(yīng)當(dāng)先看一些實(shí)例以及每個(gè)類別中投訴的數(shù)量:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖1

針對(duì)這個(gè)項(xiàng)目而言,我們僅需要2欄:“產(chǎn)品”和“消費(fèi)者投訴陳述”。

  • 輸入: Consumer_complaint_narrative

實(shí)例:“在我的信用報(bào)告上有過時(shí)的信息,我之前對(duì)該信用報(bào)告有爭議,該項(xiàng)信息記錄應(yīng)該被刪除,該信息是7年多之前的并且不符合信用報(bào)告的要求?!?/p>

  • 輸出:產(chǎn)品

實(shí)例:信用報(bào)告

我們將在消費(fèi)者投訴陳述欄刪除無賦值的,并且增加一欄編譯該產(chǎn)品作為一個(gè)整數(shù)值,因?yàn)橥ǔ7诸悓傩宰兞坑谜麛?shù)比用字符串代表要好。

我們也創(chuàng)建了幾個(gè)字典以備將來使用。

清理后,這是我們要使用的最初的5行數(shù)據(jù):

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

 圖2

不平衡的分類

我們看到每個(gè)產(chǎn)品的投訴數(shù)值不平衡。消費(fèi)者的投訴多針對(duì)索回債款、信用報(bào)告和房屋抵押貸款。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖3

當(dāng)我們遇到問題時(shí),我們會(huì)用標(biāo)準(zhǔn)算法解決這些問題。傳統(tǒng)的算法常常傾向于大多數(shù)的分類,并不會(huì)將數(shù)據(jù)分布考慮進(jìn)去。最糟的情況,少數(shù)的分類被當(dāng)做異常值被忽略了。在一些例子中,像欺詐偵測和癌癥預(yù)測,我們將仔細(xì)設(shè)置我們的模型或人工平衡數(shù)據(jù)集,比如通過欠采樣和過采樣每個(gè)類。

然而,在我們的學(xué)習(xí)不均衡的數(shù)據(jù)的例子中,我們會(huì)將興趣點(diǎn)放在占少數(shù)的的分類上。在大多數(shù)分類上具有高準(zhǔn)確率的分類器是令人滿意的。然而針對(duì)占少數(shù)的分類也應(yīng)當(dāng)保持合理的準(zhǔn)確度。就這樣吧。


文本表達(dá)

分類器和學(xué)習(xí)算法不能以他們?cè)瓉淼男问街苯犹幚砦谋疚募?,他們大多?shù)需要有固定大小的數(shù)字特征向量而不是帶有變量長度的原來的文本文件。因此,在預(yù)處理的階段文本將被轉(zhuǎn)成更好處理的表達(dá)方式。

一個(gè)從文本中提取特征的常用方法是使用詞匯模型袋:一種給每個(gè)文件,在我們的例子中的投訴陳述,詞匯的呈現(xiàn)(通常是頻率)將被考慮進(jìn)去,但這些詞匯出現(xiàn)的順序是被忽略的。

尤其是我們數(shù)據(jù)集的每個(gè)術(shù)語,我們將計(jì)算一種被稱為術(shù)語頻率的測量方法。逆文檔頻率,縮寫成tf-idf。我們將使用 sklearn.feature_extraction.text.TfidfVectorizer 給每個(gè)消費(fèi)者投訴陳述計(jì)算一個(gè) tf-idf 向量:

  • sublinear_df 設(shè)置為True 給頻率使用一種算法形式。

  • min_df 是文檔的最小數(shù)值is the minimum numbers of documents a word must be present in to be kept.

  • norm 設(shè)置為l2,來確保我們的特征向量具有歐幾里得標(biāo)準(zhǔn)1. 

  • ngram_range 設(shè)置為) (1,2)來表明我們同時(shí)考慮一元語法和二元語法。

  • stop_words 設(shè)置為"english" 來移除所有相同的代詞("a", "the", ...)用以減少噪音特征的數(shù)量。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

(4569, 12633)

現(xiàn)在,每 4569 個(gè)消費(fèi)者投訴陳述由12633個(gè)特征表示,代表不同的一元和二元語法的 tf-idf 分?jǐn)?shù)。

我們可以使用 sklearn.feature_selection.chi2 來尋找和每個(gè)產(chǎn)品最相關(guān)的術(shù)語:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

# ‘銀行賬戶或服務(wù)’:
 . 最相關(guān)的一元語法:
 . 銀行
 . 透支
 . 最相關(guān)的二元語法:
 . 透支費(fèi)用
 . 支票賬戶
# ‘消費(fèi)者貸款’:
 . :最相關(guān)的一元語法:
 . 小轎車
 . 車輛
 . 最相關(guān)的二元語法:
 . 車輛 xxxx
 . 豐田汽車金融
# ‘信用卡’:
 . 最相關(guān)的一元語法:
 . 花旗銀行
 . 卡
 . 最相關(guān)的二元語法:
 . 年費(fèi)
 . 信用卡
# ‘信用報(bào)告’:
 . 最相關(guān)的一元語法:
 . 益百利
 . 艾奎法克斯
 . 最相關(guān)的二元語法:
 . 反式聯(lián)盟
 . 信用報(bào)告
# ‘索回債款’:
 . 最相關(guān)的一元語法:
 . 收集
 . 債務(wù)
 . 最相關(guān)的二元語法:
 . 索回債款
 . 索回機(jī)構(gòu)
# ‘轉(zhuǎn)賬’:
 . 最相關(guān)的一元語法:
 . 西聯(lián)
 . paypal貝寶
 . 最相關(guān)的二元語法:
 . 西聯(lián)
 . 轉(zhuǎn)賬
# ‘住房抵押貸款’:
 . 最相關(guān)的一元語法:
 . 修改
 . 住房抵押貸款
 . 最相關(guān)的二元語法:
 . 抵押貸款公司
 . 貸款修改
# ‘其它金融服務(wù)’:
 . 最相關(guān)的一元語法:
 . 口腔
 . 護(hù)照
 . 最相關(guān)的二元語法:
 . 幫助支付
 . 規(guī)定支付
# ‘發(fā)薪日貸款’:
 . 最相關(guān)的一元語法:
 . 借錢
 . 發(fā)薪日
 . 最相關(guān)的二元語法:
 . 主要部分
 . 發(fā)薪日貸款
# ‘預(yù)付卡’:
 . 最相關(guān)的一元語法:
 . 服務(wù)
 . 預(yù)付
 . 最相關(guān)的二元語法:
 . 獲得的錢
 . 預(yù)付卡
# ‘學(xué)生貸款’:
 . 最相關(guān)的一元語法:
 . 學(xué)生
 . navient
 . 最相關(guān)的二元語法:
 . 學(xué)生貸款
 . 學(xué)生貸款
# ‘虛擬貨幣’:
 . 最相關(guān)的一元語法:
 . 處理
 . https
 . 最相關(guān)的二元語法:
 . xxxx 提供商
 . 金錢需要

這些都很講得通,對(duì)么?


多級(jí)類別分類器:特征和設(shè)計(jì)

  • 為了訓(xùn)練有監(jiān)督的分類器,我們首先將“消費(fèi)者投訴陳述”轉(zhuǎn)化為數(shù)字向量。我們開發(fā)了類似 TF-IDF 權(quán)值向量的向量表示。

  • 在得到文本的向量表示后,我們可以訓(xùn)練有監(jiān)督的分類器來訓(xùn)練看不見的“消費(fèi)者投訴陳述”和預(yù)測“產(chǎn)品”將落在哪個(gè)分類。

上述所有這些數(shù)據(jù)轉(zhuǎn)化后,現(xiàn)在我們有了所有的特征和標(biāo)簽,是時(shí)候來訓(xùn)練分類器了。針對(duì)這種類型的問題,許多算法可供我們使用。

  • 樸素貝葉斯分類器:最適合的詞匯計(jì)算的是多項(xiàng)式變量:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

在配置好訓(xùn)練設(shè)置后,我們來做一些預(yù)測。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

[‘債務(wù)索回’]

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖4

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

[‘信用報(bào)告’]

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖5

還不算太糟!


模型選擇

我們現(xiàn)在可以用不同的機(jī)器學(xué)習(xí)模型來做測試了,評(píng)估他們的準(zhǔn)確度和尋找任一潛在問題的源頭。

我們將用下列四種模型來做測試:

  • 邏輯回歸

  • (多項(xiàng))  樸素貝葉斯

  • 線性支持向量機(jī)

  • 隨機(jī)森林

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖6

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

model_name
LinearSVC: 0.822890
LogisticRegression: 0.792927
MultinomialNB: 0.688519
RandomForestClassifier: 0.443826
Name: accuracy, dtype: float64

線性支持向量機(jī)和邏輯回歸比其他兩種分類器表現(xiàn)更好,線性支持向量機(jī)有一個(gè)小優(yōu)勢(shì),它具備 82% 左右的準(zhǔn)確率。


模型評(píng)估

繼續(xù)我們最好的模型(線性支持向量機(jī)),我們看下混淆矩陣,展示下預(yù)測的和實(shí)際的標(biāo)簽之間的差異。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖7

大多數(shù)的預(yù)測最終呈現(xiàn)的是對(duì)角線(預(yù)測的標(biāo)簽 = 實(shí)際的標(biāo)簽),正是我們想要的。然而,還是有許多的誤分類,看看他們是由什么引起的也許蠻有意思的:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖8

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖9

你可以看到,一些誤分類的投訴是一些跟不止一個(gè)主題相關(guān)的投訴(比如,包括信用卡和信用報(bào)告的投訴)。這種錯(cuò)誤將一直發(fā)生。

然后我們使用 chi-squared test 來尋找與每個(gè)目錄最相關(guān)的術(shù)語:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

# ‘銀行賬號(hào)和服務(wù)’:

 . 最高一元語法:

 . 銀行

 . 賬戶

 . 最高二元語義:

 . 借記卡

 . 透支費(fèi)用

# ‘消費(fèi)貸’:

 . 最高一元語義:

 . 車輛

 . 小型汽車

 . 最高二元語義:

 . 個(gè)人貸款

 . 歷史xxxx

# ‘信用卡’:

 . 最高一元語義:

 . 卡

 . 發(fā)現(xiàn)

 . 最高二元語義:

 . 信用卡

 . 發(fā)現(xiàn)卡

# ‘信用’:

 . 最高一元語義:

 . 艾奎法克斯

 . 反式聯(lián)盟

 . 最高二元語義:

 . xxxx 賬戶

 . 反式聯(lián)盟

# ‘索回債務(wù)’:

 . 最高一元語義:

 . 債務(wù)

 . 收集

 . 最高二元語義:

 . 信用賬戶

 . 時(shí)間期限

# ‘轉(zhuǎn)賬’:

 . 最高一元語義:

 . paypal貝寶

 . 轉(zhuǎn)

 . 最高二元語義:

 . 轉(zhuǎn)賬

 . 發(fā)送錢

# ‘住房抵押貸款’:

 . 最高一元語義:

 . 住房抵押貸款

 . 第三方托管

 . 最高二元語義:

 . 貸款修改

 . 住房抵押貸款公司

# ‘其它金融服務(wù)’:

 . 最高一元語義:

 . 護(hù)照

 . 口腔

 . 最高二元語義:

 . 規(guī)定支付

 . 幫助支付

# ‘發(fā)薪日貸款’:

 . 最高一元語義:

 . 發(fā)薪日

 . 貸款

 . 最高二元語義:

 . 發(fā)薪日貸款

 . 發(fā)薪日

# ‘預(yù)付卡’:

 . 最高一元語義:

 . 預(yù)付

 . 服務(wù)

 . 最高二元語義:

 . 預(yù)付卡

 . 使用卡

# ‘學(xué)生貸款’:

 . 最高一元語義:

 . navient貸款公司

 . 貸款

 . 最高二元語義:

 . 學(xué)生貸款

 . 薩利美-學(xué)生貸款市場協(xié)會(huì)

# ‘虛擬貨幣’:

 . 最高以一元語義:

 . https

 . tx

 . 最高二元語義:

 . 金錢需求

 . xxxx 提供者

這些跟我們的預(yù)期一致。

最后,我們給每個(gè)類別打印分類報(bào)告:

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

圖9

源代碼可以在 Github 上找到,期待大家的反饋和提問。 


原文鏈接:https://towardsdatascience.com/multi-class-text-classification-with-scikit-learn-12f1e60e0a9

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

文本分類又來了,用 Scikit-Learn 解決多類文本分類問題

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語言不再成為學(xué)習(xí)知識(shí)的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說