Ядро - это способ вычисления точечного произведения двух векторов и в некотором (возможно, очень многомерном) пространстве признаков, поэтому функции ядра иногда называют «обобщенным точечным произведением».уИксY
Предположим, у нас есть отображение которое переносит наши векторы из в некоторое пространство признаков . Тогда скалярное произведение и в этом пространстве равно . Ядром является функция которая соответствует этому точечному произведению, то есть .R n R m x y φ( x ) T φ( y )kk( x , y )=φ( x ) T φ( y )φ:рN→ RмрNрмИксYφ ( х )Tφ ( у )Кk ( x , y ) = φ ( x )Tφ ( у )
Почему это полезно? Ядра позволяют вычислять точечные произведения в некотором пространстве признаков, даже не зная, что это за пространство и что такое .φ
Например, рассмотрим простое ядро полинома с . Кажется, это не соответствует какой-либо функции отображения , это просто функция, которая возвращает действительное число. Предполагая, что и , давайте расширим это выражение:x , y ∈ R 2 φ x = ( x 1 , x 2 ) y = ( y 1 , y 2 )k ( x , y ) = ( 1 + xTу )2x , y ∈ R2φх =( х1, х2)у =( у1, у2)
k ( x , y )= ( 1 + хTу )2= ( 1 + х1Y1+ х2Y2)2знак равно= 1 + х21Y21+ х22Y22+ 2 х1Y1+ 2 х2Y2+ 2 х1Икс2Y1Y2
Обратите внимание, что это не что иное, как скалярное произведение между двумя векторами и и . Таким образом, ядро вычисляет скалярное произведение в 6-мерное пространство без явного посещения этого пространства.(1,y 2 1 ,y 2 2 , √( 1 , х21, х22, 2-√Икс1, 2-√Икс2, 2-√Икс1Икс2)φ(x)=φ(x1,x2)=(1,x 2 1 ,x 2 2 , √( 1 , у21, у22, 2-√Y1, 2-√Y2, 2-√Y1Y2)k(x,y)=(1+ x Ty)2=φ(x)Tφ(y)φ ( x ) = φ ( x1, х2) = ( 1 , х21, х22, 2-√Икс1, 2-√Икс2, 2-√Икс1Икс2)k ( x , y ) = ( 1 + xTу )2= φ ( х )Tφ ( у )
Другим примером является гауссово ядро . Если мы расширим эту функцию по Тейлору, то увидим, что она соответствует бесконечномерному кодомену . φk ( x , y ) = exp( -γ∥ x - y ∥2)φ
Наконец, я рекомендую онлайн-курс «Изучение данных» профессора Ясера Абу-Мостафы как хорошее введение в методы, основанные на ядре. В частности, лекции «Машины опорных векторов» , «Методы ядра» и «Функции радиального базиса» посвящены ядрам.
Очень простой и интуитивно понятный подход к ядрам (по крайней мере для SVM) - это функция подобия. Учитывая два объекта, ядро выводит некоторую оценку сходства. Объекты могут быть чем угодно, начиная с двух целых чисел, двух вещественных векторов, деревьев, независимо от того, что функция ядра знает, как их сравнивать.
Возможно, самый простой пример - линейное ядро, также называемое точечным произведением. Учитывая два вектора, сходство - это длина проекции одного вектора на другой.
Еще один интересный пример ядра - ядро Гаусса. Учитывая два вектора, сходство будет уменьшаться с радиусом . Расстояние между двумя объектами "перевешивается" этим параметром радиуса.σ
Успех обучения с ядрами (опять же, по крайней мере, для SVM) очень сильно зависит от выбора ядра. Вы можете видеть ядро как компактное представление знаний о вашей проблеме классификации. Это очень часто проблема конкретная.
Я бы не назвал ядро функцией принятия решения, поскольку ядро используется внутри функции принятия решения. Учитывая точку данных для классификации, функция принятия решений использует ядро, сравнивая эту точку данных с рядом опорных векторов, взвешенных по изученным параметрам . Опорные векторы находятся в области этой точки данных и по изученным параметрам находятся алгоритмом обучения.αα α
источник
Наглядный пример, чтобы помочь интуиции
Рассмотрим следующий набор данных, в котором желтые и синие точки явно не могут быть линейно разделены в двух измерениях.
Если бы мы могли найти пространство более высокой размерности, в котором эти точки были бы линейно отделимыми , то мы могли бы сделать следующее:
Существует много пространств более высокого измерения, в которых эти точки линейно отделимы. Вот один пример
Это где трюк с ядром вступает в игру. Цитируя приведенные выше отличные ответы
Если бы мы могли найти функцию ядра, которая была бы эквивалентна приведенной выше карте возможностей, то мы могли бы вставить функцию ядра в линейный SVM и выполнять вычисления очень эффективно.
Полиномиальное ядро
Оказывается, что приведенное выше отображение признаков соответствует хорошо известному ядру полинома : . Пусть и получимК( х , х') = ( хTИкс')d d= 2 х =( х1, х2)T
Визуализация карты объектов и результирующей границы
Источник
источник
Очень просто (но точно) ядро является весовым фактором между двумя последовательностями данных. Этот весовой коэффициент может назначать больший вес одной « точке данных » в одну « точку времени », чем другой « точке данных », или назначать равный вес или назначать больший вес другой « точке данных » и так далее.
Таким образом, корреляция ( скалярное произведение ) может назначать больше «важности» в некоторых точках, чем в других, и, таким образом, справляться с нелинейностями (например, неплоскими пространствами ), дополнительной информацией, сглаживанием данных и так далее.
Еще одним способом является то, что ядро - это способ изменить относительные измерения (или единицы измерения ) двух последовательностей данных, чтобы справиться с вещами, упомянутыми выше.
Третий способ (связанный с двумя предыдущими) - это способ отображения или проецирования одной последовательности данных на другую способом 1: 1 с учетом заданной информации или критериев (например, искривленное пространство, пропущенные данные, данные). повторный заказ и тд). Так, например, данное ядро может растягивать или сжимать или обрезать или сгибать одну последовательность данных, чтобы соответствовать или отображать 1-к-1 на другую.
Ядро может действовать как Прокруст , чтобы « лучше всего подходить »
источник