Respostas:
O KNN é um algoritmo discriminativo, pois modela a probabilidade condicional de uma amostra pertencente a uma determinada classe. Para ver isso, considere como se chega à regra de decisão dos kNNs.
Uma etiqueta de classe corresponde a um conjunto de pontos que pertencem a alguma região no espaço recurso . Se você extrair pontos de amostra da distribuição de probabilidade real, , independentemente, então a probabilidade de extrair uma amostra dessa classe é:
E se você tiver pontos? A probabilidade de que K pontos desses N pontos caiam na região R segue a distribuição binomial, P r o b ( K ) = ( N
Como esta distribuição tem um pico acentuado, de modo que a probabilidade pode ser aproximada pelo seu valor médio K . Uma aproximação adicional é que a distribuição de probabilidade sobreRpermanece aproximadamente constante, de modo que se pode aproximar a integral por, P=∫Rp(x)dx≈p(x)V em queVé o volume total da região. Sob essas aproximaçõesp(x)≈K
Agora, se tivéssemos várias classes, poderíamos repetir a mesma análise para cada uma, o que nos daria, ondeKké a quantidade de pontos da classekque se enquadra nessa região eNké o número total de pontos pertencentes à classeCk. AvisoΣkNk=N.
Repetindo a análise com a distribuição binomial, é fácil ver que podemos estimar o anterior .
Usando a regra de Bayes, que é a regra para os kNNs.
Responder por @jpmuc não parece ser preciso. Modelos generativos modelam a distribuição subjacente P (x / Ci) e depois usam o teorema de Bayes para encontrar as probabilidades posteriores. Isso é exatamente o que foi mostrado nessa resposta e conclui exatamente o oposto. : O
Para que o KNN seja um modelo generativo, poderemos gerar dados sintéticos. Parece que isso é possível quando temos alguns dados de treinamento inicial. Porém, a partir de nenhum dado de treinamento e geração de dados sintéticos não é possível. Portanto, o KNN não se encaixa muito bem com modelos generativos.
Pode-se argumentar que o KNN é um modelo discriminativo porque podemos traçar limites discriminantes para classificação, ou podemos calcular o P posterior (Ci / x). Mas tudo isso também é verdade no caso dos modelos generativos. Um verdadeiro modelo discriminativo não diz nada sobre a distribuição subjacente. Mas, no caso do KNN, sabemos muito sobre a distribuição subjacente; na verdade, estamos armazenando todo o conjunto de treinamento.
Portanto, parece que o KNN está a meio caminho entre os modelos generativo e discriminativo. Provavelmente, é por isso que o KNN não é classificado em nenhum dos modelos generativos ou discriminatórios em artigos de renome. Vamos chamá-los de modelos não paramétricos.
Eu vim através de um livro que diz o contrário ( isto é, um modelo de classificação não paramétrico generativo )
Este é o link on-line: Aprendizado de Máquina Uma Perspectiva Probabilística por Murphy, Kevin P. (2012)
Concordo que o kNN é discriminatório. O motivo é que ele não armazena nem tenta explicitamente aprender um modelo (probabilístico) que explica os dados (ao contrário de, por exemplo, Naive Bayes).
A resposta de juampa me confunde, pois, no meu entender, um classificador generativo é aquele que tenta explicar como os dados são gerados (por exemplo, usando um modelo), e essa resposta diz que é discriminatório por esse motivo ...