1.1算法简介
KNN(K最近邻分类算法)是一种在机器学习中比较简单的算法,它的原理如下:对于一个需要分类的物品A,定义某一种刻画物品之间距离方法,找出该物品最邻近k个有已知类别的物品,这k物品中出现最多的类别即为物品A的类别。如下图:
在KNN算中,最核心的一点是怎么定义物品之间的距离,这里我们简单列举几种计算物品距离的方法:欧式距离、曼哈顿距离、切比雪夫距离、杰卡德系数、夹角余弦、皮尔逊系数。
下面介绍KNN在实际业务中的运用。
4.2业务实践
业务场景1:以应用商店为例,在用户下载完一个应用时,触发一个“大家还下载”的推荐,下面介绍如何运用knn算法实现这个场景的推荐:
首先定义应用的维度向量,一种简单的方法是离散化所有特征,然后进行one-hot编码,得到所有维度取值0/1的向量V,例如:可以把每个用户当做一个维度,如果第n个用户安装了应用A,那么应用A在第n个维度取值为1,否则为0,运用欧式距离可以得到应用A与应用B的距离公式:
给定一个应用A,通过上述公式取距离最小的4个应用出来,在用户下载完应用A以后给该用户推荐这4个应用。
业务场景2:网络购物中,在“猜你喜欢”场景推荐一批物品给用户,通过用户的历史购物清单,运用杰卡德公式计算用户与用户的相关系数:
Ax表示购买了物品x的用户集合,那么用户u与用户v的距离定义为:
给定一个用户u,首先找出这个用户最邻近的k个用户,然后在这k个用户中按照购买的用户数对物品进行降序,去除用户u已经购买的物品,取top 10个物品推荐给用户
1.3实例代码