基于内容的推荐 java实现
来源:互联网 发布:怪物猎人脸型数据 编辑:程序博客网 时间:2024/05/18 23:52
- 这是本人在cousera上学习机器学习的笔记,不能保证其正确性,谨慎参考
- 看完这一课后Content Based Recommendations 后自己用java实现了一下
1、下图是待处理的数据,代码使用数据和下图一样:
2、思路:对每个用户假定其为一个3维向量(在代码中初始化为[1,1,1]的转置,然后采用梯度下降法不断的对这个3维向量的值进行更新),假设更新到最后的向量值为[0,5,0]的转置,然后使用该向量和电影“Cute puppoes of love”的特征向量进行计算,即可得到该电影的预测分为4.95。
3、使用梯度下降法对某个用户的向量进行更新(我在代码中没有考虑正则化这一问题,现在还不懂正则化,后面学会了就附上加了正则化的):
下图为没有使用正则化的函数:
4、下面仅针对用户carol进行了代码实现
public class ContentBase { private static int[][] rate_set = { { 5, 5, 0, 0 }, { 5, -1, -1, 0 }, { -1, 4, 0, -1 }, { 0, 0, 5, 4 }, { 0, 0, 5, -1 } }; private static double[][] m_feature = { { 0.9, 0 }, { 1.0, 0.01 }, { 0.99, 0 }, { 0.1, 1.0 }, { 0, 0.9 } }; //仅针对用户carol进行了代码实现 public static void main(String[] args) { double t = 0.1; double[] para = { 1.0, 1.0, 1.0 }; double[] partial = new double[3]; double min = 0.0; int i = 0, j, u,times=0; double temp,temp2; //100为用户2的向量学习次数 while(times++<100){ min=0.0; i=0; //该while循环计算代价函数 while (i < 5) { temp = 0.0; if (rate_set[i][2] != -1) { for (u = 0; u < 3; u++) { if (u == 0) temp += para[u]; else temp += para[u] * m_feature[i][u - 1]; } min += (temp - rate_set[i][2]) * (temp - rate_set[i][2]); } i++; } System.out.print("当用户 carol的向量值为["); for(j=0;j<3;j++) if(j!=2) System.out.print(para[j]+","); else System.out.println(para[j]+"]时,min="+min); System.out.println(); for (j = 0; j < 3; j++) { i = 0; partial[j] = 0; while (i < 5) { temp = 0.0;temp2=0.0; if (rate_set[i][2] != -1) { for (u = 0; u < 3; u++) { if (u == 0) temp += para[u]; else temp += para[u] * m_feature[i][u - 1]; } temp2 += temp - rate_set[i][2]; if (j != 0) temp2 *= m_feature[i][j - 1]; partial[j]+=temp2; } i++; } } //根据求得的偏导数 partial来更新某用户的参数值 for (j = 0; j < 3; j++) { para[j] = para[j] - t * partial[j]; } } }}
4、运行结果:
注:部分图片来源为 机器学习-吴恩达 中的视频截图
2 0
- 基于内容的推荐 java实现
- 基于内容的推荐
- 基于内容的推荐
- 基于内容的推荐
- elasticsearch java API ------使用More like this实现基于内容的推荐
- ElasticSearch java API-使用More like this实现基于内容的推荐
- 如何实现基于内容和用户画像的个性化推荐
- 使用More like this实现基于内容的推荐
- 如何实现基于内容和用户画像的个性化推荐
- 如何实现基于内容和用户画像的个性化推荐
- Hadoop 2.6 使用MapReduce实现基于内容的推荐系统
- 基于内容推荐的个性化新闻阅读实现(二):基于SVD的推荐算法
- 推荐算法:基于内容的推荐_1:内容推荐算法
- 基于内容的推荐算法
- 基于内容的推荐算法
- 基于内容的推荐系统
- 基于内容的推荐算法
- 基于内容的推荐算法
- jdbc连接sqlserver数据库
- java 设计模式-单列模式
- IDEA2016.3.5安装
- 浅谈C++多态性
- VMware10+ubuntu14.04打开webcam摄像头失败问题
- 基于内容的推荐 java实现
- maven的依赖特性,冲突解决(五)
- XHTML1.0提供了三种DTD声明
- 【NOI2007T1】社交网络-Floyd求最短路
- HBase1.3.0独立模式安装
- 多线程、线程池、Future的一些疑惑
- ubuntu linux 下建立 纯L2TP 服务端和客户端
- opencv将一张图片裁剪为很多张图片
- Android 通过接口传值