zoukankan      html  css  js  c++  java
  • 正定矩阵和半正定矩阵

    在众多的机器学习模型中,线性代数的身影无处不在,当然,我们也会时常碰到线性代数中的正定矩阵和半正定矩阵。例如,多元正态分布的协方差矩阵要求是半正定的。

    --------------×--------------×--------------

    1. 基本的定义

    正定和半正定这两个词的英文分别是positive definite和positive semi-definite,其中,definite是一个形容词,表示“明确的、确定的”等意思。

    初学线性代数的读者可能会被这两个词“唬住”,但正定矩阵和半正定矩阵的定义实际上是很简单的 (不考虑复数构成的矩阵):

    【定义1】给定一个大小为 [公式] 的实对称矩阵 [公式] ,若对于任意长度为 [公式] 的非零向量 [公式],有 [公式] 恒成立,则矩阵 [公式] 是一个正定矩阵。

    【例1】单位矩阵 [公式] 是否是正定矩阵?

    解:设向量 [公式] 为非零向量,则

    [公式]

    由于 [公式] ,故 [公式] 恒成立,即单位矩阵 [公式] 是正定矩阵。

    单位矩阵是正定矩阵 (positive definite)。

    【简单证明】对于任意单位矩阵 [公式] 而言,给定任意非零向量 [公式] ,恒有

    [公式]

    [公式]

    【例2】 实对称矩阵 [公式] 是否是正定矩阵?

    解:设向量 [公式] 为非零向量,则

    [公式]

    [公式]

    因此,矩阵 [公式] 是正定矩阵。

    【定义2】给定一个大小为 [公式] 的实对称矩阵 [公式] ,若对于任意长度为 [公式] 的向量 [公式] ,有 [公式] 恒成立,则矩阵 [公式] 是一个半正定矩阵。

    根据正定矩阵和半正定矩阵的定义,我们也会发现:半正定矩阵包括了正定矩阵,与非负实数 (non-negative real number)和正实数 (positive real number)之间的关系很像。

    图1 正实数与负实数,图片来源于https://en.wikipedia.org/wiki/Real_number

    2. 从二次函数到正定/半正定矩阵

    在初中数学中,我们学习了二次函数 [公式] ,该函数的曲线会经过坐标原点,当参数 [公式]时,曲线的“开口”向上,参数 [公式] 时,曲线的“开口”向下。

    [公式] 为例,曲线如下:

    图2 二次函数曲线

    实际上,我们可以将 [公式] 视作 [公式] 的多维表达式。

    当我们希望 [公式] 对于任意向量 [公式] 都恒成立,就要求矩阵 [公式] 是一个半正定矩阵,对应于二次函数, [公式] 需要使得 [公式] .

    另外,在 [公式] 中,我们还知道:若 [公式] ,则对于任意 [公式] ,有 [公式] 恒成立。

    这在 [公式] 也有契合之处,当矩阵 [公式] 是正定矩阵时,对于任意 [公式][公式] 恒成立。

    3. 正定矩阵和半正定矩阵的直观解释

    若给定任意一个正定矩阵 [公式] 和一个非零向量 [公式] ,则两者相乘得到的向量 [公式] 与向量 [公式] 的夹角恒小于 [公式] . (等价于: [公式] .)

    【例3】给定向量 [公式] ,对于单位矩阵 [公式] ,则

    [公式]

    向量 [公式] 之间的夹角为

    [公式]

    [公式]

    [公式]

    即两个向量之间的夹角为0°.

    【例4】给定向量 [公式] ,对于实对称矩阵 [公式],则

    [公式]

    向量 [公式] 之间的夹角为

    [公式]

    即两个向量之间的夹角小于 [公式] .

    若给定任意一个正定矩阵 [公式] 和一个向量 [公式] ,则两者相乘得到的向量 [公式] 与向量 [公式] 的夹角恒小于或等于 [公式] . (等价于: [公式] .)

    4. 为什么协方差矩阵要是半正定的?

    在概率论与数理统计中,我们都学习的协方差矩阵的定义:

    对于任意多元随机变量 [公式] ,协方差矩阵为
    [公式]

    现给定任意一个向量 [公式] ,则

    [公式]

    [公式]

    [公式]

    其中,

    [公式]

    由于 [公式] ,因此, [公式] ,协方差矩阵 [公式] 是半正定的。

     

  • 相关阅读:
    最新sql遇到的问题
    js高级
    oracle数据库子查询的结果需要使用多次解决办法
    Rocket 命令
    mysql锁
    mysql sql优化思路
    jenkins-系统管理-节点管理进去报错
    数据同步工具 DataX 的使用
    java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
    shell脚本批量压缩log文件并备份
  • 原文地址:https://www.cnblogs.com/henuliulei/p/13493956.html
Copyright © 2011-2022 走看看