我已经成功实现了使用RBF内核的内核perceptron分类器。我知道内核技巧映射的特征是更高的维度,因此可以构建线性超平面以分离点。例如,如果您具有功能(x1,x2),并将其映射到可能会得到的3维功能空间:K(x1,x2) = (x1^2, sqrt(x1)*x2, x2^2)
。
如果将其插入PERCEPTRON决策功能w'x+b = 0
,则最终会得到:w1'x1^2 + w2'sqrt(x1)*x2 + w3'x2^2
,它为您提供圆形决策边界。
虽然内核技巧本身非常直观,但我无法理解它的线性代数方面。有人可以帮助我了解我们如何仅使用内部产品来映射所有这些附加功能而不明确指定它们?
谢谢!
简单。
对于x和y的某些值,给我(x y)^10的数字结果。
您宁愿做什么,"作弊"和sum 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度多项式之间评估DOT产品,而无需明确形成它们。
有效的内核是点产品,我们可以在其中"作弊"并在两个点之间计算数字结果,而不必形成其明确的特征值。有很多这样的内核,尽管只有少数在论文/练习中使用了很多。
我不确定我是否在回答您的问题,但是我记得"技巧"是您没有明确计算内部产品。感知器计算分离簇的直线。要获得曲线甚至圆圈,而不是更改感知器,您可以更改包含簇的空间。这是通过使用通常称为PHI的转换来完成的,该转换将坐标从一个空间转换为另一个空间。然后将感知算法应用于新的空间,在该新空间中产生直线,但是当该线转换回原始空间时,它可以弯曲。
诀窍是,感知者只需要了解它试图分开的群集点的内部产物。这意味着我们只需要能够计算转换点的内部产品即可。这就是内核k(x,y)=< phi(x),phi(y)><。,。>是新空间中的内部产品。这意味着无需对新空间进行所有转换,我们甚至不需要明确知道变换phi()是什么。所需的只是K在某些空间中定义内部产品,并希望这种内部产品和空间对于分离我们的群集很有用。
我认为有一些定理说,如果内核代表的空间比原始空间更高,则可能会更好地分离簇。
确实没有太多
较高空间中的重量是 w = sum_i{a_i^t * Phi(x_i)}
和较高空间中的输入向量 Phi(x)
使较高空间中的线性分类为
w^t * input + c > 0
所以如果您将它们放在一起
sum_i{a_i * Phi(x_i)} * Phi(x) + c = sum_i{a_i * Phi(x_i)^t * Phi(x)} + c > 0
最后一个点产品的计算复杂性是对维度数的线性(通常是棘手或不想要的)
我们通过转到内核"魔术答案"
来解决此问题 K(x_i, x) = Phi(x_i)^t * Phi(x)
给出
sum_i{a_i * K(x_i, x)} + c > 0