我以这种方式拥有一个数据采集器:
User Movie
0 1 2 3 4
0 2 0 5 0 0
1 0 1 0 0 0
2 0 5 5 5 0
从1到5是电影用户的评论值,否则为零(无评论)。
我没有完整的列,数据都很稀疏。(列中至少有一个零)
我看到这会在数据中引入更多的噪音,因为我有很多真正不需要的价值。 消除噪音的方法有哪些?我记得我改为使用零,我可以使用一个中间值,在以某种方式简化之后,但我不确定。.
有什么建议吗?
答案 0 :(得分:0)
当您缺少数据(在您的情况下为零)时,一个想法是尝试使用已知数据填充缺失值。换句话说,给定一个个体特征的 partial 向量,我们想推断出剩余的值。 一种简单的方法是简单地使用缺失列的平均值(当然,推断出的值不取决于该人的已知值或与他们类似的人的已知值!)。例如,您还可以集群用户(仅使用两个人共享的已知值),并为每个集群内的缺失列计算平均值。
要研究的非常相关的文献是对推荐系统(实际上看起来像您基本上想要做的)和collaborative filtering使用矩阵完成。插补已被使用,但对于大规模数据集而言相当昂贵。查看Koren et al, Matrix factorization techniques for recommender systems,了解使用的某些技术。
另一种观点是使用半监督概率表示学习方法。基本上,您将学习数据的生成模型,从而可以部分指定一个表示形式并自动推断剩余值。一个警告是,这可能会很昂贵,因为在这种情况下,您需要为每个功能定义一个随机节点。考虑例如Siddarth et al, Learning Disentangled Representations with Semi-Supervised Deep Generative Models