數據挖掘WEKA實驗報告_第1頁
數據挖掘WEKA實驗報告_第2頁
數據挖掘WEKA實驗報告_第3頁
數據挖掘WEKA實驗報告_第4頁
數據挖掘WEKA實驗報告_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版,下載可任意編輯——數據挖掘WEKA實驗報告數據挖掘-WAKA試驗報告

一、AWEKA軟件簡介

在我所從事的證券行業中,存在著海量的信息和數據,但是這些數據日常知識發揮了一小部分的作用,其包含了大量的隱性的信息并不為所用,但是卻可以為一些公司的決策和對客戶的服務提供不小的價值。因此,我們可以通過一些數據采集、數據挖掘來獲得潛在的有價值的信息。

數據挖掘就是通過分析存在于數據庫里的數據來解決問題。在數據挖掘中計算機以電子化的形式存儲數據,并且能自動的查詢數據,通過關聯規矩、分類于回歸、聚類分析等算法對數據進行一系列的處理,尋覓和描述數據里的結構模式,進而挖掘出潛在的有用的信息。數據挖掘就是通過分析存在于數據庫里的數據來解決問題。WEKA的出現讓我們把數據挖掘無需編程即可輕松搞定。

WEKA是由新西蘭懷卡托大學開發的開源工程,全名是懷卡托智能分析環境(WaikatoEnvironmentforKnowledgeAnalysis)。WEKA是由JAVA編寫的,它的源代碼可通過http://.cs.waikato.ac.nz/ml/WEKA得到,并且限制在GBU通用公眾證書的條件下發布,可以運行在所有的操作系統中。是一款免費的,非商業化的機器學習以及數據挖掘軟件WEKA作為一個公開的數據挖掘工作平臺,集合了大量能承受數據挖掘任務的機器學習算法,包括對數據進行預處理,分類,回歸、聚類、關聯規矩以及在新的交互式界面上的可視化。假如想自己實現數據挖掘算法的話,可以看一看WEKA的接口文檔。在WEKA中集成自己的算法甚至借鑒它的方法自己實現可視化工具并不是件很困難的事情。

安裝WEKA也十分簡單,首相要下載安裝JDK環境,JDK在這個頁面可以找到它的下載/javase/downloads/index.jsp。點擊JDK6之后的Download按鈕,轉到下載頁面。選擇Accepct,過一會兒頁面會刷新。我們需要的是這個WindowsOfflineInstallation,Multi-languagejdk-6-windows-i586.exe53.16MB,點擊它下載。也可以右鍵點擊它上面的鏈接,在Flashget等工具中下載。安裝它和一般軟件沒什么區別。不過中間會中斷一下提醒你安裝JRE,一并裝上即可。之后就是安裝WEKA軟件,這個在網上好多地方都有。同樣簡單地按默認方法安裝后即可使用。

點擊啟動運行WEKA軟件后,我門發現WEKA存儲數據的格式是ARFF(Attribute-RelationFileFormat)文件,這是一種ASCII文本文件。我們如圖1通過軟件的Tools菜單進入ArffViewer可以在安裝目錄下查看軟件自帶的幾個ARFF文件。

圖1

圖2

如圖2,開啟文件后選擇data自目錄下的任意一張表,我們都可以看到如圖3所示的二維表格存儲在如下的ARFF文件中。這也就是WEKA自帶的"contact-lenses.arff'文件。這里我們要介紹一下WEKA中的術語。表格里的一個橫行稱作一個實例(Instance),相當于統計學中的一個樣本,或者數據庫中的一條記錄。豎行稱作一個屬性(Attrbute),相當于統計學中的一個變量,或者數據庫中的一個字段。這樣一個表格,或者叫數據集,在WEKA看來,浮現了屬性之間的一種關系(Relation)。圖1中一共有22個實例,5個屬性,關系名稱為"contact-lenses'。

除了ARFF格式,WEKA還支持另外一種常見格式,CSV格式。CSV同樣是一種二進制保存的文本格式,我們可以在WEKA中直接開啟CSV格式的文件,并保存為ARFF格式。這樣就給我提供了把常見的數據格式轉換為ARFF格式的方法,如對于Excel文件,我們可以通過把每張表保存為CSV格式,進而保存為ARFF格式,與此同時,我們可以利用filter對數據進行相應的預處理。而對于Matlab格式的數據,我們可以通過命令csvwrite把數據轉化成CSV格式的文件,進而轉化為ARFF格式文件。對于海量數據,一般保存在數據庫中,WEKA同時支持JDBC訪問數據庫。

圖3

開啟WEKA,首先出現一個命令行窗口。原以為要在這個命令行下寫java語句呢,不過稍等一秒,WEKAGUIChooser的出現了。這是一個很簡單的窗體,提供四個按鈕:SimpleCLI、Explorer、Experimenter、KnowledgeFlow。SimpleCLI應當是一個使用命令行的界面,有點像SAS的編輯器;Explorer是則是視窗模式下的數據挖掘工具;Experimenter和KnowledgeFlow的使用有待進一步摸索

圖4(1)

Explorer

使用WEKA摸索數據的環境。在這個環境中,WEKA提供了數據的預處理,數據格式的轉化(從CSV格式到ARFF格式的轉化),各種數據挖掘算法(包括分類與回歸算法,聚類算法,關聯規矩等),并提供了結果的可視化工具。對于一個數據集,通過簡單的數據的預處理,并對數據挖掘算法進行選擇(在WEKA3.5版本之后,參與了算法的過濾功能,可以過濾掉那些不適合當前數據集類型的算法),接著通過窗口界面對算法的參數進行配置。可視化工具分為對數據集的可視化和對部分結果的可視化,并且我們可以通過屬性選擇工具(SelectAttribute),通過探尋數據集中所有屬性的可能組合,找出預計效果最好的那一組屬性。

Explorer是普通用戶最常用的一個界面。用戶可以從ARFF文件(Weka使用的一種文本文件格式)、網頁或數據庫中讀取數據集。開啟數據文件后,可以選擇算法對數據進行預處理。這時窗體上給出了這個數據集的一些基本特征,如含有多少屬性,各屬性的一些簡單統計量,右下方還給出一些可視化效果圖。這些都是對比直觀的分析,假如想發現隱蔽在數據集背后的關系,還需要選擇Weka

提供的各種分類、聚類或關聯規矩的算法。所有設置完成后,點擊Start按鈕,就可以安心地等待weka帶來最終的結果。哪些結果是真正有用的還要靠經驗來判斷。

(2)Experimenter

運行算法試驗、管理算法方案之間的統計檢驗的環境。Experiment環境可以讓用戶創立,運行,修改和分析算法試驗,這可能比單獨的分析各個算法更加便利。例如,用戶可創立一次試驗,在一系列數據集上運行多個算法(schemes),然后分析結果以判斷是否某個算法比其他算法(在統計意義下)更好。

Explorermenter主要包括簡單模式,繁雜模式和遠程模式。繁雜模式是對簡單模式的基本功能的擴展,而遠程模式允許我們通過分布式的方法進行試驗。

就功能模塊而言,分為設置模塊,運行模塊和分析模塊。在設置模塊中我們可以自定義試驗,參與多個算法和多方的源數據(支持ARFF文件,CSV文件和數據庫),在運行模塊中我們可以運行我們的試驗,而在分析模塊中,我們可以分析各種算法的的確切性,并提供了各種統計方法對結果進行檢驗對比。

值得一提的是,我們可以把試驗的各種參數,包括算法,數據集等,保存以便利下一次一致試驗的進行;也可以把各種算法保存,便利應用在不同的數據集上;假如數據集來源于數據庫的話,試驗在過程中可以中止并繼續(原因可以是被中止或者是擴展了試驗),這樣就不用重新運行那些已試驗過的算法/數據集慶賀,而僅計算還沒有被試驗的那些。

(2)KnowledgeFlow

Explorer的一個不足在于,當用戶開啟一個數據集時,所有數據將全部被讀入到主存當中,隨著任務規模的增大,普通配置的計算機很難滿足要求。KnowledgeFlow提供了一個用于處理大型數據集的遞增算法,專門處理這一問題。這個環境本質上和Explorer所支持的功能是一樣的,但是它有一個可以拖放的界面。它有一個優勢,就是支持增量學習(incrementallearning)。

KnowledgeFlow為WEKA提供了一個"數據流"形式的界面。用戶可以從一個工具欄中選擇組件,把它們放置在面板上并按一定的順序連接起來,這樣組成一個"知識流"(knowledgeflow)來處理和分析數據。目前,所有的WEKA分類器(classifier)、篩選器(filter)、聚類器(clusterer)、載入器(loader)、保

存器(saver),以及一些其他的功能可以在KnowledgeFlow中使用。

KnowledgeFlow可以使用增量模式(incrementally)或者批量模式(inbatches)來處理數據(Explorer只能使用批量模式)。當然對數據進行增量學習要求分類器能夠根據各實例逐個逐個的更新.現在WEKA中有五個分類器能夠增量地處理數據:NaiveBayesUpdateable,IB1,IBk,LWR(局部加權回歸)。還有一個meta分類器RacedIncrementalLogitBoost可以使用任意基于回歸的學習器來增量地學習離散的分類任務。

(4)SimpleCLI提供了一個簡單的命令行界面,能通過鍵入文本命令的方式來實現其他三個用戶界面所提供的所有功能,從而可以在沒有自帶命令行的操作系統中直接執行WEKA命令。

使用命令行有兩個好處:一個是可以把模型保存下來,這樣有新的待預計數據出現時,不用每次重新建模,直接應用保存好的模型即可。另一個是對預計結果給出了置信度,我們可以有選擇的采用預計結果,例如,只考慮那些置信度在85%以上的結果。

二、試驗案例介紹

本文用WEKA軟件作為工具,結合券商的基金某一個時段交易業務數據進行分析。試驗的數據是一個交易周的基金交易業務數據。該表含有date(日期)、fund_code(基金代碼)、fund_name(基金名稱)、company_code(基金公司代碼)、company(基金公司名稱)、business_code(業務代碼)、business_name(業務名稱)、shares(基金份額)、balance(資金金額)、fares(手續費)、fares_type(手續費類型)、internet_shares(網上交易基金份額)、internet_balance(網上交易資金金額)、remark(備注)等字段,通過試驗,希望能找出客戶的基金交易分布狀況。

該數據的數據屬性如下:

date(numeric),交易發生日期;fund_code(numeric),基金代碼;fund_name(character),基金名稱;company_code(numeric),用于報送的基金公司代碼;

company(character),所屬的基金公司;business_code(numeric),交易業務代碼;

business_name(character),交易業務名稱;shares(numeric),基金交易份額;balance(numeric),資金交易金額;fares(numeric),交易手續費;fares_type(enum),手續費類型,取值范圍"全額結算'/"凈額結算';internet_shares(numeric),網上交易基金份額;internet_balance(numeric),網上交易資金金額;remark(character),備注;三、數據分析

我們給出一個CSV文件的例子(Fund-data.csv)。用UltraEdit開啟它可以看到,這種格式也是一種逗號分割數據的文本文件,儲存了一個二維表格。

Excel的XLS文件可以讓多個二維表格放到不同的工作表(Sheet)中,我們只能把每個工作表存成不同的CSV文件。開啟一個XLS文件并切換到需要轉換的工作表,另存為CSV類型,點"確定'、"是'忽視提醒即可完成操作。

需要注意的是,Matllab給出的CSV文件往往沒有屬性名(Excel給出的也有可能沒有)。而WEKA必需從CSV文件的第一行讀取屬性名,否則就會把第一行的各屬性值讀成變量名。因此我們對于Matllab給出的CSV文件需要用UltraEdit開啟,手工添加一行屬性名。注意屬性名的個數要跟數據屬性的個數一致,仍用逗號隔開。

11、.csv--.arff

將CSV轉換為ARFF最迅捷的方法是使用WEKA所帶的命令行工具。

運行WEKA的主程序,出現GUI后可以點擊下方按鈕進入相應的模塊。我們點擊進入"SimpleCLI'模塊提供的命令行功能。由于weka暫不支持中文輸入,所以挑揀了在D盤下進行轉換,在新窗口的最下方(上方是不能寫字的)輸入框寫上

javaweka.core.converters.CSVLoaderD:/Fund-data.csvD:/Fund-data.csv.arff

即可完成轉換,生成文件"D:/Fund-data.csv.arff'。見下圖5:

圖5

進入"Exploer'模塊,從上方的按鈕中開啟CSV文件然后另存為ARFF文件亦可。我們應當注意到,"Exploer'還提供了好多功能,實際上可以說這是WEKA使用最多的模塊。現在我們先來熟悉它的界面,然后利用它對數據進行預處理。界面呈現見下圖6:

圖中顯示的是使用"Exploer'開啟"Fund-data.csv.csv'的狀況。

圖6

22、預處理

尋常對于WEKA來說并不支持中文,所以我們將一些涉及中文的字段刪除。勾選屬性"fund_name'、"company'、"business_name'、"remark',并點擊"Remove'。將新的數據集保存一次。其中"fares_type'只有2個取值:全額結算和凈額結算。這時我們在UltraEdit中直接修改ARFF文件,把@attributefares_type{全額結算,凈額結算}改為@attributefares_type{Full,Net}@attributedate{numeric}改為@attribut

date{2022/8/24,2022/8/25,2022/8/26,2022/8/27,2022/8/28}就可以了。

在"Explorer'中重新開啟"fund-data.arff',選中"date'和"fund_type',看到屬性已經變成"Nominal'了。

WEKA支持的datatype有四種,分別是:

numeric--數值型,nominal-specification--分類(nominal)型,string--字符串型,date[date-format]--日期和時間型

而本表只有nemeric和nominal兩種類型,數值屬性(nemeric)

數值型屬性可以是整數或者實數,但WEKA把它們都當作實數對待。分類屬性(nominal)

分類屬性由nominal-specification列出一系列可能的類別名稱并放在花括號中:{nominal-name1,nominal-name2,

...}。數據集中該屬性的值只能是其中一種類別。假如類別名稱帶有空格,仍需要將之放入引號中。

"shares',"banlance',"fares',"internet_shares'和"internet_banlance'的離散化我們需要借助WEKA中名為"Discretize'的Filter來完成。在區域2中點"Choose',出現一棵"Filter樹',逐級找到"weka.filters.unsupervised.attribute.Discretize',點擊。若無法關閉這個樹,在樹之外的地方點擊"Explorer'面板即可。

現在"Choose'旁邊的文本框應當顯示"Discretize-B10-M-0.1-Rfirst-last'。

點擊這個文本框會彈出新窗口以修改離散化的參數。

我們不計劃對所有的屬性離散化,只是針對對第4,5,6,8,9個,故把attributeIndices右邊改成"4,5,6,8,9'。我們把這兩個屬性都分成10段,于是把"bins'改成"10'。其它不變。點"OK'回到"Explorer',可以看到"shares',"banlance',"fares',"internet_shares'和"internet_banlance'已經被離散化成分類型的屬性。同時我們可以用UltraEdit開啟保存后的ARFF文件,把所有的類似""\"(-inf-1464805.884]\""'替換成"0_1464805.884'。其它標識做類似地手動替換。

經刪減后,保存date、shares、balance、fares、fares_type、internet_shares、internet_balance7個屬性,如圖7

圖7在進行數據搜集和整理的過程中,我們發現假如屬性的類型為數值型的話,在做關聯分析時將不能得到結果,由于關聯分析無法處理數值型數據。因此,我們進行了數據離散處理后使得需要分析的數據變為分類型,這樣就可以關聯分析得以順利進行。因此通過預處理數據可以提高原數據的質量,清除數據噪聲和與挖掘目標無關的數據,為進一步的挖掘工作莫定可靠的基礎。

33、分類與回歸

WEKA中的"Classify'選項卡中包含了分類(Classification)和回歸(Regression),在這兩個任務中,都有一個共同的目標屬性(輸出變量)。可以根據一個樣本(WEKA中稱作實例)的一組特征(輸入變量),對目標進行預計。為了實現這一目的,我們需要有一個訓練數據集,這個數據集中每個實例的輸入和輸出都是已知的。觀測訓練集中的實例,可以建立起預計的模型。有了這個模型,我們就可以新的輸出未知的實例進行預計了。衡量模型的好壞就在于預計的確切程度。在WEKA中,待預計的目標(輸出)被稱作Class屬性,這應當是來自分類任務的"類'。一般的,若Class屬性是分類型時我們的任務才叫分類,Class屬性是數值型時我們的任務叫

回歸。而我們使用決策樹算法C4.5對Fund-data-normal建立起分類模型。因此我們制作分類不做回歸。

我們用"Explorer'開啟訓練集"Fund-data-normal.arff',。切換到"Classify'選項卡,點擊"Choose'按鈕后可以看到好多分類或者回歸的算法分門別類的列在一個樹型框里。樹型框下方有一個"Filter...'按鈕,點擊后勾選"Binaryattributes'"Numericattributes'和"Binaryclass'。點"OK'后回到樹形圖,可以發現一些算法名稱變灰了,說明它們不能用。選擇"trees'下的"J48',這就是我們需要的C4.5算法。

點擊"Choose'右邊的文本框,彈出新窗口為該算法設置各種參數。我們把參數保持默認。

選上"Cross-validation'并在"Folds'框填上"10'。點"Start'按鈕開始讓算法生成決策樹模型。很快,用文本表示的一棵決策樹以及對這個決策樹的誤差分析結果出現在右邊"Classifieroutput'中。見圖8。

圖84、聚類分析聚類的任務是把所有的實例分派到若干的簇,使得同一個簇的實例聚

集在一個簇中心的周邊,它們之間距離的對比近;而不同簇實例之間的距離對比遠。現在我們對前面的"Fund-data-normal'作聚類分析,使用最常見的K均值(K-means)算法。

用"Explorer'開啟方才得到的"Fund-data-normal.arff',并切換到"Cluster'。點"Choose'按鈕選擇"SimpleKMeans',這是WEKA中實現K均值的算法。點擊旁邊的文本框,修改"numClusters'為6,說明我們希望把這734條實例聚成6類,即K=5。下面的"seed'參數是要設置一個隨機種子,依此產生一個隨機數,用來得到K均值算法中第一次給出的K個簇中心的位置。我們不妨暫時讓它就為10。

選中"ClusterMode'的"Usetrainingset',點擊"Start'按鈕,觀測右邊"Clustereroutput'給出的聚類結果。見下圖9:

圖9

55、關聯規矩

我們計劃對前面的"Fund-data-normal'數據作關聯規矩的分析。用"Explorer'開啟"Fund-data-normal.arff'后,切換到"Associate'

選項卡。默認關聯規矩分析是用Apriori算法,我們就用這個算法,但是點"Choose'右邊的文本框修改默認的參數。

從網上獲得的Apriori有關知識:對于一條關聯規矩L-R,我們常用支持度(Support)和置信度(Confidence)來衡量它的重要性。規矩的支持度是用來估計在一個購物籃中同時觀測到L和R的概率P(L,R),而規矩的置信度是估計購物欄中出現了L時也出會現R的條件概率P(R|L)。關聯規矩的目標一般是產生支持度和置信度都較高的規矩。

有幾個類似的度量代替置信度來衡量規矩的關聯程度,它們分別是Lift(提升度?):

P(L,R)/(P(L)P(R))

Lift=1時表示L和R獨立。這個數越大,越說明L和R存在在一個購物籃中不是偶然現象。

Leverage(不知道怎么翻譯):P(L,R)-P(L)P(R)

它和Lift的含義差不多。Leverage=0時L和R獨立,Leverage越大L和R的關系越密切。

Conviction(更不知道譯了):P(L)P(!R)/P(L,!R)(!R表示R沒有發生)

Conviction也是用來衡量L和R的獨立性。從它和lift的關系(對R取反,代入Lift公式后求倒數)可以看出,我們也希望這個值越大越好。

值得注意的是,用Lift和Leverage作標準時,L和R是對稱的,Confidence和Conviction則不然。

現在我們計劃挖掘出支持度在10%到100%之間,并且lift值超過1.5且lift值排在前100位的那些關聯規矩。我們把"lowerBoundMinSupport'和"upperBoundMinSupport'分別設為0.1和1,"metricType'設為lift,"minMetric'設為1.5,"numRules'設為10,其他參數不變。點擊"start'見圖10

圖10我們也可以利用命令行來完成挖掘任務,在"SimlpeCLI'模塊中輸入如下格式的命令:javaweka.associations.Apriori-N100-T1-C1.5-D0.05-U1.0-M0.1-S-1.0-I-td:\fund-data-normal.arff即可得到如圖11的結果。

圖116、屬性分析用"Explorer'開啟方才得到的"Fund-data-normal.arff',并切換到"Selectattributes'。點"AttributeEvaluator'中的"Choose'按鈕選擇"ClassifierSubsetEval',點"SearchMethod'中的"Choose'按鈕選擇"RaceSearch'。

在"AttributeSelection'中選中"Cross-validation'項,參數默認Folds=10和Seed=1。點擊"start'見圖12

圖127、可視化分析用"Explorer'開啟方才得到的"Fund-data-normal.arff',并切換到"Visualize'。見圖13

圖13

四、分析結果11、分類與回歸

我們看到"J48'算法交錯驗證的結果之一為CorrectlyClassifiedInstances

730

99.455

%IncorrectlyClassifiedInstances

4

0.545

%===ConfusionMatrix===

a

b

c

d

e

f

g

h

i

j

--classifiedas

730

0

0

0

0

0

0

0

0

0|

a="(0_1430078.883]"

1

0

0

0

0

0

0

0

0

0|

b="(1430078.883-2860157.766]"

1

0

0

0

0

0

0

0

0

0|

c="(2860157.766-4290236.649]"

0

0

0

0

0

0

0

0

0

0|

d=

"(4290236.649-5720315.532]"

0

0

0

0

0

0

0

0

0

0|

e="(5720315.532-7150394.415]"

0

0

0

0

0

0

0

0

0

0|

f="(7150394.415-8580473.298]"

0

0

0

0

0

0

0

0

0

0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論