2.3.2 行为相似与内容相似的区别
2.3.1节讲到定义人的要素主要是人的行为,而行为主要是为了区别人本身的内容属性。行为可以通过观察用户的历史记录得到他喜爱的物品集来定义。内容属性是指例如年龄、性别、职业等特征。
从事推荐相关工作的产品经理及项目经理通常认为协同过滤是指找到目标用户相似属性的用户,而初级的推荐算法工程师通常会认为协同过滤是指找到目标用户相似行为的用户。那么这两者究竟谁对呢?其实都对,而且目前成熟的推荐算法都会结合行为特征与内容特征做协同过滤,本书后面会讲解。目前需先理清楚什么是行为特征,什么是内容特征,以及它们的优劣势。
一般认为行为特征更加代表真实的情况,否则“凭什么说女生就一定喜欢某某物品”这种疑问就会出现。的确,凭什么知道职业为企业家的用户会喜欢什么,或者家庭主妇会喜欢什么。答案是凭女生、企业家和家庭主妇这类群体的行为特征。
所以即使相似用户间的定义是用内容属性定义,但是对于内容属性本身的定义也是根据所属这一类别的用户行为而来,如图2-2所示。
基于行为特征的UserCF与基于内容特征的UserCF仅仅是定义相似用户时所用的特征不同,而尽管是基于内容特征的UserCF,其实也是通过统计同时拥有“女”与“学生”内容特征的用户群体喜欢什么样的物品,从而推荐给用户A。
图2-2 基于行为特征与基于内容特征的UserCF
通常来讲,对于一个理想的推荐系统,只要它的用户行为数据足够多,自然简单利用行为特征做协同过滤就已经能达到很好的效果,但是现实中也有很多情况是用户并没有太多的行为,所以内容特征起到的作用是将有限的数据通过内容特征泛化开。例如虽然用户A在系统中没有与任何一个物品发生过交互,但是用户A所在的用户群体(例如“20岁的男战士”)是有很多行为数据的,则自然可以暂时将这个群体的行为数据泛化给用户A,从而给A做推荐。
但是涉及内容特征后,仅凭K近邻算法其实还不够,而是需要更多维度的算法去处理,本书后面会讲解。其实最初版的UserCF是:根据K近邻算法基于行为特征的协同过滤。只是UserCF也是基于用户的协同过滤这个名字起得太大,的确存在很多模糊的概念,所以笔者认为有必要帮大家理一理,最后总结如下。
(1)狭义的UserCF:根据K近邻算法基于行为特征得到相似用户后,给目标用户推荐相似用户喜爱的物品。
(2)广义的UserCF:通过任意手段找到相似用户,给目标用户推荐相似用户喜爱的物品。