在稀疏矩阵数据集中消除零

时间:2019-03-06 15:49:14

标签: python matrix dataset sparse-matrix dimensionality-reduction

我以这种方式拥有一个数据采集器:

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是电影用户的评论值,否则为零(无评论)。

我没有完整的列,数据都很稀疏。(列中至少有一个零)

我看到这会在数据中引入更多的噪音,因为我有很多真正不需要的价值。 消除噪音的方法有哪些?我记得我改为使用零,我可以使用一个中间值,在以某种方式简化之后,但我不确定。.

有什么建议吗?

1 个答案:

答案 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

相关问题