• 基于物品的协同过滤ItemCF的mapreduce实现


    文章的UML图比较好看.....

    原文链接:www.cnblogs.com/anny-1980/articles/3519555.html

    基于物品的协同过滤ItemCF

    数据集字段:

    1.  User_id: 用户ID

    2.  Item_id: 物品ID

    3.  preference:用户对该物品的评分

    算法的思想:

    1.  建立物品的同现矩阵A,即统计两两物品同时出现的次数

    数据格式:Item_id1:Item_id2        次数

    2.  建立用户对物品的评分矩阵B,即每一个用户对某一物品的评分

    数据格式:Item_id          user_id:preference

    3.  推荐结果=物品的同现矩阵A * 用户对物品的评分矩阵B

    数据格式:user_id           item_id,推荐分值

    4. 过滤用户已评分的物品项

    5.对推荐结果按推荐分值从高到低排序

    原始数据:

    1,101,5.0

    1,102,3.0

    1,103,2.5

    2,101,2.0

    2,102,2.5

    2,103,5.0

    2,104,2.0

    3,101,2.0

    3,104,4.0

    3,105,4.5

    3,107,5.0

    4,101,5.0

    4,103,3.0

    4,104,4.5

    4,106,4.0

    5,101,4.0

    5,102,3.0

    5,103,2.0

    5,104,4.0

    5,105,3.5

    5,106,4.0

    6,102,4.0

    6,103,2.0

    6,105,3.5

    6,107,4.0

    Hadoop MapReduce程序分为四步:

    第一步: 读取原始数据,按用户ID分组,输出文件数据格式为

    1         103:2.5,101:5.0,102:3.0

    2         101:2.0,102:2.5,103:5.0,104:2.0

    3         107:5.0,101:2.0,104:4.0,105:4.5

    4         103:3.0,106:4.0,104:4.5,101:5.0

    5         101:4.0,102:3.0,103:2.0,104:4.0,105:3.5,106:4.0

    6         102:4.0,103:2.0,105:3.5,107:4.0

    第二步:统计两两物品同时出现的次数,输出文件数据格式为

    101:101 5

    101:102 3

    101:103 4

    101:104 4

    101:105 2

    101:106 2

    101:107 1

    102:101 3

    102:102 4

    102:103 4

    102:104 2

    102:105 2

    102:106 1

    102:107 1

    103:101 4

    103:102 4

    103:103 5

    103:104 3

    103:105 2

    103:106 2

    103:107 1

    104:101 4

    104:102 2

    104:103 3

    104:104 4

    104:105 2

    104:106 2

    104:107 1

    105:101 2

    105:102 2

    105:103 2

    105:104 2

    105:105 3

    105:106 1

    105:107 2

    106:101 2

    106:102 1

    106:103 2

    106:104 2

    106:105 1

    106:106 2

    107:101 1

    107:102 1

    107:103 1

    107:104 1

    107:105 2

    107:107 2

    第三步:生成用户评分矩阵和物品同现矩阵

    第一个mapper结果为用户评分矩阵,结果如下:

    101       2:2.0

    101       5:4.0

    101       4:5.0

    101       3:2.0

    101       1:5.0

    102       2:2.5

    102       1:3.0

    102       6:4.0

    102       5:3.0

    103       6:2.0

    103       5:2.0

    103       1:2.5

    103       4:3.0

    103       2:5.0

    104       5:4.0

    104       2:2.0

    104       3:4.0

    104       4:4.5

    105       5:3.5

    105       3:4.5

    105       6:3.5

    106       4:4.0

    106       5:4.0

    107       3:5.0

    107       6:4.0

    第二个mapper生成物品同现矩阵,结果如下:

    101:101 5

    101:102 3

    101:103 4

    101:104 4

    101:105 2

    101:106 2

    101:107 1

    102:101 3

    102:102 4

    102:103 4

    102:104 2

    102:105 2

    102:106 1

    102:107 1

    103:101 4

    103:102 4

    103:103 5

    103:104 3

    103:105 2

    103:106 2

    103:107 1

    104:101 4

    104:102 2

    104:103 3

    104:104 4

    104:105 2

    104:106 2

    104:107 1

    105:101 2

    105:102 2

    105:103 2

    105:104 2

    105:105 3

    105:106 1

    105:107 2

    106:101 2

    106:102 1

    106:103 2

    106:104 2

    106:105 1

    106:106 2

    107:101 1

    107:102 1

    107:103 1

    107:104 1

    107:105 2

    107:107 2

    第四步:做矩阵乘法,推荐结果=物品的同现矩阵A * 用户对物品的评分矩阵B

    结果如下:

    1         107,10.5

    1         106,18.0

    1         105,21.0

    1         104,33.5

    1         103,44.5

    1         102,37.0

    1         101,44.0

    2         107,11.5

    2         106,20.5

    2         105,23.0

    2         104,36.0

    2         103,49.0

    2         102,40.0

    2         101,45.5

    3         107,25.0

    3         106,16.5

    3         105,35.5

    3         104,38.0

    3         103,34.0

    3         102,28.0

    3         101,40.0

    4         107,12.5

    4         106,33.0

    4         105,29.0

    4         104,55.0

    4         103,56.5

    4         102,40.0

    4         101,63.0

    5         107,20.0

    5         106,34.5

    5       105,40.5

    5         104,59.0

    5         103,65.0

    5         102,51.0

    5         101,68.0

    6         107,21.0

    6         106,11.5

    6         105,30.5

    6         104,25.0

    6         103,37.0

    6         102,35.0

    6         101,31.0

     


  • 相关阅读:
    Python学习笔记 for windows 二
    Socket.io:有点意思
    MEAN Stack:创建RESTful web service
    在EC2上安装MEAN环境
    NodeJS:树的序列化
    NodeJS:树的反序列化
    NodeJS学习:爬虫小探补完计划
    NodeJS学习:爬虫小探
    依赖包bcrypt安装Issues
    Mongoose:Schema之路
  • 原文地址:https://www.cnblogs.com/wishchin/p/9200205.html
Copyright © 2020-2023  润新知