1、随机选择一个数作为第一次的预估真实值(比如平均数)。
2、根据每个用户给予的评分数值与预估真实值的差距计算出每个用户的权值weight。
3、根据权值weight更新预估真实值。
4、重复步骤2和步骤3,经过多次迭代求出准确的真实值和每个用户的权值。
#include <iostream>
#include <cmath>
using namespace std;
double A[10]= {10,30,60,70,70,80,90,60,50,70},W[10];
double sum=0,gt=0;//ground truth 的初始值
double pj=0;//平均值
int n=10;
double dis(int gt,int a)//距离
{
double t=0;
for(int i=0; i<n; i++) //标准差
{
t+=pow((A[i]-pj),2);
}
t=pow(t/n,0.5);
return po