Одна из идей, когда у вас отсутствуют данные (в вашем случае нули), состоит в том, чтобы попытаться использовать известные данные для заполнения пропущенных значений. Другими словами, учитывая частичный вектор признаков для индивидуума, мы хотим вывести оставшиеся значения.
Тривиальный способ сделать это - просто использовать среднее значение для отсутствующего столбца (конечно, тогда предполагаемое значение не зависит от известных значений для этого человека или значений, известных для людей, подобных им!). Вы также можете, например, кластеризовать пользователей (используя только известные значения, которые разделяют оба человека) и вычислить средние значения для отсутствующих столбцов только внутри каждого кластера.
Очень важная литература для изучения - это использование матрицы завершения для рекомендательных систем (что на самом деле похоже на то, что вы в основном пытаетесь сделать) и совместная фильтрация . Импутация использовалась, но довольно дорого для крупномасштабных наборов данных. Проверьте Корен и др., Методы факторизации матрицы для рекомендательных систем для некоторых из используемых методов.
Другая перспектива заключается в использовании полуобучаемых методов обучения вероятностного представления. В основном вы изучаете генеративную модель данных, такую, что вы можете частично указать представление и автоматически вывести оставшиеся значения. Одно предостережение - это может быть дорого, так как в этом случае вам нужно определить стохастический узел для объекта. Рассмотрим, например, Сиддарт и др., Изучение распутанных представлений с полууправляемыми глубокими порождающими моделями