Алгоритм завершения поврежденной матрицы данных

У меня следующая проблема:

Я извлек набор данных, но часть этих данных либо недоступна, либо отсутствует; для разных элементов я определил 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, не стесняйтесь его переносить.

6
задан Brian Tompsett - 汤莱恩 16 January 2016 в 22:01
поделиться