Opinião: Nanodegree de Eng. de Machine Learning

Em Abril de 2018 eu comecei o Nanodegree de Engenheiro(a) de Machine Learning pela Udacity. O curso não é barato e muitas pessoas me perguntaram a mesma coisa: vale a pena?

A minha resposta pode ser um pouco chata: depende. Sim, parece chato falar isso mas, depende.

Vamos destrinchar essa resposta por partes: este é um curso de nível avançado e isso está bem claro na página do curso. Então é preciso ter em mente que este não deve ser um curso para ser feito caso você esteja começando e definitivamente não é um curso para quem acabou de cair de paraquedas na área de ciência de dados.

Detalhes mostrados na página do Nanodegree

Antes de começar a falar do curso…

Se você acabou de começar a estudar aprendizagem de máquina a resposta é: não. Este curso não vale a pena. Tem outros Nanodegrees de nível mais iniciantes (caso você tenha a verba) e várias dicas de cursos gratuitos no guia.pizzadedados.com.

No meu caso, eu já tinha alguma experiência com ciência de dados, já tinha uma boa base de estatística e uma base mínima de Aprendizado de Máquina (Machine learning). Dentre as coisas que eu estudei antes do nanodegree estava o curso do Andrew NG sobre Aprendizado de Máquina no Coursera. O curso do Andrew não é nem um pouco simples. Tem muita matemática, precisa usar Octave (similar ao MATLAB) e tem muito trabalho para fazer. No entanto, o curso me deu uma bagagem bem legal sobre como os principais mecanismos funcionam por baixo dos panos.

Exemplo!? No curso do Andrew Ng, você implementa o algoritmo de Gradient Descent na mão. Isso mesmo: ele explica os conceitos, mostras as fórmulas e depois faz você implementar na mão. No caso do nanodegree, ele dá uma ideia do que o algoritmo faz, mas já pula para explicações mais detalhadas sobre os modelos (como SVM e RandomForest) e essa explicação fica, de certa forma, superficial. Se você não se importa com isso, show de bola, mas pra mim que gosto de saber exatamente o que está acontecendo, foi muito bom ter a bagagem do básico antes de começar a estudar quais são os parâmetros de uma SVM.

Módulo 1: Aprendizado supervisionado

Gostei bastante deste módulo. Tem várias aulas sobre Árvores de Decisão, Naive-Bayes, SVM, etc. Achei as aulas bem descritivas e os exemplos eram bons e de fácil compreensão. Tem muitos exemplos para serem feitos.

O projeto final deste módulo é, na verdade, um Jupyter Notebook semi-pronto com vários pontos para serem completados. Neste projeto final você deve prever se uma pessoa ganha mais ou menos que 50 mil dólares para otimizar o envio de cartas para uma ONG. Pareceu um caso bem realista e interessante e vários pontos do notebook pedem uma reflexão sua sobre o caso. Eu gostei bastante.

Uma das partes que eu mais gostei é que ele pede para você fazer uma revisão com pontos positivos e negativos de 8 modelos de aprendizado supervisionado. Não foi fácil, mas foi um aprendizado enorme! O resultado dessa revisão dos pontos negativos e positivos de cada tipo de modelo eu coloquei neste post do meu site, para garantir sempre ter à mão o resultado desse projeto.

Módulo 2: Aprendizado não-supervisionado

De novo eu achei as aulas excelentes. Eu tinha bem menos experiência nessa área, então pra mim foi fundamental. Ele dá uma ideia bem boa de como o KMeans funciona, mas vai bem além dele com vários exemplos práticos. Aqui eles falam sobre PCA, mas confesso que a base que o curso do Andrew me deu facilitou imensamente o aprendizado e a compreensão aqui. Outra coisa bem legal que eu aprendi foi como "saber" se a sua clusterização foi boa. Eu sempre me perguntei como isso funcionava e a explicação estava ali!

Quanto ao projeto, eu achei bom, mas bem confuso. Como os dados não tinham uma correlação clara com dados reais (eu não consegui ver isso pelo menos), eu fiquei um pouco perdida. Foi nessa etapa que eu descobri que existia um lugar para você reservar horário com um mentor. E aí vem uma das vantagens do curso: mentores muito bons, didáticos e muito disponíveis. Os mentores que eu peguei sempre estavam muito simpáticos, me explicaram meus pontos de dificuldades e mesmo depois do nosso horário, me perguntavam no Slack da Udacity se estava tudo bem. Ah, e são brasileiros, viu? Então se você não fala inglês, fique tranquilo!

Apesar do projeto final ser um pouco confuso, eu gostei bastante desse capítulo como um todo. Pra mim, foi de muita valia tudo o que eu aprendi em todos os momentos.

Módulo 3: Aprendizado por reforço

Bom… aqui o meu mundo começou a ficar difícil. Durante as 7 primeiras aulas desse módulo as coisas foram bem difíceis, mas eu ainda consegui fazer. Eles começam com uma série de aulas sobre aprendizado por reforço em espaços discretos. Até aí, difícil, mas aceitável. Na aula 7 você tem que fazer um pequeno projeto, pra colocar um táxi pra andar sozinho. Parece uma coisa enorme, mas você usa uma biblioteca pra isso e foi um desafio interessante. O problema começa depois disso. Da aula 8 em diante, o negócio escala absurdamente e passa para espaços contínuos, que é um problema bem maior. A partir daí o módulo entra em deep learning e umas coisas cabulosas. E também nada de prática.

O projeto final usa deep learning usando o Tensorflow e aí me pegou de vez. Eu tive uma dificuldade grande pra terminar esse módulo e eu exauri tudo o que eu podia dos mentores. Até a aula 7 eu aproveitei bastante, mas daí em diante achei bem desnecessário :/

Projeto 4: Meu projeto

Meu projeto foi uma grande incógnita até eu conseguir escolher um dataset. Por sorte, o Pedro (Twitter) me encontrou pra um café e falou de um dataset da Polícia Rodoviária Federal sobre acidentes de trânsito. E aí caiu a ficha: e se eu tentasse prever o tipo de vítima de um acidente de trânsito baseado só nas características do acidente?

O projeto foi um sucesso. Consegui colocar muita coisa em prática, aprofundar meus conhecimentos anteriores além de outros tipos de aprendizados, por exemplo como estruturar um projeto, classes desbalanceadas (casos em que você tem muitos casos de uma classe 0 e poucos casos de uma classe 1) e tudo mais. Mas sobre esse projeto, eu pretendo fazer posts mais detalhados mais pra frente, ok?

Resumo Geral

Eu particularmente gostei bastante do programa, mas acho que ter uma base potencializou meu aprendizado. Achei várias aulas boas, mentores dedicados e aprendi bastante. Algumas partes foram mais difíceis do que precisava, mas com certeza valeu a pena. Também escrevi um feedback bem grande ao final do curso. Acabei recebendo a ligação do diretor do curso, que ouviu todos esses feedbacks e falou que estão trabalhando para melhorá-los.

Portanto, se você já tem uma base legal de estatística e uma ideia mínima sobre aprendizado de máquina e quer melhorar, acho um bom lugar pra continuar seus estudos. Os contatos com as turmas e mentores também são de grande valia.

Ah! E quando terminei o curso publiquei no meu Twitter que esse foi meu primeiro diploma na área de tecnologia e acabei ganhando alguns brindes do Udacity! :)