En primer lugar: como el aprendizaje automático es un campo muy amplio, hay muchas maneras de resolver este problema. En mi respuesta, destacaré una mala forma de utilizar el aprendizaje automático para resolver este problema y una mejor manera de resolverlo.
EL MALO CAMINO:
Imagine el siguiente código en R:
- ¿Cómo podemos suprimir el ruido de fondo en un teléfono durante una llamada telefónica?
- ¿Existe alguna herramienta o API capacitada en datos de tweets para la extracción de entidades con nombre?
- ¿Usarías un mejor cuaderno Jupyter?
- ¿Hay proveedores de reconocimiento de voz que aún brinden soluciones de servidor en las instalaciones (no en la nube) en 2017?
- ¿Hay algún otro enfoque para resolver el sobreajuste además de la deserción y la normalización por lotes en el aprendizaje profundo?
#create dataset
primero <- c (1,2,3)
segundo <- c (4,5,6)
resultado <- c (8,12,21)
entrenamiento <- data.frame (primero, segundo, resultado)
primero <- c (8)
segundo <- c (11)
clasificación <- data.frame (primero, segundo)
#call método ML
modelo <- lm (resultado ~., datos = entrenamiento)
predecir (modelo, clasificación)
Esta es una regresión lineal simple en los datos que proporcionó y, como podría haber adivinado, el resultado es incorrecto . Este código corto devuelve un resultado estimado de 52,66.
La razón de esto es que una regresión lineal en R lm usa el método de regresión de mínimos cuadrados ordinarios, que asume coeficientes fijos para cada parámetro.
Coeficientes
(Intercepción) primer segundo
0.6667 6.5000 NA
EL MEJOR CAMINO:
Los algoritmos de computación evolutiva y, más precisamente, la subdisciplina de la programación genética permiten a las computadoras probar una gran variedad de combinaciones de pequeños programas. En la investigación actual, estos programas generalmente se modelan como regresiones basadas en árboles. Se puede suponer que su ejemplo es una regresión. Consulte el siguiente ejemplo para comprender mejor cómo funciona esto:
(en su caso, solo tendríamos a y b, pero no c como entrada)
Un número fijo de estos árboles se genera aleatoriamente al comienzo del algoritmo y, en consecuencia, se denomina población. Estos árboles aleatorios están determinados por los Operadores (división, multiplicación, más, menos), Terminales (parámetros, números aleatorios o fijos) y Restricciones (es decir, profundidad del árbol, número de carreras …).
El algoritmo se basa en problemas de optimización e intenta minimizar o maximizar un cierto “valor de aptitud”. En su caso, desearíamos minimizar la cantidad de elementos calculados incorrectamente (máx .: 3, mín .: 0).
El algoritmo puede entonces mejorar los árboles en la población. Para hacerlo, utiliza algún método probablístico que tiene una alta probabilidad de seleccionar uno o dos árboles buenos (léase: menor número de elementos calculados incorrectamente). Luego, con los árboles seleccionados, aplica uno de los dos métodos siguientes:
- Mutación: Reemplazar aleatoriamente un subárbol o una Terminal
- Crossover: Intercambiar subárboles o terminales de un árbol en la población a otro.
Este algoritmo, si se escribe correctamente, siempre encontrará la respuesta correcta . El gran problema es, como ocurre con muchos algoritmos de aprendizaje automático: ¿es esta la mejor manera de resolver este problema y se generalizará?
Esto casi siempre depende de la forma en que se configura / escribe el algoritmo y de la cantidad de datos disponibles.
Pero para responder su pregunta brevemente: usaría un algoritmo de programación genética para responder esta tarea, si es necesario aplicar el aprendizaje automático.