孫子杰
(中國人民大學附屬中學,北京,100080)
隨著時代的發展,信息爆炸一詞早已不再陌生,互聯網上豐富的信息給人們的生活帶來諸多方便,例如降低了學習資料獲取的成本等;與此同時,信息爆炸的負面性也漸漸的影響著我們的生活,鋪天蓋地的廣告、新聞、信息遠遠超出我們的接受范圍,其中充斥著大量的無用甚至虛假信息。從海量的信息中抽取對自己有用的信息這件事占用了現代人大量的時間,因此,如何高效的進行信息分類成為亟待解決的問題。
常見的信息呈現方式有視頻、圖片、文本等,本文針對文本信息進行研究。文本分類屬于自然語言處理的范疇,自然語言的處理是現階段研究的熱門難題,而漢語結構的復雜性和幾千年來漢語中沉淀的人文歷史,讓漢語文本的分類難上加難。
文本分類作為很常見的熱門難題,自然積累了大量的技術實現方法。由于素材和數據集可采集性較高,訓練集標記難度不大,現有的文本分類水平也在不斷跟進,簡單來說,文本分來的過程是通過將文章分段、分詞,對詞語的詞性、詞義等進行判斷,以小見大達到對整個文章內容進行分類。具體分為基于規則的方法和基于統計的方法。
基于規則的方法是基于研究人員(例如語言學家)對語言的規律進行總結,形成規則形態的知識庫,但是由于語言的復雜性,導致很難選取一個規則覆蓋所有的語言現象,社交媒體不規范的語言使用習慣也使得基于規則的方法效率較低;基于統計的方法也叫基于機器學習的方法、經驗主義方法,是一種機器從語言樣本中自動學習的方法,其利用統計技術或機器學習技術,利用語料庫訓練語言模型。傳統機器學習方法往往結構簡單,執行簡潔,原理明確,對硬件要求略低,在文本分類問題上更受歡迎。目前,學界對自然語言處理有了多種方法,如N元模型,KNN、隱馬爾科夫模型、神經網絡深度學習等等模型。
樸素貝葉斯算法對小規模的數據表現較好,適合多分類任務及增量式訓練,因此本文從知名的新聞網站上獲取新聞文本數據集,運用基于樸素貝葉斯的模型進行實驗,嘗試將近200篇文章分為9個分類,基于樸素貝葉斯模型,探索了一些對數據平滑技術的改進辦法,通過一些精度調整,使模型的結果與實際情況更加吻合,為文本的分類提供更加優質的預測方法,提高分類的準確度。
多次試驗的結果對比證明了數據預處理的重要性,因此,本文針對數據預處理做出較詳細闡述,并根據漢語文本類數據的獨有性質,選用流行的可視化庫Matplotlib將文本數據可視化,清洗,選擇,歸約等預處理。在實驗過程中,采用了交叉驗證等方法避免過擬合,最終得到一個較好的預測結果。經過檢驗,本文提供的方法,可以在一定程度上提高對文本進行多分類的穩定性和準確性。
數據(data)是指對客觀事物觀察并進行記錄的結果,是對客觀事物的性質、狀態及相互關系等進行邏輯歸納的物理符號。顯然,數據是一個抽象概念,其具有規模和屬性。數據規模是指數據的多少,如今大火的“大數據”即指規模極大,非常復雜的數據;數據屬性是指數據所具有的性質,數據具有的性質越多,即屬性越多,或稱維度越大,維度過大的數據中常包含一些無關屬性,此時便需要進行數據降維處理以達到篩選的目的。與其他屬性一樣,數據也有描述單位,生活中所說的手機容量,網速等等都應用到了數據的單位方面的內容。
雜亂的數據需要經過加工后才能成為信息,那自然就需要在正式計算前進行數據預處理。現實世界中的數據通常比較雜亂,無法直接進行帶入算法計算,為了提高數據分析的最終效果,需要對原始數據進行處理。瑕疵數據通常產生于輸入時的遺漏﹑系統默認值、人工疏忽、噪聲、設備/系統故障等等原因。在大量的數據中,往往還存在著數據缺失和數據冗余。數據缺失是指某些可能的相關因素被忽略從而導致分析結果與實際出現偏差。數據冗余是由于一些不相關的因素混雜其中,成為干擾因素,對分析可能會造成不必要的影響,需要剔除。而大數據的作用就是盡可能的搜集齊所有的影響因素,分析數據越精煉越好。
預處理形式分為數據清理,數據集成與變換,數據歸約和離散化及概念分層,除此之外,還存在其他可能需要數據預處理的情況,例如數據的壓縮存儲,數據形式的轉換和數據內容的篩選和梳理等。本文詳細僅介紹數據清理,數據集成,數據變換與數據歸約。
1.2.1 數據清理
現實世界的原始數據一般是不完整、有錯亂的。數據清理試圖填充遺漏的值,識別并消除噪音,并更改數據中的不一致為一致。
處理遺漏值常采用的措施有:忽略此個元組、人工補充遺漏值、使用全局常量、平均值等填充某個遺漏值等。
噪音是指測量變量的隨機錯誤或偏差。去除噪音需要數據平滑技術,包括分箱,聚類,計算機和人工檢查結合,回歸等。分箱是指存儲的值被分布到一些“桶”或箱中,通過考察周圍的值來平滑箱中存儲數據的值。聚類是將類似的值組織成群或“聚類”,落在聚類集合之外的值被視為噪聲。計算機和人工檢查結合即計算機根據可能的錯誤模式進行預搜索,人工對錯誤模式進行檢驗。回歸則可以通過讓數據適合一個函數(如回歸函數)來平滑數據,如線性回歸,找出擬合兩個變量的直線,使得一個變量能夠預測另一個。
1.2.2 數據集成
數據集成是指將多個數據源中的數據集合,放在一個一致的數據存儲中。
數據集成主要根據數據的相關性進行判斷,數據相關性包括強正相關、弱正相關、強負相關、弱負相關、非線性相關和不相關。其中,強正相關是指共同增加或減少,且變化明顯,說明x是y的主要影響因素;弱正相關是指共同增加或減少,但變化不明顯,說明x是y的影響因素,但不是唯一因素;強負相關、弱負相關與正相關相反;非線性相關是指x、y沒有明顯線性相關關系,但有某種非線性相關關系,x仍是y的影響因素,不相關即二者完全無關。
1.2.3 數據變換
數據變換分為規范化,數據泛化,屬性構造,平滑,聚集等。常見的規范化例如最小–最大規范化是指將原始數據A經過線性變換,映射到區間[new_minA, new_maxA] ,這種映射存在一個問題,若存在離群點,可能影響規范化,若在規范化后添加新的數據,當新數據落在原數據的區間 [minA, maxA]之外,將導致“越界”錯誤。
數據泛化是一個過程,它將數據集從較低的概念層抽象到較高的概念層。泛化的規則為:存在大量不同值,且屬性值無法概念分層則刪除;存在大量不同值,屬性值可以概念分層,則將屬性值概念分層;存在少量不同值則保留;不存在不同值則刪除。
1.2.4 數據歸約
大數據環境下數據量太大,直接進行復雜的數據分析和挖掘效率太低,因此需要更強大的計算能力,更高效的挖掘方法并且減少數據量但并不損失數據特征。研究證明,歸約后的數據集上的挖掘結果與原結果幾乎相同。
歸約策略包括(1)數據立方體聚集:對數據立方體做聚集操作 (2)屬性子集選擇:檢測并刪除不相關、弱相關或冗余的屬性和維,使得數據類的概率分布盡可能地接近使用所有屬性得到的原分布(3)維度歸約:數據僅有部分的維與挖掘目標相關,去掉不相關的維。屬性維的選擇算法包括向前選擇,向后刪除,二者結合等(4)數值歸約: 通過數值特征代替其他數據。
本項目數據來自新聞中的各類文章,分為財經、IT、健康、體育、旅游、教育、招聘、文化、軍事九個種類,本文嘗試將近200篇文章分為以上9個分類。
對于從網站上爬蟲得到的文本數據,通常帶有html標簽,需要去除標簽,本文使用Python的BeautifulSoup包進行去標簽操作。文本分類使用的是詞特征,所以本文選擇jieba中文分詞工具對文章進行分詞,jieba分詞采用動態規劃查找最大概率路徑,找出基于詞頻的最大切分組合,對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用Viterbi算法,分詞結果如圖1所示。
圖中結果可以明顯看到有一些對文章實際意義無關的詞,其不具有任何類別表征能力,因此需要停用詞去除,比如“的”、“了”等常見連詞。去掉停用詞后進行詞頻統計,詞頻統計是進行特征提取、特征權值計算的基礎,根據詞頻統計去掉最高頻的前100個詞,此時,數據已經可以為模型所用。

圖1
樸素貝葉斯算法(Naive Bayes)是有監督的學習算法,解決的是分類問題,如客戶是否流失、是否值得投資、信用等級評定等多分類問題。該算法的優點在于簡單易懂、學習效率高、在某些領域的分類問題中能夠與決策樹、神經網絡相媲美。
但由于該算法以自變量之間的獨立(條件特征獨立)性和連續變量的正態性假設為前提,就會導致算法精度在某種程度上受影響。
樸素貝葉斯模型基于貝葉斯決策理論,用p1(x,y)表示數據點(x,y)屬于類別1(圖2中圓點表示的類別)的概率,用p2(x,y)表示數據點(x,y)屬于類別2(圖2中三角形表示的類別)的概率,那么對于一個新數據點(x,y),可以用下面的規則來判斷它的類別:如果p1(x,y)>p2(x,y),那么類別為1;如果p1(x,y)<p2(x,y),那么類別為2。也就是說,我們會選擇高概率對應的類別。這就是貝葉斯決策理論的核心思想,即選擇具有最高概率的決策。

圖2
2.1.1 條件概率與全概率
條件概率是指事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為:P(A|B),讀作“在B的條件下A的概率”。若只有兩個事件A,B,那么

全概率是指,如果A和A’構成樣本空間的一個劃分,那么事件B的概率,就等于A和A’的概率分別乘以B對這兩個事件的條件概率之和,即

2.1.2 貝葉斯推斷
在學界,通常把P(A)稱為“先驗概率”(Prior probability),即在B事件發生之前,對A事件概率的一個判斷,P(A|B)稱為“后驗概率”(Posterior probability),即在B事件發生之后,對A事件概率的重新評估。P(B|A)/P(B)稱為“可能性函數”(Likelyhood),作為調整因子,使得預估概率更接近真實概率。所以,條件概率可以理解成下面的式子:
后驗概率 = 先驗概率×調節因子貝葉斯推斷的含義即先預估一個“先驗概率”,然后加入實驗結果,看這個實驗到底是增強還是削弱了“先驗概率”,由此得到更接近事實的“后驗概率”。
2.1.3 樸素貝葉斯模型
貝葉斯和樸素貝葉斯的概念是不同的,區別就在于“樸素”二字,樸素貝葉斯對條件個概率分布做了條件獨立性的假設,貝葉斯分類器的基本方法:在統計資料的基礎上,依據某些特征,計算各個類別的概率,從而實現分類。
在實驗中,對常見的三個問題進行改進,分別為平滑問題,下溢出問題,和準確率提升問題。
平滑問題源于一些需檢測詞在詞表中未出現導致后驗概率為0,這顯然是不合理的,常見的解決方法為拉普拉斯平滑(又稱加一平滑),即規定出現次數比真實次數多一次,使得未出現的詞組概率不再是0,而是大于0的較小的值,但是,對所有沒出現過的詞組都增加同樣的頻次,并不合理,對于量級較小的數據,規定出現次數比真實次數多一次次數過多,因此,本文選擇效果更好的Add–k平滑,即不再是加1次而是視情況而言加k次,實驗結果證明,Add–k結果優于Add–1,將分類準確率由73%提升至81%。
下溢出問題是由于太多很小的數相乘造成的,在程序中,在相應小數位置進行四舍五入,計算結果可能就變成0,為了解決這個問題,對乘積結果取自然對數,通過求對數可以較好的避免下溢出或者浮點數舍入導致的錯誤。
準確率的提升選擇Bagging策略,Bagging策略來源于bootstrap aggregation:從樣本集(假設樣本集N個數據點)中重采樣選出Nb個樣本(有放回的采樣,樣本數據點個數仍然不變為N),在所有樣本上,對這n個樣本建立分類器,重復以上兩步m次,獲得m個分類器,最后根據這m個分類器的投票結果,決定數據屬于哪一類。
本實驗選用的樸素貝葉斯模型優點較多,樸素貝葉斯模型為生成式模型,通過計算概率來進行分類,可以用來處理多分類問題,其對小規模的數據表現很好,適合多分類任務,適合增量式訓練,算法的邏輯也比較簡單。
當然,在一些情況下它也存在著不足,樸素貝葉斯推斷的常見缺點例如,對輸入數據的表達形式很敏感,由于樸素貝葉斯的“樸素”特點,所以會帶來一些準確率上的損失和需要計算先驗概率,分類決策存在錯誤率等。