• 这是本人在cousera上学习机器学习的笔记,不能保证其正确性,慎重參考
  • 看完这一课后Content Based Recommendations 后自己用java实现了一下

1、下图是待处理的数据,代码使用数据和下图一样:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHpoNDc2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

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、执行结果:

注:部分图片来源为 机器学习-吴恩达 中的视频截图

基于内容的推荐 java实现的更多相关文章

  1. ElasticSearch java API-使用More like this实现基于内容的推荐

    ElasticSearch java API-使用More like this实现基于内容的推荐 基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档.Lucene的api中有实现查 ...

  2. Recommender Systems基于内容的推荐

    基于内容的推荐的基本推荐思路是:用户喜欢幻想小说,这本书是幻想小说,则用户有可能喜欢这本小说 两方面要求:(1)知道用户的喜好:(2)知道物品的属性 基于内容的推荐相比协同过滤方法(个人观点):协同过 ...

  3. 新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)

    https://blog.csdn.net/qq_32690999/article/details/77434381 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Co ...

  4. elasticsearch使用More like this实现基于内容的推荐

    基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档.Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis.Elasticsearch封装了该接口,通过Ela ...

  5. 推荐系统第5周--- 基于内容的推荐,隐语义模型LFM

    基于内容的推荐

  6. 【T-BABY 夜谈大数据】基于内容的推荐算法

    这个系列主要也是自己最近在研究大数据方向,所以边研究.开发也边整理相关的资料.网上的资料经常是碎片式的,如果要完整的看完可能需要同时看好几篇文章,所以我希望有兴趣的人能够更轻松和快速地学习相关的知识. ...

  7. C# 基于内容电影推荐项目(一)

    从今天起,我将制作一个电影推荐项目,在此写下博客,记录每天的成果. 其实,从我发布 C# 爬取猫眼电影数据 这篇博客后, 我就已经开始制作电影推荐项目了,今天写下这篇博客,也是因为项目进度已经完成50 ...

  8. MapReduce实例-基于内容的推荐(一)

    环境: Hadoop1.x,CentOS6.5,三台虚拟机搭建的模拟分布式环境 数据:下载的amazon产品共同采购网络元数据(需FQ下载)http://snap.stanford.edu/data/ ...

  9. Recommending music on Spotify with deep learning 采用深度学习算法为Spotify做基于内容的音乐推荐

    本文参考http://blog.csdn.net/zdy0_2004/article/details/43896015译文以及原文file:///F:/%E6%9C%BA%E5%99%A8%E5%AD ...

随机推荐

  1. centos7更改为启动桌面或命令行模式

    进入cenos7的命令行模式 终端输入“init 3”回车进入命令行模式 登录成功后 # systemctl get-default //获取当前系统启动模式 查看配置文件 # cat /etc/in ...

  2. 关于CSS中的float可能出现的小问题

    关于CSS中的float可能出现的小问题 前言:最近学习CSS的float所遇到点小问题,然后顺便分享给大家. 一.什么是CSS以及float (一) CSS概述 CSS是层叠样式表(英文全称:Cas ...

  3. 聚类:层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类

    一.层次聚类 1.层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类合并为一 ...

  4. [转]12种JavaScript MVC框架之比较

    From : http://www.infoq.com/cn/news/2012/05/js-mvc-framework/ Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月 ...

  5. 代理服务器polipo;socks5代理转http代理

    安装: brew install polipo 使用: To have launchd start polipo now and restart at login: brew services sta ...

  6. Inferred type 'S' for type parameter 'S' is not within its bound; should extend

    在使用springboot 方法报错: Inferred type 'S' for type parameter 'S' is not within its bound; should extends ...

  7. 奇怪吸引子---DequanLi

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  8. 东芝发布运行Win 10的AR眼镜,它和Google Glass企业版有哪些异同?

    https://www.leiphone.com/news/201803/Tw0nrq6vGDIvbmXr.html 雷锋网(公众号:雷锋网)获悉,3月13日,东芝发布新AR眼镜dynaEdge AR ...

  9. python将控制台输出保存至文件

    很多时候在Linux系统下运行python程序时,控制台会输出一些有用的信息.为了方便保存这些信息,有时需要对这些信息进行保存.这里介绍几种将控制台输出保存到文件中的方式:1 重定向标准输出流重定向标 ...

  10. 事件分发机制 事件拦截 滑动冲突 MD

    目录 事件分发机制分析案例 默认行为 试验 0 结论 dispatchTouchEvent 返回 true 试验 1 试验 2 结论 onInterceptTouchEvent 返回 true 试验 ...