У меня следующая проблема:
Я извлек набор данных, но часть этих данных либо недоступна, либо отсутствует; для разных элементов я определил 10 параметров:
param1 param2 ... param10
Item 1 1220 N/A 1000
Item 2 1300 200 ... 1000
.. ... ...
item N N/A 1000 ... 200
N ~ 1500 and half of the values are complete
В создании элементов существует неявная логика, поэтому я хотел бы заполнить эти значения наилучшим возможным ожидаемым значением.
Пример :
Представим, что у вас есть 2 параметра и 3 элемента.
param1 param2
item1 400 200
item2 200 100
item3 100 N/A
С линейной интерполяцией вы легко получите param2 для item3 = 50
.
Моя идея:
Поскольку у меня есть 10 параметров и 1500 значений, я подумал о выполнении PCA на ковариационной матрице из 750 завершенных элементов (определение основного направления набора данных
PCA приведет меня к одному главному направлению для моих элементов (наибольшее собственное значение) и поднаправлению для подгрупп элементов (меньшие собственные значения).
Я хотел, например, спроецировать векторы с недостающими параметрами на главное направление. чтобы получить приблизительное значение отсутствующих параметров.
Из моего первого примера:
param1 param2
item1 400 200
item2 200 100
item3 100 X ?
Полная матрица:
param1 param2
item1 400 200
item2 200 100
Матрица ковариации:
1 0.5
0.5 1
собственные векторы и собственные значения:
V1 и l1:
1
1 associatedd to 1.5
V2 и l2:
1
-1 associated to 0.5
результат:
Если я проецирую только на V1, я получаю X1 = 100
.
Если я проецирую на l1.V1 + l2.V2
I получить X1 = 50
. Это потому, что существует идеальная корреляция между первыми двумя элементами.
Итак, мой вопрос:
Пока это только теория, я еще не применял ее, но прежде чем начать, я хотел бы знать, могу ли я » я куда-то иду с этим.
Могу я сделать лучше? (Я действительно верю, что да.) Что делать, если у всех элементов отсутствует один параметр? Откуда я могу получить направление?
Существуют ли известные хорошие алгоритмы для заполнения поврежденных матриц, или вы можете помочь мне завершить мою идею (порекомендовав мне хорошие чтения или методы)?
Я думаю, Netflix использует такой вид алгоритм для автоматического заполнения матрицы оценок фильма, например (проблема Netflix в 1 миллион долларов).
Если вы считаете, что он принадлежит другому сайту stackexchange, не стесняйтесь его переносить.