Skip to content

Latest commit

 

History

History
136 lines (125 loc) · 11.6 KB

2-Decision-Tree-Classifier.md

File metadata and controls

136 lines (125 loc) · 11.6 KB
PROJETO OBJETIVO TIPO DE DADOS TIPO MACHINE LEARNING
Recomendador de vídeos do youtube Entender Ciência de dados na prática Time Series Supervisionado
LinkedIn : https://www.linkedin.com/in/claudineien/

1o Modelo Machine Learning - DecisionTreeClassifier

Nosso objetivo neste processo é obter as primeiras métricas, que servirão como guia para nos ajudar a otimizar os algorítmos machine learning até obter um modelo no qual as métricas indiquem como sendo a solução machine learning que precisamos.

Nossas métricas base serão:

  1. AUC-ROC para indicar se o nosso modelo esta rankeando corretamente os exemplos. É a probabilidade que exemplo selecionado randômicamente tem mais probabilidade preditiva de ser positivo do que ser um exemplo randomicamente selecionado negativo.
  2. Average precision indica se o nosso modelo pode corretamente indentificar todos os exemplos positivos sem acidentalmente marcar também muitos exemplos negativos como exemplos positivos.

Utilizaremos o notebook 2_Decision_Tree_Classifier.ipynb para entendermos um pouco de como este processo funciona.

Iniciaremos aplicando a técnica Labelling, aplicaremos limpezas no dataset, criaremos algumas Features, analisaremos o gráfico time series da biblioteca pandas, faremos tuning no algorítmo machine learning, treinaremos o algorítmo DecisionTreeClassifier e por fim teremos o resultados das métricas.


LABELLING

Vamos aplicar o labelling para o algoritmo machine learning predizer com o melhor average precision e auc-roc possível o vídeo que possivelmente assistiremos.

A seguir estão os procedimentos para aplicarmos o labelling:

  1. Abrir o arquivo raw_data_sem_labels.csv em uma planilha eletrônica como ms excel, google sheets ou LibreOffice através da opção de importar um arquivo .csv
  2. Criar a coluna Y (*1)
  3. Inserir na coluna Y o número 0 ou 1 (*2)

Importante:
Baixar o arquivo raw_data_with_labels.csv, cujo labelling foi aplicado para facilitar nosso entendimento em cada técnica executada


LIMPAR E TRANSFORMAR DADOS

Nossa primeira tarefa é fazer uma cópia do dataframe original e extrair todos os dados cujo y estejam configurados (labelling realizado) com 1 ou 0 (*2), vamos utilizar os métodos head(), info() e/ou tail() para analisar o conteúdo do dataset.

Durante a análise do dataset perceberemos que uma boa prática para treinar o algoritmo machine learning é extrair somente a data do campo watch-time-text e extrair somente a quantidade do campo watch-view-count e transformá-los em recursos para identificar a quantidade de visualizações por dia por vídeo encontrado. Estes itens atendem o passo 03 do CICLO DE VIDA DE UMA SOLUÇÃO EM CIÊNCIA DE DADOS

Na conversão do campo watch-view-count utilizaremos a função fillna() para substituir o conteúdo nan (considerado nulo) por 0, por que o conteúdo nan prejudica a eficiência do modelo machine learning.

Dica :
Formatação de datas : Fique atento à formatação de datas de português para inglês ou vice-versa
Número : Atenção para o local do ponto, que em português é diferente do inglês
Transformar Data em valor numérico : O formato número é mais eficiente aos algoritmos machine learning
Modelo ml x Realidade : Para melhor eficiência do modelo machine learning os dados de treino e de teste devem ser o mais semelhantes possível a rotina da realidade em uma empresa ou em uma pesquisa de campo
Métrica realística : Encontrar características iguais entre os dados, ainda que seja necessário converter quantidade de dados x por ano em por dia. Ex : Upload de vídeos por dia, visualizações por dia ou algo semelhante.

PLOTAR - EXIBIR DADOS EM GRÁFICO

Para uma visualização rápida da quantidade de videos visualizados por dia por ano-mês, vamos plotar um gráfico time series com a biblioteca pandas. Vamos observar que há um grande pico no volume de vídeos visualizados no final do período ano-mês que pode ter sido por conta do youtube ter aplicado alguma aleatoridade na pesquisa dos dados ou por conta de uma situação extraordinária qualquer.

Este aumento muito desproporcional apenas em um mês do ano pode prejudicar o treinamento do algoritmo machine learning, se não executarmos a técnica de balanceamento dos dados adequada.

MODELO MACHINE LEARNING

Com o algorítmo DecisionTreeClassifier vamos analisar rapidamente a influência da predição do modelo machine learning apenas com features view e view_por_dia por data de upload. Para esta análise devemos :

  • Separar os dados de treino e dados de teste por data de publicação/upload, por ser uma time series (*3)
  • Configurar o parâmetro class_weight="balanced"
  • Treinar modelo machine learning

Para melhorar a eficiência do algorítmo machine learning, na predição de vídeos, é uma boa prática balancear a quantidade de visualizações por dia por ano-mês por vídeo coletado por data de upload entre o dataset treino e dataset teste, por que foi muito grande o aumento de vídeos no final do período.

O balanceamento entre os dataset treino e dataset teste é realizado configurando o parâmetro class_weight igual a "balanced".

APLICAR AS MÉTRICAS

Métrica average precision da biblioteca sklearn.metrics que conforme imagem a seguir informa que o algorítmo teve um percentual de 14,81% de exemplos positivos, que representa vídeos cujo labelling é 1 (*2).

Métrica auc-roc da biblioteca sklearn.metrics que conforme imagem a seguir informa que o algorítmo teve uma probabilidade percentual de 57,05% de selecionar os exemplos positivos, que representa vídeos cujo labelling é 1 (*2).

Esta serve para melhor visualizarmos o ranking dos vídeos : dos mais interessantes para os menos interessantes.

Importante :
O objetivo em ambos métricas average precision e auc-roc é alcançar 1.0 ou o valor mais próximo possível, sendo esta a nossa baseline técnica em machine learning.


Dica :
Dataset Time series 50% treino e 50% teste : Por ser uma time series, é quase 100% certeza que os dados de treino serão diferentes dos dados de validação, e a metodologia mais eficiente é dividir os dados o mais próximo possível de 50%
Arvore de decisão : É uma das melhores maneiras de entender a relação das features (recursos) com o target (alvo)

INTERPRETAR A DECISION TREE

Esta é uma boa forma de entender rapidamente como o as features (recursos) se relacionam ao target (alvo).

Para uma rápida analise configuramos a profundidade máxima (max_depth) de 2 níveis de nós.

Aplicamos balanceamento (class_weight="balanced") no peso dos vídeos, e o nó raiz exibe dentro do total 15110.0 visualizações, amostra de 228 vídeos, heterogeneidade em 50% (gini) e os valores com peso balanceado em 114.0 exemplos negativos e 114.0 positivos. Então :

  1. quando inferior ao nó raiz (à esquerda), no 1o nível do nó vemos que a quantidade por dia é inferior a 1 visualização por dia para 133 amostras de vídeo, no 2o nó à esquerda as 14 amostras são exemplos negativos 0.0, não interessantes. No nó a direita há mais amostras e estes provavelmente são vídeos que interessam por ter uma pontuação positiva de 92.625.
  2. quando superior ao nó raiz (à direita), no 1o nível de nó vemos que a quantidade pode ser menor ou igual ou superior a 26712.0. Se inferior temos 20 amostas negativas 0.0, não interessantes. A direita há muita amostra porem pela classificação 21.375 provavelmente são vídeos que não interessam.

Nota :
(*1) Você pode colocar o nome que quiser, foi escolhido Y (Youtube) para facilitar nosso entendimento.
(*2) 0 -Vídeo que provavelmente não vamos assistir; 1 -Vídeos que provavelmente vamos assistir (*3) Há bibliotecas com métodos para separar os dados de treino e os dados de teste, que pode ser em percentual e/ou em quantidade.

Vamos lembrar :
:/: Precision : é o número que responde a pergunta de todos os modelos que disse que são positivos, 50% destes são realmente positivos

:/: Recall : é taxa de detecção, isto é, de todos os modelos que disse que são positivos quanto o modelo realmente previu como positivos ?



Fontes de estudo :