Classificação com dados altos de gordura

15

Preciso treinar um classificador linear no meu laptop com centenas de milhares de pontos de dados e cerca de dez mil recursos. Quais são as minhas opções? Qual é o estado da arte para esse tipo de problema?

Parece que a descida do gradiente estocástico é uma direção promissora, e meu senso é que este é o estado da arte:

"Pegasos: Primal estimado sub-GrAdient SOlver para SVM" Shai Shalev-Shwartz, Yoram Singer, Nathan Srebro, Andrew Cotter. "Programação matemática, série B, 127 (1): 3-30, ano: 2007".

Esse é o consenso? Eu deveria estar olhando em alguma outra direção?

carlosdc
fonte
11
você já pensou em usar alguns métodos de redução de dimensão? milhares de recursos exigem uma redução de dimensão, consulte: en.wikipedia.org/wiki/Dimension_reduction
Dov
Esta questão pode ser melhorada com o esforço de pesquisa. Você tem alguma técnica em mente?
Tamzin Blake
@ Thom Blake: Eu editei a pergunta um pouco, com meus pensamentos.
Carlosdc
Sem saber mais sobre os dados, qualquer resposta seria desinformada. É escasso? contínuo? discreto? recursos / objetos redundantes? quantas aulas? Por exemplo, o PCA em dados esparsos às vezes pode ser prejudicial.
cyborg
2
altura = muitos pts? gordura = muitos recursos? esta terminologia std está em algum lugar, usada em refs em algum lugar?

Respostas:

6

Eu acho que você deve olhar para os métodos de aprendizagem on - line . O perceptron e o perceptron do kernel são extremamente fáceis de codificar e funcionam muito bem na prática, e existem vários outros métodos online. Observe que qualquer método de aprendizado on-line pode ser convertido em um algoritmo de aprendizado em lote, caso em que se assemelham aos métodos de descida estocástica de gradiente.

Se você estiver usando o Matlab, há uma caixa de ferramentas muito boa chamada DOGMA, de Francesco Orabona, que contém vários algoritmos de aprendizado on-line, e você pode avaliar alguns métodos diferentes usando isso. Eu usei isso em algumas das minhas pesquisas e achei muito útil (note que, tanto quanto me lembro, os dados são esperados como [recursos x exemplos], para que você precise transpor esses dados).

Como outros já mencionaram, convém tentar reduzir a dimensionalidade. O PCA pode não ser uma opção tão boa aqui, pois você precisa calcular a matriz de covariância, que será muito cara. Você pode tentar olhar para projeções aleatórias . A teoria é dura, mas o princípio é muito simples. É baseado no Johnson-Lindenstrauss Lemma, se você estiver interessado, mas a idéia básica é que, se você projetar aleatoriamente em um espaço dimensional inferior, distâncias entre os pontos serão preservadas até ϵ . Se você estiver usando um kernel RBF, você precisará de 2 distâncias!2ϵ2

tdc
fonte
7

Primeiro, gostaria de perguntar como você sabe que classificador linear é a melhor escolha? Intuitivamente, para um espaço tão grande (R ^ 10000), é possível que algum outro classificador não linear seja uma escolha melhor.

Eu sugiro que você tente vários classificadores diferentes e observe os erros de previsão (eu tentaria vários modelos de classificação regularizados).

Se você ficar sem memória, reduza a dimensão usando o PCA

niko
fonte
2
Obrigado. Eu estava pensando mais sobre como lidar com a escala do problema. Eu queria começar fazendo linear, porque é mais simples. Eu acho que você sugere um método baseado em kernel. Permitam-me apenas salientar que, se eu tiver 750000 pontos de dados, a matriz do kernel será do tamanho de 540 GB. Portanto, a resposta não pode ser: conecte-o ao LIBSVM / SVMLight / etc, obtenha um bom C e gama e veja o que você obtém.
Carlosdc
2
(-1) a resposta é a) em parte tão genérica que pode ser aplicada a qualquer pergunta de classificação b) não é explicado por que o PCA é recomendado (sobre qualquer outra técnica de redução de dimensão).
Steffen
1

Como jb sugeriu, acho melhor usar o método "Redução de dimensão". A Análise de Componentes Principais (PCA) é uma escolha popular. Além disso, você também pode tentar técnicas de aprendizado de recursos não supervisionados. Para obter mais informações sobre o aprendizado de recursos não supervisionados, consulte http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Upul
fonte
11
PCA não PAC;) ( 15 caracteres )
neurônio