关于机器学习中内核技巧的直觉
Posted
技术标签:
【中文标题】关于机器学习中内核技巧的直觉【英文标题】:Intuition about the kernel trick in machine learning 【发布时间】:2014-02-24 20:43:22 【问题描述】:我已经成功实现了一个使用 RBF 内核的内核感知器分类器。我知道内核技巧将特征映射到更高的维度,以便可以构造线性超平面来分离点。例如,如果您有特征 (x1,x2) 并将其映射到 3 维特征空间,您可能会得到:K(x1,x2) = (x1^2, sqrt(x1)*x2, x2^2)
。
如果您将其插入感知器决策函数 w'x+b = 0
,您最终会得到:w1'x1^2 + w2'sqrt(x1)*x2 + w3'x2^2
,它为您提供了一个循环决策边界。
虽然内核技巧本身非常直观,但我无法理解其中的线性代数方面。有人可以帮助我了解我们如何能够在不明确指定它们的情况下仅使用内积来映射所有这些附加功能吗?
谢谢!
【问题讨论】:
【参考方案1】:我不确定我是否在回答您的问题,但我记得“诀窍”是您没有明确计算内积。感知器计算分隔集群的直线。要获得曲线甚至圆形,您可以更改包含集群的空间,而不是更改感知器。这是通过使用通常称为 phi 的变换来完成的,该变换将坐标从一个空间变换到另一个空间。然后将感知器算法应用到新的空间中,它会生成一条直线,但是当这条线被转换回原始空间时,它可以是弯曲的。
诀窍是感知器只需要知道它试图分离的集群点的内积。这意味着我们只需要能够计算变换点的内积。这就是内核所做的 K(x,y) =
我认为有一个定理说,如果内核所代表的空间比原始空间具有更高的维度,它可能会更好地分离集群。
【讨论】:
【参考方案2】:简单。
给我一些 x 和 y 值的 (x+y)^10 的数值结果。
您更愿意做什么,“作弊”并求和 x+y,然后将该值取 10 次方,或者扩展写出的确切结果
x^10+10 x^9 y+45 x^8 y^2+120 x^7 y^3+210 x^6 y^4+252 x^5 y^5+210 x^4 y^6+120 x^3 y^7+45 x^2 y^8+10 x y^9+y^10
然后计算每个项,然后将它们加在一起?显然,我们可以评估 10 次多项式之间的点积,而无需明确形成它们。
有效内核是点积,我们可以“作弊”并计算两点之间的数值结果,而无需形成它们的显式特征值。有很多这样的可能的内核,尽管只有少数在论文/实践中得到了广泛使用。
【讨论】:
【参考方案3】:其实没什么大不了的
较高空间的权重是
w = sum_ia_i^t * Phi(x_i)
和更高空间中的输入向量
Phi(x)
这样在较高空间的线性分类是
w^t * input + c > 0
如果你把这些放在一起
sum_ia_i * Phi(x_i) * Phi(x) + c = sum_ia_i * Phi(x_i)^t * Phi(x) + c > 0
最后一个点积的计算复杂度与维数成线性关系(通常难以处理或不需要)
我们通过转到内核“点积的神奇答案”来解决这个问题
K(x_i, x) = Phi(x_i)^t * Phi(x)
给了
sum_ia_i * K(x_i, x) + c > 0
【讨论】:
以上是关于关于机器学习中内核技巧的直觉的主要内容,如果未能解决你的问题,请参考以下文章
怎样开启成功的“数据分析师”职业生涯(RPython机器学习通信和数据可视化数据直觉)
当机器学习遇到数据量不够时,这几个 Python 技巧为你化解难题
吴恩达机器学习_62非线性假设/63神经元与大脑/6465模型展示/6870例子与直觉理解