智能推荐系统是机器学习一个非常重要的领域,在金融、电商等营销场景中应用较为广泛,并展现出了重要的商业价值。智能推荐系统属于非监督式学习,具体是通过分析产品用户的浏览次数、停留时长、点击频率等数据指标,挖掘出用户感兴趣的内容或商品,然后进行有方向的个性化推荐。如果推荐的内容或商品能够高效匹配用户的需求,就可以优化用户对产品的使用体验,提高用户与产品之间的黏性,从而为整个业务创造较好的收益。 1、算法原理 本文主要以中小微企业金融服务平台产品为例,说明智能推荐系统在产品智能匹配环节的应用。在具体介绍场景之前,我们首先需要了解下智能推荐系统的协同过滤算法(collaborative filtering)。协同过滤算法的原理是根据用户群体的产品偏好数据,发现用户或产品之间的相关性,并基于相关性表现为用户进行内容推荐。根据算法原理的不同,协同过滤算法可以为分为两个类别,分别为根据用户的协同过滤算法,以及根据产品的协同过滤算法。 根据用户的协同过滤算法的本质是寻找相似的用户,即通过一个用户的相关数据寻找与该用户相似的其他客户,从而为该用户推荐相似用户关注的产品。举个例子,具体如图1所示,某企业金融服务平台有等多个银行的企业信贷产品,假设有用户A与用户B都搜索浏览过招商企业贷、建设企业贷、浦发企业贷这3个企业信贷产品的详细信息,说明这两个用户的融资需求与行为特征比较类似,可以划分为同一类用户群体,假设用户A另外也搜索浏览过农行企业贷的详细信息,那么系统根据用户A与用户B的相似性,会将农行企业贷产品推荐给用户B。 ? 图1 协同过滤算法样例1
根据产品的协同过滤算法的本质是寻找相似的产品,即通过一个产品的相关数据寻找与该产品相似的其他产品,从而为关注该产品的用户推荐相似的产品。举个例子,具体如图2所示,某企业金融服务平台有等多个银行的企业信贷产品,如果招商企业贷、建设企业贷产品都被用户A、用户B、用户C都咨询过,说明这2个企业信贷产品具有较强的相似度,可以推测出关注招商企业贷产品的用户,也很有可能关注建设企业贷产品。假设现有用户D已咨询招商企业贷产品信息,那么系统会根据招商企业贷产品与建设企业贷产品的相似性,会将建设企业贷产品推荐给用户D。 ? 图2 协同过滤算法样例2
2、应用特点 在金融实际业务中,多数应用场景都是使用基于产品的协同过滤算法,主要原因有两个方面: (1)针对某商业平台(以企业金融服务平台为例),金融产品的数量是有限的,通常情况下最多也只有几十个,而用户的数量是相对庞大的,如果流量渠道比较广泛的话,可以达到几十万或百万以上,因此不同产品的相似度的计算要比不同用户的相似度容易很多。 (2)产品的属性基本都是固定的,比如银行产品的特征在很长周期内是不会变化的,即使有调整也是某些维度,不会影响整个产品的市场定位,而用户的产品需求与行为喜好,可能会随着时间发生较大的变化,那么用户的相似性程度在较长时间内也是难以保持不变。
3、样本相似度 前边示例已经介绍,对于两种类别的协同过滤算法,其本质都是寻找样本数据之间的相似度,或不同产品或不同用户。在具体的实践过程中,对于样本数据的相似度经常采用的方法有欧氏距离、余弦值、皮尔逊相关系数。 (1)欧氏距离相似度 欧式距离相似度即样本间的欧式距离,以d(a,b)表示,代表样本a与样本b的欧式距离相似度,具体公式如下: ?
在Python语言中,欧式距离可以通过NumPy库快速实现: ?
其中df.iloc[0]与df.iloc[1]分别代表数据集df的第1行与第2行数据(产品样本)。
(2)余弦相似度 余弦相似度是根据数学余弦值cosθ计算得到,比如在n维向量空间内,如果向量a=(X1,X2,X3,…,Xn),向量b=(Y1,Y2,Y3,…,Yn),则向量a与向量b的余弦值的公式如下: ?
在Python语言中,余弦值相似度可以通过cosine_similarity()函数实现: ?
(3)皮尔逊相似度 皮尔逊相似度即皮尔逊相关系数,可以描述两个变量之间线性相关性强弱的指标,取值范围为[-1,1],正值代表正相关,负值代表负相关,绝对值越大,说明相关性越强。皮尔逊相关系数r的公式如下,取值COV(a,b)表示变量a与变量b的协方差,D(a)与D(b)分别代表变量a与变量b的方差: ?
在Python语言中,皮尔逊相似度可以通过corrwith()函数或corr()函数实现,其中corrwith()可以得到单列与其他列的皮尔逊相关系数,corr()可以得到所有列的皮尔逊相关系数。
为了便于大家对以上智能推荐系统关于相似度内容的进一步理解,我们准备了具体的Python代码,各位小伙伴可以根据代码样例,并结合工作中已有样本数据进行实操练习,从而掌握智能推荐系统协同过滤算法的原理逻辑,详情请大家移步至知识星球查看相关内容: ? … end
|