我正在从一个在线游戏中挖掘比赛数据,其中每个比赛都是5对5,每个玩家在比赛开始时选择一个独特的角色或英雄。
我的最终目标是使用频繁的项目集生成来确定哪些英雄组合最受欢迎,以及哪些组合可能更频繁地获胜。
我想有一个应用程序,这将是基于网络的,其中用户输入英雄选择的敌对团队,和英雄当前选择您的团队,并建议英雄选择。这些英雄会更频繁地出现在战胜对方球队选出的英雄的比赛中。
我知道更频繁地挑选英雄,最终也会更频繁地出现在赢得游戏的游戏中,这就是为什么我可能会使用一个交易数据库,它只包含游戏模式中的英雄,其中英雄是为每个玩家随机选择的。
我有一个MySQL数据库,它有一个匹配表、一个英雄表和一个包含主键(MatchId,HeroId)和一个关于英雄是否获胜的布尔值的MatchHero表。该表目前约有2600万个条目。问题是,根据记录的数量,获取数据可能需要3到14秒的时间(用户选择越少,获取的记录就越多)。
什么是最好的设计,让我实现这一点,获取数据,并进行计算,是足够快的web应用程序?是否将表存储在内存中?我并不太担心实际的项集生成算法,因为我已经使用apriori获得了不错的性能。是否可以预先计算与频繁项目集生成相关的任何内容?谢谢你的帮忙!
发布于 2013-08-23 00:10:06
使用索引可以更快地访问数据。在数据库中进行尽可能多的数据分析,以避免将其复制到应用程序中。减少查询的数量,改为使用存储过程和准备好的语句。
确保你已经真正理解了Apriori。
如果您使用SQL查询来计算每个项目集的支持度,那么您就错了。对每个项集长度使用1遍数据库;即所有1项集使用1遍,所有2项集使用1遍,所有3项集使用1遍。
Apriori的基本思想并不难,但许多人并不了解所有的细节,然后它变得比必要的慢得多。
https://stackoverflow.com/questions/18371511
复制相似问题