Je comprends la prémisse de l'algorithme kNN pour les données spatiales. Et je sais que je peux étendre cet algorithme à utiliser sur n'importe quelle variable de données continue (ou données nominales avec distance de Hamming). Cependant, quelles stratégies sont utilisées pour traiter des données de dimension supérieure?
Par exemple, disons que j'ai une table de données (x [1], x [2], x [3], ..., x [n]) et que je veux construire un ensemble de classificateurs pour prédire l'une de ces colonnes (disons x [n]). En utilisant l'algorithme kNN, je choisirais deux colonnes parmi les colonnes restantes (x [1] -x [n-1]) pour m'entraîner. Alors disons que je pourrais choisir x [1] et x [2] et construire un classificateur à partir de ceux-ci. Ou je pouvais choisir x [1] et x [4], ou je pouvais choisir x [5] et x [8], etc. Je pouvais même choisir une seule colonne et construire des classificateurs à partir de cela, ou 3 colonnes et construire un classificateurs hors cela. Y a-t-il un avantage à utiliser des dimensions plus élevées (2D, 3D, etc.) ou devriez-vous simplement créer des classificateurs à une dimension x-1 et agréger leurs prédictions d'une manière ou d'une autre?
Puisque la construction de tous ces classificateurs à partir de toutes les combinaisons potentielles des variables serait coûteuse en calcul. Comment pourrais-je optimiser cette recherche pour trouver les meilleurs classificateurs kNN de cet ensemble? Et, une fois que j'ai trouvé une série de classificateurs, quelle est la meilleure façon de combiner leur sortie à une seule prédiction? Le vote pourrait être la réponse la plus simple à cette question. Ou pondérer chaque vote par les taux d'erreur des données de formation pour chaque classificateur.
Comment la plupart des implémentations appliquent-elles kNN à un apprentissage plus généralisé?
la source
Réponses:
Cela dépend si vos fonctionnalités sont informatives ou non. Pensez-vous que certaines fonctionnalités ne seront pas utiles dans votre tâche de classification? Pour avoir une meilleure idée de vos données, vous pouvez également essayer de calculer la corrélation par paire ou les informations mutuelles entre la variable de réponse et chacune de vos fonctionnalités.
Pour combiner toutes (ou un sous-ensemble) de vos fonctionnalités, vous pouvez essayer de calculer la distance L1 (Manhattan) ou L2 (Euclidienne) entre le point de requête et chaque point `` d'entraînement '' comme point de départ.
C'est le problème de la sélection des sous-ensembles de fonctionnalités. Il y a beaucoup de travaux académiques dans ce domaine (voir Guyon, I., et Elisseeff, A. (2003). An Introduction to Variable and Feature Selection. Journal of Machine Learning Research, 3, 1157-1182. Pour une bonne vue d'ensemble ).
Cela dépendra si les fonctions sélectionnées sont indépendantes ou non. Dans le cas où les fonctionnalités sont indépendantes, vous pouvez pondérer chaque fonctionnalité par ses informations mutuelles (ou une autre mesure de l'informativité) avec la variable de réponse (quelle que soit la classification). Si certaines fonctionnalités sont dépendantes, un seul modèle de classification fonctionnera probablement mieux.
En permettant à l'utilisateur de spécifier sa propre matrice de distance entre l'ensemble de points. kNN fonctionne bien lorsqu'une mesure de distance appropriée est utilisée.
la source