最近,工作上的需求,我们开始搞数据挖掘。毕竟不是科班出生,所以研究起来还是有些吃力的,不过,在经过一系列的研究后,还是掌握了几个数据挖掘的算法,基本可以满足公司的业务需要。
首先,还是先以业务为主吧。
公司业务:针对每个游戏用户,推荐给他/她与之玩的比较接近的游戏。类似于京东或者当当网站的“买过这本书的用户还买了其他书……”。我们需要做的是“玩过该游戏的用户还玩了其他游戏……”。大同小异吧。
其次,数据挖掘方面的东西还是比较多的,但是经过研究后,我大致给它分了几类:
1、分类:大概就是讲如何将一个新业务划分为已知的一类中,涉及到的算法有决策树、贝叶斯、支持向量机等。比如已知苹果、梨、橙子三类水果,现在来了个香水梨,该分到哪类水果中。
2、聚类:解决将原始数据怎样分堆的例子,比如有几个苹果、梨、香蕉等水果混放在一个筐中,如何将每种水果聚在一起。
3、关联规则:经典的处理超市订单的问题,将啤酒和尿裤放在一个货架上。涉及到的算法有:Apriori算法、FP树算法等等。
了解了业务以及对数据挖掘的分类大概有了概念后,我们接下来就要进行业务和数据挖掘相结合了,也就是我们的业务需要用哪类数据挖掘来实现。
相信现在您可以说肯定是关联规则了,恭喜您,答对啦!大笑
接下来就是选择对应的算法了。
万事开头以简单为主!这是我做事的一贵主张。最近看吴军博士的《数学之类》这本书时,这个主张还是能成大器的。偷笑
最先选择的就是Apriori算法,没什么原因,也没什么技巧。我会从我的初学者的角度来讲这个算法。
1、算法思想:根据一个项集(其实就是所有游戏的一个组合集合),从一大堆事务级的数据(就是用户玩过的游戏)中,通过计算支持度和置信度,最后得到一个关联的规则(A游戏和B游戏有很大的关联性)。然后就可以进行推荐了(比如,张三玩了A游戏,就可以推荐张三玩B游戏了)。
2、需要解决的问题:
(1)项集的生成。如果游戏特别多,比如有100000个,那么得到任意两款游戏的组合的时间频度为T(100000*9999),三款游戏、四款游戏……n款游戏呢?
(2)如果事务数据非常大,海量,每次进行关联度计算及置信度计算都会消耗一定的时间,且查询一次数据库操作,性能啊?
3、算法的输入、输出。
(1)算法的输入数据已经明确了需要两个:一个是由所有游戏组成的单个游戏的项集,如{游戏A、游戏B、游戏C……};另一个是事务的数据集{“张三:游戏A、游戏B”,“李四:游戏A、游戏C”,“王五:游戏A、游戏B、游戏C”,“赵六:游戏B、游戏C”,“马七:游戏A、游戏C”}。
(2)算法的输出:将输出结果按照支持度和置信度由大到小进行排序,比如游戏A和游戏C的关联度最高,那么排在第一位置,然后就可以进行游戏A和游戏C之间的推荐。
首先,还是先以业务为主吧。
公司业务:针对每个游戏用户,推荐给他/她与之玩的比较接近的游戏。类似于京东或者当当网站的“买过这本书的用户还买了其他书……”。我们需要做的是“玩过该游戏的用户还玩了其他游戏……”。大同小异吧。
其次,数据挖掘方面的东西还是比较多的,但是经过研究后,我大致给它分了几类:
1、分类:大概就是讲如何将一个新业务划分为已知的一类中,涉及到的算法有决策树、贝叶斯、支持向量机等。比如已知苹果、梨、橙子三类水果,现在来了个香水梨,该分到哪类水果中。
2、聚类:解决将原始数据怎样分堆的例子,比如有几个苹果、梨、香蕉等水果混放在一个筐中,如何将每种水果聚在一起。
3、关联规则:经典的处理超市订单的问题,将啤酒和尿裤放在一个货架上。涉及到的算法有:Apriori算法、FP树算法等等。
了解了业务以及对数据挖掘的分类大概有了概念后,我们接下来就要进行业务和数据挖掘相结合了,也就是我们的业务需要用哪类数据挖掘来实现。
相信现在您可以说肯定是关联规则了,恭喜您,答对啦!大笑
接下来就是选择对应的算法了。
万事开头以简单为主!这是我做事的一贵主张。最近看吴军博士的《数学之类》这本书时,这个主张还是能成大器的。偷笑
最先选择的就是Apriori算法,没什么原因,也没什么技巧。我会从我的初学者的角度来讲这个算法。
1、算法思想:根据一个项集(其实就是所有游戏的一个组合集合),从一大堆事务级的数据(就是用户玩过的游戏)中,通过计算支持度和置信度,最后得到一个关联的规则(A游戏和B游戏有很大的关联性)。然后就可以进行推荐了(比如,张三玩了A游戏,就可以推荐张三玩B游戏了)。
2、需要解决的问题:
(1)项集的生成。如果游戏特别多,比如有100000个,那么得到任意两款游戏的组合的时间频度为T(100000*9999),三款游戏、四款游戏……n款游戏呢?
(2)如果事务数据非常大,海量,每次进行关联度计算及置信度计算都会消耗一定的时间,且查询一次数据库操作,性能啊?
3、算法的输入、输出。
(1)算法的输入数据已经明确了需要两个:一个是由所有游戏组成的单个游戏的项集,如{游戏A、游戏B、游戏C……};另一个是事务的数据集{“张三:游戏A、游戏B”,“李四:游戏A、游戏C”,“王五:游戏A、游戏B、游戏C”,“赵六:游戏B、游戏C”,“马七:游戏A、游戏C”}。
(2)算法的输出:将输出结果按照支持度和置信度由大到小进行排序,比如游戏A和游戏C的关联度最高,那么排在第一位置,然后就可以进行游戏A和游戏C之间的推荐。