Klassifizierungsalgorithmus basierend auf durchschnittlichen Entfernungen von einem Testpunkt zu den Punkten in jeder Klasse


7

Gibt es einen Klassifizierungsalgorithmus, der dem Punktcluster, dessen durchschnittliche Entfernung minimal ist, einen neuen Testvektor zuweist?

Lassen Sie es mich besser schreiben: Stellen wir uns vor, wir haben Cluster von jeweils Punkten. Für jeden Cluster k berechne ich den Durchschnitt aller Abstände zwischen und , wobei ein Punkt im Cluster .KTkx(0)x(i)x(i)k

Der Testpunkt wird dem Cluster mit einem Minimum solcher Abstände zugewiesen.

Denken Sie, dass dies ein gültiger Klassifizierungsalgorithmus ist? Theoretisch sollten wir in der Lage sein, eine gute Klassifizierungsgenauigkeit zu erzielen, wenn der Cluster "gut geformt" ist, wie Sie es nach einer linearen Fischerei-Diskriminanz-Zuordnung getan haben.

Was denkst du über dieses Algo? Ich habe es versucht, aber das Ergebnis ist, dass die Klassifizierung stark auf den Cluster mit der größten Anzahl von Elementen ausgerichtet ist.

def classify_avg_y_space(logging, y_train, y_tests, labels_indices):
    my_labels=[]
    distances=dict()
    avg_dist=dict()
    for key, value in labels_indices.items():
        distances[key] = sk.metrics.pairwise.euclidean_distances(y_tests, y_train[value])
        avg_dist[key]=np.average(distances[key], axis=1)

    for index, value in enumerate(y_tests):
      average_distances_test_cluster = { key : avg_dist[key][index] for key in labels_indices.keys() }
      my_labels.append(min(average_distances_test_cluster, key=average_distances_test_cluster.get))
    return my_labels

Es heißt Zuordnung. Jede Abstandsfunktion zwischen einem Punkt und einer Klassenverknüpfungsfunktion (siehe stats.stackexchange.com/a/217742/3277 ) kann verwendet werden, nicht nur zwischen der durchschnittlichen Verknüpfung, die Sie verwenden. Ich habe eine Funktion für SPSS implementiert, die die Zuordnung durch verschiedene Verknüpfungsfunktionen übernimmt.
ttnphns

Antworten:


9

Es ist eine nette Idee, hat aber einen großen Fehler: Sie reagiert zu empfindlich auf die Verbreitung der Daten.

Um die Frage zu klären Sie bei disjunkten Clustern , ob es sinnvoll ist, eine neue Stichprobe gemäß der Regel zu klassifizieren.kC1,,Ckx

argmini[k]1|Ci|xCixx

Beachten Sie, dass diese Regel in der Tat Regeln ähnelt, die als bekannte Algorithmen existieren, wie das ist tatsächlich 1-Nearest-Neighbors, oder das in aufgerufen wird , aber von k-Means für die Clusterzuweisung verwendet wird und in LDA in dem Fall gesehen werden kann, in dem die zugrunde liegende Kovarianz vorliegt Matrix ist die Identität (bis zum Skalar). (Beachten Sie, dass LDA im Allgemeinen auch die Form [Ausbreitung + Ausrichtung] der Cluster berücksichtigt.)

argmini[k]minxCixx
argmini[k]1|Ci|xCixx
sklearnNearestCentroid

In vielen Fällen verhält sich die vorgeschlagene Regel ähnlich wie NearestCentroid, insbesondere wenn die Cluster gut getrennt sind und eine ähnliche Varianz aufweisen (in diesem Fall denke ich, dass es möglich ist, die durchschnittliche Entfernung in Bezug auf die Entfernung vom Schwerpunkt zu begrenzen).

Da jedoch die Entfernungen über alle Punkte im Cluster gemittelt werden, ist es offensichtlich auf Cluster mit geringer Varianz ausgerichtet. Ich glaube, das ist die wahre Quelle der Fehlkennzeichnung, die Sie bemerkt haben.

Um diesen Effekt zu veranschaulichen, können wir die Entscheidungsgrenze unserer Klassifikatoren darstellen. Handlungen basieren schamlos auf sklearndem Beispiel von .

Geben Sie hier die Bildbeschreibung ein

Im vorhergehenden Diagramm habe ich zwei Datensätze aus verschiedenen Normalverteilungen generiert. Das Violett kam von und das Gelb kam von Dann wird jeder Punkt im Raum gemäß der Regel gefärbt. Die Trennlinie zwischen den Regionen ist die Entscheidungsgrenze. Es gibt 200 Punkte im violetten Cluster und 50 im gelben Cluster. Das markiert den Schwerpunkt jedes Clusters. Beachten Sie, dass der violette Cluster nicht mit den Achsen ausgerichtet ist, um den Unterschied zwischen LDA und Nearest Centroid hervorzuheben.

N((03),(10221)2)
N((03),(1001))
+

Dies ist eine hervorragende Illustration eines nicht intuitiven Punktes. Vielen Dank und willkommen im Lebenslauf!
Stephan Kolassa

+1 Sehr schön, aber ich bin verwirrt von Ihrer Handlung oben links. Der nächste Schwerpunkt sollte eine Entscheidungsgrenze senkrecht zur Verbindungslinie zwischen den beiden Schwerpunkten haben. Dies scheint nicht der Fall zu sein.
Amöbe

Bitte beschreiben Sie das Bild in der Antwort, insbesondere die Grenzlinie zwischen den beiden Bereichen.
ttnphns

@amoeba Du hast recht. Beachten Sie jedoch, dass die Achsen nicht den gleichen Maßstab haben (aus dem gleichen Grund hat der gelbe Cluster nicht die Form eines Kreises).
tmrlvi

@ttnphns Die Liniengrenzlinie zwischen den beiden Bereichen ist die Entscheidungsgrenze. Ich habe mehr Beschreibung in den Beitrag hinzugefügt.
tmrlvi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.