Entendo a premissa do algoritmo kNN para dados espaciais. E sei que posso estender esse algoritmo para ser usado em qualquer variável de dados contínua (ou dados nominais com distância de Hamming). No entanto, quais estratégias são usadas ao lidar com dados dimensionais mais altos?
Por exemplo, digamos que eu tenha uma tabela de dados (x [1], x [2], x [3], ..., x [n]) e deseje criar um conjunto de classificadores para prever uma dessas colunas (diga x [n]). Usando o algoritmo kNN, eu selecionaria duas colunas das colunas restantes (x [1] -x [n-1]) para treinar. Então, digamos que eu possa escolher x [1] e x [2] e criar um classificador a partir deles. Ou eu poderia escolher x [1] e x [4], ou eu poderia escolher x [5] e x [8], etc. Eu poderia até escolher apenas uma coluna e criar um classificador a partir disso, ou 3 colunas e criar um classificador fora disso. Existe uma vantagem em usar dimensões mais altas (2D, 3D etc.) ou você deve apenas criar classificadores de dimensão única x-1 e agregar suas previsões de alguma forma?
Como construir todos esses classificadores a partir de todas as combinações potenciais das variáveis seria caro em termos computacionais. Como otimizar essa pesquisa para encontrar os melhores classificadores kNN desse conjunto? E, depois de encontrar uma série de classificadores, qual é a melhor maneira de combinar sua saída com uma única previsão? A votação pode ser a resposta mais simples para essa pergunta. Ou ponderando cada voto pelas taxas de erro dos dados de treinamento de cada classificador.
Como a maioria das implementações aplica o kNN a um aprendizado mais generalizado?
fonte
Respostas:
Isso depende se seus recursos são informativos ou não. Você suspeita que alguns recursos não serão úteis na sua tarefa de classificação? Para ter uma idéia melhor dos seus dados, você também pode tentar calcular a correlação aos pares ou informações mútuas entre a variável de resposta e cada um dos seus recursos.
Para combinar todos (ou um subconjunto) de seus recursos, você pode tentar calcular a distância L1 (Manhattan) ou L2 (euclidiana) entre o ponto de consulta e cada ponto de 'treinamento' como ponto de partida.
Esse é o problema da seleção de subconjuntos de recursos. Há muito trabalho acadêmico nessa área (ver Guyon, I., & Elisseeff, A. (2003). Uma introdução à seleção de variáveis e recursos. Journal of Machine Learning Research, 3, 1157-1182. Para uma boa visão geral )
Isso dependerá de os recursos selecionados serem independentes ou não. No caso de os recursos serem independentes, você pode ponderar cada recurso por suas informações mútuas (ou alguma outra medida de informatividade) com a variável de resposta (seja qual for a sua classificação). Se alguns recursos forem dependentes, um único modelo de classificação provavelmente funcionará melhor.
Ao permitir que o usuário especifique sua própria matriz de distância entre o conjunto de pontos. O kNN funciona bem quando uma métrica de distância apropriada é usada.
fonte