
??新智元推薦??
來源:圖靈TOPIA
作者:Dean Sublett
編譯:安然
整理編輯:元子
【新智元導讀】本文作者Dean Sublett是Kaggle大神Abhishek Thakur的迷弟,通過學習Abhishek的相關教程受益良多,因此,近期他在medium上撰文對相關自然語言處理的知識做了梳理總結。
本文作者Dean Sublett是Kaggle大神Abhishek Thakur的迷弟,通過學習Abhishek的相關教程受益良多,因此,近期他在medium上撰文對相關自然語言處理的知識做了梳理總結。
提起Abhishek Thakur,很多kaggler對他都非常熟悉,2017年,他在 Linkedin 發(fā)表了一篇名為Approaching (Almost) Any Machine Learning Problem的文章,介紹他建立的一個自動的機器學習框架,幾乎可以解決任何機器學習問題,這篇文章曾火遍 Kaggle。
?
Abhishek在Kaggle上的成就:
- Competitions Grandmaster(17枚金牌,世界排名第3)
- Kernels Expert ?(Kagglers排名前1%)
- Discussion Grandmaster(65枚金牌,世界排名第2)
目前,Abhishek在挪威boost公司擔任首席數(shù)據(jù)科學家的職位,這是一家專門從事會話人工智能的軟件公司。
以下是本文作者對Abhishek的NLP實戰(zhàn)技術學習總結:
Abhishek的NLP方法?強烈建議在閱讀本文的同時閱讀kernel。想要更全面掌握NLP或數(shù)據(jù)科學,請確保自己寫代碼時,能理解Abhishek的每一行代碼。我們的任務是確定測試集中每個句子的作者。?1.??研究數(shù)據(jù)并理解問題?導入必要的Python模塊和數(shù)據(jù)之后,Abhishek調(diào)用數(shù)據(jù)上的head方法,查看前五行是什么樣的。
由于Abhishek是專家,并且這是一個NLP問題,與涉及數(shù)值數(shù)據(jù)的問題相比,探索性數(shù)據(jù)分析EDA)是比較淺顯的問題。
數(shù)據(jù)科學的新人會從更全面的EDA中收益。對數(shù)據(jù)進行深入的研究可以發(fā)現(xiàn)任何缺失的值,知道需要進行多少數(shù)據(jù)清理,并在問題的后期幫你做出建模決策。?Abhishek還提醒到,我們正在解決多類文本分類問題。他指出了Kaggle將用于評分提交的評估指標。
在這次競賽中,Kaggle使用多分類的對數(shù)損失函數(shù)來衡量提交模型的性能。理想情況下,多類分類模型的對數(shù)損失函數(shù)為0。?2. ?預處理
接下來,Abhishek使用scikit-learn中的LabelEncoder方法為每個作者分配一個整數(shù)值。
通過使用整數(shù)值(0,1,2)對作者列中值的文本標簽進行編碼,Abhishek使其分類模型更易于理解數(shù)據(jù)。?在對作者標簽進行編碼之后,Abhishek使用來自scikit-learn的train_test_split將數(shù)據(jù)分成訓練和驗證集。
他選擇了90:10的訓練/驗證拆分(Python數(shù)據(jù)科學中最常用的拆分通常為70:30到80:20)。
因此,他打算在數(shù)據(jù)集中的90%的句子訓練模型,然后他用剩余10%的數(shù)據(jù)評估模型的準確性。?3. ?建模?在創(chuàng)建第一個模型前,Abhishek在數(shù)據(jù)上使用了TF-IDF(Term Frequency - reverse Document Frequency)。TF-IDF將對文本列中的句子出現(xiàn)的單詞賦予權重。
當我們試圖確定一個特定的句子是由哪個作者寫的,諸如“the”這樣的詞對于任何作者的分類都不重要,因為“the”經(jīng)常出現(xiàn)并沒有揭示很多信息,但是在對HP編寫的句子進行分類時,像“Cthulhu”這樣的詞會非常重要。
因此,TF-IDF將在預測作者方面,能幫助我們理解哪些詞是重要的。?對數(shù)據(jù)運行TF-IDF是一種特征提取形式。在這里,我們需要得出一些重要的數(shù)據(jù)預測或特征,來幫助我們找出一個特定的句子是由哪個作者寫的。
有了TF-IDF,可以對單詞的重要性進行統(tǒng)計測量,以幫助我們預測句子的作者。?在訓練集和驗證集上擬合TF-IDF之后,Abhishek準備了邏輯回歸模型。如果對這種分類模型不熟悉,請先閱讀本文。
在擬合邏輯回歸模型之后,Abhishek計算了邏輯回歸模型的對數(shù)損失(回想一下,他在kernel運行初始就編寫了多分類對數(shù)損失函數(shù))。
對于邏輯回歸模型,多分類對數(shù)損失函數(shù)返回對數(shù)損失值0.626。雖然擬合TF-IDF和邏輯回歸模型為我們提供了一個良好的開端,但是我們可以改進這個對數(shù)損失得分。?4. ?模型調(diào)整?我們不滿意0.626的對數(shù)損失得分,希望優(yōu)化此項評估指標。從這里開始,我們可以采取多種途徑,而這正是Abhishek所做的。
在對數(shù)據(jù)進行探索和預處理之后,我們留下了許多不同的特征提取和模型擬合的組合。
例如,Abhishek使用字數(shù)來進行特征提取而不是TF-IDF。
通過這種特征提取技術,他的邏輯回歸模型的對數(shù)損失得分從0.626提高到0.528 ,這是高達0.098的改進!?總結?從這一點開始,Abhishek的內(nèi)核越來越詳細,因此,我將讓他解釋其他分類模型。?這是我們討論的內(nèi)容:?EDA:如果我們想要了解數(shù)據(jù)集,探索性數(shù)據(jù)分析是至關重要的,當我們開始構建模型時,EDA可以節(jié)省我們的時間。?多類別分類問題:這類問題要求我們預測觀察屬于哪個類別,每個觀察可能屬于三個或更多類別中的任何一個類別?預處理:在構建任何模型之前,必須對數(shù)據(jù)進行預處理。在這個例子中,為了我們的模型,需要使用LabelEndcoder將文本標簽轉換成整數(shù)值?特征提取:無論何時我們有原始數(shù)據(jù)集(在我們的示例中是句子摘錄),我們都需要派生一些預測器,來幫助我們對觀察進行分類。Abhishek向我們展示了如何使用TF-IDF和字數(shù)統(tǒng)計。?以下是本文中提到的所有Abhishek代碼



參考鏈接:https://towardsdatascience.com/what-i-learned-from-abhishek-thakur-4b905ac0fd55
本文授權轉載自圖靈TOPIA(turingtopia)