Eu tenho um conjunto de dados para o qual estou tentando prever variáveis de destino.
Col1 Col2 Col3 Col4 Col5
1 2 23 11 1
2 22 12 14 1
22 11 43 38 3
14 22 25 19 3
12 42 11 14 1
22 11 43 38 2
1 2 23 11 4
2 22 12 14 2
22 11 43 38 3
Forneci dados de amostra, mas o meu possui milhares de registros distribuídos de maneira semelhante. Aqui, Col1, Col2, Col3, Col4 são meus recursos e Col5 é a variável alvo. Portanto, a previsão deve ser 1,2,3 ou 4, pois esses são meus valores para a variável de destino. Eu tentei usar algoritmos como floresta aleatória, árvore de decisão etc. para previsões.
Aqui, se você vê, os valores 1,2 e 3 estão ocorrendo mais vezes em comparação com 4. Portanto, ao prever, meu modelo é mais inclinado para 1 2 e 3, enquanto eu estou obtendo apenas um número menor de previsões para 4 (tenho apenas 1 previsto para policy4 de milhares de registros quando vi a matriz de confusão).
Para generalizar meu modelo, removi a porcentagem igual de dados que pertencem aos valores 1,2 e 3 aleatoriamente. Agrupei por cada valor na Col5 e depois removi certa porcentagem, para diminuir o número de registros. Agora eu pude ver certo aumento na porcentagem de precisão e também um aumento razoável nas previsões para o valor 4 na matriz de confusão.
Essa é a abordagem correta para lidar (remover os dados aleatoriamente daqueles grupos nos quais o modelo é tendencioso)?
Tentei algoritmos python embutidos, como as técnicas Adaboost, GradientBoost, usando o sklearn. Eu li que esses algoritmos são para lidar com a classe de desequilíbrio. Mas não consegui melhorar minha precisão, removendo os dados aleatoriamente, onde pude ver algumas melhorias.
Essa redução é uma técnica de subamostragem e é a abordagem correta para subamostragem?
Existe algum pacote predefinido no sklearn ou alguma lógica que eu possa implementar em python para fazer isso, se minha remoção aleatória estiver errada?
Além disso, aprendi sobre a técnica SMOTE, que trata de superamostragem. Devo tentar isso para o valor 4? E podemos fazer isso usando qualquer pacote embutido em python? Seria ótimo se alguém me ajudasse nessa situação.