實驗4分類

2022-12-11 10:09:02 字數 4706 閱讀 8330

分類演算法是解決分類問題的方法,是資料探勘、機器學習和模式識別中乙個重要的研究領域。分類演算法通過對已知類別訓練集的分析,從中發現分類規則,以此**新資料的類別。分類演算法的應用非常廣泛,銀行中風險評估、客戶類別分類、文字檢索和搜尋引擎分類、安全領域中的入侵檢測以及軟體專案中的應用等等。

bayes

貝葉斯分類器的分類原理是通過某物件的先驗概率,利用貝葉斯公式計算出其後驗概率,即該物件屬於某一類的概率,選擇具有最大後驗概率的類作為該物件所屬的類。目前研究較多的貝葉斯分類器主要有四種,分別是:***** bayes、tan、ban 和 gbn。

1、貝葉斯網路(bayesnet)

貝葉斯網路是乙個帶有概率注釋的有向無環圖,圖中的每乙個結點均表示乙個隨機變數 , 圖中兩結點間若存在著一條弧,則表示這兩結點相對應的隨機變數是概率相依的,反之則說明這兩個隨機變數是條件獨立的。網路中任意乙個結點 x 均有乙個相應的條件概率表 conditional probability table,cpt) ,用以表示結點 x 在其父結點取各可能值時的條件概率。若結點 x 無父結點 , 則 x 的 cpt 為其先驗概率分布。

貝葉斯網路的結構及各結點的 cpt 定義了網路中各變數的概率分布。應用貝葉斯網路分類器進行分類主要分成兩階段。第一階段是貝葉斯網路分類器的學習,即從樣本資料中構造分類器,包括結構學習和 cpt 學習;第二階段是貝葉斯網路分類器的推理,即計算類結點的條件概率,對分類資料進行分類。

這兩個階段的時間複雜性均取決於特徵值間的依賴程度,甚至可以是 np 完全問題,因而在實際應用中,往往需要對貝葉斯網路分類器進行簡化。根據對特徵值間不同關聯程度的假設,可以得出各種貝葉斯分類器。

2、樸素貝葉斯(*****bayes)

樸素貝葉斯模型(nbc)發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。同時,nbc 模型所需估計的引數很少,對缺失資料不太敏感,演算法也比較簡單。nbc 模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給 nbc 模型的正確分類帶來了一定影響。

在屬性個數比較多或者屬性之間相關性較大時,nbc 模型的分類效率比不上決策樹模型。而在屬性相關性較小時,nbc 模型的效能最為良好。

lazy learning

相對其它的 inductive learning 的演算法來說,lazy learning 的方法在訓練是僅僅是儲存樣本集的資訊,直到測試樣本到達時才進行分類決策。也就是說這個決策模型是在測試樣本到來以後才生成的。相對與其它的分類演算法來說,這類的分類演算法可以根據每個測試樣本的樣本資訊來學習模型,這樣的學習模型可能更好的擬合區域性的樣本特性。

knn 演算法的思路非常簡單直觀:如果乙個樣本在特徵空間中的 k 個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。其基本原理是在測試樣本到達的時候尋找到測試樣本的 k 臨近的樣本,然後選擇這些鄰居樣本的類別最集中的一種作為測試樣本的類別。

在 weka 中關於 knn 的演算法有兩個,分別是 ib1,ibk。ib1 即 1 近鄰,ib1 是通過它的乙個鄰居來判斷測試樣本的類;ibk 即 k 近鄰,ibk 是通過它周圍的 k 個鄰居來判斷測試樣本的類別

在樣本中有比較多的噪音點是(noisy points)時,通過乙個鄰居的效果很顯然會差一些,因為出現誤差的情況會比較多。這種情況下,ibk 就成了乙個較優的選項了。這個時候有出現了乙個問題,k 這個值如何確定,一般來說這個 k 是通過經驗來判斷的。

trees

即決策樹演算法,決策樹是對資料進行分類,以此達到**的目的。該決策樹方法先根據訓練集資料形成決策樹,如果該樹不能對所有物件給出正確的分類,那麼選擇一些例外加入到訓練集資料中,重複該過程一直到形成正確的決策集。決策樹代表著決策集的樹形結構。

決策樹由決策結點、分支和葉子組成。決策樹中最上面的結點為根結點,每個分支是乙個新的決策結點,或者是樹的葉子。每個決策結點代表乙個問題或決策,通常對應於待分類物件的屬性。

每乙個葉子結點代表一種可能的分類結果。沿決策樹從上到下遍歷的過程中,在每個結點都會遇到乙個測試,對每個結點上問題的不同的測試輸出導致不同的分支,最後會到達乙個葉子結點,這個過程就是利用決策樹進行分類的過程,利用若干個變數來判斷所屬的類別。

1、id3 即決策樹 id3 演算法

id3 演算法是由 quinlan 首先提出的。該演算法是以資訊理論為基礎,以資訊熵和資訊增益度為衡量標準,從而實現對資料的歸納分類。

2、j48 即決策樹 c4.5 演算法

c4.5 演算法一種分類決策樹演算法 , 其核心演算法是 id3 演算法。c4.5 演算法繼承了 id3 演算法的優點,並在以下幾方面對 id3 演算法進行了改進:

(1) 用資訊增益率來選擇屬性,克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足;

(2) 在樹構造過程中進行剪枝;

(3) 能夠完成對連續屬性的離散化處理;

(4) 能夠對不完整資料進行處理。

c4.5 演算法有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對資料集進行多次的順序掃瞄和排序,因而導致演算法的低效。

rule

1、decision table 即決策表。決策表 (decision table),是一中使用表的結構,精確而簡潔描述複雜邏輯的方式。

2、jrip 即 ripper 演算法

規則歸納學習從分類例項出發能夠歸納出一般的概念描述。其中重要的演算法為 irep 演算法和 ripper 演算法。重複增量修枝(ripper)演算法生成一條規則,隨機地將沒有覆蓋的例項分成生長集合和修剪集合,規定規則集合中的每個規則是有兩個規則來生成:

替代規則和修訂規則。

meta

1、adaboostm1 即 adaboosting 演算法

adaboost 是一種迭代演算法,其核心思想是針對同乙個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成乙個更強的最終分類器(強分類器)。其演算法本身是通過改變資料分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新資料集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。

2、bagging 即 bagging 方法

bootstrps bagging boosting 都屬於整合學習方法,將訓練的學習器整合在一起。原理**於 pac 學習模型(probably approximately correctk)。其中的 bagging 是 bootstrap aggregating 的縮寫,是最早的 ensemble 演算法之一,它也是最直接容易實現,又具有不錯的效果的演算法之一。

bagging 中的多樣性是由有放回抽取訓練樣本來實現的,用這種方式隨機產生多個訓練資料的子集,在每乙個訓練集的子集上訓練乙個同種分類器,最終分類結果是由多個分類器的分類結果多數投票而產生的。

實驗內容:

1、使用不同的分類演算法對資料集進行分類。

2、通過各種不同的視覺化選項觀察分類結果(visualize...)。

weka可以支援文字分類。只要輸入乙個檔案目錄,weka即可生成對應的arff檔案,進而直接用weka自帶的分類器進行**。但是weka只提供訓練集的訓練功能,而不提供**測試集。

由於訓練過程會打亂樣本,所以也不能通過訓練集跟測試集一起提取特徵再抽取出測試集的方法進行測試。另外特徵提取方法只有tf/idf方法。

初始化資料

在gui版本的weka當中,只能讀入arff格式的檔案。以檔案目錄為輸入,生成arff檔案只能通過命令列或者自行編碼。把文字資料轉化成arff檔案需要兩步:

1、textdirectoryloader

j**a -dir text_example > text_

該方法只能通過命令列實現。如果是在windows下,要首先在環境變數裡加入的位置,再在cmd裡敲入命令列。

圖1 檔案目錄格式

該類的作用是把輸入目錄轉化成arff檔案,但是轉化之後的arff檔案裡的屬性是string型的,依然是大多數分類器不能處理的,需要做進一步處理。該類的作用相當於把每個文字表示一行的string格式。輸入的檔案目錄的格式應為圖1所示。

由textdirectoryloader轉化得到的arff檔案不能直接用來分類,需要stringtowordvector類的進一步處理。這步在命令列和gui上都能操作。

在開啟的weka介面中選擇開啟已經上一步處理過的檔案,然後選擇配置相應的引數:

-w 需要保留的單詞個數,預設為1000。這不是最終的特徵維數,但是維數跟此引數是正相關的。

-stopwords 輸入停詞檔案,檔案格式為每乙個詞一行。在讀檔案到轉化特徵時會自動去掉這些常用詞,系統自帶有一套停用詞。

-tokenizer 自定義所要去除的符號,一般為標點符號。預設有常用的標點符號,但往往是不夠的,所以需自己新增。

其他引數只需預設值即可。在gui當中,還有一些引數設定需要介紹:lowercasetokens 是否區分大小寫,預設為false不區分,這裡一般要設定為ture,因為同乙個詞就會有大小寫的區別。

特徵選擇與訓練

提取完arff檔案之後,可以按上方的按鈕儲存檔案。在attribute一欄中也會顯示所有的特徵,此時也可以自己觀察一下所提取的單詞是否合理,然後再在去停詞、符號等方面做改進,當然若至於少部分的有問題,也可以手動剔除。

此步進行完之後,可以使用降維方法(例如pca)對特徵進行降維,當然這不是必須的。

接下來就可以按照一般arff檔案進行訓練了。

實驗內容:(weka 中文文字分類)

1、利用example1資料夾中的文字資料構造文字資料集,要求用j**a實現。

2、對上一步得到的資料集進行分類,要求用j**a實現。

3、合併example2資料夾中的兩個資料集,進行分類,通過預處理或修改現有分類演算法的方式提高分類準確率。

**:package shiyan4;

資料結構實驗4分類二叉樹的構建

資料結構 實驗4 實驗報告 實驗專案4 分類二叉樹的構建 實驗結果 執行結果介面及源程式,執行結果介面放在前面 include include include include define student etype struct student struct binarytreenode stru...

專題1分類討論

專題一分類討論思想 一 概述 根據研究物件的本質屬性的差異,將所研究的問題分為不同種類的思想叫做分類思想 將事物進行分類,然後對劃分的每一類分別進行研究和求解的方法叫做分類討論 通常分類討論的題型有 1 問題所涉及到的數學概念是分類進行定義的.如 a 的定義分a 0 a 0 a 0三種情況.一元二次...

36分類討論思想

分類討論思想就是根據所研究物件的性質差異,分各種不同的情況予以分析解決.分類討論題覆蓋知識點較多,利於考查學生的知識面 分類思想和技巧 同時方式多樣,具有較高的邏輯性及很強的綜合性,樹立分類討論思想,應注重理解和掌握分類的原則 方法與技巧 做到 確定物件的全體,明確分類的標準,分層別類不重複 不遺漏...