Hombre, te envidio. Que oportunidad tienes por delante.
Si tiene 100 horas repartidas en 10 días, desea que esta experiencia sea lo más diversa posible. Y es una gran inversión, por lo que también puede ser bastante serio y apuntar a los resultados como una pasantía dependiendo del resultado.
Honestamente, no veo el punto de los MOOC para esto, a pesar de que te dan una sensación de logro. Si tienes un conocimiento decente de matemática básica y programación, será mucho más divertido sumergirte en el código y apuntar a obtener resultados reales. Y 100 horas, maldita sea, si honestamente, dedicas 100 horas en los próximos 10 días, eso cubrirá el 1% de convertirte en un experto mundial en el campo. Eso es mucho en muy poco tiempo. Prepararse.
Habrá mucho tiempo para aprender todos los aspectos internos de sus bibliotecas y algoritmos, pero no los necesita en este momento. Le voy a dar una tarea enorme que requerirá todo su enfoque e idealmente obtendrá una exposición muy amplia de las herramientas principales.
- Acabo de aprobar el 12 y quiero aprender todo sobre computadoras (principalmente software). ¿Qué tengo que hacer?
- Quiero aprender musica ¿Qué tipo de software puedo usar para aprender música?
- Estoy en la clase 11. ¿Cómo debo aprender a hacer diseños en la computadora?
- ¿Por qué me resulta difícil memorizar los temas de la historia pero es fácil memorizar cosas relacionadas con la ciencia?
- Tengo 30 años y quiero aprender a surfear, ¿soy demasiado viejo?
Días uno y dos
Descargue datos de StackExchange: Volcado de datos de Stack Exchange: Stack Exchange, Inc.: Descarga y transmisión gratuitas: Internet Archive
Necesitará un RDBMS para manejar los datos, por lo que el primer día se vería así:
- Instalar y configurar MySQL. Importar el volcado en la base de datos.
- Lea los conceptos básicos de SQL. Dedique algo de tiempo a hacer ejercicios simples para aprender a manipular los datos. Escriba un script que extraiga, por ejemplo, un conjunto de preguntas sobre Python y SQL que tienen> 3 respuestas y la mejor respuesta la escribe alguien que tiene> = 10 respuestas elegidas en cualquiera de estos dos temas. Observe los problemas de rendimiento.
- Lea acerca de los índices en SQL. Hashing, clasificación, etc. Acelere la consulta de la viñeta 2 para que se ejecute instantáneamente.
- Escribe una clase en Python que maneje las consultas por ti. Esto requerirá que aprendas sobre el controlador MySQL de Python. Como resultado, necesita una herramienta que extraiga los datos requeridos de su base de datos y los presente en un formato conveniente.
No conozco tus antecedentes, pero creo que es totalmente factible incluso para un principiante, todo lo que necesitas es una experiencia general con Python.
Para el segundo día, deberá familiarizarse con la lectura de datos utilizando pandas y la manipulación de datos numéricos con números . La documentación es bastante voluminosa, no es necesario que la lea toda, simplemente se sienta cómodo importando archivos CSV, extrayendo y agregando columnas, combinando dos conjuntos de datos y eso es todo.
Día tres
Si bien en el trabajo real, a menudo se ejecutarán consultas en toda la base de datos, es importante obtener la idea de cómo trabajar con datos pequeños y obtener resultados significativos. Juegue con los subgrupos aleatorios y compare las distribuciones de, digamos, puntajes, con la verdad básica, la distribución de todos los puntajes.
Vamos a seguir adelante. Tienes toda una base de datos de SE frente a ti, pero me atendré a StackOverflow ya que contiene muchos datos con los que estoy familiarizado. Un ejercicio fuera de mi cabeza: construir una línea de tiempo de la popularidad de los idiomas.
¿Por qué es tan genial?
- ¿Cómo se extraen las preguntas sobre los idiomas y se omiten las relacionadas solo con la tecnología? (por ejemplo, preguntar sobre la sintaxis de Python y no sobre cómo unir Django con MongoDB)
- Hay muchas etiquetas allí, necesita visualizar los resultados, así que filtre sus fuentes sabiamente
- Tienes la oportunidad de aprender al menos un marco de visualización.
- Muchas fotos chulas
Por supuesto, una vez que hizo ese ejemplo, hay muchas más propiedades interesantes de sus datos que debe explorar. Hacer las preguntas correctas es una habilidad clave.
Días cuatro y cinco
Data Scientist fue nombrado “El trabajo más sexy del siglo XXI”. ¿Sabes qué más es sexy? Teoría de grafos.
¿Cómo se conectan las etiquetas? ¿Es posible construir un mapa de tecnología usando solo SO respuestas? ¿Qué métricas elegirías para calcular la proximidad de dos etiquetas? ¿Cómo visualizarías la gráfica? ¿Has probado Gephi?
Una vez que haya terminado, el gráfico debe ser descrito. La cosa es que la imagen de un gráfico tiene poco valor en términos de comprensibilidad: es necesario que lo mire y lo mire antes de saber con certeza lo que está sucediendo.
Por lo tanto, tendrá que aprender sobre los algoritmos de agrupamiento en clústeres (al menos k-means y DBSCAN), K vecinos más cercanos. Si te abres von Neumann en esta tarea, algunas métricas gráficas y algoritmos no te harán daño. Te sugiero que pruebes networkx y algunas partes de scikit-learn para esto, hacen que todo sea mucho más fácil.
¿Por qué es tan genial?
- Aprendes sobre diferentes formatos de datos. CSV, Gephi, lista de aristas, ets.
- K-means es un algoritmo muy útil que le servirá bien en el futuro.
- Descubrir los grupos significativos es una de las tareas más importantes cuando explora los datos
Distribuya la carga de trabajo como prefiera, pasaría el primer día jugando con networkx y Gephi solo porque los gráficos, ya saben. El segundo día le daría a la agrupación, porque habrá algunas cosas no triviales como “¿cómo diablos puedo obtener representaciones vectoriales para cada etiqueta que preservarían las distancias entre ellas?”
Dia seis
Bien, ahora tiene una comprensión general de lo que está pasando en su base de datos. Pero todavía no ha tocado los textos: los recuentos de palabras no cuentan (juego de palabras terrible no deseado).
Por lo tanto, hoy necesita leer brevemente sobre el análisis de texto. Para este paso, basta con utilizar la indexación semántica latente, todo lo que necesite lo encontrará en scikit-learn y también necesitará trabajar con SQL. Canalización general que desea ver:
- Selecciona los datos con los que trabajarás.
- Cree funciones de texto con extractores especiales en scikit (TF-IDF Vectorizer es el mejor)
- Asigna las etiquetas para el texto. Digamos, por ejemplo, que desea predecir cuántos puntos obtendrá la respuesta basándose únicamente en el texto. Entonces, tomas una puntuación como etiqueta y el vector de características es TF-IDF
Sería mejor preparar varios conjuntos de datos en formato numpy, uno para cada hipótesis. Te daré un par para que comiences:
- Predecir el puntaje de la respuesta.
- Clasifique el tema principal de la respuesta (elija, digamos, 20 idiomas y respuestas de muestra sobre ellos).
Asegúrese de que sus conjuntos de datos estén limpios y que sepa lo que hay dentro. Esta descripción puede parecer fácil, no lo es.
Día siete, ocho, nueve
Bien, entonces tienes conjuntos de datos limpios del día anterior. Asumiré que tiene un conjunto de datos para la clasificación y otro para la predicción (debe saber la diferencia para el quinto día). En el quinto día debes enfocarte en los modelos de regresión. Por supuesto, Scikit te ofrece una amplia gama de herramientas. Definitivamente quieres probar al menos hay métodos:
- Modelo lineal. Hay toneladas de ellos, primero compara cómo se desempeñan, luego lee un poco sobre los mejores para conocer mejor la diferencia. Pista: eche un vistazo a la regresión de ElasticNet. Si tiene conocimientos matemáticos, lea un par de capítulos de “Reconocimiento de patrones y aprendizaje automático” de Bishop, y le dará una buena explicación de por qué funciona. Salta esto si no tienes suficiente tiempo.
- Árboles de regresión
- Regresión de KNN. Por lo general, funcionan bastante bien, nunca subestimes estos métodos.
- Modelos de conjunto. Bosques al azar y AdaBoost.
La idea general no es convertirse en un experto en algoritmos al instante, sino hacer que funcione primero, hacer preguntas más tarde.
Lo mismo representa la tarea de clasificación. Tómese su tiempo para leer y pensar en métricas de calidad. Imagina que estás creando una plataforma de contenido inteligente que clasifica las noticias: ¿cómo evaluarías el rendimiento en ese caso?
Es absolutamente necesario realizar validaciones cruzadas para todos sus modelos. Lea sobre k-fold CV, descubra cómo hacerlo con scikit y realice una validación cruzada de sus modelos.
Dia diez
Ya que estás en camino de convertirte en un científico de datos, esta aventura no estaría completa sin la parte más interesante de tu trabajo. Tendrá que presentarlo.
El formato es solo su elección (rara vez tendrá este lujo nuevamente en el futuro). Un artículo semi-académico, presentación, publicación de blog, aplicación, lo que quieras. Cuenta tu historia. Describa sus hallazgos en el conjunto de datos, cuente sus hipótesis, haga un par de sugerencias de por qué pueden ser falsas, describa los algoritmos, presente los resultados de validaciones cruzadas en un formato claro y, en nombre de Sir Ronald Fisher, mostrar mas fotos
En cuanto a esta parte, no hay manera de exagerar. Y le garantizo que si hace una gran presentación y se la muestra a las personas adecuadas, su oferta de nivel de entrada se publicará muy pronto.