Segundo a documentação os dois têm ideias parecidas, dividir os dados, porém utilizações diferentes.
O train_test_split
é utilizado de forma ”mais simples” para dividir os dados em dois grupos, um para ser usado como treino e outro como validação, sendo essa que essa separação pode ou não ser estratificada, ou seja, dividida proporcionalmente. Ele é mais utilizado em momentos iniciais, quando queremos ter uma noção inicial do modelo.
Já o StratifiedShuffleSplit
é utilizado quando estamos aplicando o cross-validation, ou validação cruzada, que seria uma etapa mais avançada de validação do modelo, onde em vez de separar o conjunto de dados apenas em um conjunto de treino e teste, os dados são separados em vários grupos menores, onde serão feitas várias rodadas de treino e teste variando esses grupos entre os dados de treino e de teste.
Exemplificando, vamos supor que utilize o StratifiedShuffleSplit
em um conjunto de dados, ele vai separar os dados em 3 grupos, por exemplo, A,B,e C, mantendo entre eles a ideia de estratificação. Serão feitas N rodadas de treino e teste, onde uma hora os dados de treino serão os grupos A e B e o de teste será o C. E assim vai alternando.
O cross-validation é uma técnica que ajuda a diminuir o overfitting e a perda de informações importantes ao se separar os dados em treino e teste, onde algum relacionamento importante tenha ficado apenas no grupo de teste.
Em resumo, a diferença mesmo entre as duas técnicas , aqui apenas uma conclusão minha, é que o StratifiedShuffleSplit
aplica N vezes o train_test_split
. Se n_splits = 1
então basicamente terão o mesmo resultado, desde que o random_state
seja o mesmo.
links da documentação:
https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedShuffleSplit.html