No es posible encontrar un hiperplano o un límite de decisión lineal para algunos problemas de clasificación. Si proyectamos los datos en una dimensión superior desde el espacio original, podemos obtener un hiperplano en la dimensión proyectada que ayuda a clasificar los datos.
Como mostramos en la figura anterior, es imposible encontrar una sola línea para separar las dos clases (verde y azul) en el espacio de entrada. Pero, después de proyectar los datos en una dimensión superior (es decir, el espacio de características en la figura), pudimos encontrar el hiperplano que clasifica los datos. Kernel ayuda a encontrar un hiperplano en el espacio dimensional superior sin aumentar mucho el costo computacional. Por lo general, el costo computacional aumentará si aumenta la dimensión de los datos.
- ¿Qué significa el impulso en las redes neuronales?
- ¿Qué haces como programador de Machine Learning y qué hace que lo que haces sea interesante?
- ¿Qué significa cuando obtengo buenos resultados de la medida F con un CV de 10 veces pero resultados pobres en los datos de la prueba, resultados similares si participo el conjunto de datos original en el conjunto de entrenamiento / validación? Obtengo buenos resultados en la validación pero malos resultados en el conjunto de pruebas.
- ¿Cuáles son los problemas interesantes en la 'automatización de big data'?
- ¿Qué es mejor para la detección de automóviles: Haar Cascade o HOG?
¿Cómo es que Kernel no aumenta la complejidad computacional?
Sabíamos que el producto escalar de los mismos dos vectores dimensionales da un solo número. Kernel utiliza esta propiedad para calcular el producto punto en un espacio diferente sin siquiera visitar el espacio.
Supongamos que tenemos dos características. Significa que la dimensión del punto de datos es [math] \ mathbb R ^ 2. [/mates]
[matemáticas] x_ {i} = \ begin {bmatrix} x_ {i1} \\ x_ {i2} \ end {bmatrix} \ tag * {} [/ math]
i en el subíndice x representa los puntos de datos. Del mismo modo, 1 y 2 en el subíndice x denotan las características. Además, suponga que estamos aplicando alguna función de transformación para convertir el espacio de entrada bidimensional (dos características) en un espacio de característica cuatridimensional que es [matemáticas] (x_ {i1} ^ {2}, x_ {i1} x_ {i2} x_ {i2} x_ {i1}, x_ {i2} ^ {2}). [/ math] Requiere [math] \ mathcal {O} (n ^ {2}) [/ math] tiempo para calcular n puntos de datos en el espacio de cuatro dimensiones. Para calcular el producto escalar de dos vectores en el espacio de cuatro dimensiones / espacio transformado, la forma estándar es
1. Convierta cada punto de datos de [math] \ mathbb R ^ 2 \ a \ mathbb R ^ 4 [/ math] aplicando la transformación. (He tomado dos puntos de datos [matemáticas] x_ {i} [/ matemáticas] y [matemáticas] x_ {j} [/ matemáticas])
[matemáticas] \ phi (x_ {i}) = \ begin {bmatrix} x_ {i1} ^ {2} \\ x_ {i1} x_ {i2} \\ x_ {i2} x_ {i1} \\ x_ {i2 } ^ {2} \ end {bmatrix} \ hspace {2cm} \ phi (x_ {j}) = \ begin {bmatrix} x_ {j1} ^ {2} \\ x_ {j1} x_ {j2} \\ x_ {j2} x_ {j1} \\ x_ {j2} ^ {2} \ end {bmatrix} \ tag * {} [/ math]
2. Producto de puntos los dos vectores.
[matemáticas] \ phi (x_ {i}). \ phi (x_ {j}) \ tag * {} [/ matemáticas]
Como dije antes, la función Kernel calcula el producto punto en el espacio diferente sin siquiera visitarlo. La función del núcleo para la transformación anterior es
[matemáticas] K (x_ {i}, x_ {j}) = (x_ {i} ^ {T} x_ {j}) ^ {2} \ tag {1} [/ matemáticas]
Ejemplo:
Digamos que [matemáticas] x_ {i} = \ begin {bmatrix} 1 \\ 2 \ end {bmatrix} \ hspace {0.5cm} \ text {and} \ hspace {0.5cm} x_ {j} = \ begin {bmatrix } 3 \\ 5 \ end {bmatrix}. [/ Math]
El producto de punto en el espacio de cuatro dimensiones por la forma estándar es
[matemáticas] = \ begin {bmatrix} 1 \\ 2 \\ 2 \\ 4 \ end {bmatrix} \ cdot \ begin {bmatrix} 9 \\ 15 \\ 15 \\ 25 \ end {bmatrix} = 9 + 30 + 30 + 100 = 169 \ etiqueta * {} [/ matemáticas]
El producto de punto anterior se puede calcular utilizando la función del núcleo anterior (ecuación 1) sin siquiera transformar el espacio original.
[matemáticas] K (x_ {i}, x_ {j}) = \ begin {bmatrix} 1 \\ 2 \ end {bmatrix} \ cdot \ begin {bmatrix} 3 \\ 5 \ end {bmatrix} = (3+ 10) ^ {2} = 169. [/ Matemáticas]
El método estándar para calcular el producto punto requiere tiempo [matemático] \ matemático {O} (n ^ {2}) [/ matemático]. Pero, el núcleo requiere solo [math] \ mathcal {O} (n) [/ math] time.
Kernel también puede considerarse como una medida de similitud. La medida de similitud cuantifica la similitud entre dos puntos de datos. El valor del kernel será grande si [math] \ phi (x_ {i}) [/ math] y [math] \ phi (x_ {j}) [/ math] están muy juntos. Será cero, si son ortogonales entre sí. Kernel no se puede aplicar a todos los algoritmos de aprendizaje automático. Se aplicará solo si el algoritmo solo necesita conocer el producto interno de los puntos de datos en el espacio de coordenadas. La forma dual de la función objetivo de SVM y sus restricciones se dan a continuación.
[matemáticas] L_ {D} = \ sum_ {i = 1} ^ {N} \ alpha_ {i} – \ frac {1} {2} \ sum_ {i = 1} ^ {N} \ sum_ {j = 1 } ^ {N} \ alpha_ {i} \ alpha_ {k} y_ {i} y_ {k} \ underset {\ text {Producto interno}} {(x_ {i} ^ {T} x_ {j})} \ etiqueta {2} [/ math]
[matemáticas] st: \ alpha_ {i} \ geq 0 \ tag * {} [/ matemáticas]
[matemáticas] \ hspace {0.5cm} \ sum_ {i = 1} ^ {N} \ alpha_ {i} \ y_ {i} = 0 \ tag * {} [/ matemáticas]
Solo requiere el producto interno de los puntos de datos en el espacio de coordenadas para determinar el hiperplano de separación. Entonces, podemos reemplazar eso por kernel.
[matemáticas] L_ {D} = \ sum_ {i = 1} ^ {N} \ alpha_ {i} – \ frac {1} {2} \ sum_ {i = 1} ^ {N} \ sum_ {j = 1 } ^ {N} \ alpha_ {i} \ alpha_ {k} y_ {i} y_ {k} K (x_ {i} ^ {T} x_ {j}) \ tag * {} [/ math]