Das erste Bild zeigt, dass MatrixTransformator eine perfekte ARI von 1,0 erreicht, was bedeutet, dass seine Dimensionalitätsreduzierung die ursprüngliche Clusterstruktur perfekt bewahrt, während PCA nur 0,4434 erreicht, was auf einen signifikanten Informationsverlust während der Reduktion hinweist. (verwendet Tensor_to_matrix ops)

    Die ARC -Berechnungen werden durch die Verwendung von:

    # Calculate adjusted rand scores to measure cluster preservation
    mt_ari = adjusted_rand_score(orig_cluster_labels, recon_cluster_labels)
    pca_ari = adjusted_rand_score(orig_cluster_labels, pca_recon_cluster_labels)
    

    Diese Funktion (aus sklearn.metrics) misst die Ähnlichkeit zwischen zwei Clusterzuordnungen, indem alle Probenpaare berücksichtigt werden und Paare gezählt werden, die sind:

    • Demselben Cluster in beiden Zuordnungen zugewiesen
    • In beiden Aufgaben verschiedenen Clustern zugeordnet

    Im zweiten Bild im linken Teil können wir sehen: Der angepasste Rand -Index (ARI) misst, wie gut die Clusterstruktur nach der Reduzierung und Rekonstruktion der Dimensionalität erhalten bleibt. Eine Punktzahl von 1,0 bedeutet eine perfekte Erhaltung der ursprünglichen Cluster, während niedrigere Punktzahlen darauf hinweisen, dass einige Clusterinformationen verloren gehen.

    Die perfekte Punktzahl des MatrixTransformer zeigt, dass die Dimensionalität verringert und gleichzeitig die ursprüngliche Clusterstruktur aufrechterhalten wird, was bei der Reduzierung der Dimensionalität hervorragend ist.

    Der richtige Teil zeigt, dass der mittlere Quadratfehler (MSE) misst, wie eng die rekonstruierten Daten mit den ursprünglichen Daten nach Dimensionalitätsreduzierung übereinstimmen. Niedrigere Werte zeigen eine bessere Rekonstruktion an.

    Der Rekonstruktionsfehler des MatrixTransformer-Rekonstruktionsnähe zeigt an, dass er die ursprünglichen hochdimensionalen Daten aus seiner niedrigerdimensionalen Darstellung perfekt rekonstruieren kann, während PCA während dieses Prozesses einige Informationen verliert.

    Relevante Code -Sinappets

    # Calculate reconstruction error
    mt_error = np.mean((features - reconstructed) ** 2)
    pca_error = np.mean((features - pca_reconstructed) ** 2)
    

    MatrixTransformer Reduktion und Rekonstruktion

    # MatrixTransformer approach
    start_time = time.time()
    matrix_2d, metadata = transformer.tensor_to_matrix(features)
    print(f"MatrixTransformer dimensionality reduction shape: {matrix_2d.shape}")
    mt_time = time.time() - start_time
    
    # Reconstruction
    start_time = time.time()
    reconstructed = transformer.matrix_to_tensor(matrix_2d, metadata)
    print(f"Reconstructed data shape: {reconstructed.shape}")
    mt_recon_time = time.time() - start_time
    

    PCA -Reduktion und -rekonstruktion

    # PCA for comparison
    start_time = time.time()
    pca = PCA(n_components=target_dim)
    pca_result = pca.fit_transform(features)
    print(f"PCA reduction shape: {pca_result.shape}")
    pca_time = time.time() - start_time
    
    # PCA reconstruction
    start_time = time.time()
    pca_reconstructed = pca.inverse_transform(pca_result)
    pca_recon_time = time.time() - start_time
    

    Ich habe eine benutzerdefinierte und optimierte Clustering -Funktion verwendet

        start_time = time.time()
        orig_clusters = transformer.optimized_cluster_selection(features)
        print(f"Original data optimal clusters: {orig_clusters}")
    

    Dies verwendet das Bayes’sche Informationskriterium (BIC) aus dem GaußsianMixture -Modell von Sklearn

    BIC Balances Modellanpassung und Komplexität durch Bestrafung von Modellen mit weiteren Parametern

    Niedrigere BIC -Werte zeigen bessere Modelle an

    Kandidatenauswahl:

    Verwendet einen Fibonacci-ähnlichen Fortschritt: [2, 3, 5, 8] für Effizienz

    Tests nur eine kleine Anzahl von Werten, anstatt ausführlich zu suchen

    Probenahme:

    Für große Datensätze probiert es bis zu 10.000 Punkte, um die Berechnung effizient zu halten

    Standardwert:

    Wenn keine bessere Option gefunden wird, ist es standardmäßig 2 Cluster

    Sie können das GitHub -Repo auch für die Testdatei aufrufen clustertest.py

    Der Github Repo -Link Fikayoy / MatrixTransformer

    Sterne dieses Repository um anderen zu helfen, es zu entdecken

    Lassen Sie mich wissen, ob dies hilft.

    Von Hyper_graph

    Share.

    4 Kommentare

    1. DesertSherpa on

      How do you know you aren’t just learning all the data with the labels?

    2. Who was it that asked you? Because it seems like this is something you have created

    3. From the images the MatrixTransformer clearly performed worse. While it reduced the dimensionality it provided no actual separation into clusters. There is no way to see groups of data with that system and that makes it very hard to actually use it for something useful.

    4. I will test this out with ecological/land use mapping, because I often employ PCAs to do that. Thanks!

    Leave A Reply