hadoop_案例_2

三个案例都是关于算法的

1    Pagerank算法,网页排名  PR值,是谷歌的算法(hadoop就是从gugool出来的)
    是用来做搜索结果排序的
    PR值是通过pagerank算出来的
    百度 站长工具 京东是7(后面省略小数) 只有百度和google是10
    google把A页面到B页面的连接叫做 A页面对B页面的投票,投票就是超链接
    如果权重高的人对你投票,那么会是普通投票的几千万倍
    
    阻尼系数
    大数据的重点课,是机器学习,机器学习中有个概念是黑匣子(例如不好的基因片段,但你不能去掉它,去掉后可能会引起其他不良反应)
    机器学习中有个重要的算法:神经网络,里面有大量的系数,这些系数几乎全是黑匣子
    什么是黑匣子例如:你知道哪些神经元传递的信号是什么意思吗?显然不知道
    对比试验 :500个临床,另500个临床试验得到一个结果。但还是不知道为什么
    系数也是这么的来的,只能说少了它会怎样怎样。是经过序列集通过多次建模得到的结果
    建模通过R语言,PHyhon语言来建模。R语言计算碎片数据(序列集),进行反复计算,建模,就会得到一个系数。
    序列集越大,多样性越多,最后建模得到的系数也越准确
    很多计算的公式的数据都是按照你自己公司的数据决定的,需要自己建模得到一个系数
    在神经网络里你要首先建模得到大量系数,最后才能使用神经网络算法
    
    黑匣子,怎么做的不知道,但它的目的知道,就是提高我们的某种准确度,是通过序列集计算出来的
    神经网络算法就是不知道它里面是怎么算的就是神经网络算法
    
    不同行业有不同的炒作技巧,因为如果某个 “话题” 被炒作起来了,那么这个链接会被大的网站收过来,提高PR值(投票质量)
    
    ABCD4个页面是 初始时pagerand值默认是1,第二次对ABCD页面分别计算PR值,ABCD 4个页面的PR值会不是1,会变。
    第三次分别计算PR值,会发现与第二次又不同,……当第9999次计算后发现 ABCD4个页面的PR值和上一次全部相等了,
    这就是收敛,(注意绝对的相等,不存在,只要相差0.00001后就可以认为收敛,这个0.00001是我们自定义的)所以我们要通过迭代递归计算(收敛)
    
    注意 在考虑map输出类型的时候,即 :考虑reduce的输入,也就是要考虑reduce时要做什么,key是什么,累加什么

    写  map  和  reduce时   一定要注意 map输出的key 、value 和reduce 输入的 key、value是对应的,key =》key   value =》value

2    tf-idf 算法
    用在互联网的精准广告推送
    以新浪微博为例
    新浪它根据用户发送微博的内容来判断你对什么样的产品感兴趣,新浪微博的内容中有大量词条(也就是词),
    根据词条的权重(你讲的一句话对你来说是否重要有2个因素决定  1个是词频(词出现的频率) 1个是逆向词频(好多人都讲了这个词,那么这个词就不那么重要了))
    词频 tf和逆向词频 idf相乘就得到一个权重
    记一下公式写法
    
    注意1个碎片段不能超过1个block。1个block 对应1个map任务,4个map任务是并发同时执行的
    几个maptask就有几个输出文件
    
3    天猫推荐算法
    例如:猜你喜欢,电影推荐,小说推荐等等他们是一类的算法,叫 协同过滤算法,它是应用层算法(不同于冒泡排序,底层算法)
    http://tianchi.shuju.aliyun.com/
    它有出色的速度和健壮性(稳定性和准确率)
    分为2种  基于物品的协同过滤算法和基于用户的协同过滤算法
    基于用户的协同过滤算法:
    例如张三
    先找到和张三相似的用户李四,看李四喜欢什么,把李四喜欢的商品推送给张三。是以用户为基础进行计算
    基于用户的协同过滤算法:
    例如 给用户推荐他之前喜欢的物品的相似的物品
            物品与物品的相似是有一个数值相似的,数值越高越相似
            
    主流 是用基于物品的协同过滤算法
    
    例如有这么一个故事   : 啤酒喝尿片的故事,发现 大多数人在买尿片的时候回买一瓶啤机(缓解压力)。所以,售货员把啤酒喝尿片放一起。说明尿片和啤酒有相似性
    注意 这种形似性 是根据用户的行为来判断相似性。
    注意 这个例子仅仅是观察了啤酒喝尿片的相似性,这是非常局限的,而且也无法证明 和尿片相似性最高的是啤酒,和尿片相似性最高也可能会是其他商品,例如 王老吉。
    所以 我们要把所有商品,任意两两物品去比较计算。另外物品的相似性也和人的喜好有关系,例如我根本就不喝啤酒,那么对于我这样的人,你把啤酒推荐给我显然不会成立,
    所以即使你推算出了尿片也啤酒有很高的相似性也不能把 啤酒放在我的推荐列表里吧。
    
    因此把所有商品的彼此间的相似性(体现到商品上就是,你都买了哪些东西),和 所有人的行为喜好相结合,才能做到一个最完美的推荐列表。
    所以我们发现,把尿片和啤酒放在一起是不准确的。在数据挖掘的时候你在预测推荐时,如果你的预测值和一个月的后的现实值比较到达 60%的准确性。这个就是非常牛的算法了
    如果你的预测值和一个月的后的现实值比较到达80%的准确性,那么你的那个推荐算法是完全绝对错误的。任何一个预测系统和推荐系统的,它的准确性绝对不可能超过80%,
    如果超过80%,那么只能说你的这个算法,仅仅是在某一个训练集里符合,但是运用到全范围序列集下,很明显是错误的。
    
    1  找到 两两物品之间的相似性(某人都买过哪些东西)。  相似有一个值
    2  根据所有人对物品的喜好     喜好也有一个值
    这两个因素决定了一个推荐列表
    
    我们怎么判断 两个物品之间的相似性, 这样判断  例如 用户A  在买物品1的时候又买了物品2   用户B 在买物品1的时候也买了物品2  用户C 在买物品1的时候也买了物品2
    那么 物品1和物品2就有很高的相似性,这种现象较同现 同现次数越高就表示两物品越相似 。
    我们可以想象出一个同现矩阵     x 是物品id y也是物品id  矩阵里面的值是两两之间同现的次数。自己和自己的同现次数就是这个物品一共被购买过多少次
    
    用户对物品的喜好组成一个矩阵 里面的值是用户对物品的喜好值 喜好值为0表示,根本不喜欢
    喜好度怎么来的,就是通过用户的行为得来的,例如 用户把某物品加入购物车 喜爱度加1,下订单了 喜爱度加5,购买了 喜爱度加10 等等(注意这些喜爱系数是通过逻辑回归算出来的)
    所以做是决定喜爱度的一个维度,正向关系
    还有一个就是 人的购买时间,性别,年龄等都是影响喜爱度的维度(本例子 只提供了 操作值)
    
    同现矩阵和喜好矩阵相乘,累加 得到一个推荐值
    
    同现矩阵和喜好矩阵相乘,累加 得到一个立体三维矩阵
    
    记一下公式写法
    
    因此要多维度考虑
    
    线性回归或者是逻辑回归,它会算出任意一个维度对应的系数,例如在本例中 对于物品A 人年龄对物品的系数,时间对物品的系数
    物品A对所有维度的系数相累加,最后就会得到1个人对物品A的喜爱值

    在本案例中 逻辑回归是用来算最合适的系数的,也就是 error值最小的,最优系数。所有维度的系数值累加就是 喜好值1、去重
    1、去重  一行数据全部相同才叫相同
    2、获取所有用户的喜欢矩阵:
    a)
            goodId1     goodId12    goodId13
    UserId1            
    UserId2    
    UserId3    
    3、获得所有物品之间的同现矩阵
    4、两个矩阵相乘得到三维矩阵
    5、三维矩阵的数据相加获得所有用户对所有物品的推荐值(二维矩阵)
    6、按照推荐值降序排序。
   

你可能感兴趣的:(hadoop_案例_2)