¿Cuál es el mejor enfoque para dominar los algoritmos de aprendizaje automático?

Existen múltiples escenarios en los que un estudiante o un profesional desean obtener una mejor comprensión de un algoritmo:

  • La teoría que sustenta el algoritmo y el rendimiento garantiza que proporciona
  • Sus características prácticas de rendimiento (por ejemplo, qué tan bien generaliza, cómo maneja los datos faltantes, ¿puede ser paralelo?)
  • Secundaré lo que mencionó Luis Argerich, cómo (y más importante, por qué) funciona en diferentes conjuntos de datos. Siento que este es el aspecto más importante para un profesional.

Continuando con el último punto, tomemos algunos conjuntos de datos diferentes y comparemos sus métricas de rendimiento en algoritmos similares. Por ejemplo, en un problema de clasificación, ¿cómo se compara el rendimiento de los algoritmos de bosques aleatorios, refuerzo y embolsado? Deberíamos poder preguntar y encontrar respuestas a preguntas como:

  • ¿Por qué un algoritmo funciona bien en un conjunto de datos y mal en otro (en comparación con otro algoritmo de la competencia)
  • ¿Podemos visualizar los límites de decisión de diferentes algoritmos?
  • ¿Cuánto se sobre-ajustan los diferentes algoritmos y qué se puede hacer para evitarlo?
  • ¿Qué tan bien manejan los diferentes algoritmos los problemas de datos, como la baja variación en las características, el número muy bajo (o muy alto) de instancias, los datos faltantes, etc.
  • Obtenga una idea del tiempo de entrenamiento frente al ROI de mejora del rendimiento (particularmente relevante para los modelos de red neuronal).

En última instancia, si bien el conocimiento de la teoría de un algoritmo es útil, lo que la mayoría de los profesionales de la ciencia de datos tratan a diario es aplicar algoritmos robustos a conjuntos de datos nuevos y novedosos. La implementación / mejora de nuevos algoritmos en conjuntos de datos existentes es un escenario de investigación y es poco común para un profesional.

Por lo tanto (desde la perspectiva del alumno), probar algoritmos competitivos en una variedad de conjuntos de datos ofrece más beneficios.

Puede tomar el curso a continuación que necesita matemáticas básicas de la escuela secundaria como requisito previo para aprender Machine Learning.

¿Interesado en el campo del aprendizaje automático? ¡Entonces este curso es para ti!

Los requisitos para tomar este curso son:

  • Solo un nivel de matemáticas de secundaria

Enlace al curso: Machine Learning AZ ™: Python práctico y R en ciencia de datos: aprenda a crear algoritmos de aprendizaje automático

Aprenda a crear algoritmos de aprendizaje automático en Python y R con dos expertos en ciencia de datos. Plantillas de código incluidas.

Este curso ha sido diseñado por dos científicos de datos profesionales para que podamos compartir sus conocimientos y ayudarlo a aprender teoría compleja, algoritmos y bibliotecas de codificación de una manera simple.

Te llevarán paso a paso al mundo del aprendizaje automático. Con cada tutorial, desarrollará nuevas habilidades y mejorará su comprensión de este desafiante pero lucrativo subcampo de la ciencia de datos.

Este curso es divertido y emocionante, pero al mismo tiempo se sumergen profundamente en Machine Learning. Está estructurado de la siguiente manera:

  • Parte 1: preprocesamiento de datos
  • Parte 2: Regresión: Regresión lineal simple, Regresión lineal múltiple, Regresión polinómica, SVR, Regresión de árbol de decisión, Regresión forestal aleatoria
  • Parte 3 – Clasificación: Regresión logística, K-NN, SVM, Kernel SVM, Naive Bayes, Clasificación del árbol de decisión, Clasificación aleatoria del bosque
  • Parte 4 – Agrupación: K-medias, agrupación jerárquica
  • Parte 5 – Aprendizaje de reglas de asociación: Apriori, Eclat
  • Parte 6 – Aprendizaje de refuerzo: límite de confianza superior, muestreo de Thompson
  • Parte 7 – Procesamiento del lenguaje natural: modelo de bolsa de palabras y algoritmos para PNL
  • Parte 8 – Aprendizaje profundo: redes neuronales artificiales, redes neuronales convolucionales
  • Parte 9 – Reducción de dimensionalidad: PCA, LDA, Kernel PCA
  • Parte 10 – Selección y refuerzo del modelo: validación cruzada k-fold, ajuste de parámetros, búsqueda de cuadrícula, XGBoost

Además, el curso está repleto de ejercicios prácticos basados ​​en ejemplos en vivo. Entonces, no solo aprenderá la teoría, sino que también obtendrá práctica práctica para construir sus propios modelos.

Y como beneficio adicional, este curso incluye plantillas de código Python y R que puede descargar y usar en sus propios proyectos.

¿Quién es el público objetivo?

  • Cualquier persona interesada en Machine Learning
  • Estudiantes que tienen al menos conocimientos de secundaria en matemáticas y que desean comenzar a aprender Machine Learning
  • Cualquier persona de nivel intermedio que conozca los conceptos básicos del aprendizaje automático, incluidos los algoritmos clásicos como la regresión lineal o la regresión logística, pero que quieran obtener más información y explorar todos los diferentes campos del aprendizaje automático.
  • Cualquier persona que no se sienta cómoda con la codificación pero que esté interesada en el aprendizaje automático y quiera aplicarla fácilmente en los conjuntos de datos.
  • Cualquier estudiante en la universidad que quiera comenzar una carrera en Data Science.
  • Cualquier analista de datos que quiera subir de nivel en Machine Learning.
  • Cualquier persona que no esté satisfecha con su trabajo y que quiera convertirse en Data Scientist.
  • Cualquier persona que desee crear valor agregado a su negocio mediante el uso de potentes herramientas de Machine Learning

¿Qué voy a aprender?

  • Master Machine Learning en Python & R
  • Tener una gran intuición de muchos modelos de Machine Learning
  • Hacer predicciones precisas
  • Haz un análisis poderoso
  • Hacer modelos robustos de aprendizaje automático
  • Crea un fuerte valor agregado para tu negocio
  • Usar Machine Learning para fines personales
  • Manejar temas específicos como el aprendizaje por refuerzo, PNL y aprendizaje profundo
  • Manejar técnicas avanzadas como la reducción de dimensionalidad
  • Sepa qué modelo de Machine Learning elegir para cada tipo de problema
  • Construya un ejército de poderosos modelos de Machine Learning y sepa cómo combinarlos para resolver cualquier problema.

Enlace al curso: Machine Learning AZ ™: Python práctico y R en ciencia de datos: aprenda a crear algoritmos de aprendizaje automático

Una pregunta muy difícil porque necesitamos definir a qué nos referimos al dominar un algoritmo de aprendizaje automático.

Dominar puede significar cosas muy diferentes, puede significar poder usar efectivamente un algoritmo en varios escenarios diferentes, puede significar poder codificar el algoritmo en un lenguaje de programación o puede significar conocer la teoría detrás del algoritmo y poder probar Varias propiedades del algoritmo.

Consideraré una interpretación amplia y asumiré que dominar significa todo lo anterior.

luego:

¿Debo escribir mi propia implementación de los algoritmos o usar cualquier paquete Python R (caret, RWeka) para el aprendizaje automático simplemente aplicando los algoritmos listos para usar?

Sí, debe escribir su propia implementación para asegurarse de que puede entender el algoritmo y ponerlo en forma de un programa de computadora. Por supuesto, no va a utilizar esa implementación, sino una estándar que probablemente tendrá menos errores, más optimización y más pruebas.

Lo interesante es que los algoritmos de aprendizaje automático tienen una faceta que no es muy común en los algoritmos regulares: dependen en gran medida de los datos. Por lo tanto, debe aplicar el algoritmo a diferentes conjuntos de datos y aprender cómo funciona el algoritmo en diferentes escenarios, lo que está haciendo es construir un juicio que es muy útil a menos que planee probar todos los algoritmos conocidos cada vez que tenga que resolver un problema.

Entonces sí, codifique, sí, use paquetes y sí, use varios conjuntos de datos diferentes.

hmm diría que depende de tu estilo de aprendizaje.

Esto es lo que funcionó para mí.

Me gusta entender las matemáticas detrás del algoritmo.

Entonces, para cualquier algoritmo que estudio, trato de llegar a los detalles más complejos.

¿Por qué es P (X / Y) y no P (Y / X), no importa cómo se formule el enunciado del problema, etc.?

Y si quieres aprender matemáticas, te sugiero que eches un vistazo al álgebra lineal básica. ¿Cómo funciona la optimización? ¿Qué es el descenso de gradiente? ¿Qué son los valores de Eigen? ¿Cuál es la implicación geométrica de los vectores propios? etc.

Una vez que conozca las ecuaciones, sabrá qué algoritmo es adecuado para cada escenario.

Puede intentar implementar los algoritmos, pero es demasiado trabajo. Quizás pueda intentar implementar un algoritmo para tener una idea de ello.

Pero, idealmente, una vez que sepa cómo funcionan los algoritmos, simplemente elija un conjunto de datos y pruebe los algoritmos de una biblioteca estándar. Personalmente me gusta Sklearn (Python), Matlab y Spark (Mllib).

El objetivo de este ejercicio es que usted vea cómo funcionan los diferentes algoritmos en diferentes escenarios. También te ayuda a obtener una experiencia práctica real.

Algunas fuentes de datos:

Data.gov

Conjuntos de datos de investigación

https://c3.nasa.gov/dashlink/r

Un amigo me envió estos datos: http://www.nber.org/data/fda-adv

Datos financieros y económicos de Quandl

Conjuntos de datos para minería de datos y ciencia de datos

Grandes conjuntos de datos disponibles de forma gratuita

Bienvenido a DataCite

Y kaggle, por supuesto: Avito Duplicate Ads Detection

Este es un gran libro para aprender las matemáticas detrás de los algoritmos.

Reconocimiento de patrones por

Sergios Theodoridis, Konstantinos Koutroumbas

Reconocimiento de patrones

¿Debo escribir mi propia implementación de los algoritmos o usar cualquier paquete Python R (caret, RWeka) para el aprendizaje automático simplemente aplicando los algoritmos listos para usar?

Cuando “aprendí” el aprendizaje automático, siempre implementé los algoritmos sobre los que “leí”. Claro, a veces lleva mucho tiempo, y muchas de mis implementaciones pueden ser tan ineficientes que no las usaría en la práctica (por ejemplo, en paquetes bien probados como scikit-learn o todas las funciones de “conveniencia” para la optimización en Theano). Sin embargo, también sentí que aprendí mucho durante este proceso.

Escribir las matemáticas es una cosa, y siempre me aseguré de entender los conceptos básicos (por ejemplo, cómo funciona la regla de la cadena con la propagación hacia atrás, etc.) antes de escribir cualquier código. Sin embargo, durante el proceso de codificación, a menudo noté algunas partes que pensé que entendía en el papel, pero realmente no entendí cuando las implementé (recuerdo un ejemplo con el que realmente luché durante días con: RBF kernel PCA – resultó que simplemente olvidé centrar la matriz del núcleo. Pasé tantas horas en esto que probablemente aún pueda volver a implementarla de arriba a abajo en 5 minutos si me despiertas en medio de la noche;)).

En cualquier caso, mis recursos de enseñanza principales fueron clases en la universidad (clasificación de patrones estadísticos, ML y minería de datos) y los libros de texto del curso (Bishop’s y Duda’s), y la interacción con otros estudiantes (grupos de estudio y tareas) fue otro componente importante en mi proceso de aprendizaje: explicar conceptos a otros estudiantes realmente me ayudó a descubrir lo que no entendía y en qué vacíos de conocimiento necesito concentrarme.

Tiene que “ver” qué está haciendo el algoritmo antes de comenzar a codificarlo y comprender la lógica detrás del algoritmo. Estoy trabajando en un algoritmo de filtro de partículas en este momento, que usa un mapa de probabilidad para localizarse. La lógica sigue que si uno usa una suma de partículas ponderadas para obtener estimaciones razonablemente buenas para la ubicación del robot, los valores de las partículas utilizadas para predecir la ubicación del robot pueden actualizarse recursivamente para ajustar la estimación y producir y un algoritmo preciso para localización de robots.

La idea detrás de la implementación del algoritmo AI es que sigas el razonamiento detrás del algoritmo y luego puedas

A) sugiera cómo puede ajustar el algoritmo

B) Adapte el algoritmo para resolver otros dominios problemáticos.

C) Rediseñar un algoritmo eficiente AI / ML que supere al actual

La mejor manera es visualizar la mecánica subyacente. Codificar una implementación se vuelve sencillo.

Realmente depende de lo que quieras lograr. Mi opinión personal es que hay personas que investigan y desarrollan algoritmos y aquellos que los usan. Me gusta pensar en ellos como aprendizaje automático teórico y aplicado. Estoy de acuerdo con una generalización excesiva, pero solo para aclarar mi punto.

Si está en el lado de la investigación y el desarrollo, entonces debe comprender profundamente la implementación del algoritmo. Para dominar esto, debe preocuparse por los detalles matemáticos y de codificación, proyectando su trabajo en algoritmos generalizables.

Los trabajos académicos sobre el aprendizaje automático serán una gran parte de su lectura. Los MOOC detallados y centrados en algoritmos (solo uno que viene a la mente es Andrew Ng) debería ser su mejor opción.

Si está del lado del usuario, debe comprender los principios subyacentes de los algoritmos que usa y buscar continuamente nuevos cuando surja la necesidad. Aunque es muy raro, es posible que tenga que desarrollar sus propios algoritmos, pero estos, al menos desde mi experiencia, tienen como objetivo resolver problemas muy específicos con restricciones muy específicas.

En este caso, debe buscar MOOC y libros de aprendizaje automático aplicado. Hay docenas, si no más.

¡Espero que esto ayude!

Bueno, recomendaría no escribir su propia implementación en “general”. Sin embargo, si realmente quiere aprender y tiene tiempo a mano, es una gran experiencia de aprendizaje construir su propia implementación y verla funcionar. Incluso si es un algoritmo simple, está bien. Por supuesto, construir todos los algoritmos a mano llevará meses o incluso años. Pero, si logras dominar un método supervisado y otro no supervisado, sería interesante.

Por supuesto, asista a la serie de conferencias Coursera sobre Machine Learning. Tienen mucha práctica con la explicación. Además, tome los cursos sobre modelo gráfico probabilístico y aprendizaje profundo si el tiempo lo permite.

Aprender o dominar el aprendizaje automático, como sabemos, lleva algo o mucho tiempo. Incluso si lleva mucho tiempo, es muy recomendable que los implemente por su cuenta en la codificación.

Por ejemplo, la regla de asociación generalmente usa APriori y FP-Tree, puede usarlos no solo para encontrar elementos asociados, sino que también puede usarlos para analizar datos de series de tiempo asociadas.

Entonces, si los implementa en la codificación real, encontrará más y comprenderá mejor sobre ellos.

Antes de la implementación real, es necesario realizar investigaciones y comprender las ideas conceptuales sobre algoritmos. Entonces podemos implementar el código y definitivamente aprenderemos la diferencia entre simplemente entender la lógica de lo que es y la filosofía del algoritmo en el fondo.

Hablaré sobre mi experiencia [aunque tal vez no sea la mejor práctica]:
Intenté implementar casi todas las teorías y algoritmos que encontré durante mi asistencia al curso de Andrew Ng en Coursera (aunque no lo he terminado), pero siempre intenté manipular los parámetros y cambiar algunos enfoques (como la diferenciación, la función. .) y esta manipulación me dio mucha más comprensión de las ideas profundas y “cómo funciona realmente”, que no se puede aprender del uso de bibliotecas ya escritas, probadas y depuradas.
En resumen: intente implementar algoritmos por su cuenta, y cambie todo lo que cree que podría cambiar, y vea qué sucede.

Programar y leer y escribir algoritmos. Estudie los libros de aprendizaje automático, aprenda con los profesores, inscríbase en un programa y lea todos los libros relevantes. Mantener una buena base matemática y aplicar a los campos host.

De hecho, creo que el curso Coursera de Andrew Ng es una buena introducción, ya que te tiene que codificar algunos algoritmos (eligió Octave, pero no creo que realmente importe qué idioma elijas):

Coursera

Haga sus propios programas y luego comprenda las matemáticas detrás de cada algoritmo.

More Interesting

¿Cuáles son algunos de los problemas abiertos más importantes en biología computacional?

¿Cómo puedo construir una simulación digital de un organismo biológico célula por célula?

¿Existe alguna ventaja al usar SVM para la regresión en lugar de las ANN, cuando se intenta modelar una función compleja, no lineal, bivariante y de valor vectorial?

¿Cuáles son los enfoques actuales para resolver problemas completos de NP?

Si tengo una aplicación en la nube para resolver cualquier problema NP completo en P (N ^ 3). ¿Cuál es el tamaño del mercado para dicha aplicación y qué industrias estarán interesadas?

Si desea hacer un proyecto interdisciplinario que relacione la ingeniería mecánica, la informática y la biotecnología, ¿cuáles son algunos posibles temas o ideas?

Cómo aprender los comandos de Red Hat

¿Cómo se utilizará el aprendizaje automático en el software empresarial, particularmente en las prácticas ITSM?

¿Sobrescribir los datos guardados con una copia guardada desde una unidad flash afecta la calidad del guardado y este guardado eventualmente se corromperá si este proceso se repite?

¿Cómo debo comenzar a aprender las matemáticas para el aprendizaje automático y desde dónde?

Además del desarrollo de software y la ingeniería de software, ¿qué otros campos emplean muchos científicos / ingenieros informáticos?

¿Qué cosas críticas hace un sistema operativo para volverse 'autosuficiente' durante el arranque desde un disco duro?

Si las computadoras reemplazaran a los médicos para el diagnóstico, ¿cree que los pacientes mentirían más / menos / de manera diferente sobre las preguntas médicas?

¿Cómo funciona el carnero?

¿Cómo se relacionan el aprendizaje automático y el aprendizaje profundo?