推荐系统常常用于推荐给用户可能喜欢的产品,或者推荐给用户可能会喜欢的电影等等场景,一般推荐系统的建立是基于数据的。
理解近邻的概念NN:
近邻的概念就是一个实体与另外一个实体之间很相似,我们称之为近邻。for example:
上图是A,B,C三个用户的体重,我们发现:
如此看来,A和B的体重更为接近,我们认为他们是近邻,也就是说他们之间更加相似。
我们再添加一个属性:
A和B之间的“”距离“”就可以使用欧氏距离的算法进行计算:
但是在多个变量的情形下,单纯的这种计算也会引发误区:
我们按照计算发现,A和C好像更加接近,但是直觉告诉我们,B和C才是最接近的,因为他们的齿轮数是一样的。
这个时候需要引入归一化概念:
归一化就是,将所有的变量统一到同样的尺度的方法。对于不同的属性,类似于上面的表格中,汽车的运行速度的值是100和110,而齿轮的数目确实4和5,二者数值相差很大。所以我们需要将运行速度和齿轮数目统一到相同的尺度上进行比较。
常用的归一化的方法有:
1.将变量除以当前属性中最大值。
2.将变量减去均值,再除以标准差。
3.将每个变量除以最大值和最小值的差。
K近邻算法(KNN)
KNN就是找到与当前实体最接近的K个实体,由这K个实体投票表决,决定到底是否推荐给当前的实体。
假如,和当前实体最接近的10个实体中,有9个实体都购买了某件商品,那么,我们将选择把这件商品推荐给当前的实体。
又例如,和当前实体最接近的10个实体中,只有一个实体喜欢某一部电影,其余9个实体不喜欢这部电影,那么我们将选择不把当前的这部电影推荐给当前的实体。
这种推荐方式就是一种协同过滤的方式进行推荐。