singular value decomposition tutorial

来源:互联网 发布:gentoo安装软件 编辑:程序博客网 时间:2024/05/20 10:24

原文地址:

http://www.puffinwarellc.com/index.php/news-and-articles/articles/30-singular-value-decomposition-tutorial.html


为什么svd能够解析矩阵背后的结构?


假设这是phil, tiger, vijar 三个人去打高尔夫, 打了9个洞, 每个人都打出了par

HoleParPhilTigerVijay144442555533333444445444464444744448333395555

加入两个参数:  打球人能力参数  和  每洞难度系数

根据以上两个参数, 我们就可以计算   每洞的预测得分 = 打球人能力参数  *  每洞难度系数

PhilTigerVijay444555333444444444444333555=HoleDifficulty453444435*PlayerAbilityPhilTigerVijay111


根据这两个新添参数, 我们可以还原 原先计分板(矩阵)


数据家比较惹人烦, 所以他们要做 rescale

PhilTigerVijay444555333444444444444333555=
HoleDifficulty0.330.410.250.330.330.330.330.250.41*
ScaleFactor21.07*
PlayerAbilityPhilTigerVijay0.580.580.58因为rescaling, 导致又新添了个参数 scale factor, 但实际上是物理意义最小的一个参数

ps: holedifficulty  = 左奇异向量     playerability = 右奇异向量


--------------------------------------------------------------------------------------------------------我是卖萌的分割线------------------------------------------------------------------------------------------------------

升级版

刚才的例子中, 我们用了一组参数, 但是实际中有无法用一组参数就能重构的矩阵存在


真实的score board

HoleParPhilTigerVijay144452545533332444545444464354744438324495555


SVD 生成的hole difficulty & player ability, 这是在拥有一组参数情况下 最佳的拟合

生成过程: 有一组 hole difficulty 参数后, 问player ability应该怎么改针对预测分值, ->> 有一组 player ability 参数后, 问hole difficulty 应该怎么改针对预测分值 ->> 周而复始

 PhilTigerVijay3.954.644.344.275.024.692.422.852.663.974.674.363.644.284.003.694.334.053.333.923.663.083.633.394.555.355.00=HoleDifficulty4.344.692.664.364.004.053.663.395.00*PlayerAbilityPhilTigerVijay0.911.071.00



现在将预测分值减去真实得分, 然后用第2组参数去拟合这个区别, 通过第2组参数对 第一组参数所拟合出的预测结果与真实结果的差距 进行弥补

PhilTigerVijay0.05-0.640.66-0.28-0.020.310.580.15-0.660.030.33-0.360.36-0.280.00-0.690.67-0.050.670.08-0.66-1.080.370.610.45-0.350.00=HoleDifficulty2-0.18-0.380.800.150.35-0.670.89-1.290.44*PlayerAbility2PhilTigerVijay0.82-0.20-0.53


--------------------------------------------------------------------------------------------------------我是卖萌的分割线------------------------------------------------------------------------------------------------------

最后 , 原 M*N 矩阵,  当 M>= N时,  可 生成N*N的矩阵

PhilTigerVijay445455332454444354443244555=
HoleDifficulty 1-34.34-0.18-0.904.69-0.38-0.152.660.800.404.360.150.474.000.35-0.294.05-0.670.683.660.890.333.39-1.290.145.000.44-0.36*
PlayerAbility 1-3PhilTigerVijay0.911.071.000.82-0.20-0.53-0.210.76-0.62

1-3 指 3组holeDifficulty & playerAbility 参数


rescaling 之后, 我们得到PhilTigerVijay445455332454444354443244555=
HoleDifficulty 1-30.350.09-0.640.380.19-0.100.22-0.400.280.36-0.080.330.33-0.18-0.200.330.330.480.30-0.440.230.280.640.100.41-0.22-0.25*
ScaleFactor 1-321.070002.010001.42*
PlayerAbility 1-3PhilTigerVijay0.530.620.58-0.820.200.53-0.210.76-0.62



总结, 说白了  svd 干了件 降维的工作, 并且在生成的 方阵中保存原矩阵的物理特性


PlayerAbility 1-3PhilTigerVijay0.530.620.58-0.820.200.53-0.210.76-0.62 phil 33 杆

tiger 39 杆

vijay 36 杆

另外不难看出  方阵中 第一条vector 被赋予的原矩阵物理特性最大, 接下来的是为了 弥补 第一组player ability 未能完全覆盖的部分

0 0
原创粉丝点击