Ric*_*bby 6 algorithm linear-algebra
我有以下问题:
我提取了一组数据,但部分数据不可用或缺失; 对于不同的项目我确定了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
Run Code Online (Sandbox Code Playgroud)
在项目的创建中有一个隐含的逻辑,所以我想用尽可能最好的期望值填写这些值.
示例:
我们假设您有2个参数和3个项目.
param1 param2
item1 400 200
item2 200 100
item3 100 N/A
Run Code Online (Sandbox Code Playgroud)
使用线性插值,您可以轻松获得param2 item3 = 50.
我的想法:
由于我有10个参数和1500个值,我想到在完成的750个项目的协方差矩阵上进行PCA(找到数据集的主要方向).
PCA将引导我到我的项目的一个主方向(最大特征值)和子组项目的子方向(较小的特征值).
例如,我想在主方向上投影缺少参数的向量.获取缺失参数的近似值.
从我的第一个例子:
param1 param2
item1 400 200
item2 200 100
item3 100 X ?
Run Code Online (Sandbox Code Playgroud)
完整矩阵:
param1 param2
item1 400 200
item2 200 100
Run Code Online (Sandbox Code Playgroud)
协方差矩阵:
1 0.5
0.5 1
Run Code Online (Sandbox Code Playgroud)
特征向量和特征值:
V1和l1:
1
1 associatedd to 1.5
Run Code Online (Sandbox Code Playgroud)
V2和l2:
1
-1 associated to 0.5
Run Code Online (Sandbox Code Playgroud)
结果:
如果我在V1上投影,我只会得到X1=100.
如果我投射l1.V1 + l2.V2我得到X1=50.这是因为前两项之间存在完美的相关性.
所以我的问题:
到目前为止它只是理论,我还没有应用它,但在我开始之前,我想知道我是否会去这个地方.
我可以做得更好吗?(我真的相信是的.)如果所有项目都缺少一个参数,我该怎么办?我从哪里获得方向?
是否有已知良好的算法来填充损坏的矩阵,或者你能帮助我完成我的想法(向我推荐好的读数或方法)吗?
我认为Netflix使用这种算法自动填写电影评分矩阵(例如Netflix 1M美元问题).
如果您认为这属于另一个stackexchange站点,请随意迁移它.
为什么不使用机器学习的数字预测?在第一个示例中,参数是属性,项目是实例。有了它,您可以在几分钟内尝试线性回归或神经网络或其他任何东西。训练后,您将得到第一个示例的下一个方程(此处的 param2 被标记为类):
param2 = 0 + 1/2 * param1
Run Code Online (Sandbox Code Playgroud)
这正是你想要的。
如果您不确定参数之间的关系是线性的,您可以随时尝试其他类型的回归(ANN、SVM 等)。
为了快速启动,请使用Weka。将您的数据转换为 CSV,将其加载到 Weka 中并开始播放。对于数字预测,请查看“分类”选项卡。