最近,我对应用密码学产生了兴趣,偶然发现了一个解释 Linux 如何估计熵的链接。
在某些时候,我们被告知熵估计是基于某些系统事件的时间戳的一、二和三差。很公平。我不明白的是这背后的直觉,在链接中解释如下:
增量的这种使用与尝试将 n 次多项式拟合到先前的 n+1 个点大致相同,然后查看新点与基于先前 n 点的最佳预测之间的距离。使用 deltas 的最小值,它具有获取 0 次、1 次或 2 次多项式的最佳拟合并使用该多项式的效果。
为了澄清,这就是我所理解的(我认为)。以链接中的鼠标事件为例:
Mouse event times 1004 1012 1024 1025 1030 1041
1st differences 8 12 1 5 11
2nd differences 4 11 4 6
3rd differences 7 7 2
将 n 次多项式拟合到前 n+1 个点:我猜这将采用第 (i+1) 个差异,这是第 i 个差异的第一个差异。这些可用于预测第 i 个差异的下一个值,因此是“拟合”。例如,第一个差异解释了鼠标事件行(第 0 个差异)的连续值如何变化。
新点与基于前 n 个点的最佳预测相差多远:我猜这是由第 (i+2) 个差异给出的?例如,在最后一个鼠标事件时间 1041 之后,第二个差异为 6,即1041(新点)与 1035(最佳预测)的距离。预测是通过将之前的第 0 个 diff 值 1030 添加到之前的第 1 个 diff 值 5 来获得的。
使用最小增量:我最好的猜测是熵估计器选择最小值,因为它最适合第 (i-1) 次差异(或第 (i-1) 次多项式)。我想我理解这种方法是如何选择最合适的,但我真的不明白“为什么”。
我的疑问/问题是:
- 我可能忽略了一些明显的东西,但我仍然看不到我对 n 次多项式拟合的想法之间的关系(例如,使用最小二乘法的多项式回归)。
- 选择最小增量的实际理由是什么?为什么它可以很好地衡量下一个数据点的意外程度?是因为最小增量是最保守的吗?