【问题标题】:Eliminate zero in sparse matrix dataset消除稀疏矩阵数据集中的零
【发布时间】:2019-07-28 08:28:05
【问题描述】:

我有一个这样的数据分析器:

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

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

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

有什么建议吗?

【问题讨论】:

  • 拥有不需要的值并不是真正的噪音,更像是混乱。你真正想达到什么目标?存储更高效?计算平均收视率?还有什么?
  • 那么问题是如何存储一个稀疏矩阵?
  • 对于大型数据集,scipy 和 numpy 有办法做到这一点。或者你可以简单地使用 dict,并且有一个评论 IFF 有一个关键——reviews[movie][user]
  • 我从评论中尝试 ti 集群用户
  • @KennyOstrom 我已经创建了数据框,但是我有很多 0 在我的矩阵中添加了太多稀疏。我希望在使用一些数据科学技术之后删除这个值

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


【解决方案1】:

当您缺少数据(在您的情况下是零)时,一个想法是尝试使用已知数据来填充缺失值。换句话说,给定一个个体的部分特征向量,我们想要推断剩余的值。 一种简单的方法是简单地使用缺失列的平均值(当然,推断的值不依赖于该人的已知值或像他们这样的人已知的值!)。例如,您还可以对用户进行集群(仅使用两个人共享的已知值)并计算每个集群中缺失列的平均值。

一个非常相关的文献是推荐系统使用矩阵完成(实际上看起来就像你基本上想要做的)和collaborative filtering。插补已被使用,但对于大规模数据集来说相当昂贵。查看Koren et al, Matrix factorization techniques for recommender systems 了解使用的一些技术。

另一种前景是使用半监督概率表示学习方法。基本上,您学习数据的生成模型,以便您可以部分指定表示并自动推断剩余值。一个警告是这可能很昂贵,因为在这种情况下您需要为每个特征定义一个随机节点。考虑一下,例如,Siddarth et al, Learning Disentangled Representations with Semi-Supervised Deep Generative Models

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    相关资源
    最近更新 更多