Primero, me gustaría decir que el aprendizaje automático es del 10% sobre modelos y del 90% sobre metodología, y esa metodología no es muy específica del problema:
- ¿Cómo define el problema? ¿Cuál es tu objetivo? ¿Cuál es la pregunta que estás tratando de responder? ¿Cuál es un ejemplo en su conjunto de datos?
- ¿Cómo elige y genera características que son relevantes para su objetivo?
- ¿Cómo se validan los resultados de forma cruzada, qué significa la métrica de validación para la empresa?
- ¿Cómo sacar provecho del modelo en producción? ¿Hay algún problema en particular, como bucles de retroalimentación ocultos o biais de presentación?
Dicho esto, déjame intentar responder y hablar sobre modelos:
Para mí, los bosques aleatorios y los árboles potenciados por gradientes (XGBoost) harán el truco la mayor parte del tiempo.
- Videojuegos: ¿Qué tan difícil es crear NPC / IAs similares a los humanos?
- ¿Podría enseñarle a un robot a caminar imitando un escenario de 'carrera de tres patas'?
- ¿Cuáles son algunos buenos temas de investigación en redes neuronales artificiales o minería de datos?
- ¿Cómo diseñarías una red neuronal que aprende a jugar trackmania?
- Después del curso de ML de Andrew Ng, ¿debo hacer el curso de red neuronal de Geoffrey Hinton antes de hacer un aprendizaje profundo? ¿Cuánto conocimiento de redes neuronales es lo suficientemente bueno como para comenzar a hacer un aprendizaje profundo?
Al final del día, los SVM, KNN, redes neuronales, etc. son una gran parte de la literatura de aprendizaje automático, pero pocas personas los usan y a menudo los superan los árboles ensamblados. Los árboles ensamblados son muy robustos, pueden manejar todo tipo de variables, son fáciles de ajustar, capaces de generar representaciones no lineales de los datos fácilmente, rápidos de entrenar, se pueden interpretar si trabajas un poco en ellos … Siempre dales un disparó primero.
En segundo lugar, el modelo es importante pero hay más: las variables con las que está aprendiendo. La forma en que se procesan las variables es un problema y un dominio específico.
Algunos casos :
- Serie de tiempo : Tendrá que generar características para su modelo específicas de este tipo de datos antes de alimentar el algoritmo. Por ejemplo, promedios móviles, representación agrupada de sus datos, minería de patrones con SPADE, etc. Puede alimentar eso a un RF
- Datos de texto : debe generar características como TFIDF de las palabras, derivar las palabras, usar la representación de word2vec, etc.
- Datos de gráficos : tiene algunas posibilidades de usar algoritmos de gráficos para crear características para su modelo, como la centralidad de los nodos, por ejemplo …
Creo que los árboles ensamblados y la ingeniería de características específicas del dominio cubren el 90% de los problemas en los que he trabajado … pero, sí, hay otros casos en los que la ingeniería de características no es la respuesta y necesitas usar modelos y enfoques específicos :
- Imágenes (o cualquier tipo de datos que esté muy desestructurado y que pueda ser complicado) : el estado actual de la técnica son los algoritmos de aprendizaje profundo, debo mencionarlo, pero no veo mucha gente trabajando en imágenes, excepto Google, Facebook o laboratorios especializados de investigación.
- Datos cuya señal está cambiando realmente rápido : imagine que se encuentra en un caso en el que no puede usar datos demasiado antiguos para predecir los siguientes ejemplos con precisión, por lo que necesita una especie de algoritmo que aprenda ejemplo tras ejemplo y maximice el conocimiento de los últimos datos. A esto se le llama aprendizaje en línea, y la mejor biblioteca para eso es Wongpal Wabbit. Para mí, a menudo ha sido útil para modelar procesos industriales o fenómenos sociales.
- Preferencia de usuario de modelado : motores de recomendación aquí … puede usar árboles con clasificación multiclase, pero solo ayudarán a modelar comportamientos como su preferencia según el contexto, el tiempo de la recomendación, por ejemplo. No “gusto”.
Como conclusión, la principal dificultad es definir el problema y una forma de validar los resultados. Cuando está hecho, siempre puedes dar una oportunidad con árboles ensamblados. En algunos casos, tendrá que generar funciones específicas para su tipo de datos (series de tiempo, texto, gráfico …). En algunos otros casos, el problema es totalmente diferente y puede resolverse con campos más específicos en el aprendizaje automático (reconocimiento de imágenes / aprendizaje profundo, motores de recomendación, aprendizaje en línea …).