smacof#

sklearn.manifold.smacof(dissimilarities, *, metric=True, n_components=2, init=None, n_init='warn', n_jobs=None, max_iter=300, verbose=0, eps=1e-06, random_state=None, return_n_iter=False, normalized_stress='auto')[source]#

Berechnet multidimensionales Scaling mit dem SMACOF-Algorithmus.

Der SMACOF (Scaling by MAjorizing a COmplicated Function) Algorithmus ist ein Multidimensional Scaling Algorithmus, der eine Zielfunktion (den *Stress*) mittels einer Majorisierungstechnik minimiert. Stress-Majorisierung, auch bekannt als Guttman-Transformation, garantiert eine monotone Konvergenz des Stresses und ist leistungsfähiger als traditionelle Techniken wie Gradientenabstieg.

Der SMACOF-Algorithmus für metrisches MDS lässt sich durch die folgenden Schritte zusammenfassen:

  1. Setze eine initiale Startkonfiguration, zufällig oder nicht.

  2. Berechne den Stress

  3. Berechne die Guttman-Transformation

  4. Iteriere 2 und 3 bis zur Konvergenz.

Der nichtmetrische Algorithmus fügt einen monotonen Regressionsschritt hinzu, bevor der Stress berechnet wird.

Parameter:
dissimilaritiesarray-like von Form (n_samples, n_samples)

Paarweise Distanzen zwischen den Punkten. Muss symmetrisch sein.

metricbool, default=True

Berechne den metrischen oder nichtmetrischen SMACOF-Algorithmus. Wenn False (d.h. nichtmetrisches MDS), werden Distanzen von 0 als fehlende Werte betrachtet.

n_componentsint, Standard=2

Anzahl der Dimensionen, in die die Distanzen eingetaucht werden sollen. Wenn ein init Array bereitgestellt wird, wird diese Option überschrieben und die Form von init wird verwendet, um die Dimensionalität des Einbettungsraums zu bestimmen.

initarray-like von Form (n_samples, n_components), default=None

Startkonfiguration der Einbettung, um den Algorithmus zu initialisieren. Standardmäßig wird der Algorithmus mit einem zufällig gewählten Array initialisiert.

n_initint, default=8

Anzahl der Male, die der SMACOF-Algorithmus mit unterschiedlichen Initialisierungen ausgeführt wird. Die Endergebnisse sind die besten Ausgaben der Läufe, bestimmt durch den Lauf mit dem kleinsten finalen Stress. Wenn init bereitgestellt wird, wird diese Option überschrieben und ein einzelner Lauf durchgeführt.

Geändert in Version 1.9: Der Standardwert für n_iter ändert sich von 8 auf 1 in Version 1.9.

n_jobsint, default=None

Die Anzahl der Jobs, die für die Berechnung verwendet werden sollen. Wenn mehrere Initialisierungen verwendet werden (n_init), wird jeder Lauf des Algorithmus parallel berechnet.

None bedeutet 1, außer in einem joblib.parallel_backend Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

max_iterint, Standard=300

Maximale Anzahl von Iterationen des SMACOF-Algorithmus für einen einzelnen Lauf.

verboseint, default=0

Level der Ausführlichkeit.

epsfloat, default=1e-6

Die Toleranz in Bezug auf den Stress (normalisiert durch die Summe der quadrierten Einbettungsabstände), bei der Konvergenz erklärt wird.

Geändert in Version 1.7: Der Standardwert für eps hat sich von 1e-3 auf 1e-6 geändert, als Ergebnis einer Fehlerbehebung bei der Berechnung des Konvergenzkriteriums.

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt den Zufallszahlengenerator, der zur Initialisierung der Zentren verwendet wird. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

return_n_iterbool, Standard=False

Ob die Anzahl der Iterationen zurückgegeben werden soll oder nicht.

normalized_stressbool oder „auto“, default=„auto“

Ob der normalisierte Stresswert (Stress-1) anstelle des rohen Stresses zurückgegeben werden soll. Standardmäßig gibt metrisches MDS den rohen Stress zurück, während nichtmetrisches MDS den normalisierten Stress zurückgibt.

Hinzugefügt in Version 1.2.

Geändert in Version 1.4: Der Standardwert änderte sich von False zu "auto" in Version 1.4.

Geändert in Version 1.7: Normalisierter Stress wird jetzt auch für metrisches MDS unterstützt.

Gibt zurück:
Xndarray von Form (n_samples, n_components)

Koordinaten der Punkte in einem n_components-Raum.

stressfloat

Der endgültige Wert des Stresses (Summe der quadrierten Abstände der Disparitäten und der Abstände für alle eingeschränkten Punkte). Wenn normalized_stress=True, wird Stress-1 zurückgegeben. Ein Wert von 0 bedeutet „perfekte“ Anpassung, 0,025 exzellent, 0,05 gut, 0,1 fair und 0,2 schlecht [1].

n_iterint

Die Anzahl der Iterationen, die dem besten Stress entsprechen. Wird nur zurückgegeben, wenn return_n_iter auf True gesetzt ist.

Referenzen

[1]

„Nonmetric multidimensional scaling: a numerical method“ Kruskal, J. Psychometrika, 29 (1964)

[2]

„Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis“ Kruskal, J. Psychometrika, 29, (1964)

[3]

„Modern Multidimensional Scaling - Theory and Applications“ Borg, I.; Groenen P. Springer Series in Statistics (1997)

Beispiele

>>> import numpy as np
>>> from sklearn.manifold import smacof
>>> from sklearn.metrics import euclidean_distances
>>> X = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0]])
>>> dissimilarities = euclidean_distances(X)
>>> Z, stress = smacof(
...     dissimilarities, n_components=2, n_init=1, eps=1e-6, random_state=42
... )
>>> Z.shape
(3, 2)
>>> np.round(stress, 6).item()
3.2e-05