2013-08-22 58 views
0

我從在線遊戲數據挖掘匹配數據,其中每場比賽是5對5的每個球員在比賽開始採摘一種獨特的字符或英雄。數據庫和應用程序設計的頻繁項集生成

我的最終目標是使用頻繁項集發電,以確定哪些英雄組合是最流行的,並有可能該組合贏得更加頻繁。

我想有一個應用程序,這將是基於網絡的,在用戶輸入受對手的選擇英雄,英雄們目前你的團隊的選擇和建議英雄選擇。這些英雄可能會更頻繁地出現在對陣對手選中的英雄的比賽中。

我知道那些被更頻繁挑選的英雄,最終也會在贏得比賽中更頻繁地出現,這就是爲什麼我可以使用一個只包含遊戲模式中的英雄的交易數據庫,其中英雄隨機選擇播放器。

我其中有一個對照表,一個英雄表,包含(MatchId,HeroId)的主鍵和那個英雄無論是否贏得了布爾一個MatchHero表中的MySQL數據庫。這張表目前有大約2千6百萬條目。問題是獲取數據可以根據記錄(較少的用戶選擇導致更多的記錄中取出)的數量爲3至14秒到取。

什麼是最好的設計,讓我實現這個取數據,並做計算是足夠快的Web應用程序?將表存儲在內存中?我並不太擔心實際的itemset生成算法,因爲我已經有了apriori的不俗表現。是否可以預先計算與頻繁項目集相關的任何事情?謝謝你的幫助!

回答

0

使用索引進行更快的數據訪問。儘可能多地在數據庫中進行數據分析,以避免將其複製到應用程序中。減少查詢次數,而是使用存儲過程和準備好的語句。

確保你真的已經理解Apriori。

如果您正在使用SQL查詢計算每個項目集的支持,那麼您做錯了。對每個項目集使用1遍數據庫長度;即對於所有1項目組1次通過,對於所有2項目組1次通過,對於所有3項目組1次通過。

Apriori的基本思想並不難,但許多人沒有得到所有的細節,然後它變得比必要的慢得多。