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 .
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
Antworten:
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.k C1,…,Ck x∗
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.)
sklearn
NearestCentroid
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
sklearn
dem Beispiel von .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.
+
quelle