您好,登錄后才能下訂單哦!
基礎知識:
數據挖掘:將大量數據轉變為有實際意義的模式和規則,分為兩種:直接的和間接的
數據挖掘的最終目標就是要創建一個模型,這個模型可改進您解讀現有數據和將來數據的方式。
數據挖掘的核心就是將正確的模型應用于數據。
第一種技術是回歸,用來基于其他的示例數據預測一個數值輸出(比如房屋價值)。
第二種技術是分類(即分類樹或決策樹),用來創建一個實際的分支樹來預測某個未知數據點的輸出值。
第三種技術是群集,可用它來創建數據組(群集)并從中識別出趨勢和其他規則
第四種技術是最近鄰,最近鄰(也即 Collaborative Filtering 或 Instance-based Learning)是一種非常有用的數據挖掘技術,可用來用輸出值已知的以前的數據實例來預測一個新數據實例的未知輸出值。
工具簡介:
窗口右側共有4個應用,分別是
Explorer:用來進行數據實驗、挖掘的環境,它提供了分類,聚類,關聯規則,特征選擇,數據可視化的功能。示例圖如下:
Experimentor:用來進行實驗,對不同學習方案進行數據測試的環境。
KnowledgeFlow:功能和Explorer差不多,不過提供的接口不同,用戶可以使用拖拽的方式去建立實驗方案。另外,它支持增量學習。
SimpleCLI:簡單的命令行界面。
Weka支持很多種文件格式,包括arff、xrff、csv,甚至有libsvm的格式。其中,arff是最常用的格式,我們在這里僅介紹這一種。
Arff全稱是Attribute-Relation File Format
使用weka進行數據挖掘的流程如下圖:
其中,在weka內進行的是數據預處理,訓練,驗證這三個步驟。
1)數據預處理:數據預處理包括特征選擇,特征值處理(比如歸一化),樣本選擇等操作。
2)訓練:訓練包括算法選擇,參數調整,模型訓練。
3)驗證:對模型結果進行驗證。
數據預處理:
數據預處理:打開Explorer界面,點“open file”,在weka安裝目錄下,選擇data目錄里的“labor.arff”文件,將會看到如下界面。我們將整個區域分為7部分,下面將分別介紹每部分的功能。
區域1共6個選項卡,用來選擇不同的數據挖掘功能面板,從左到右依次是Preprocess(預處理)、Classify(分類)、Cluster(聚類)、Associate(關聯規則)、Select attribute(特征選擇)和Visualize(可視化)。
區域2提供了打開、保存,編輯文件的功能。打開文件不僅僅可以直接從本地選擇,還可以使用url和db來做數據源。Generate按鈕提供了數據生成的功能,weka提供了幾種生成數據的方法。點開Edit,將看到如下界面:
在這個界面,可以看到各行各列對應的值,右鍵每一列的名字(先點擊列名),可以看到一些編輯數據的功能,這些功能還是比較實用的。
區域3名為Filter,有些人可能會聯想到特征選擇里面的Filter方法,事實上,Filter針對特征(attribute)和樣本(instance)提供了大量的操作方法,功能十分強大。
區域4,可以看到當前的特征、樣本信息,并提供了特征選擇和刪除的功能。在區域4用鼠標選擇單個特征后,區域5將顯示該特征的信息。包括最小值、最大值、期望和標準差。
區域6提供了可視化功能,選擇特征后,該區域將顯示特征值在各個區間的分布情況,不同的類別標簽以不同的顏色顯示。
區域7是狀態欄,沒有任務時,小鳥是坐著的,任務運行時,小鳥會站起來左右搖擺。如果小鳥站著但不轉動,表示任務出了問題。
Filters實例
點開Filter下面的choose按鈕,可以看到如下界面:
Filters可分為兩大類,supervised(監督、管理)和unsupervised。supervised下的方法需要類別標簽,而unsupervised則不需要。attribute類別表示對特征做篩選,instance表示對樣本做選擇。
Case 1:特征值歸一化
該項功能與類別無關,且是針對attribute的,我們選擇unsupervised -> attribute下面的Normalize。點開Normalize所在的區域(在所選擇的filter上點擊即可),將看到如下界面。左邊的窗口,有幾個參數可以選擇。點擊more,將出現右邊的窗口,該窗口詳細介紹了此功能。
使用默認參數,點擊ok,回到主窗口。在區域4選好將要歸一化的特征,可以是一個或多個,然后點擊apply。在可視化區域中,我們可以看到特征值從1到3被歸一到了0到1之間(看區域5的最大最小值)。
Case 2: 分類器特征篩選
該功能與類別相關,選擇supervised -> attribute下面的AttributeSelection。該界面有兩個選項,evaluator是評價特征集合有效性的方法,search是特征集合搜索的方法。在這里,我們使用InformationGainAttributeEval作為evaluator,使用Ranker作為search,表示我們將根據特征的信息增益值對特征做排序。Ranker中可以設置閾值,低于這個閾值的特征將被扔掉。
點擊apply,可以看到在區域4里特征被重新排序,低于閾值的已被刪掉。
Case 3:選擇分類器錯分的樣本
選擇unsupervised -> instance下面的RemoveMisclassified,可以看到6個參數,classIndex用來設置類別標簽,classifier用來選擇分類器,這里我們選擇J48決策樹,invert我們選擇true,這樣保留的是錯分樣本,numFolds用來設置交叉驗證的參數。設置好參數之后,點擊apply,可以看到樣本的數量從57減少到了7。
五.分類
在Explorer中,打開classify選項卡,整個界面被分成幾個區域。分別是
1)Classifier:點擊choose按鈕,可以選擇weka提供的分類器。常用的分類器有
a)bayes下的Nave Bayes(樸素貝葉斯)和BayesNet(貝葉斯信念網絡)。
b)functions下的LibLinear、LibSVM(這兩個需要安裝擴展包)、Logistic Regression(邏輯回歸)、Linear Regression(線性回歸)。
c)lazy下的IB1(1-NN)和IBK(KNN)。
d)meta下的很多boosting和bagging分類器,比如AdaBoostM1。
e)trees下的J48(weka版的C4.5)、RandomForest。
2)Test options
評價模型效果的方法,有四個選項。
a)Use training set:使用訓練集,即訓練集和測試集使用同一份數據,一般不使用這種方法。
b)Supplied test set:設置測試集,可以使用本地文件或者url,測試文件的格式需要跟訓練文件格式一致。
c)Cross-validation:交叉驗證,很常見的驗證方法。N-folds cross-validation是指,將訓練集分為N份,使用
N-1份做訓練,使用1份做測試,如此循環N次,最后整體計算結果。
d)Percentage split:按照一定比例,將訓練集分為兩份,一份做訓練,一份做測試。在這些驗證方法的下面,有 一個More options選項,可以設置一些模型輸出,模型驗證的參數。
3)Result list
這個區域保存分類實驗的歷史,右鍵點擊記錄,可以看到很多選項。常用的有保存或加載模型以及可視化的一些選 項。
4)Classifier output
分類器的輸出結果,默認的輸出選項有Run information,該項給出了特征、樣本及模型驗證的一些概要信息;Classifier model,給出的是模型的一些參數,不同的分類器給出的信息不同。最下面是模型驗證的結果,給出了 一些常用的一些驗證標準的結果,比如準確率(Precision),召回率(Recall),真陽性率(True positive rate),假陽性率(False positive rate),F值(F-Measure),Roc面積(Roc Area)等。Confusion Matrix給出了測試樣本的分類情況,通過它,可以很方便地看出正確分類或錯誤分類的某一類樣本的數量。
Case 1:使用J48對labor文件做分類
a.打開labor.arff文件,切換到classify面板。
b.選擇trees->J48分類器,使用默認參數。
c.Test options選擇默認的十折交叉驗證,點開More options,勾選Output predictions。
d.點擊start按鈕,啟動實驗。
e.在右側的Classifier output里面,我們看到了實驗的結果
上圖給出了實驗用的分類器以及具體參數,實驗名稱,樣本數量,特征數量以及所用特征,測試模式。
上圖給出了生成的決策樹,以及葉子節點數、樹的節點數、模型訓練時間。如果覺得這樣不直觀,可以在Result list里面右鍵點擊剛剛進行的實驗,點擊Visualize Tree,可以看到圖形界面的決策樹,十分直觀。
再往下是預測結果,可以看到每個樣本的實際分類,預測分類,是否錯分,預測概率這些信息。
最下面是驗證結果,整體的accuracy是73.68%,bad類準確率是60.9%,召回率70.0%,good類準確率是82.4%,召回率75.7%。
5) 可視化
打開Explorer的Visualize面板,可以看到最上面是一個二維的圖形矩陣,該矩陣的行和列均為所有的特征(包括類別標簽),第i行第j列表示特征i和特征j在二維平面上的分布情況。圖形上的每個點表示一個樣本,不同的類別使用不同的顏色標識。下面有幾個選項,PlotSize可以調整圖形的大小,PointSize可以調整樣本點的大小,Jitter可以調整點之間的距離,有些時候點過于集中,可以通過調整Jitter將它們分散開。
上圖是duration和class兩個特征的圖形,可以看出,duration并不是一個好特征,在各個特征值區間,good和bad的分布差不多。
單擊某個區域的圖形,會彈出另外一個窗口,這個窗口給出的也是某兩個特征之間分布的圖形,不同的是,在這里,通過點擊樣本點,可以彈出樣本的詳細信息。可視化還可以用來查看誤分的樣本,這是非常實用的一個功能。分類結束后,在Result list里右鍵點擊分類的記錄,選擇Visualize classify errors,會彈出如下窗口。
這個窗口里面,十字表示分類正確的樣本,方塊表示分類錯誤的樣本,X軸為實際類別,Y軸為預測類別,藍色為實際的bad,紅色為實際的good。這樣,藍色方塊就表示實際為bad,但為誤分為good的樣本,紅色方塊表示實際為good,被誤分為bad的樣本。單擊這些點,便可以看到該樣本的各個特征值,分析為什么這個樣本被誤分了。
再介紹一個比較實用的功能,右鍵點擊Result list里的記錄,選擇Visualize threshold curve,然后選好類別(bad 還是good),可以看到如下圖形。
該圖給出的是分類置信度在不同閾值下,分類效果評價標準的對比情況。上圖給出的是假陽性比率和真陽性比率在不同閾值下的對比,其實給出的就是ROC曲線。我們可以通過選擇顏色,方便地觀察不同評價標準的分布情況。如果X軸和Y軸選擇的是準確率和召回率,那我們可以通過這個圖,在這兩個值之間做trade-off,選擇一個合適的閾值。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。