¿Fallarán todos los modelos de aprendizaje automático en este conjunto de datos?

No es una respuesta definitiva, sino un puntero de dónde viene este problema.

Los modelos de aprendizaje automático funcionan como aproximaciones si se realizan asignaciones lineales con umbrales. Una forma de pensarlo es: Dada una matriz M1 y una función de reducción que produce la respuesta correcta, ¿hay una matriz más pequeña que pueda dar una respuesta aproximada?

¿Qué tan grande es el mapeo matricial de esta función y cómo se ve? Hay dos enfoques que podemos usar:

a) Construya una matriz que agregue los 100 dígitos. La suma estará entre 0 y 900. Ahora necesitamos una función de reducción que pueda distinguir con precisión entre estos valores de 900 para números pares e impares. Aunque ambas operaciones son matrices bastante pequeñas, tienen que operar con mucha precisión (1 en 1000). Eso es muy difícil para el aprendizaje automático.

b) Una matriz mucho más grande que filtra cada uno de los dígitos y los asigna a 0 o 1. Luego los resume. Además, la función de reducción final ahora es manejable, la matriz de filtro original tiene una estructura y un tamaño desagradables y tampoco se puede aproximar fácilmente.

Entonces, diría que la respuesta es NO: esto no se puede lograr fácilmente con el aprendizaje automático tradicional.

Voy a suponer que le dará al algoritmo las entradas como decimales, truncadas a algunos dígitos después del decimal mayor que [math] N [/ math]. En ese caso, el problema no parece tan difícil.

Tratemos de ver de dónde proviene la complejidad en el aprendizaje: para una tarea determinada, si la representación de la entrada es tal que en el espacio dado, las entradas que están lo suficientemente cerca tienen etiquetas diferentes con bastante frecuencia, entonces el algoritmo de aprendizaje necesita mapear los datos a otro espacio donde los puntos de datos son más separables . Encontrar este mapeo no es trivial y, a menudo, es la razón de la complejidad. Este es también el llamado “aprendizaje de características”, ya que las dimensiones del nuevo espacio pueden considerarse como características a aprender.

Ahora, en la tarea dada, dos números reales que están muy cerca probablemente tendrán los mismos primeros dígitos [matemáticos] N [/ matemáticos] (la mayoría de las veces). Entonces, con una cantidad suficiente de datos de entrenamiento, un algoritmo como k vecinos más cercanos con k = 1 debería funcionar razonablemente bien aquí. De manera similar, SVM predice la etiqueta promedio de los puntos cercanos al punto de prueba dado; por lo que también debería hacer un buen trabajo con el kernel RBF.

Los algoritmos que solo pueden aprender límites de decisión lineales obviamente no funcionarán bien, ya que los datos no son linealmente separables. Para algoritmos como las redes neuronales, es difícil decir a priori cómo funcionará, porque no son muy interpretables, pero supongo que también deberían funcionar bastante bien, dado que la tarea no es tan difícil como otras tareas complejas resuelto con éxito por estos algoritmos.

Así es como se ve el problema con [matemáticas] N = 2 [/ matemáticas] (el primer eje es el primer decimal, el segundo eje es el segundo decimal):

El paisaje es similar para dimensiones superiores. Hasta donde puedo ver, con las técnicas clásicas de aprendizaje automático, la única forma posible de resolver el problema con una precisión del 100% es tener todas las combinaciones posibles en el conjunto de entrenamiento y usar una tabla de búsqueda (o más generalmente un vecino 1-NN). Sin embargo, esto se vuelve exponencialmente más difícil a medida que aumenta [matemática] N [/ matemática].

Básicamente, la razón de esto es que la distancia euclidiana es altamente defectuosa en este caso. De hecho, casi cualquier métrica posible es mala. Solo se me ocurre una posibilidad: podemos decir que dos puntos están “cercanos” en este espacio si el módulo de su distancia de Manhattan es uniforme (bueno, básicamente estoy haciendo trampa). Si define un núcleo con esta propiedad, imagino que un SVM puede funcionar razonablemente mejor. De hecho, una de las cosas buenas de los métodos del núcleo es que puede insertar este tipo de conocimiento a priori en el problema.

Puede demostrar matemáticamente que una red neuronal con dos capas y funciones de salida sigmoideas puede aproximar cualquier función continua a la precisión que necesita.

Puedes probarlo fácilmente con esta pequeña red neuronal en Python:

Una red neuronal en 11 líneas de Python (Parte 1)

Si tiene problemas para escribir el código para generar los datos, deje un comentario y lo agregaré por usted.

Si N es un entero fijo, entonces la clasificación solo depende del número de dígitos pares e impares en el número. Entonces, un simple truco de ingeniería de características convierte el conjunto de datos en dos columnas: #of_odd_digits, #of_even_digits y luego creo que cualquier algoritmo puede aprender rápidamente a clasificar los números.

Si no desea utilizar la ingeniería de características y los datos sin procesar, funcionará un árbol de decisión simple, por ejemplo para N = 3:

si el primer dígito es impar y el segundo dígito es impar y el tercer dígito es impar, entonces 1

si el primer dígito es impar y el segundo dígito es impar y el tercer dígito es par, entonces 0

si el primer dígito es impar y el segundo dígito es par y el tercer dígito es impar, entonces 1

etc.

Puede dibujar rápidamente el árbol de decisión para cualquier valor fijo de N.

Tal vez me estoy perdiendo algo …

No creo que haya un modelo de aprendizaje automático que pueda resolver este problema sin una ingeniería de características adecuada (como lo propone Luis Argerich, pero esto supone que tiene algunas ideas sobre el modelo subyacente) o algún tipo de “aprendizaje de memoria” (el 1 -NN solución propuesta por Simone o la solución por Tobias, que básicamente utiliza una red neuronal compleja posiblemente infinita para recordar muestras de entrenamiento). Probar esto podría requerir conocimiento de la teoría del aprendizaje.

More Interesting

¿Cómo compararías hacer un doctorado en ML (principalmente aprendizaje profundo) en Duke, UC Irvine y Georgia Tech?

¿Qué métodos de aprendizaje automático lo llevarán al top 10 de las competencias de kaggle?

¿Cuántos datos se producen diariamente y cómo se obtuvo esa cifra?

¿Cuáles son las ventajas de aprender el aprendizaje automático desde el punto de vista profesional?

¿Cuáles son los desafíos tecnológicos involucrados en alimentar el código fuente de una máquina Linux y hacer que aprenda a codificar un núcleo Linux similar?

¿Cuál es un buen lugar para comenzar a trabajar en el uso del aprendizaje automático para el modelado de riesgo de crédito?

¿Deberíamos comenzar con Tensorflow, Keras o Sonnet para desarrollar un sistema de predicción de datos de series temporales? ¿Debemos usar solo lenguajes basados ​​en Python?

¿Qué métodos (sin supervisión) deberían usarse para la categorización jerárquica automática de documentos?

¿Hay un LSTM en TensorFlow que procesa un carácter a la vez?

¿Se utiliza el cálculo integral en Machine Learning o Deep Learning?

¿Qué es el análisis de componentes principales?

¿Cuáles serán las características de la próxima generación de servicios de monitoreo social?

¿Qué tiene de bueno la PNL?

¿Siguen siendo relevantes los enfoques simbólicos de IA después de los recientes éxitos del aprendizaje profundo?

¿Cuál es la solución del ejercicio 1.3 del libro Machine Learning de Tom M. Mitchell?