跳转到内容

人工智能/搜索/推荐系统

来自维基教科书,开放世界中的开放书籍

推荐系统

[编辑 | 编辑源代码]

推荐系统是为了帮助用户从互联网提供的海量信息中筛选出自己感兴趣的内容而创建的。这些系统通过收集用户的某些信息,例如喜欢的音乐艺术家等等,根据用户之前做出的选择为他们推荐新项目。正如 Zaier、Godin 和 Faucher (2008) [1] 指出的那样,推荐系统在商业上取得了巨大成功,特别是在电子商务领域。


基本运作

[编辑 | 编辑源代码]

正如 Zhan 等人 (2008) [2] 所定义的,一个推荐系统有两个基本实体:用户,是指使用系统进行推荐的人或代理,以及项目,是指用户进行评级和搜索的任何实体。用户构成一个社区,通常是数据库的主要信息来源,但也会使用其他方法。


协同过滤

[编辑 | 编辑源代码]

协同过滤是一种常用的系统,尽管它没有处理。Chun 和 Hong (2001) [3] 解释说,这种方法基于这样的理念:人类的偏好是相关的,一个人的偏好可以为另一个与他或她在某些约束条件下相似的人提供建议。该系统基于用户对项目的数值评分。

为了确定协同系统中两个用户之间的相关性,通常使用皮尔逊相关系数。这是一种常用的统计学公式,可以确定两个变量之间的相关性,表示为对这两个变量之间相关性的评分。


基于内容的过滤

[编辑 | 编辑源代码]

Hijikata、Iwahama 和 Nishida (2006) [4] 对基于内容的过滤进行了研究,结果表明,尽管它是一种针对基于文本信息的常见推荐系统,但随着当前技术的进步,它也成为音乐的良好选择。他们解释说,大多数处理音乐数据的过滤系统往往会从音乐中创建参数内容模型,然后将其与使用音乐参数的用户个人资料进行比较。然后系统通过两种方法之一比较内容模型和用户个人资料来运作。Hijikata 等人将第一种方法定义为向量方法,该方法将向量附加到个人资料参数,然后使用距离与内容模型进行比较。第二种比较方法涉及对个人资料的特征参数进行加权,然后在计算中使用它们与阈值进行比较。Hijikata 等人通过在用户个人资料中引入学习决策树,改进了用户个人资料与内容模型的比较,并减少了基于内容的过滤与音乐数据结合使用的弊端。使用决策树可以过滤掉重要参数,用户可以轻松读取和更改决策树,还可以去除不重要的噪声数据。


基于知识的过滤

[编辑 | 编辑源代码]

Chung 和 Hong 还区分了另一种模型,该模型被认为是基于知识的。基于知识的推荐器会询问用户他们想要什么,然后在数据库中搜索符合用户要求的选择,并且经常要求用户提供关于选择相关性的信息。

虽然这些是最常见的推荐系统类型,但还有许多其他类型和混合类型,偶尔也会使用。


基于代理的推荐

[编辑 | 编辑源代码]

可能是最流行和最常用的推荐器是互联网搜索引擎。代理是一个数据挖掘器,它获取有关个人的信息。虽然用于生成网站推荐的系统类型各不相同,但 Birukov、Blanzieri 和 Giorgini (2005) [5] 创建了一个基于代理的推荐器,它与大多数推荐器一样,使用个人的行为来为个人社区内的用户提供更好的建议(组共享相似的模式),但也从个人用户中提取了隐式知识供组使用。

上面描述的每种系统类型都涉及不同的搜索和推荐方法。它们之间唯一的共同点是它们都有一个输入,来自用户的某种信息,一个处理过程,确定相关的选项,以及一个输出,通常是一个文本推荐,通常是指一个项目、网站、歌曲/艺术家等等,用户可以随后查看或访问该项目、网站、歌曲/艺术家等等。

下面是 Birukov 等人编写的伪代码示例,作为最常见和最常用的系统,基于代理的推荐的示例


global result
for all message in INBOX do
     if (message.type == 'query') then
          result := nil
       if (query.sender == user) then
            google-search(query.sender,query.keyword,result.links)
            inform(self, user, result.links)
end if

SICS.internal-search(query.sender,query.keyword,result.links)
SICS.external-search(query.sender,query.keyword,result.agents)

if (query.sender == user) then
    if (result.agents == nil) then
         add(DF,result.agents)
end if

for all agent in result.agents do
      request(self,agent,query.keyword)
end for

inform(self, user, result.links)
     else
        inform(self, query.sender, result.links)
        inform(self, query.sender, result.agents)
end if

else if (message.type == reply) then
        if (message.content == resource-link) then
           add(resource-link, result.links)
else if (message.content == agent-ID) then
         add(agent-ID, result.agents)
end if
end if
end if

else if (message.type == 'feedback') then
        add(feedback,observations)

end if
end if
end for 

亚马逊

Genius(iTunes)

潘多拉

Scarab 推荐器

玻尔兹曼机

参考文献

[编辑 | 编辑源代码]
  1. Zaier, Zied (2008). Evaluating Recommender Systems. axmedis. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  2. Zhan, Justin (2008). Towards efficient privacy-preserving collaborative recommender systems. IEEE. pp. 778–783. ISBN 9781424425129. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  3. Chun, In-Gook (2001). 基于知识的推荐系统在电子商务中的实现,使用Java专家系统库. IEEE. pp. 1766–1770. ISBN 0780370902. {{cite book}}: 未知参数 |coauthors= 被忽略 (|author= 建议) (帮助)
  4. Hijikata, Yoshinori (2006). 基于内容的音乐过滤系统,带有可编辑的用户配置文件. IEEE. pp. 1050–1057. ISBN 1595931082. {{cite book}}: 未知参数 |coauthors= 被忽略 (|author= 建议) (帮助)
  5. Birukov, Alexander (2005). 隐式. ACM. pp. 618–624. ISBN 1595930930. {{cite book}}: 未知参数 |coauthors= 被忽略 (|author= 建议) (帮助)
华夏公益教科书