• 数据算法 --hadoop/spark数据处理技巧 --(9.基于内容的电影推荐 10. 使用马尔科夫模型的智能邮件营销)


    九。基于内容的电影推荐

      在基于内容的推荐系统中,我们得到的关于内容的信息越多,算法就会越复杂(设计的变量更多),不过推荐也会更准确,更合理。

      本次基于评分,提供一个3阶段的MR解决方案来实现电影推荐。

        1.找出各个电影的评分人总数

        2.对于每个电影对A和B,找出所有同时对A和B评分的人。

        3.找出每两个相关电影之间的关联。在这个阶段,我使用3个不同的关联度算法(pearson,cosine,jaccard)一般要根据具体的数据需求来选择关联度算法。

      

      数据的输入格式:

      

      第一阶段转化完之后:

      

      经过MR阶段2的map阶段后:

      

      

      经过排序和洗牌之后的输出:

      

      在经过MR阶段2的reduce()后:

      

      

      第三阶段MR的map阶段的输出:

      

      

      第三阶段MR的reduce的输入:

      

      reduce代码:

      

      

      spark的基本步骤:

        1.导入所需要的类和接口;

        2.处理输入参数;

        3.创建一个spark上下文对象;

        4.读取hdfs文件并创建第一个RDD;

        5.找出谁曾对这个电影评分;

        6.按movie对moviesRDD分组;

        7.找出每个电影的评分人数,然后创建(K,V)为usersRDD = <K=user,V=<movie,rating,numberofRaters>>

        8.将usersRDD与自身连接,找出所有(movie1,movie2)对    joinedRDD = userRDD.join(userRDD)     joinedRDD= (user,T2((m1,r1,n1),(m2,r2,n2)))

        9.删除重复的(movie1,movie2)对;

        10生成所有的(movie1,movie2)组合。

        11.按键(movie1,movie2)对moviePairs分组

        12计算每个(movie1,movie2)对的关联度    

       

    十。使用马尔科夫模型的智能营销

      先说说马尔科夫:

                             

       使用马尔科夫的智能营销的大致流程:

      

      

      其中使用MR生成有序数据:可以采用之前说的二次排序的方式。

      

      状态序列的生成:

          

       采用的策略:

         

      

  • 相关阅读:
    POJ 2253 Frogger
    POJ 2387
    codevs3981动态最大子段和(线段树)
    P3398仓鼠(LCA)
    codevs1036商务旅行(LCA)
    codevs3728联合权值(LCA)
    P3390矩阵快速幂
    codevs1574广义斐波那契数列
    POJ3070Fibonacci
    P3379最近公共祖先(LCA)
  • 原文地址:https://www.cnblogs.com/dhName/p/11382633.html
Copyright © 2020-2023  润新知