-
最小二乘法
-
利用矩阵分解的结果无限逼近现有数据,得到隐含的特征
-
利用隐含的特征预测其余结果
- 表一:
product1 | product2 | product3 | |
user1 |
3.0 | ||
user2 | 1.0 | 1.0 | |
user3 | 3.0 | ||
user4 | 1.0 |
假设有4个用户,对应3个产品,加入user2被采集到对product2产生了一次兴趣,则记录为1.0(只记录对product浏览一次,只记uv,不计pv,多次浏览product2也只记录1.0)
假设user1 对product1产生了一次浏览,并且不止于此,而且产生了加入购物车,购买等行为,则记录为3.0
我们推荐系统做的就是预测user,挖掘潜在的需求,而不是推荐已经打分的product,也就是被打0分的矩阵中的product
这个就是我们als算所要做的事情
表二:
f1 | f2 | f3 | f4 | f5 | |
user1 |
0.21 | 0.31 | 0.01 | 0.29 | 0.89 |
user2 | 0.29 | 0.22 | 0.54 | 0.78 | 0.12 |
user3 |
0.12 | 0.67 | 0.31 | 0.64 | 0.11 |
user4 | 0.12 | 0.98 | 0.56 | 0.45 | 0.43 |
表三:
f1 | f2 | f3 | f4 | f5 | |
product1 |
0.21 | 0.31 | 0.01 | 0.29 | 0.89 |
product2 | 0.29 | 0.22 | 0.54 | 0.78 | 0.12 |
product3 |
0.12 | 0.67 | 0.31 | 0.64 | 0.11 |
f1,f2表示特征,中间的数字则表示该用户或者该产品的特征打分,先不用管怎么算出来,这里先理解原理
对这两个表做一个矩阵的相乘,公式:v'=UP^t
就是表三和表二相乘相加,就会得出表一,这个就是als算法的原理,因为无限逼近,表一空的数值,就会被算出来
即:
- 将user矩阵和product矩阵的转置相乘
- 获取无限逼近于真实的数据的分数
- 同时预测其余节点的分数,排序后输出