Esta é uma pergunta estranha, eu sei.
Eu sou apenas um noob e tentando aprender sobre diferentes opções de classificadores e como elas funcionam. Então, eu estou fazendo a pergunta:
Dado um conjunto de dados de n1-dimensões e n2-observações em que cada observação pode ser classificada em n3-buckets, qual algoritmo com mais eficiência (idealmente com apenas uma iteração de treinamento) produz um modelo (limite de classificação) que classificaria perfeitamente todas as observações no conjunto de dados (completamente super ajuste)?
Em outras palavras, como alguém supera facilmente?
(Por favor, não me ensine sobre 'não ajustar demais'. Isso é apenas para fins educacionais teóricos.)
Suspeito que a resposta seja mais ou menos assim: "Bem, se seu número de dimensões for maior que seu número de observações, use o algoritmo X para desenhar os limites, caso contrário, use o algoritmo Y".
Também suspeito que a resposta diga: "Você pode traçar um limite suave, mas mais computacionalmente caro do que desenhar linhas retas entre todas as diferentes observações classificadas".
Mas é isso que minha intuição me guiará. Você pode ajudar?
Eu tenho um exemplo desenhado à mão do que acho que estou falando em 2D com classificação binária.
Basicamente, basta dividir a diferença, certo? Que algoritmo faz isso de forma eficiente para n-dimensões?
fonte
Respostas:
Desde que todas as observações sejam únicas, os vizinhos K mais próximos com K definido como 1 e com qualquer métrica de distância válida arbitrária fornecerão um classificador que se encaixa perfeitamente no conjunto de treinamento (já que o vizinho mais próximo de cada ponto do conjunto de treinamento é trivial , em si). E é provavelmente o mais eficiente, pois nenhum treinamento é necessário.
É o mais eficiente em termos de tempo, mas não necessariamente o mais eficiente em termos de espaço.
fonte
Você não pode.
Pelo menos não em geral, na medida que você deseja, se você deseja um ajuste perfeito com dados arbitrários e dimensionalidade arbitrária.
Como exemplo, suponha que tenhamos dimensões preditivas (ou seja, nenhuma) e observações classificadas em buckets. As duas observações são classificadas em dois baldes diferentes , a saber "chocolate" e "baunilha".n1=0 n2=2 n3=2
Como você não possui preditores, não poderá classificá-los perfeitamente, ponto final.
Se você possui pelo menos um preditor que aceita valores diferentes em cada observação , pode realmente superestimar arbitrariamente mal, simplesmente usando ordens polinomiais arbitrariamente altas para um preditor numérico (se o preditor for categórico com valores diferentes em cada observação, você não nem precisa se transformar). A ferramenta ou modelo é praticamente secundário. Sim, é fácil exagerar.
Aqui está um exemplo. As 10 observações são completamente independentes do único preditor numérico. Ajustamos regressões ou poderes logísticos cada vez mais complexos do preditor e classificamos usando um limite de 0,5 (o que não é uma boa prática ). Os pontos corretamente ajustados estão marcados em verde, os pontos incorretos em vermelho.
Código R:
fonte