He visto algunos trabajos interesantes realizados con Support Vector Machines. Creo que con el aumento de la potencia informática obtendremos muchas aplicaciones interesantes para ellos.
Se optimizan para clasificar conjuntos de datos (como un clasificador lineal binario), pero pueden lograr algo muy bueno para hacer esencialmente el mismo truco no lineal que hacen las redes neuronales. Lo realmente poderoso que tienen las ANN es la capacidad de aproximar funciones no lineales. Los SVM hacen trampa para lograr esto.
Para separar datos no lineales, pueden usar algo llamado truco del núcleo para empujar esencialmente los datos artificialmente a un espacio dimensional superior para que se separe mediante un hiperplano.
- ¿Por qué el entrenamiento con la unidad softmax en redes neuronales es manejable si la función de partición es intratable?
- ¿Prefieres quedarte como estás o convertirte en un cyborg?
- ¿Cuál es la próxima gran novedad en la industria del software, aparte de la inteligencia artificial y la robótica?
- ¿Hay alguna forma de usar redes neuronales (NN) para estimar los daños de un litigio pendiente?
- ¿Qué técnicas en el aprendizaje automático son útiles para modelar el comportamiento de un usuario solo a partir de sus hábitos para tomar decisiones inteligentes?
Aquí hay un ejemplo de algunos datos bidimensionales:
Originalmente no era separable linealmente, pero cuando le agrega un núcleo, puede empujarlo a un espacio dimensional más alto (3D) y luego el SVM puede ser entrenado para usar un plano 2D para separar los datos.
El uso del truco del kernel con SVM hace que esto suceda de manera muy rápida y eficiente (utiliza un producto interno para lograr esto, por lo que en realidad no tiene que generar todas esas coordenadas adicionales).
Este es un ejemplo bastante básico; puede tomar muchas más dimensiones iniciales e insertarlas en espacios de características dimensionales mucho más altos de lo que podríamos graficar, y el truco del núcleo le permite hacerlo de manera relativamente económica.
Desearía tener una copia del gráfico a mano, pero vi un caso de uso real de uno de estos en una conferencia reciente donde utilizaron una SVM para separar los perfiles médicos de las personas para determinar si algún medicamento para la artritis reumatoide sería efectivo para ellos. El medicamento tuvo aproximadamente un 80% de efectividad. En algunos casos no hizo nada para los pacientes, y en otros tuvo efectos adversos. En el pasado, lo mejor que podían decir era probarlo y ver qué pasa.
Esto era algo que no era factible decir hace 10 años, pero ahora tenemos la potencia informática (en mainframes) para llevarlo a cabo. Miró a través de un espacio de características masivas (si recuerdo correctamente 10s de miles de entradas) por las que pasó, finalmente seleccionó un número mucho menor de las relevantes y generó un hiperplano para separar a los pacientes con una precisión extremadamente alta.
Aparte de las ANN, las SVM parecen ser un lugar interesante para estar en ML.