数据挖掘笔记(写给程序员的数据挖掘实践指南)

原书:http://www.guidetodatamining.com/

一、协同过滤(CF)——寻找相似用户

  • 曼哈顿距离(数据稠密:几乎所有属性都没有0值,且属性值大小十分重要)

                æ¼åé¡¿è·ç¦»nç»´

  • 欧式距离(明氏距离)(数据稠密:几乎所有属性都没有0值,且属性值大小十分重要)

               æ¬§æ°è·ç¦»nç»´

  • 皮尔逊相关系数(取值【-1,1】,1表示完全相关,-1表示完全不相关)(数据接受分数贬值:不同用户使用不同的评级范围的影响)

              è¿éåå¾çæè¿°

  • 余弦相似度(在文本挖掘中使用普遍)(取值【-1,1】,1表示完全相似,-1表示完全不相似)(适合稀疏性数据计算)

            ä½å¼¦è·ç¦»

  • K近邻


二、协同过滤(CF)——隐式评级及基于物品的过滤

隐式评级:不要求用户给出评级得分,观察用户的行为来获得结果(比如用户的点击行为,购买结果)

                  基于邻居的推荐系统最主要缺点:延迟性太差。

基于用户(内存)的过滤:(给定某个用户,寻找与其最相似的用户,并利用用户对物品的评级结果进行推荐)

  • 扩展性问题:随着用户增长,计算量增长。
  • 稀疏性问题:大部分推荐系统中,用户和商品都很多,但是用户评级的平均商品数目却很少。

基于物品(模型)的过滤:(先找到最相似的物品,并结合用户对物品的评级结果生成推荐)

tips:分数贬值(分数超过实际应得的分数)


  • 调整后的余弦相似度

(归一化的评级结果,解决不同用户的评级区间不同问题)

               

  • 根据余弦相似度得到相似度矩阵

              

用户u将对物品i的评分的预测值(评级结果)

Where,N是用户u的所有评级物品中的每个和i得分相似的物品。这里的“相似”指的是在矩阵中存在N和i的一个相似度得分值。

Si,N是i和N之间的相似度(来自相似度矩阵)。Ru,N是u给N的评级结果。

  • 对评级结果进行归一化:

           

  • 将归一化结果还原到原始minR分到maxR分范围:

           

          

 


Slope One

优点:简单

加权Slope One

  • 计算所有物品对的偏差

       物品i到物品j的平均偏差为:

          

card(Si,j(X)是所有同时对i和j进行评分的用户集合。(同时评价i,j物品的用户总数)

  • 利用偏差进行预测

         

使用加权Slope One,MovieLens数据集实现一个简单的推荐系统

数据链接:www.grouplens.org


三、内容过滤及分类——基于物属性的过滤

一些小概念:

  • 推荐系统中的“冷启动”:一个全新的乐队刚发布的专辑,由于乐队和专辑从没被评过分(或者由于全新从没被人购买过),因此它永远不会被推荐。
  • 音乐网站pandora算法相似的推荐系统:每首歌都表示一个400维的数值向量。
  • 之前的是社会过滤(协同过滤),这里是内容过滤。
  • 归一化消除数据的偏斜性(特征尺度差异大),(归一化会涉及计算的开销)

         在如下情况应该进行归一化:

                   1:所用数据挖掘方法基于特征的值来计算两个对象的距离;

                   2:不同特征的尺度不同。

  • 标准分数:                                                              标准差公式:

                                                

        标准分数的缺点:会受到离群点的剧烈影响。

         因此,改进的标准分数:                                      绝对标准差:

                                                

分类器实现:https://github.com/Vivian-K/datamining/tree/master

数据链接:http://archive.ics.uci.edu/ml/index.php


 

四、分类的进一步探讨——算法评估及KNN

  • 10折交叉验证:将数据集随机分成10份,使用其中9份进行训练而将另外1份用作测试。该过程可重复10次,每次使用的测试数据都不同。
  • n折交叉验证法:缺点:计算开销大;不能像分层抽样一样 偏差大。
  • 混淆矩阵:行:实例实际属于的类别;列:分类器预测的类别。

10折交叉验证:数据还是上面的mpg

分成十份:代码 https://github.com/Vivian-K/datamining/tree/master (devide.py)

交叉验证测试代码:https://github.com/Vivian-K/datamining/tree/master (crossValidation.py)

  • Kappa统计量:比较的是分类器与仅仅基于随机的分类器的性能。

            

  • Rote分类器,记住整个训练数据,仅当测试实例的属性和某个训练样例完全匹配时才进行分类,缺点是某些测试记录不能被分类
  • KNN,最近邻方法会有离群点的问题,因此引出K近邻。

皮马印第安人糖尿病数据集https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes

代码:https://github.com/Vivian-K/datamining/tree/master (pimaKNN.py)


五、概率及朴素贝叶斯——朴素贝叶斯

  • 近邻方法:惰性学习器(lazy learner)
  • 贝叶斯方法:勤快学习器(eager learner)
  •  
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值