2015-09-17 103 views
1

我的目標是制定有關診斷數據的重要規則。數據集限制尺寸

我預處理我的數據集中沒有稀疏格式;我有116000個實例和28個屬性。 我申請的Apriori算法WEKA所示(使用秧雞資源管理器界面)

Apriori -N 20 -T 1 -C 0.8 -D 0.05 -U 1.0 -M 0.1 -M 0.1 -S -1.0 -c -1

算法似乎需要很長的時間才能完成。 目前超過三個小時即將結束。

是否正常?有一種方法可以加速算法(以其他方式預處理數據,或爲Apriori選擇其他參數)?或者weka不是這個維度的正確工具?

+0

檢查此問題http://stackoverflow.com/questions/15692012/input-arff-file-for-weka-apriori – grubjesic

+0

不幸的是,Weka通常非常緩慢。嘗試A)使用ELKI,SPMF或Christian Borgelt的C實現,而應該快得多,B)FPGrowth算法而不是Apriori。 –

回答

0

您可以對數據集進行二次採樣或分區,並在每個分區或其中一些分區上運行Apriori算法,然後合併所獲得的規則。根據算法(空間和時間計算複雜度),某些算法可能需要很長時間才能完成,並且這與幾個因素(num實例,num attribs,attrib的tipe)成比例。除了Java之外,Weka並不是特別快,它不像其他編譯語言那麼快。

有時,由於所提到的壓縮比,在數據集的更小的分區上運行幾次算法會更快。複雜。

例如,如果你的算法需要時間成比例的實例的數目的平方,CN^2,會更快上的小10倍分區上運行的10倍,10C((N^2 )/(10^2))= 0.1c(N^2)

希望能有所幫助。

+0

謝謝,我會試試這種方式。這種方法可以降低複雜性,但可以更改度量值(支持,確認和提升)的值。這是正確的? – Claudia

+0

沒錯。但是要知道每個分區中有多少個實例,我希望可以將每個分區的集體支持,信心和提升結合起來,對於每個獲得的規則,丟棄不太重要的規則。 – shirowww

0

像許多其他數據挖掘庫一樣,Weka只提供了兩個最着名的算法:Apriori和FPGrowth。 Apriori是一種以效率低下而聞名的老算法。此外,Apriori和FPGrowth的Weka實現都很慢。

如果你想要更好的Java實現和更多算法,你可以檢查SPMF open-source data mining library(我是創始人),它提供了最大的模式挖掘算法集合(超過110個算法)。對於項目集挖掘,它提供Apriori和FPGrowth,但也提供許多其他算法,如Eclat(2000)HMine(2005),LCM(FIMI 2004比賽中最快)以及FIN(2014),PrePost(2014) Prepost +(2015),可以比以前的算法更快。此外,它還提供了這些算法的多種變體,例如用於挖掘罕見項目集,相關項目集,高效用項目集,不確定數據中的項目集,關聯規則,閉合模式,順序模式,順序規則等。

還有一些在網站上進行的性能評估顯示SPMF實現比Weka for Apriori/FPGrowth更快。