Eu gostaria de usar dados não atômicos, como um recurso para uma previsão. Suponha que eu tenha uma tabela com esses recursos:
- Column 1: Categorical - House
- Column 2: Numerical - 23.22
- Column 3: A Vector - [ 12, 22, 32 ]
- Column 4: A Tree - [ [ 2323, 2323 ],[2323, 2323] , [ Boolean, Categorical ] ]
- Column 5: A List [ 122, Boolean ]
Gostaria de prever / classificar, por exemplo, a Coluna 2.
Estou fazendo algo para responder automaticamente a perguntas, qualquer tipo de pergunta, como "Onde estava o Foo Born?" ...
Primeiro faço uma consulta a um mecanismo de pesquisa e, em seguida, obtenho alguns dados de texto como resultado, depois faço todo o material de análise (marcação, stemming, análise, divisão, divisão ...)
Minha primeira abordagem foi criar uma tabela, cada linha com uma linha de texto e vários recursos, como "Primeira palavra", "Tag da primeira palavra", "Chunks", etc ...
Mas, com essa abordagem, sinto falta das relações entre as frases.
Gostaria de saber se existe um algoritmo que analisa as estruturas (ou vetores) da árvore e faz as relações e extrai o que for relevante para a previsão / classificação. Eu preferiria saber sobre uma biblioteca que faz isso do que um algoritmo que eu tenho que implementar.
fonte
Respostas:
Quando se trata de lidar com muitos tipos díspares de dados, especialmente quando as relações entre eles não são claras, eu recomendaria fortemente uma técnica baseada em árvores de decisão , as mais populares hoje em dia pelo melhor de meu conhecimento são floresta aleatória e extremamente aleatória árvores .
Ambos têm implementações no sklearn e são bastante simples de usar. Em um nível muito alto, a razão pela qual uma
decision tree
abordagem baseada é vantajosa para vários tipos diferentes de dados é porque as árvores de decisão são amplamente independentes dos dados específicos com os quais estão lidando, desde que sejam capazes de entender sua representação.Você ainda precisará ajustar seus dados em um vetor de recurso de algum tipo, mas, com base no seu exemplo, isso parece uma tarefa bastante simples e, se você estiver disposto a aprofundar um pouco sua implementação, certamente poderá criar uma regra de divisão de árvore personalizada sem precisar alterar nada no algoritmo subjacente. O artigo original é um lugar bastante decente para começar, se você quiser tentar.
Se você deseja dados pseudo-estruturais a partir dos dados de texto, sugiro pesquisar
doc2vec
, recentemente desenvolvido pelo Google. Eu não acho que existem boas implementações de código aberto agora, mas é uma melhoria bastante direta noword2vec
algoritmo, que tem implementações em pelo menosC
epython
.Espero que ajude! Entre em contato se tiver mais alguma dúvida.
fonte