mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。
额,好吧,心头的一块石头总算是放下了。关于Collaborative Filtering with ALS-WR这个算法中的那个QR分析,真心是太复杂了。以至于国庆后面三天基本都是在郁闷中过来的,想着自己的矩阵学的是有多差呀。。。后来算法验证弄懂之后才发觉,尼玛,java太坑爹了吧,矩阵求个逆,有那么复杂么!!!
下面来开始验证:首先应该获得了两个变量分别是Ai和Vi,如果这两个变量不知道是啥东西,可以看参考:mahout算法源码分析之Collaborative Filtering with ALS-WR (三)QR分解数据流(1)。然后重点验证的是什么呢?就是matlab代码说这个Collaborative Filtering with ALS-WR算法是使用Ai\Vi得到的,但是mahout中的源码中实现的太过于复杂了,我又不知道他是不是用的matlab一样的算法(官网说确实是参考这个算法的),所以采用的方式就是,我直接算一遍使用Ai的逆矩阵来和Vi乘积得到一个向量,然后使用mahout中的算法来跑一遍同样的数据,看两个结果是否一样。
其中mahout中的算法已经跑出结果出来了,可以在前面几篇blog中看到,下面还是贴出来吧:
Ai:
[[31.678402777777777, 4.08661209859189, 4.573918596524476],
[4.08661209859189, 1.0203966547288652, 0.3987296589988406],
[4.573918596524476, 0.3987296589988406, 1.059026647737198]]
Vi:
[[34.8125],
[5.235105578655231],
[4.549926969654448]]
然后mahout中求得最后的结果是:
[[1.0168655785532088],
[1.2842501029087856],
[-0.579024160693177]]
下面先求Ai的逆矩阵(这个可以在matlab中使用inv函数直接求得即可):
0.1818 -0.4940 -0.5993
-0.4940 2.4914 1.1958
-0.5993 1.1958 3.0826
然后使用这个逆矩阵和Vi相乘得到:
结果一模一样的,有木有!!!
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇的更多相关文章
- mahout算法源码分析之Collaborative Filtering with ALS-WR (四)评价和推荐
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 首先来总结一下 mahout算法源码分析之Collaborative Filtering with AL ...
- mahout算法源码分析之Collaborative Filtering with ALS-WR 并行思路
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. mahout算法源码分析之Collaborative Filtering with ALS-WR 这个算 ...
- mahout算法源码分析之Itembased Collaborative Filtering(二)RowSimilarityJob
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取: p ...
- mahout算法源码分析之Itembased Collaborative Filtering(四)共生矩阵乘法
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 经过了SimilarityJob的计算共生矩阵后,就可以开始下面一个过程了,这个过程主要是共生矩阵的乘法 ...
- mahout算法源码分析之Itembased Collaborative Filtering(三)RowSimilarityJob验证
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇分析上篇的分析是否正确,主要是编写上篇输出文件的读取以及添加log信息打印相关变量. 首先,编写下面 ...
- diff.js 列表对比算法 源码分析
diff.js列表对比算法 源码分析 npm上的代码可以查看 (https://www.npmjs.com/package/list-diff2) 源码如下: /** * * @param {Arra ...
- ReactNative 4Android源码分析二: 《JNI智能指针之实现篇》
文/Tamic http://blog.csdn.net/sk719887916/article/details/53462268 回顾 上一篇介绍了<ReactNative4Android源码 ...
- 鸿蒙源码分析系列(总目录) | 百万汉字注解 百篇博客分析 | 深入挖透OpenHarmony源码 | v8.23
百篇博客系列篇.本篇为: v08.xx 鸿蒙内核源码分析(总目录) | 百万汉字注解 百篇博客分析 | 51.c.h .o 百篇博客.往期回顾 在给OpenHarmony内核源码加注过程中,整理出以下 ...
- OpenCV人脸识别Eigen算法源码分析
1 理论基础 学习Eigen人脸识别算法需要了解一下它用到的几个理论基础,现总结如下: 1.1 协方差矩阵 首先需要了解一下公式: 共公式可以看出:均值描述的是样本集合的平均值,而标准差描述的则是样本 ...
随机推荐
- C#中的面向对象编程
所有的面向对象语言都具有3个基本特征,C#也是不例外的. 封装---把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性: 继承---通过继承可以复用父类的对象: 多态---允许将子对象赋值给 ...
- VMware虚拟机中如何安装VMWare-Tools详解
VMware虚拟机中如何安装VMWare-Tools详解 好处:可以支持图形界面,可以支持共享文件功能等 VMware虚拟机中如何配置显 VMware作为一款虚拟机利器,很多人都利用它来实现Linux ...
- 5shift shell
echo offcopy %systemroot%\system32\taskmgr.exe %systemroot%\system32\sethc.execopy %systemroot%\syst ...
- Android Camera拍照 压缩
http://www.linuxidc.com/Linux/2014-12/110924.htm package com.klp.demo_025; import java.io.ByteArrayI ...
- shell编程的一些例子1
1.$0-$9及$# $@的使用 demo_arg 内容 #!/bin/bash echo "程序名:$0" echo "命令传递参数个数:$#" echo & ...
- 学习Swift--方法
方法 方法是与某些特定类型相关联的函数.类.结构体.枚举都可以定义实例方法:实例方法为给定类型的实例封装了具体的任务与功能.类.结构体.枚举也可以定义类型方法:类型方法与类型本身相关联.类型方法与 O ...
- 拦截QT关闭窗口的CloseEvent
QDialog类下有一个虚函数 void QDialog::closeEvent ( QCloseEvent * e ) [virtual protected] 通过实现closeEve ...
- spm使用之三spm应用实例
spm 的init实际上是调用了grunt这个工具来实现一些交互式的提问和数据的获取. 看看npm就知道, npm有个命令叫init, 就是一样的交互式提问获取你要创建的nodejs的模块信息. sp ...
- spoj 4487. Can you answer these queries VI (gss6) splay 常数优化
4487. Can you answer these queries VI Problem code: GSS6 Given a sequence A of N (N <= 100000) in ...
- 【POJ3294】 Life Forms (后缀数组+二分)
Life Forms Description You may have wondered why most extraterrestrial life forms resemble humans, d ...