Eu tenho um problema de grande volume de dados com um grande conjunto de dados (por exemplo, 50 milhões de linhas e 200 colunas). O conjunto de dados consiste em cerca de 100 colunas numéricas e 100 colunas categóricas e uma coluna de resposta que representa um problema de classe binária. A cardinalidade de cada uma das colunas categóricas é menor que 50.
Quero saber a priori se devo optar por métodos de aprendizado profundo ou por métodos baseados em árvores de conjunto (por exemplo, aumento de gradiente, adaboost ou florestas aleatórias). Existem análises exploratórias de dados ou outras técnicas que podem me ajudar a decidir por um método em relação ao outro?
Respostas:
Por que se restringir a essas duas abordagens? Porque eles são legais? Eu sempre começaria com um classificador linear simples \ regressor. Portanto, neste caso, uma SVM linear ou regressão logística, de preferência com uma implementação de algoritmo que pode tirar proveito da escarsidade devido ao tamanho dos dados. Levará muito tempo para executar um algoritmo de DL nesse conjunto de dados, e normalmente eu tentaria apenas um aprendizado profundo sobre problemas especializados, onde há alguma estrutura hierárquica nos dados, como imagens ou texto. É um exagero para muitos problemas de aprendizagem mais simples, e leva muito tempo e conhecimento para aprender e também os algoritmos de DL são muito lentos para treinar. Além disso, apenas porque você tem 50 milhões de linhas, não significa que você precisa usar todo o conjunto de dados para obter bons resultados. Dependendo dos dados, você pode obter bons resultados com uma amostra de algumas 100.000 linhas ou alguns milhões. Eu começaria simples, com uma pequena amostra e um classificador linear, e ficaria mais complicado a partir daí, se os resultados não fossem satisfatórios. Pelo menos assim, você obterá uma linha de base. Muitas vezes, encontramos modelos lineares simples para executar modelos mais sofisticados na maioria das tarefas, então você sempre quer começar por aí.
fonte
Além de outras respostas (e há um bom link nos comentários), depende de qual é o problema ou de quais tipos de perguntas você deseja responder. Como só posso sugerir com base em minha própria experiência, no caso de uma tarefa de classificação, os métodos possíveis podem ser severamente limitados com base no equilíbrio de classes no conjunto de dados.
Quando você atinge um desequilíbrio maior que cerca de 1:10 da classe, a maioria dos métodos de classificação simplesmente para de funcionar. Você ficará com métodos baseados em floresta aleatória e talvez em redes neurais (ainda não tentei). Trabalho com o saldo da classe no intervalo de 1: 500 a 1: 1000 e constatei que nem a redução ou a ampliação da amostra funcionam. Felizmente, meu conjunto de dados é "apenas" observações de 6mln por 200 variáveis e sou capaz de executar árvores otimizadas em todo o conjunto em tempo razoável.
Então, para responder diretamente à sua pergunta:
você deve formular um monte de perguntas que gostaria de responder e, em caso de classificação, verifique os saldos das classes das variáveis de destino.
você deve verificar a distribuição (não no sentido matemático) de valores ausentes em todos os seus dados e documentar o que encontra. Alguns métodos de ML são bons com valores ausentes, enquanto outros não, e você precisa examinar a imputação de dados (que possui seu próprio conjunto de regras, diretrizes e problemas).
fonte
Na minha perspectiva, para 5 milhões de instâncias, você precisa de muitas árvores para obter uma boa generalização (um bom modelo no termo leigo). Se isso não for um problema, tente-o, mesmo a resposta exata depende da natureza do seu problema. O GBT é um bom método, especialmente se você misturar tipos de recursos como categórico, numérico e outros. Além disso, em comparação com as Redes Neurais, possui um número menor de hiperparâmetros a serem ajustados. Portanto, é mais rápido ter um melhor modelo de configuração. Mais uma coisa é a alternativa do treinamento paralelo. Você pode treinar várias árvores ao mesmo tempo com uma boa CPU. Se você não estiver satisfeito com os resultados, vá para as Redes Neurais, pois isso significa que seu modelo deve ser mais extenso e deve aprender informações de ordem superior através de seus dados. Isso é devido às NNs em comparação com outros algoritmos de aprendizado.
fonte
Na linha do que o @Simon já disse:
Para o seu problema, a troca de esforço versus benefício não parece estar a favor da aprendizagem profunda. DL seria um exagero
fonte
Quando você tem um conjunto de dados tão grande, pode jogar com qualquer uma das técnicas de modelagem estatística e de aprendizado de máquina, e isso é altamente recomendável. Como outros sugeriram, eu também recomendaria coletar alguns milhões de amostras aleatórias dos dados e brincar com isso. Como esse é um problema de classificação, seguirei primeiro as técnicas simples de classificação e depois as mais complexas. A regressão logística é ótima para começar.
Eu queria acrescentar que modelos generativos também devem ser experimentados. O classificador Naive Bayes é um dos classificadores probabilísticos mais simples e supera muitos métodos complexos, como suporta máquinas de vetores em muitas tarefas. Você pode observar esta simples implementação do NB e este link para comparação do NB à regressão logística.
Pode-se construir um classificador Naive bayes (NB) como modelo de linha de base e, em seguida, optar por qualquer técnica de aprendizado de máquina, como máquinas de vetor de suporte (SVM) ou perceptrons de multicamadas (MLP). Uma desvantagem aqui é que o NB é computacionalmente mais barato que o MLP e, portanto, é desejado um melhor desempenho do MLP.
Chegando à sua consulta exata: O aprendizado profundo e o aprimoramento da árvore de gradiente são técnicas muito poderosas que podem modelar qualquer tipo de relacionamento nos dados. Mas e se, no seu caso, uma simples regressão logística ou RN estiver dando a precisão desejada. Portanto, é sempre melhor experimentar primeiro as técnicas simples e ter um desempenho básico. Depois, pode-se optar por modelos complexos e comparar com a linha de base.
fonte