「干货分享」协同过滤算法在金融基金场景的技术实践

作者:  时间:2019-01-01  热度:

  在诸多算法和技术中,推荐算法是一种广泛应用于各行业,并获得显著成果的方法。本文主要结合Smart Decision华策实际案例介绍推荐算法在金融产品(基金)方面的应用。

  1、基本的推荐,例如榜单,按照购买量或者受欢迎程度无差别推荐给客户,假设受欢迎的产品大众更易于接受。

  2、基于内容的推荐,分析产品的特征和客户购买记录,然后把具有类似特征的产品推荐给客户。

  3、协同过滤(Collaborative Filtering),根据客户的评分或偏好,以及其他客户的评分或偏好来推荐产品,而不需要像基于内容推荐的算法依赖于产品的特征分析。

  本次Smart Decision华策实践案例主要运用了第2与第3类的算法:

  首先是应用了协同过滤中的ALS(Alternative Least Squares,交叉最小二乘法)。ALS算法应用比较广泛,而且集成到了Spark的Mllib库中,而本案例用的就是通过pyspark在hadoop调用ALS算法。从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF。它同时考虑了User和Item两个方面。

  用户和商品的关系,可抽象为(User,Item,Rating)的结构,Rating表示客户对产品的评分和偏好。矩阵Rating由User和Item构成,而实际应用中,由于User和Item的数量十分巨大,传统的矩阵分解方法效率不足。因为客户对某些产品的评分缺失,这个Rating矩阵也只能是个稀疏的矩阵。

  假设客户和产品之间在某些维度上有关联,类似于主成分分析(PCA),然后就可以将Rating矩阵投射到这些维度上,从而达到了降维的目的。这种方法被称为概率矩阵分解法(PMF),其中求解的方法就是应用ALS。

  用户对产品的评分被称为显示反馈,而相对于显示反馈就有隐式反馈(用户的非直接给出评分的行为,如浏览次数,点击次数,购买记录等)。在金融领域里,客户对金融产品的直接评分是非常少见的,更多的是客户对服务的评分,而不是针对产品本身。用户对金融产品的偏好,只能通过间接用户行为去反映。因此,基金推荐里,不存在用户对基金的评分,意味着只能通过隐式反馈数据来进行推荐。这里选用的是客户的购买记录标签(未购买的基金标记为0,已购买的标记为1),这样就可以把客户和基金生成一个表,第一列为客户,第二列基金产品,第三列为客户购买记录标签。处理好数据结构之后,直接调用pyspark的ALS.trainImplicit建立模型。

  ALS算法是一个离线算法,且无法处理新加入的客户或者产品(Cold Start),所以本案例在处理Cold Start这个问题时应用了第2类基于内容的推荐来优化这个问题。通过选取基金的特征数据,例如基金类型、风险等,应用相似度算法,根据已被购买过的基金,去匹配特征相似度最高的新基金推荐给客户。

  这里选取了余弦相似度(如图所示的夹角cosθ),其他常用的还有欧氏距离(如图所示的dist(A,B))。欧氏距离和余弦距离各自有不同的计算方式和衡量特征,因此它们适用于不同的数据分析模型。简单来说,余弦距离更加注重两个向量在方向上的差异,对绝对的数值不敏感,因为基金产品的特征差异更多是体现在“质”的区别而非“量”的差别,例如股票型的基金(基金资产80%以上投资股票)和债券型基金(基金资产80%以上债券股票)的差别在于组成成分的差异;而欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析。

  另一方面,可类似地通过选取客户特征数据,例如年龄、风险承受能力、收入和投资组合等,把相似度高的客户打上标签或者建立客户画像。因为金融产品的推荐跟其他实物商品的推荐有其独特之处,需要对客户进行更精准的分群,通过建立客户画像发掘其潜在投资目标和方向,或者通过其行为去引导达成其投资目的。然后针对类似的客户及其投资目的去作相应的推荐,用的也是第2类基于内容的推荐方法去解决新客户推荐的问题。

  通过上述方法优化Cold Start问题,然后周期迭代新的训练集给ALS优化模型。

美文.分享

人喜欢

上一篇下一篇
猜你喜欢
点击加载更多内容  ↓