/Machine_Learning-

Neste repositório vou adicionar minha evolução estudando mais sobre machine learning

Primary LanguageJupyter Notebook

Machine Learning

Neste repositório vou adicionar minha evolução em aplicações de algoritmos machine learning utilizando alguns conjuntos de dados, e após o estudo será feito uma breve explicação sobre o que foi usado para desenvolver os algoritmos.

1 - Validação cruzada e aleatoriedade inicial

Inicialmente aplicamos o SEED para ter um aumento na accuracy, mas para evitar uma decisão baseada em uma aleatoriedade, ou seja ficarmos menos suscetíveis a ela utilizamos o cross_validade, também para evitar que no conjunto treino e teste onde inicialmente foi usada a técnica holdout tenha sido separado de uma maneira ruim decidimos treinar e testar mais de uma vez para ter uma estimativa, para isso treinamos e testamos o conjunto de dados de maneira cruzada utilidando KFold. No algoritmo que usava o DecisionTreeClassifier no cross_validate que até então estava definido com cv=5, decidimos colocar o nosso gerador de validação (KFold), uma vez cross_validate aceita esse parâmetro e tal objeto Kfold, permite a aleatoriedade quando shuffle = True. Mais adiante foi notado que com o KFold tem chance de ocorrer desbalanceamento entre classes, no caso do train_test_split que a váriavel stratified pode ser aplicada para fazer o balanceamento entre as classes o KFold não fornecia tal possibilidade, tivemos que usar então o StratifiedKFold para solucionar o problema. Levando em consideração que o algoritmo precisa se capaz de se adaptar a novos dados, nisso agrupamos os dados que já possuiamos no nosso conjunto de dados utilizando o GroupKFold para que novos dados tivessem um grupo específico para serem alocados, e como algortimos SVM são sensíveis a discrêpancias nas features aplicamos o StandardScaler removendo a média e escalonando a variância. Como o processo no GroupKFold é rodado sempre de acordo com os grupos e splits utilizamos o pipeline para fazer em sequência, scaler e modelo.

2 - Otimização de modelos através de hiperparâmetros

Utilizamos hiper parâmetros, como o min_samples_leaf e o min_samples_splits, também foi buscado formas de escolher os melhores parâmetros e para isso utilizamos o GridSearchCV, como Pandas não suporta nested validation com groupKFold não conseguimos prever os resultados para novos grupos, então usamos apenas o KFold, e plotamos de formas diferentes os dados para termos uma melhor vizualização utilizando seaborn e Graphviz