尽管在 O(n^d) 维空间中工作,但我无法理解计算内核 K(x,z) 仅需要线性时间。请解释一下。我是 ML 的新手。
问问题
89 次
1 回答
1
为了计算K(x, z)
,您必须:
- 执行
O(n)
乘法x1 * z1
,x2 * x2
, ...,xn * zn
, - 执行
O(n)
加法(x1 * z1) + (x2 * x2) + ... + (xn * zn)
, - 执行两个
O(1)
操作_ + c
和_ ^ d
。
因此,计算K(x, z) = (dot(x, z) + c)^d
需要O(n)
时间。
特征空间的维度比计算内核所需的时间高得多是完全正常的:否则我们一开始就不需要内核,因为我们可以直接计算特征向量。
如果您想要一个更极端的示例,请查看K(x, y) = min(x, y)
非负实数x, y
。评估需要恒定的时间min(x, y)
。然而,特征空间是L^2(R)
(实线上的平方可积函数,与标准希尔伯特空间标量积),特征映射是phi(x) = chi_{[0, x]}
,其中chi_{[0, x]}
表示区间 的特征函数[0, x]
。因此,特征空间是无限维的,但评估内核所需的时间是恒定的。
于 2018-06-02T11:01:38.923 回答