Classes desbalanceadas: você está fazendo errado!

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 พ.ย. 2024

ความคิดเห็น • 39

  • @grihgy
    @grihgy 28 วันที่ผ่านมา

    Fiz com F1 Score, obtive esses resultados
    Acurácia média sem SMOTE: 0.7704285714285715
    F1 Score médio sem SMOTE: 0.09579394847654041
    Acurácia média com SMOTE: 0.5752857142857143
    F1 Score médio com SMOTE: 0.294616710621384
    Levando em conta um modelo balanceado de recall e precision seria melhor optar por usar o smote certo?

  • @Matheus.Santos.SciData
    @Matheus.Santos.SciData หลายเดือนก่อน +1

    Puro suco do milho, obrigado por compartilhar!

    • @letsdataAI
      @letsdataAI  หลายเดือนก่อน

      Hahahha, valeu demais!!

  • @richardguilhermedossantos8147
    @richardguilhermedossantos8147 2 ปีที่แล้ว +3

    Vídeo muito bom! Confesso que fiquei pensando que o erro com validação cruzada era bobo, até perceber que já cometi em um pequeno trabalho, com essas coisas a gente sempre tem que tomar cuidado.
    Tu parou com os vídeos aqui no youtube?

    • @letsdataAI
      @letsdataAI  2 ปีที่แล้ว +1

      Parece mesmo!!! Muita gente no início comete esse deslize sem nem perceber. Por isso mesmo achamos importate fazer esses vídeos! Continuamos de vento em popa! Segue o canal direitinho que os avisos vão chegar!! :D

  • @tiaofilho123
    @tiaofilho123 ปีที่แล้ว +2

    Boa noite, Leon! Excelente vídeo, valeu por mais esta super aula! Uma dúvida: teriam outras operações que não são indicadas pra fazer no dataset completo além do smote? Me refiro a one-hot, pca, valores missing, etc etc etc (tem um batalhão de coisas no pré processamento de dados!). O que mais prejudicaria o modelo? Abs.

    • @letsdataAI
      @letsdataAI  ปีที่แล้ว +2

      A aplicação das técnicas em si não são prejudiciais. O que devemos ter atenção é no vazamento de dados no uso das ferramentas. Abraço!

  • @ACDC95
    @ACDC95 4 หลายเดือนก่อน +1

    Obrigada pelo conteudo! Isso vale pra mais de 2 classes? por exemplo 4 classes diferentes que meu modelo está predizendo. E duas classes tem muito menos dados representando.
    classe1-51
    classe2-17
    classe3-41
    classe4-8

    • @letsdataAI
      @letsdataAI  4 หลายเดือนก่อน +1

      Sim! Na verdade VERDADEIRA balancear as classes nunca ajudou muito, mas se for fazer, tem que ser que nem no vídeo!

    • @ACDC95
      @ACDC95 4 หลายเดือนก่อน

      @@letsdataAI Obrigada ! Tem algum algortimo de classificação que trabalhe melhor com classes desbalanceadas?

  • @fabioflemingleitao
    @fabioflemingleitao หลายเดือนก่อน

    Leon, uma dúvida: Os dados de teste da primeira divisão do modelo "X_treino, X_teste, y_treino, y_teste = train_test_split(X,y)"
    não foram utilizados?
    Tipo... o database tinha 768 instancias...treino = 576 e teste = 192.
    Depois, para fazer o SMOTE, os dados de treino foram novamente divididos em treino e teste...balanceados e depois validação...
    Fiquei na dúvida sobre os primeiros dados de teste X_teste e y_teste que não foram utilizados.
    EDITADO: Ahhh entendi... esses dados seriam os "DESCONHECIDOS" que você poderia usar para um TESTE final.
    Dúvida: Como funcionaria tudo isso caso eu tenha realizado uma padronização das variaveis (media 0 desviopadrao 1) ??
    Por que aí penso que nesse "teste final" com os dados X_teste e y_teste eu teria que entrar com esses valores padronizados também. Mas como faço isso?

    • @letsdataAI
      @letsdataAI  หลายเดือนก่อน

      Massa! Se entendi direito a dúvida: você faz o fit transform no treino e só transform no teste. Isso porque temos que aprender com a distribuição dos dados de treino porque não conhecemos a realidade dos dados em produção (que simulamos com o teste)

  • @humberto6479
    @humberto6479 ปีที่แล้ว +1

    Obrigado pelo vídeo, Leon! Fiquei com algumas dúvidas: como as classes estão desbalanceadas, eu não precisaria, primeiramente, usar o "stratify=y" para que o meu y_teste tivesse a mesma distribuição em relação ao y_train? E , em segundo lugar, agora na validação cruzada, eu poderia usar o "StratifiedKFold" para que essa distribuição das classes fosse mantida nos splits gerados? Essa dúvida é porque, não usando o stratify e o StratifiedKfold, poderíamos ter uma distribuição bem diferente das classes entre os conjuntos usados para o treino e para a validação. Qual seria a diferença entre usar e não usar essas estratificações?

    • @letsdataAI
      @letsdataAI  ปีที่แล้ว +1

      Valeu, Humberto!! Usar validação estratificada é legal quando o e desbalanceamento é tão grande que pode correr o risco de não ter observações em algum split dos folds. Isso é comum quando se tem muitas classes. Esse vídeo focaliza mais na forma correta de fazer um balanceamento “artificial” com over ou undersampling, mas o mais certo mesmo é usar class weight. Vamos fazer um vídeo sobre isso :)

  • @leticiapaes3745
    @leticiapaes3745 ปีที่แล้ว +2

    tem o link deste notebook disponível?

    • @letsdataAI
      @letsdataAI  ปีที่แล้ว +2

      Tem sim, Letícia!!
      github.com/letsdata/oversampling
      So gostou do vídeo, estamos com inscrições abertas pra nossa Jornada Cientista de Dados. Inscrições no link:
      www.letsdata.ai/jornada

  • @SunGlassesBlue
    @SunGlassesBlue ปีที่แล้ว

    Antes de mais nada, Parabéns pela aula mestre! Quanto ao 'Stratified k-fold cross-validation', será que serve? Li num artigo do Jason Brownlee que pode ser usado, mas não sei até que ponto, ou se existem limitações. Muito obrigado!

    • @letsdataAI
      @letsdataAI  ปีที่แล้ว +1

      Valeu pela força, mestre!!! Vai cair no mesmo problema! Pra usar o stratified certo, só trocar a implementação que fizemos de KFold pra StratifiedKFold. Lembrando que essa estratificação tenta garantir a mesma proporção de classes nos mini-splits, mas se fizer o oversampling antes, a proporção a ser mantida vai estar errada desde o princípio.

    • @SunGlassesBlue
      @SunGlassesBlue ปีที่แล้ว

      Faz sentido, muito obrigado mais uma vez e sucesso ! @@letsdataAI

  • @wordguinho
    @wordguinho 2 ปีที่แล้ว +1

    Não dá pra usar o SMOTE dentro de um Pipeline do imblearn? Nesse caso daria pra usar o cross_val_score normalmente, não?

    • @letsdataAI
      @letsdataAI  2 ปีที่แล้ว +1

      Vale a pena tentar hein!! Primeiro a terminar manda o gist 😂🙌🏻

  • @alexandreesposte3198
    @alexandreesposte3198 2 ปีที่แล้ว +1

    Esse problema com a validação cruzada também ocorre quando o class weight é empregado ? (meu palpite seria que não)

    • @letsdataAI
      @letsdataAI  2 ปีที่แล้ว +1

      Isso! Class weight é usado no treinamento do modelo, ou seja, não muda os splits de validação. Btw: muito melhor usar isso que oversampling :D

  • @guimaraesalysson
    @guimaraesalysson 2 ปีที่แล้ว +1

    Tem vídeo sobre mlflow ?

    • @letsdataAI
      @letsdataAI  2 ปีที่แล้ว

      Boa ideia de vídeo! Vai rolar :)

  • @eduardo.chaves
    @eduardo.chaves ปีที่แล้ว

    Se o problema é fazer o balanceamento antes do cross validation, a solução não seria apenas fazer o balanceamento depois do cross_val_score? Não entendo a necessidade de criar um cross val score na mão e o que isso tem a ver

    • @letsdataAI
      @letsdataAI  ปีที่แล้ว

      Fala, Eduardo! A ideia é da validação cruzada é comparar modelos. Nesse caso, comparar o modelo treinado sem balanceamento vs com balanceamento. Para realizar uma validação cruzada correta, devemos garantir que as mini-validações não estejam contaminadas e a opção no vídeo foi de solucionar criando uma função de validação cruzada na mão.

  • @mariaclara8871
    @mariaclara8871 7 หลายเดือนก่อน

    eu não consegui reproduzir o código(!pip notebook pandas scikit-learn imblearn), aparece: ERROR: unknown command "notebook"

    • @letsdataAI
      @letsdataAI  7 หลายเดือนก่อน

      Faltou o “install”
      !pip install notebook pandas…

    • @letsdataAI
      @letsdataAI  7 หลายเดือนก่อน

      Faltou o “install”
      !pip install notebook pandas…

  • @TheConsky22
    @TheConsky22 2 ปีที่แล้ว

    Leon, bom dia!
    pode me ajudar?
    Quando tento aplicar aparece o seguinte erro já tentei de tudo e não consigo.
    'numpy.ndarray' object has no attribute 'iloc'
    Valeu

    • @letsdataAI
      @letsdataAI  2 ปีที่แล้ว

      Bruno, acha a gente lá no instagram pra gente te ajudar mais de perto! Abraço!

    • @fabioflemingleitao
      @fabioflemingleitao 8 หลายเดือนก่อน

      Também tive o mesmo problema. Acreditoque o input "X, y" que colocamos no validação_cruzada seja um array, e por isso não dá para utilizar o "iloc" (que é para dataframe).

    • @grihgy
      @grihgy 28 วันที่ผ่านมา

      se vc estiver usando o standartscaler, use somente depois do crossvalidation

  • @HenriqueSantos-xd1eg
    @HenriqueSantos-xd1eg ปีที่แล้ว

    Deveria usar o R pelo tidymodels

  • @vanessavieira1672
    @vanessavieira1672 2 ปีที่แล้ว

    14:12