好多资料一直没有整理啊,呵呵2002年的时候就一直接触这个方向,可惜有一段时间做的工作与这个相关不大,所以那段时间一直也就只能业余看看了,不过感觉这个东西一直和我还是比较有缘的!

协同过滤关联推荐的话目前大家可以参考亚马逊网上书店的效果,总感觉当当网什么都没有给我推荐过滤过,倒是China-Pub命中过一次(置信度100%啊,只向我推荐过一次 :) 就忽悠我把《什么是数学》给买下来了,还是以比当当网贵20%的价格啊),按理来说当当网在数据的支持上,是要比China-pub丰富不少的,我经常去当当,而且在当当也购买了金额超过1000的书籍了,居然人家还没抓住我想要什么(还有很多我在当当的浏览搜索记录),相反China-pub我就去过那么一两次买过一次书最后因为所获得问题交易还没有成功 :),看来当当要加油啊!其实在Item-Based、User-Based上当当都是在国内拥有最丰富的数据了,结果也非常好评估啊!

前天刚好做了一个用户兴趣度、吸引力的分析,由于只是一个演示模型,让我看看速度和结果,所以也就是用的Java+稀疏矩阵+行列相似性(Consin相似度来处理的),感觉还不是特别麻烦啊,处理速度和结果感觉也都还可以。(当然前期做了大量的数据调整工作,恩,确实数据质量决定了最后的结果,所以数据预处理、调整、规整上多花点时间是相当值得的)。真要好好做的话很多地方都要很细致的考虑了,为了效率最后应该会用C来实现,数据量太大的时候(大到你无法想象,光是维数就超过你的内存的时候就要考虑分块处理了,可以参考我以前的PageRank的计算时候所用到的一些解决办法);然后感觉这里相似度的计算又回到了我熟悉的文本相似的问题上来了,看来算法、思想都是相同只是用在不同的地方,然后需要进行一下预处理变换,规整到余弦定理上来啊:)

第一个最重要的关联算法Apriori algorithm(要特别注意里面的枝剪的处理,要不复杂度就膨胀得很厉害的。尽管扫描次数太多效率不高,接下来自己可以不断解决的)(抄的一段话:Agrawal等引入了修剪技术(Pruning)来减小候选集Ck的大小,由此可以显著地改进生成所有频集算法的性能。算法中引入的修剪策略基于这样一个性质:一个项集是频集当且仅当它的所有子集都是频集。那么,如果Ck中某个候选项集有一个(k-1)-子集不属于Lk-1,则这个项集可以被修剪掉不再被考虑,这个修剪过程可以降低计算所有的候选集的支持度的代价。文[6]中,还引入杂凑树(Hash Tree)方法来有效地计算每个项集的支持度。

3.1.2频集算法的几种优化方法
虽然Apriori算法自身已经进行了一定的优化,但是在实际的应用中,还是存在不令人满意的地方,于是人们相继提出了一些优化的方法。

1.         基于划分的方法。Savasere等[14]设计了一个基于划分(partition)的算法,这个算法先把数据库从逻辑上分成几个互不相交的块,每次单独考虑一个分块并对它生成所有的频集,然后把产生的频集合并,用来生成所有可能的频集,最后计算这些项集的支持度。这里分块的大小选择要使得每个分块可以被放入主存,每个阶段只需被扫描一次。而算法的正确性是由每一个可能的频集至少在某一个分块中是频集保证的。上面所讨论的算法是可以高度并行的,可以把每一分块分别分配给某一个处理器生成频集。产生频集的每一个循环结束后,处理器之间进行通信来产生全局的候选k-项集。通常这里的通信过程是算法执行时间的主要瓶颈;而另一方面,每个独立的处理器生成频集的时间也是一个瓶颈。其他的方法还有在多处理器之间共享一个杂凑树来产生频集。更多的关于生成频集的并行化方法可以在[2,11,17]中找到。

2.         基于hash的方法。一个高效地产生频集的基于杂凑(hash)的算法由Park等[10]提出来。通过实验我们可以发现寻找频集主要的计算是在生成频繁2-项集Lk上,Park等就是利用了这个性质引入杂凑技术来改进产生频繁2-项集的方法。

3.         基于采样的方法。基于前一遍扫描得到的信息,对此仔细地作组合分析,可以得到一个改进的算法,Mannila等[8]先考虑了这一点,他们认为采样是发现规则的一个有效途径。随后又由Toivonen[16]进一步发展了这个思想,先使用从数据库中抽取出来的采样得到一些在整个数据库中可能成立的规则,然后对数据库的剩余部分验证这个结果。Toivonen的算法相当简单并显著地减少了I/O代价,但是一个很大的缺点就是产生的结果不精确,即存在所谓的数据扭曲(data skew)。分布在同一页面上的数据时常是高度相关的,可能不能表示整个数据库中模式的分布,由此而导致的是采样5%的交易数据所花费的代价可能同扫描一遍数据库相近。Lin和Dunham在[7]中讨论了反扭曲(Anti-skew)算法来挖掘关联规则,在那里他们引入的技术使得扫描数据库的次数少于2次,算法使用了一个采样处理来收集有关数据的次数来减少扫描遍数。

Brin等[4]提出的算法使用比传统算法少的扫描遍数来发现频集,同时比基于采样的方法使用更少的候选集,这些改进了算法在低层的效率。具体的考虑是,在计算k-项集时,一旦我们认为某个(k+1)-项集可能是频集时,就并行地计算这个(k+1)-项集的支持度,算法需要的总的扫描次数通常少于最大的频集的项数。这里他们也使用了杂凑技术,并提出产生“相关规则”(Correlation Rules)的一个新方法,这是基于他们的[3]工作基础上的。

4.         减少交易的个数。减少用于未来扫描的事务集的大小。一个基本的原理就是当一个事务不包含长度为k的大项集,则必然不包含长度为k+1的大项集。从而我们就可以将这些事务移去,这样在下一遍的扫描中就可以要进行扫描的事务集的个数。这个就是AprioriTid的基本思想

)

当向量描述不是Boolean(二元的,一般用0,1来表示)的时候你可能需要Slope One来简单地解决这个问题

Weka Java实现的一个比较完整的Data Mining包,做原型还是Java的多啊,比如Lunece,呵呵,当年看的一点Java还是能派上用处的

复旦大学的数据挖掘讨论组还是蛮不错的,呵呵主要带头人就是写《数据挖掘》那本是的朱老师:),这个网站我关注有好几年了,入门不错的!

Taste Java实现的一个实现了主要的推荐算法的包(又是Java),主要介绍非常详细,有很好的Demo,值得一看,然后你可以在这个基础上不断改进揉入你的特定需要,在这种情况下尤其感觉数据与处理的重要性了

聚类算法:K-means(可以做一些改进),当然还有效果更好不过复杂度更高的K-medoids算法(真正工程应用不现实,我看了看复杂度还是可以简化一下的,不过对边界孤立点就又要敏感一点了,两难全啊),当然真正大规模数据的时候可以随机抽样来确定K个中心,这样就可以不怎么考虑复杂度了!

还有非常典型的贝叶斯定理(我那大学概率啊)在分类、统计上的应用(例子:用贝叶斯定理来进行分类)

KNN:In pattern recognition, the <I>k</I>-nearest neighbor algorithm (<I>k</I>-NN) is a method for classifying objects based on closest training examples in the feature space. <I>k</I>-NN is a type of instance-based learning, or lazy learning where the function is only approximated locally and all computation is deferred until classification. It can also be used for regression.(从Wili上扒拉过来的一段话),简单的说KNN就是从已知的分类中找出和要分类的目标最近的几个点,然后看这几个点在哪个类别中占的比重多就认为目标也在这个类别中,简单吧

其实这个方向再配合上对数据的敏感度+海量数据处理能力(做搜索的锻炼得比较多吧)还是很有趣的,下次再补充。

说句题外话Wiki真是太伟大了(里面的东西解释的相当详细,是Google一个最好的补充啊),真郁闷以前那一段没有Wiki的日子,还好我D终于又对Wiki网开一面了 :)

转自 http://hi.baidu.com/lewutian/blog/item/85a18ad5a80362cf51da4baa.html

转载于:https://www.cnblogs.com/paulbai/archive/2013/06/14/3136884.html

关于数据挖掘(协同过滤、关联推荐、聚类分类)一些资料(转)相关推荐

  1. 基于协同过滤的推荐引擎

    探索推荐引擎内部的秘密"系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用.同时在理论讲解的基础上,还会结合 Apache Maho ...

  2. 基于MLlib的机器学习--协同过滤与推荐

    <Spark快速大数据分析> 11.5.4 协同过滤与推荐 协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术. 协同过滤引入的地方就在于它只需要输入一系列用户/产品的 ...

  3. jsp mysql 推荐算法_基于jsp+mysql+Spring+mybatis的SSM协同过滤音乐推荐管理系统(个性化推荐)...

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: 最好是Tomcat 7 ...

  4. 基于CF(协同过滤)推荐算法

    基于物品的CF(协同过滤)推荐算法 1.1算法简介 CF(协同过滤)简单来形容就是利用兴趣相投的原理进行推荐,协同过滤主要分两类,一类是基于物品的协同过滤算法,另一种是基于用户的协同过滤算法,这里主要 ...

  5. 推荐算法-基于协同过滤的推荐算法

    推荐算法-基于协同过滤的推荐算法 在如今信息量呈爆炸式增长的时代,谷歌百度等搜索引擎为人们查找信息提供了便利,帮助用户快速查找有价值的信息.然而此类查询方式是大众化的,无法根据个人兴趣为用户展示相关的 ...

  6. python协同过滤电影推荐的论文_协同过滤?教你用Python实现协同过滤

    提到ALS相信大家应该都不会觉得陌生,它是协同过滤的一种,并被集成到Spark的Mllib库中.本文就ALS的基本原理进行讲解,并手把手.肩并肩地带您实现这一算法. 协同过滤?教你用Python实现协 ...

  7. 【玩转数据系列四】听说啤酒和尿布很配?本期教你用协同过滤做推荐

    (本文数据为虚构,仅供实验) 产品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2 一.背景 数据挖 ...

  8. 蔬菜购物网站设计【协同过滤的推荐算法】

    研究目的: 本次研究的目的是开发一种基于用户行为和物品关联的推荐算法,用于提供蔬菜购物网站的个性化推荐服务.通过分析用户的购买历史.评价.收藏等信息,找到相似用户或相似物品,从而向用户推荐符合其兴趣和 ...

  9. 大数据毕业设计 协同过滤商品推荐系统设计与实现

    文章目录 1 简介 2 常见推荐算法 2.1 协同过滤 2.2 分解矩阵 2.3 聚类 2.4 深度学习 3 协同过滤原理 4 系统设计 4.1 示例代码(py) 5 系统展示 5.1 系统界面 5. ...

  10. hadoop2.5.2学习14--MR之协同过滤天猫推荐

    本文根据天猫推荐学习系统过滤算法   电子商务网站是个性化推荐系统重要地应用的领域之一,亚马逊就是个性化推荐系统的积极应用者和推广者,亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销 ...

最新文章

  1. 销量过亿的《剑指0ffer》题目和答案电子书 (附下载)
  2. Spring Boot:(二)启动原理解析
  3. 在Vmware下linux与ARM开发板的NFS系统搭建【ZT】
  4. Emscripten 单词_分享15个英语单词记忆方法,简单实用,赶紧收藏吧!
  5. 021.4 IO流——字节、字符桥梁(编码解码)
  6. Linux 命令之——文件行数查询命令温习
  7. U盘安装系统 从此告别光盘
  8. python缠论代码_缠论dll(czsc - 缠中说禅技术分析工具)
  9. 基尼系数,excel计算方法
  10. SOAP Action介绍
  11. js打开手机摄像头实现扫描二维码功能
  12. fx3u4ad一adp说明书_FX3U-4AD-ADP使用手册三菱FX3U-4AD-ADP用户手册 - 三菱
  13. el-cascader
  14. 【小白装系统】——硬盘分区表格式GUID和MBR知识普及
  15. 31岁零基础转型开发,目前35岁,说说我转行的辛酸史
  16. Java程序为身份证照片添加马赛克
  17. Java实验-模拟保皇游戏开始的发牌过程
  18. 看完了这篇实时数仓建设,才发现以前的都白看了(内有美团案例)
  19. 人活着就是为了在某一天死去--《遗愿清单》
  20. 优化器的RBO和CBO

热门文章

  1. Binder学习笔记(九)—— 服务端如何响应Test()请求 ?
  2. 条款十一: 为需要动态分配内存的类声明一个拷贝构造函数和一个拷贝赋值运算符...
  3. Chrome扩展开发指南(
  4. DG - 物理Standby角色转换
  5. 演练:使用 Windows 窗体收集数据
  6. android UI进阶之android中隐藏的layout 抽屉的运用
  7. 学用 ASP.Net 之 System.Collections.Specialized.StringDictionary 类
  8. 足不出户逛里约 神马搜索推出奥运会蓝光页面
  9. MAPREDUCE原理篇(1)
  10. [Android自定义控件] Android自定义控件