消除稀疏矩阵数据集中的零
Eliminate zero in sparse matrix dataset
我有这样一个数据服务器:
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为用户对电影的评价值,否则为零(无评价)。
我没有完整的列,数据都是稀疏的。(列中至少有一个零)
我看到这会在数据中引入更多噪音,因为我有很多不需要的值。
消除这种噪音的方法有哪些?我记得不是用零,我可以用一个中值,在我以某种方式简化之后,但我不确定..
有什么建议吗?
当您有缺失数据(在您的情况下为零)时,一个想法是尝试使用已知数据来填充缺失值。换句话说,给定一个个体的 partial 特征向量,我们想要推断剩余的值。
一个简单的方法是简单地使用缺失列的平均值(当然,推断值不依赖于那个人的已知值或像他们这样的人已知的值!)。例如,您还可以对用户进行聚类(仅使用两个人共享的已知值)并计算每个聚类中缺失列的平均值。
需要研究的非常相关的文献是矩阵补全在推荐系统中的使用(实际上看起来就像您基本上想做的那样)和 collaborative filtering. Imputation has been used but is rather expensive for large-scale datasets. Check out Koren et al, Matrix factorization techniques for recommender systems 所使用的一些技术。
另一种前景是使用半监督概率表示学习方法。基本上,您学习了数据的生成模型,这样您就可以 部分地 指定一个表示并自动推断剩余的值。一个警告是这可能很昂贵,因为在这种情况下您需要为每个特征定义一个随机节点。考虑,例如,Siddarth et al, Learning Disentangled Representations with Semi-Supervised Deep Generative Models
我有这样一个数据服务器:
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为用户对电影的评价值,否则为零(无评价)。
我没有完整的列,数据都是稀疏的。(列中至少有一个零)
我看到这会在数据中引入更多噪音,因为我有很多不需要的值。 消除这种噪音的方法有哪些?我记得不是用零,我可以用一个中值,在我以某种方式简化之后,但我不确定..
有什么建议吗?
当您有缺失数据(在您的情况下为零)时,一个想法是尝试使用已知数据来填充缺失值。换句话说,给定一个个体的 partial 特征向量,我们想要推断剩余的值。 一个简单的方法是简单地使用缺失列的平均值(当然,推断值不依赖于那个人的已知值或像他们这样的人已知的值!)。例如,您还可以对用户进行聚类(仅使用两个人共享的已知值)并计算每个聚类中缺失列的平均值。
需要研究的非常相关的文献是矩阵补全在推荐系统中的使用(实际上看起来就像您基本上想做的那样)和 collaborative filtering. Imputation has been used but is rather expensive for large-scale datasets. Check out Koren et al, Matrix factorization techniques for recommender systems 所使用的一些技术。
另一种前景是使用半监督概率表示学习方法。基本上,您学习了数据的生成模型,这样您就可以 部分地 指定一个表示并自动推断剩余的值。一个警告是这可能很昂贵,因为在这种情况下您需要为每个特征定义一个随机节点。考虑,例如,Siddarth et al, Learning Disentangled Representations with Semi-Supervised Deep Generative Models