У меня есть большая разреженная матрица, представляющая атрибуты для миллионов объектов. Например, одна запись, представляющая сущность, может иметь атрибуты "has (fur)", "has (tail)", "makeSound (meow)" и "is (cat)".
Однако эти данные неполные. Например, другая сущность может иметь все атрибуты типичной сущности is (cat), но в ней может отсутствовать атрибут is (cat). В этом случае я хочу определить вероятность того, что этот объект должен иметь атрибут "is (cat)".
Итак, проблема, которую я пытаюсь решить, - это определить, какие недостающие атрибуты должна содержать каждая сущность. Учитывая произвольную запись, я хочу найти N наиболее вероятных атрибутов, которые отсутствуют, но должны быть включены. Я не уверен, что формальное название для этого типа проблемы, поэтому я не уверен, что искать при поиске текущих решений. Есть ли масштабируемое решение для этого типа проблемы?
Во-первых, я просто вычисляю условную вероятность для каждого отсутствующего атрибута (например, P (is (cat) | has (fur) и has (tail) и ...)), но это выглядит как очень медленный подход. Кроме того, поскольку я понимаю традиционный расчет условной вероятности, я предполагаю, что столкнусь с проблемами, когда моя сущность содержит несколько необычных атрибутов, которые не являются общими с другими сущностями типа (cat), в результате чего условная вероятность равна нулю. 1009 *
Моя вторая идея - подготовить классификатор максимальной энтропии для каждого атрибута, а затем оценить его на основе текущих атрибутов сущности. Я думаю, что вычисление вероятности будет гораздо более гибким, но это все равно будет иметь проблемы с масштабируемостью, так как мне придется готовить отдельные классификаторы для потенциально миллионов атрибутов. Кроме того, если бы я хотел найти N наиболее вероятных атрибутов для включения, мне все равно пришлось бы оценивать все классификаторы, что, вероятно, заняло бы вечность.
Есть ли лучшие решения?