Skip to content

Latest commit

 

History

History
143 lines (130 loc) · 12 KB

4-Resultado-Active-Learning.md

File metadata and controls

143 lines (130 loc) · 12 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/

Resultado com Active Learning

O objetivo nesta fase é entender aonde o Active Learning vai trazer ou não melhorias ao nosso modelo machine learning. Nesta etapa identificaremos se houve melhoria ou não através das métricas average precision e auc-roc. Esta análise também nos ajudará a acompanhar mais rápidamente a qualidade do dataset, entender se há necessidade de termos mais dados para treinar e testar e aplicar uma ou mais mudanças em um ou mais processos do desenvolvimento deste projeto de ciência de dados.

Utilizaremos o notebook 4_Resultado_Active_Learning.ipynb para entendermos um pouco de como este processo funciona.

Nesta etapa vamos aplicar a técnica Labelling, aplicaremos limpezas no dataset, criaremos algumas Features, trabalharemos com matriz esparsas, term frequency, faremos tuning no algorítmo machine learning, treinaremos o algorítmo RandomForestClassifier e por fim teremos o resultados das métricas.


PROCEDIMENTOS QUE APLICAREMOS NO DATASET

LABELLING

No final do notebook 3_Random_Forest_Classifier.ipynb nós aplicamos a técnica active learning e criamos o arquivo active_labels.csv para fazermos o labelling.

Vamos fazer o labelling conforme documentado em 2-Decision-Tree-Classifier.md.

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


A PRIMEIRA MÉTRICA

Ao aplicarmos as métricas average precision e auc-roc sobre o arquivo active_labels.csv considerando as colunas y (labelling) e p (probabilidade) com o percentual de probabilidade de ser 1 (Video que provavelmente vamos assistir), vamos obter o seguinte resultado :

Esta primeira métrica realizada sobre o dataset com 100 exemplos que o modelo machine learning esta com dificuldade em classificar, indica que :
- As métricas average_precision_score e roc_auc_score estão sensíveis com relação a pequena quantidade de dados que temos.
- O dataset provavelmente deve receber mais tratamento e/ou mais dados para melhorarmos o modelo machine learning.
- O modelo parece estar melhorando com o Active Learning

Analisando um pouco do dataframe do arquivo active_labels.csv, identificamos que a coluna p contém a probabilidade que o modelo machine learning dá ao item 579 de ser 37,5% positivo e ao item 846 de ser 82,6% positivo.
Se usarmos um ponto de corte de 50%, sendo acima positivo e abaixo negativo, significa que o item :
- 579 seria um Falso Negativo (37,5% < 50%)
- 846 seria um Falso Positivo (82,6% > 50%)


ANALISAR RESULTADO DO ACTIVE LEARNING

Neste etapa nós aprenderemos como aplicar algumas técnicas para entendermos aonde o active learning nos esta ajudando.

Inciaremos pela limpeza e tratamento nos dados e logo em seguida aplicaremos três técnicas : aumentar dataset de validação, aumentar dataset de treino e aumentar dataset de validação e o dataset de treino.

LIMPAR E TRANSFORMAR DADOS

  • Vamos incluir a coluna [Novo] no dataframe com os 100 exemplos separados pelo active learning e incluir o número 1 nesta coluna.
  • Vamos importar aproximadamente 498 registros do dataset raw_data_with_labels.csv, cujo o campo y seja diferente de nulo/vazio, que estão com anotações 1 ou 0.
  • Vamos concatenar os arquivos active_labels.csv com 100 exemplos e com a nova coluna [Novo] ao raw_data_with_labels.csv com aproximadamento 500 exemplos. Ambos com labelling realizado. E teremos com um dataset com 600 registros, para melhorar o treinamento de nosso modelo machine learning.
  • O novo dataset terá a coluna [Novo] com 1 indicando os 100 registros e gravará nan's para os outros 500 registros.
  • Vamos eliminar a coluna p, por que será desnecessária aos testes.
  • Vamos substituir o conteúdo nan por 0 na coluna [Novo] referente aos 500 registros que estão com nan's.
  • Extrair apenas a data de uma coluna tipo objeto, com strings e datas.
  • Extrair apenas o número de uma coluna tipo objeto, com strings e número.
  • Criar Features necessárias.

AUMENTAR DATASET DE VALIDAÇÃO

Aumentar o dataset de validação é a técnica menos utilizada, mas a utilizaremos por que temos poucos dados e esta técnica é mais uma opção para analisarmos melhor a probabilidade, average precision e o auc roc.

Nos dados de treino selecionaremos os primeiros 50% dos dados dos 500 exemplos antigos e nos dados de validação selecionaremos os outros 50% dos dados antigos mais os 100 exemplos dos dados separados pelo active learning.

A seguir estão os valores average precision e auc-roc sob a probabilidade relacionada aos títulos :

Comparando com as métricas do algorítmo DecicionTreeClassifier nós tivemos uma melhoria nas métricas.

AUMENTAR DATASET DE TREINO

Esta técnica é a mais comumente utilizada.

Nos dados de treino selecionaremos os primeiros 50% dos dados dos 500 exemplos antigos mais os 100 exemplos dos dados separados pelo active learning e nos dados de validação selecionaremos a outra parte dos 50% dos dados antigos.

A seguir estão os valores average precision e auc-roc sob a probabilidade relacionada aos títulos :

Comparando com as métricas do algorítmo DecicionTreeClassifier nós continuamos com melhoria nas métricas, porém menor que o anterior.

AUMENTAR DATASET DE VALIDAÇÃO E O DATASET DE TREINO

Nos dados de treino selecionaremos os primeiros 50% dos dados dos 500 exemplos antigos mais os 100 exemplos dos dados separados pelo active learning e nos dados de validação selecionaremos a outra parte dos 50% dos dados antigos

Comparando com as métricas do algorítmo DecicionTreeClassifier nós continuamos com melhoria nas métricas.

Algumas informações importantes a saber :
1 Em todas as técnicas aplicaremos o algorítmo TfidfVectorizer e o scipy.sparse, executaremos o algorítmo RandomForestClassifier, seu algorítmo de probabilidade, o average precision e auc-roc da biblioteca sklearn.metrics.
2 As métricas estão muito sensíveis, alterando a cada pequena alteração.
3 Na maior parte das vezes quanto mais o conteúdo para treino e teste, mais eficaz o modelo machine learning ficará.

A precisão da pontuação entre a probabilidade dos dados de treino e dados de validação infelizmente diminuiu mas o AUC melhorou -esta mais próximo de 1. Entendemos que ambos estão bem sensíveis, por conta da pouca quantidade de dados.

Dica :
Formatação de datas : Fique atento à formatação de datas de português para inglês ou vice-versa
Número : O local do ponto 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
Novo dataframe : Evite alterar os dados no dataframe principal, trabalhe sempre com a cópia. Esta prática agiliza o processo de manipulação dos dados e se algo der errado basta executar a instção de cópia do dataframe novamente, alem de evitar que alguma rotina que utiliza o dataframe principal funcione indevidamente.

Issue github :
TfidfVectorizer ngrams does not work when vocabulary provided #16017




Fontes de estudo :