public override double Predict(int user_id, int item_id)
{
if ((user_id < 0) || (user_id > MaxUserID))
throw new ArgumentException("user is unknown: " + user_id);
if ((item_id < 0) || (item_id > MaxItemID))
throw new ArgumentException("item is unknown: " + item_id);
int count = 0;
foreach (int neighbor in nearest_neighbors[item_id])
if (Feedback.UserMatrix[neighbor, user_id])
count++;
return (double) count / k;
}