Mahout协同过滤算法源码分析(3-3)QR分解数据流
来源:互联网 发布:全国中小学数据库 编辑:程序博客网 时间:2024/06/05 19:14
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。
接上篇分析完new QRDecomposition(Ai)后,此篇分析new QRDecomposition(Ai).solve(Vi).viewColumn(0)的后面solve函数。
首先来明确几个变量:
Vi:
[[34.8125],[5.235105578655231],[4.549926969654448]]qr:
[[1.9817665337214256, -4.197854445325, -4.69114027734864],[0.12665092438034994, 1.9301220188705366, 0.3254138519486568],[0.14175336545641365, -0.36725063650346085, 2.0]]rDiag:
{0:-32.26673724322168,1:-0.527836313803738,2:-0.29759508129758655}
然后就到了solve函数了:
getQ: 正交矩阵 (暂时没有分析)感觉好复杂的样子,分析了下就有点(ˇˍˇ) 想~吐了。。。[[-0.9817665337214256, 0.06574179978609515, 0.17836055905244766],[-0.12665092438034994, -0.9259205856685633, -0.3558519529084921],[-0.14175336545641365, 0.3719530680019588, -0.9173641036064746]]qt: getQ的转置
[[-0.9817665337214256, -0.12665092438034994, -0.14175336545641365],[0.06574179978609515, -0.9259205856685633, 0.3719530680019588],[0.17836055905244766, -0.3558519529084921, -0.9173641036064746]y:矩阵qt和Vi的矩阵相乘:
[[-35.48574587647197],[-0.8662963228239493],[0.17231474217475284]]r: getR,上三角矩阵
[[-32.26673724322168, -4.197854445325, -4.69114027734864],[0.0, -0.527836313803738, 0.3254138519486568],[0.0, 0.0, -0.29759508129758655]]for循环:
X[k,] = Y[k,] / R[k,k]
Y[0:(k-1),] -= R[0:(k-1),k] * X[k,]
end
return x;
x:
[[1.0168655785532088],[1.2842501029087856],[-0.579024160693177]]这样,x作为最终的输出返回到:
Vector uiOrmj = solver.solve(featureVectors, ratings, lambda, numFeatures);然后就可以继续分析了。
大概总结下吧:原来算法是这么让人想吐的。。。还有就是我原本以为算法的话,可以不用怎么懂,只用分析源码,知道数据流是怎么走的就ok了,然后我一直也是按照这种思路来的,但是今天发现这种思路不行了,面对比较复杂的算法还是应该先了解算法的大概思路才行,比如上面最后一个的for循环,其实就是对矩阵的一些操作,如果用上面的那样来显示,我们人回很快理解,但是放到java的源代码里面感觉操作好复杂了。这个就是java对矩阵的支持不足吧。还有就是我的线性代数学的真的不怎么样。。。最后就是getQ函数木有分析。。。
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
- Mahout协同过滤算法源码分析(3-3)QR分解数据流
- Mahout协同过滤算法源码分析(3-1)--QR分解数据流
- Mahout协同过滤算法源码分析(3-2)--QR分解数据流
- Mahout协同过滤算法源码分析(3)--parallelALS
- Mahout基于项目的协同过滤算法源码分析(3)--RowSimilarityJob
- Mahout协同过滤算法源码分析(1)
- Mahout协同过滤算法源码分析(5)--拓展篇
- Mahout协同过滤算法源码分析(6)--并行思路
- Mahout协同过滤算法源码分析--Itembased Collaborative Filtering实战
- Mahout协同过滤算法源码分析(2)--splitDataset 和parallelALS
- Mahout协同过滤算法源码分析(4)--评价和推荐
- Mahout基于项目的协同过滤算法源码分析(1)--PreparePreferenceMatrixJob
- Mahout基于项目的协同过滤算法源码分析(2)--RowSimilarityJob
- Mahout基于项目的协同过滤算法源码分析(4)共生矩阵乘法
- Mahout基于项目的协同过滤算法源码分析(5)--推荐
- Mahout基于项目的协同过滤算法源码分析(6)--总结
- Mahout 协同过滤 itemBase RecommenderJob源码分析
- Mahout 协同过滤 itemBase RecommenderJob源码分析
- oracle 查看 用户,用户权限,用户表空间,用户默认表空间
- sender是什么
- 解决:Failed to fetch URL https://dl-ssl
- hdu 3518 后缀数组
- ExtJS01:GridPanel单行中的某列,控制整行数据赋值问题
- Mahout协同过滤算法源码分析(3-3)QR分解数据流
- 注重实效的程序员读书笔记
- RFC822格式转换为date并算出毫秒数
- hdu 4056 并查集处理线段树染色问题
- hdu_2768 Cat vs. Dog 最大独立集
- 20131006组队赛-Regionals 2010, Europe - Southeastern
- ExtJS02:GridPanel中防止重复添加
- ExtJS03:Grid表格中删除一行问题
- mpich+blas+hpl 集群配置