【发布时间】:2011-07-26 08:01:11
【问题描述】:
我有以下问题:
我提取了一组数据,但其中部分数据不可用或丢失;对于不同的项目,我确定了 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
使用线性插值,您可以轻松获得 item3 = 50 的 param2。
我的想法:
由于我有 10 个参数和 1500 个值,所以我想在已完成的 750 个项目中的 covariance matrix 上做一个 PCA(找到数据集的主要方向)。
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 上投影,我会得到X1=50。这是因为前两项之间存在完美的相关性。
所以我的问题:
到目前为止,这只是理论,我还没有应用它,但在开始之前,我想知道我是否会带着这个去某个地方。
我可以做得更好吗? (我真的相信是的。) 如果所有项目都缺少一个参数,我该怎么办?我从哪里得到方向?
是否有已知的好算法来填充损坏的矩阵,或者你能帮我完成我的想法(向我推荐好的读数或方法)?
我认为 Netflix 使用这种算法来自动填充电影分数矩阵,例如(Netflix 1M 美元问题)。
如果您认为这属于另一个 stackexchange 站点,请随时迁移它。
【问题讨论】: