(Week 2) Diário de Bordo: Curso de Machine Learning by Stanford University

Começamos nossa semana 02 do curso do Coursera de Machine Learning oferecido pela Universidade de Stanford e ministrado pelo professor Andrew Ng!

Na semana anterior vimos uma visão geral de Machine Learning mostrando a diferença entre os algoritmos supervisionados e não supervisionados. Também foi realizada uma revisão geral de álgebra linear. Nesta segunda semana vamos realizar as configurações de ambiente necessárias para realizar as atividades do curso, aprender o algoritmo de regressão linear com múltiplas variáveis e aprender a programar o necessário usando Octave!

O curso na semana 02 é divido em 05 partes:

  • Environment Setup Instructions
  • Multivariate Linear Regression
  • Computing Parameters Analytically
  • Submitting Programming Assignments
  • Octave/Matlab Tutorial

Antes de tudo: lembre de abrir a Errata da Semana 02 (que fica na opção Resources do menu do curso). Lá você vai encontrar correções de pequenos erros que são cometidos nos vídeos. Mantenha uma aba aberta com a errata enquanto você assiste as aulas.

Na primeira parte Environment Setup Instructions não temos vídeo aulas. Essa parte é dedicada ao ensino da instalação do ambiente do Octave ou do Matlab para diferentes sistemas operacionais (Windows/Linux/Mac OS X).

Atenção para as dicas sobre o primeiro Quiz da semana sobre “Linear Regression with Multiple Variables”. A primeira questão do quiz pode te dar uma dor de cabeça, isso porque a fórmula mostrada no vídeo pelo Andrew usa desvio padrão e muitas pessoas confundem o uso de feature scaling e mean normalization, principalmente porque ele explica os dois no mesmo slide. Segue as dicas para essa questão:

  • Você deve usar “.” e não “,” para indicar casas decimais;
  • Você deve representar duas casas decimais depois do “.” . Exemplo: 0.57;
  • O resultado da questão pode ser um número negativo, então lembre de colocar o sinal de “-” no início da resposta;
  • Algumas respostas precisam ser arredondadas, por exemplo, se a resposta for algo como -0.6675, você deve inserir -0.67 (demorou muito tempo para descobrir isso, porque o enunciado não fala nada sobre arredondar as respostas);
  • O cálculo para ser usado é (x – média_aritmética) / (maior_número – menor_número). Detalhes sobre a fórmula a ser usada aqui.

Na parte Computing Parameters Analytically, o Andrew irá mostrar a Equação Normal, uma alternativa analítica ao uso de Gradiente Descendente ensinado na semana anterior. Fique atento quando for explicado em quais situações você deve usar Equação Normal e quando usar Gradiente.

Em Submitting Programming Assignments será explicado como submeter os exercícios de programação no sistema do curso. Eles serão avaliados de forma automática pelo sistema.

A parte final Octave/Matlab Tutorial contém um rápido tutorial mostrando todo o conteúdo de Octave necessário no curso. São mais ou menos 1 hora e 26 minutos de tutorial divididos em 6 vídeos. Nesse momento, abra o Octave em sua máquina e pratique junto com o Andrew. Pause o vídeo e faça alguns experimentos com a linguagem. Crie seus próprios vetores e matrizes. Veja quais operações são possíveis e quais irão gerar erros. E muito importante, faça os cálculos num papel antes de fazer no Octave ou depois para conferir a resposta. Isso ajudará você no momento dos exercícios. O mais comum nas atividades de programação do curso são erros de multiplicação com matrizes devido ao número de linhas e colunas incompatíveis ou tentar alguma operação que funciona de forma diferente quando aplicada sobre um número ou uma matriz. O momento de experimentar para se familiarizar com a linguagem é agora!

O segundo quiz da semana é sobre operações de vetores e matrizes no Octave. Pegue papel e caneta e solucione as questões na mão, depois use o programa para verificar se suas respostas estão certas. Isso irá lhe ajudá-lo a compreender melhor as operações de álgebra linear ao mesmo tempo em que pratica o uso do Octave!

Finalmente chegamos ao primeiro exercício de programação: Programming Assignment Linear Regression! Você irá baixar um arquivo .zip com um arquivo “ex1.pdf” (com a descrição das atividades) e um diretório “ex1” (com os arquivos .m do Octave para você editar). Algumas dicas:

  • A primeira é óbvia: leia com atenção o PDF com a descrição das atividades. Não seja apressado indo direto para a parte de programação.
  • A primeira parte do exercício é simples. Basta ir no arquivo warmUpExercise.m e editá-lo acrescentando a linha pedida. Isso mesmo! Bem simples!
  • Execute sempre o comando ex1 (execução do script contido em ex1.m) para verificar suas soluções. Após executar, verifique se está tudo certo comparando as suas respostas com as exibidas no PDF;
  • É muito simples submeter uma solução, basta digitar o comando submit e em seguida será pedido seu e-mail e token (dado na página do exercício no curso). Se por acaso ocorrer algum erro na submissão verifique na sequência: 1. Verifique sua conexão com à Internet; 2. Verifique se o e-mail que você digitou é o mesmo que você usa para acessar o Coursera; 3. O token deve ser o fornecido pelo site na página do exercício, não use sua senha do Coursera, caso você tenha a certeza que o problema é o token, use a opção Generate new token no site e tente utilizar o novo token;
  • Sempre que você encontrar no PDF a frase “You should now submit your solutions”, use o comando submit para enviar suas soluções. Mesmo que você saiba que ainda não terminou todo o exercício. Na grande maioria dos exercícios a parte seguinte é dependente da anterior, você vai precisar ter certeza que sua resposta está correta antes de seguir para a próxima etapa, caso contrário não saberá onde procurar algum bug que apareça mais adiante. Ao submeter a primeira vez, você verá a seguinte resposta:
01
  • Tenha uma atenção especial com o uso de “;” (ponto-e-virgula) na programação. Se você quiser observar o resultado do cálculo de uma linha, basta retirar o “;”. Porém, caso você não queria, como, por exemplo, em um loop, não esqueça de colocá-lo. No exercício a iteração de cálculo de J é realizada 1500 vezes, se você não colocar o “;” o resultado das 1500 operações dentro do loop serão exibidas.
  • O cálculo de J dentro da somatória possui uma matriz cujos elementos devem ser elevados ao quadrado. Tenha atenção, a fórmula pede para que os valores dentro da matriz sejam elevados ao quadrado. Cuidado com o uso do operador “^”, por exemplo, dada a matriz A = [1  2; 3  4], a operação A^2 = A * A = [7  10; 15  22]. Já a operação A .^ 2 = [1  4;  9  16]. Ou seja, lembre que para elevar todos os valores ao quadrado você deve usar “.^”;
  • Cuidado com o uso da função sum(), ao programar o cálculo da função computeCost você pode usar a função sum() para somar todos os valores contidos numa matriz ou vetor. Entretanto, na função gradientDescent não será necessário usar essa função de somatória;
  • Após executar pela primeira vez o comando ex1 vá dando ENTER até o final e todas as variáveis de ambiente serão carregadas. Use a função size() para verificar a dimensão dos vetores e matrizes de X, theta e y. Isso vai ajudá-lo na programação das fórmulas.
  • Mensagens de Erro como essa “error: operator *: nonconformant arguments (op1 is 92×2, op2 is 92×2)” indicam que você está tentando somar ou multiplicar matrizes com dimensões incompatíveis. Talvez você tenha esquecido de transpor alguma matriz ou invertido a posição dos operandos (por isso a dica anterior é muito importante).
  • A última parte do exercício valendo pontuação termina na página 8, depois disso o PDF contém dicas e exibe dois gráficos da função J. Tente compreender o que os gráficos significam e o código que os gerou:
Captura de tela de 2019-11-03 16-14-36.png
  • A partir da página 10 do PDF começam os exercícios opcionais! Não deixe de fazer somente porque não pontuam na sua nota da semana!
  • Nos exercícios opcionais você precisará usar algumas funções do Octave que não foram mostradas pelo Andrew nos vídeos, são elas: mean (para calcular a média) e std (calcular o desvio padrão). Use o comando help para verificar como elas funcionam. O Octave tem as melhores explicações que eu já vi serem fornecidas sobre uso de comandos! Série, basta usar o comando “help mean” e serão exibidos vários exemplos de uso além de excelentes explicações!
  • Ainda sobre os exercícios opcionais, mais uma dica: cuidado com o uso de “/” e “./” para realizar a operação de divisão no arquivo “featureNormalize.m“;
  • Assim que terminar todas as partes opcionais submeta as respostas. Se tudo acorrer bem (e todas as suas respostas estiverem certas) você receberá o seguinte retorno:
03

Nice work!

E aí? Como foi sua segunda semana de curso? Comenta aqui! Vamos compartilhar nosso conhecimento!

Veja também das dicas das outras semanas:

Até mais, e obrigado pelos peixes!

Publicado por

priscyllamss

Priscylla Silva is a teacher at the Federal Institute of Alagoas (IFAL), Brazil. She obtained her BSc degree in computer science from the Federal University of Alagoas (UFAL), Brazil. Later, she received her Master degree in Computer Science from the Federal University of Campina Grande (UFCG), Brazil. Her research interests include User Modelling, Recommender Systems, Machine Learning, Intelligent Tutoring Systems, Robotics, Internet of Things, and Internet Governance.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s