热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

推荐系统的定义及现状

推荐系统的定义及现状推荐系统的定义及现状推荐系统的定义及现状推荐系统将会占据每一家的公司的命脉位置推荐系统将会成为未来商家必经之路推荐系统将会改变咱们的生活Artificialin

推荐系统的定义及现状推荐系统的定义及现状




  • 推荐系统将会占据每一家的公司的命脉位置
  • 推荐系统将会成为未来商家必经之路
  • 推荐系统将会改变咱们的生活


Artificial intelligence (Al, also machine intelligence, MI) is intelligence exhibited by machines, rather than humans or other animals (natural intelligence, Nl). In computerscience, the field of Al research defines itself as the study of “intelligent agents”: any device that perceives its environment and takes actions that maximize its chance of success at some goal.[1] Colloquially, the term Martiician niengerith athar himana machine mimics " cognitive" functions that humans associate with other human minds, such as “learning” and "problem solving” .


从机器角度执行具体任务的目标最大化过程就是人工智能的表现。


在这里插入图片描述



推荐系统是指通过人工和非人工向用户建议购买/浏览物品的有规律行动。




IMDB(数据集)

lnternet Movie Database【媒体库】

  • 440万个影片信息
  • 包含电影、综艺、电视剧等节目详细信息
  • 电影数据挖掘从业者必爬的网站

lnternet Movie Database【用户资源】

  • 7千6百万个注册用户
  • 专业电影看客比去的门户网站
  • 通过增值服务盈利


在这里插入图片描述

IMDB 打分规则

在这里插入图片描述

w = weighted rating
R= average for the movie as a number from 1 to 10 (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250(currently25,000)
C = the mean vote across the whole report (currently 7.0)

在这里插入图片描述

IMDB的优势


  • 最悠久的历史【27年】
  • 最忠实的用户群体
  • 最完整的电影信息



Netflix Algorithms


  • Personalized Video Ranker
  • Top-N Video Ranker
  • Trending Now
  • Continue Watching
  • Video-Video Similarity
  • Page Generation: Row Selection and Ranking
  • Evidence
  • Search



个性化推荐算法


  • 人口属性

  • 地理属性

  • 资产属性

  • 兴趣属性 ·

如果能获得上诉所有的属性,用最简单的推荐算法即可。



数据衍生的推荐算法


  • 协同过滤推荐算法
  • 基于内容的推荐算法
  • 混合推荐算法
  • 流行度推荐算法


为推荐系统选择正确的推荐算法是非常重要的决定。

目前为止,已经有许多推荐算法可供选择,但为你需要解决的特定问题选择一种特定的算法仍然很困难。

每一种推荐算法都有其优点和缺点,当然也有其限制条件,在作出决定之前,你必须要一一考量。

在实践中,你可能会测试几种算法,以发现哪一种最适合你的用户,测试中你也会直观地发现它们是什么以及它们的工作原理。



基于内存的协同过滤(距离)基于内存的协同过滤(距离)()

相似统计的方法得到具有相似兴趣爱好的邻居用户

UCF
ICF

距离算法


欧几里得距离(Euclidean Distance)以及欧式距离的标准化:欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。


马哈拉诺比斯距离( Mahalanobis Distance)
曼哈顿距离(Manhattan Distance)
切比雪夫距离(Chebyshev Distance)
明可夫斯基距离( Minkowski Distance)
海明距离((Hamming distance)

用人工的方法进行度量




基于邻域的协同过滤(相似度)基于邻域的协同过滤(相似度)()

余弦相似度(Cosine Similarity)以及调整余弦相似度(Adjusted Cosine Similarity)
皮尔森相关系数(Pearson Correlation Coefficient)
Jaccard相似系数(Jaccard Coefficient)
Tanimoto系数(广义Jaccard相似系数)
对数似然相似度/对数似然相似率
互信息/信息增益,相对嫡/KL散度
信息检索–词频-逆文档频率(TF-IDF)
词对相似度–点间互信息



基于模型的协同过滤基于模型的协同过滤

先用历史数据得到一个模型,再用此模型进行预测。基于模型的推荐广泛使用的技术包括神经网络等学习技术、潜在语义检索(latent seman2tic indexing)和贝叶斯网络( bayesian networks).

用关联算法做协同过滤


用聚类算法做协同过滤


用分类算法做协同过滤


用回归算法做协同过滤


用矩阵分解做协同过滤


用神经网络做协同过滤


用图模型做协同过滤


用隐语义模型做协同过滤




聚类


K-Means

K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法研起,仕具垫础上讲述K-Means的优化变体方法。包括初始化优化K-Means++,距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。

BIRCH

BIRCH的全称是利用层次方法的平衡迭代规约和聚类(Balanced Iterative Reducing andClustering Using Hierarchies),它是用层次方法来聚类和规约数据



用分类算法做协同过滤用分类算法做协同过滤


逻辑回归原理(用户排序)

如果我们根据用户评分的高低,将分数分成几段的话,则这个问题变成分类问题。比如最直接的,设置一份评分阈值,评分高于阈值的就是推荐,评分低于阈值就是不推荐,我们将问题变成了一个二分类问题。虽然分类问题的算法多如牛毛,但是目前使用最广泛的是逻辑回归

  • 朴素贝叶斯算法

矩阵分解

在这里插入图片描述

神经网络

在这里插入图片描述
在这里插入图片描述

协同过滤优点


  • 实现快
  • 对商品和用户没有要求
  • 效果有保证

协同过滤缺点


  • 冷启动
  • 马太效应
  • 推荐解释模糊



scikit-Learn

Machine Learning in Python
源于Google竞赛算法

  • Simple and efficient tools for data mining and data analysis
  • Accessible to everybody, and reusable in yarious contexts)
  • Built on NumPy,SciPy, and matplotlib
  • Open source, commercially usable - BSD license



类目




  • Supervised learning
  • Unsupervised learning



  • Model selection and evaluation



  • Dataset transformations
  • Dataset loading utilities



  • Strategies to scale computationally: bigger data
  • Computational Performance



基础规则推荐算法


  • k-means
  • mini-batch k-means
  • Birch
  • 相似度计算



数据集:MovieLens


基于划分聚类算法(partition clustering)

在这里插入图片描述

基于层次聚类算法:

在这里插入图片描述

基于密度聚类算法:

在这里插入图片描述

K-means


1.随机选择k个初始质心;


2.如果没有满足聚类算法终止条件,则继续执行步骤3,否则转步骤5;


3.计算每个非质心点p到k个质心的欧几里德距离,将p指派给距离最近的质心;


4.根据上一步的k个质心及其对应的非质心点集,重新计算新的质心点,然后转步骤2;


5.输出聚类结果,算法可以执行多次,使用散点图比较不同的聚类结果。



在这里插入图片描述



调优方向


  • 重新分析数据
  • 重选择算法
  • 重新理解数据



关联规则算法关联规则算法




1.Apriori

Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了频繁出现的数据集,那么对于超市,我们可以优化产品的位置摆放,对于电商,我们可以优化商品所在的仓库位置,达到节约成本,增加经济效益的目的。

“啤酒与尿布”的故事

1993年美国学者Agrawal提出通过分析购物篮中的商品集合,从而找出商品之间关联关系的关联算法,并根据商品之间的关系,找出客户的购买行为,Agrawal从数学及计算机算法角度提出了商品关联关系的计算方法——Apriori算法。

沃尔玛从上个世纪90年代尝试将Aprior算法引入到POS机数据分析中,并获得了成功,于是产生了“啤酒与尿布”的故事。

如何寻找?

在历史购物记录中,一些商品总是在一起购买。但人看上去不是那么的直观的,而是隐蔽的。

让计算机做这事,设计算法让计算机自动去找,我到这样的模式(规律)。

目标:寻找那些总是一起出现商品。

mahout实战一>机器学习实战《mahout实战》与《机器学习实战》一起该买的记录数占所有商品记录总数的比例一一支持度(整体)买了《mahout实战》与《机器学习实战》一起该买的记录数占所有购买《mahout实战》记录数的比例一一置信度(局部)需要达到一定的阈值支持度、置信度越大,商品出现一起购买的次数就越多,可信度就越大。支持度:在所有的商品记录中有2%量是购买《mahout实战》与《机器学习实战》
置信度:买《mahout实战》的顾客中有60%的顾客购买了《机器学习实战》作用:找到商品购买记录中反复一起出现的商品,帮能助营销人员做更好的策略,帮助顾客方便购买。策略:
1、同时购买的商品放一起
2、同时购买的商品放两端支持度、置信度转化为数学语言进行计算:
A表示《mahout实战》
B表示《机器学习实战》support(A->B)= P(AB) (《mahout实战》和《机器学习实战》一起买占总的购买记录的比例)
confidence(A->B)=P(A|B) (购买了《mahout实战》后,买《机器学习实战》占的比例)项集:项的集合称为项集,即商品的组合。
k项集: k件商品的组合,不关心商品件数,仅商品的种类。
项集频率:商品的购买记录数,简称为项集频率,支持度计数。
注意,定义项集的支持度有时称为相对支持度,而出现的频率称为绝对支持度。
频繁项集:如果项集的相对支持度满足给定的最小支持度阈值,则该项集是频繁项集.
强关联规则:满足给定支持度和置信度阈值的关联规则明确问题
1、要找总是在一起出现的商品组合—
2、提出衡量标准支持度、置信度(达到一定的阀值)
3、给出支持度、置信度直观计算方法
4、在计算方法中起决定因素的是频繁项集
5、由频繁项集轻松找到强关联规则找关联规则--------->找频繁项集步骤:
1.找出所有的频繁项集;这个项集出现的次数至少与要求的最小计数一样。如在100次购买记录中,至少一起出2.由频繁项集产生强关联规则;这些关联规则满足最小支持度与最小置信度。



2.FPGROWTH

FpGrowth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高



推荐阅读
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 本文介绍了在Pygame中使用矩形对表面进行涂色的方法。通过查阅Pygame文档中的blit函数,可以了解到如何将一个表面的特定部分复制到另一个表面的指定位置上。具体的解决方法和参数说明在文中都有详细说明。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
author-avatar
胡萝卜咯198408
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有