详解)
1. 前言1.2.13 计算矩阵的条件数条件数Condition Number是矩阵分析中一个非常基础且重要的概念它衡量的是矩阵对数值误差的敏感程度直接关系到线性方程组求解、矩阵求逆、回归分析等计算的稳定性与可靠性。一、什么是矩阵条件数在数据分析中我们经常需要求解线性方程组Axb Ax bAxb其中AAA是系数矩阵bbb是观测数据xxx是待求的未知量。然而现实中的数据往往带有测量误差或舍入误差。如果矩阵AAA对误差非常敏感那么bbb的微小扰动就可能导致解xxx出现巨大偏差这样的计算结果是不可信的。用自己的话讲在解线性方程的时候不是所有输入差不多输出就差不多有的矩阵很“稳”输入稍微改一点结果变化很小.有的矩阵很“娇气”输入只改了一丁点儿结果直接大变样。所以条件数就是用来衡量这个矩阵到底稳不稳的指标。矩阵条件数的定义矩阵A的条件数等于A的范数与其逆矩阵的范数的乘积cond(A)∥A∥⋅∥A−1∥\mathrm{cond}(A) \|A\| \cdot \|A^{-1}\|cond(A)∥A∥⋅∥A−1∥二、书中代码展示LA.cond(a, p)范数类型简要说明LA.cond(a)2-范数默认cond2(A)σmaxσmin\mathrm{cond}_2(A)\dfrac{\sigma_\mathrm{max}}{\sigma_\mathrm{min}}cond2(A)σminσmax最大奇异值/最小奇异值LA.cond(a, 1)1-范数列和诱导范数最大绝对列和 × 逆矩阵最大绝对列和LA.cond(a, np.inf)∞\infty∞-范数无穷范数最大绝对行和 × 逆矩阵最大绝对行和LA.cond(a, fro)Frobenius范数弗罗贝尼乌斯范数不属于诱导范数不满足奇异值之比公式LA.cond(a, -2)最小奇异值模式用于验证∥A∥−2\Vert A\Vert_{-2}∥A∥−2就是最小奇异值三、在数据分析中的现实意义为什么做数据分析、线性回归我们要关心条件数做回归分析的时候如果选的变量关联性太强比如同时放了月收入和年收入矩阵就会变得很“娇气”条件数变大。哪怕原始数据只有一点点录入误差或是抽样时换了几个人最后算出来的结论都可能大变样甚至本来是正相关跑出来变成负相关。所以我们算条件数就是提前排雷检查模型稳不稳定避免拿到不靠谱的分析结果。小结条件数通俗理解就是误差放大倍数条件数小 稳良态输入轻微变化结果变化很小条件数大 娇气病态一点点误差结果就跑偏条件数无穷大 奇异矩阵没有唯一解在回归分析里条件数可以用来检测多重共线性判断模型稳不稳定。