可扩展的分类器用于查找缺失属性

我有一个大型稀疏矩阵,代表数百万实体的属性。例如,一个记录,代表一个实体,可能具有属性“有(毛)”, “有(尾巴)”, “发出声音(喵)”,以及“是(猫)”。

然而,这些数据是不完整的。例如,另一个实体可能具备典型的“是(猫)”实体的所有属性,但可能缺少“是(猫)”属性。在这种情况下,我想确定这个实体应该具有“是(猫)”属性的概率。

所以我试图解决的问题是确定每个实体应该包含哪些缺失的属性。给定一个任意记录,我想找出最可能缺失但应该包含的前N个属性。我不确定这种类型的问题的正式名称,所以在研究当前解决方案时不知道该搜索什么。对于这种类型的问题,有没有可扩展的解决方案?

我的第一个想法是简单地计算每个缺失属性的条件概率(例如,P(是(猫)|有(毛) 且 有(尾巴) 且 … )),但这似乎是一个非常慢的方法。此外,据我所知,传统的条件概率计算,我想象我会遇到一些问题,我的实体包含一些不常见且与其他是(猫)实体不共有的属性,导致条件概率为零。

我的第二个想法是为每个属性训练一个最大熵分类器,然后根据实体的当前属性进行评估。我认为概率计算会更加灵活,但这仍然存在可扩展性问题,因为我必须为可能数百万的属性训练单独的分类器。此外,如果我想找出最可能包含的前N个属性,我仍然需要评估所有分类器,这可能会花费很长时间。

有没有更好的解决方案?


回答:

这听起来像是一个典型的推荐问题。对于每个属性使用“电影评分”这个词,对于每一行使用“人”这个词。对于每个人,你想找到他们可能会喜欢但尚未评分的电影。

你应该看看Netflix挑战赛中一些更成功的方法。数据集相当大,因此效率是高度优先的。一个好的起点可能是论文《推荐系统的矩阵分解技术》

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注