Momente – chatgpz.de – KI-Tools & Praxiswissen http://chatgpz.de Unabhängige Tests, Anleitungen und Hintergründe zu KI-Tools. Thu, 13 Feb 2025 14:33:16 +0000 de-DE hourly 1 https://wordpress.org/?v=6.4.2 234900186 Schätzung der Momente mit Python -Code http://chatgpz.de/machine-learning/schaetzung-der-momente-mit-python-code/ http://chatgpz.de/machine-learning/schaetzung-der-momente-mit-python-code/#respond Thu, 13 Feb 2025 14:33:16 +0000 https://chatgpz.de/machine-learning/schaetzung-der-momente-mit-python-code/

Nehmen wir an, Sie befinden sich in einem Kundenbetreuungszentrum und möchten die Wahrscheinlichkeitsverteilung der Anzahl der Anrufe professional Minute oder mit anderen Worten wissen, dass Sie die Frage beantworten möchten: Wie hoch ist die Wahrscheinlichkeit, Null, eins, zwei zu erhalten, zwei, zwei , Usw., Anrufe professional Minute? Sie benötigen diese Verteilung, um die Wahrscheinlichkeit vorherzusagen, dass eine unterschiedliche Anzahl von Anrufen erhalten, basierend darauf, wie viele Mitarbeiter benötigt werden, ob eine Erweiterung erforderlich ist oder nicht, usw.

Um unsere Entscheidung „Daten informiert“ zu lassen, beginnen wir damit, Daten zu sammeln, aus denen wir versuchen, diese Verteilung zu schließen, oder mit anderen Worten, wir möchten von den Beispieldaten auf die unsichtbaren Daten verallgemeinern, die auch als Bevölkerung in statistischer Bevölkerung bezeichnet werden Bedingungen. Dies ist die Essenz statistischer Schlussfolgerung.

Aus den gesammelten Daten können wir die relative Häufigkeit jedes Werts von Aufrufen professional Minute berechnen. Wenn beispielsweise die gesammelten Daten im Laufe der Zeit ungefähr so ​​aussehen: 2, 2, 3, 5, 4, 5, 5, 3, 6, 3, 4,… usw. Diese Daten werden erhalten, indem die Anzahl der empfangenen Anrufe gezählt werden jede Minute. Um die relative Frequenz jedes Werts zu berechnen, können Sie die Anzahl der Vorkommen jedes Werts zählen, der durch die Gesamtzahl der Vorkommen geteilt wird. Auf diese Weise erhalten Sie in der folgenden Abbildung so etwas wie die graue Kurve, die dem Histogramm der Daten in diesem Beispiel entspricht.

Bild vom Autor erzeugt

Eine andere Möglichkeit besteht darin, anzunehmen, dass jeder Datenpunkt aus unseren Daten eine Realisierung einer zufälligen Variablen (x) ist, die einer bestimmten Wahrscheinlichkeitsverteilung folgt. Diese Wahrscheinlichkeitsverteilung stellt alle möglichen Werte dar, die generiert werden, wenn wir diese Daten lange in die Zukunft sammeln, oder mit anderen Worten, wir können sagen, dass sie die Inhabitants darstellt, aus der unsere Stichprobendaten gesammelt wurden. Darüber hinaus können wir davon ausgehen, dass alle Datenpunkte aus derselben Wahrscheinlichkeitsverteilung stammen, dh die Datenpunkte sind identisch verteilt. Darüber hinaus gehen wir davon aus, dass die Datenpunkte unabhängig sind, dh der Wert eines Datenpunkts in der Stichprobe wird von den Werten der anderen Datenpunkte nicht beeinflusst. Die Annahme der Independence and Similar Distribution (IID) der Stichprobendatenpunkte ermöglicht es uns, mit unserem statistischen Inferenzproblem systematisch und unkompliziert mit unserem statistischen Inferenzproblem fortzufahren. In formaler Begriffen gehen wir davon aus, dass ein generatives probabilistisches Modell für die Generierung der IID -Daten verantwortlich ist, wie unten gezeigt.

Bild vom Autor erzeugt

In diesem speziellen Beispiel wird angenommen, dass eine Poisson -Verteilung mit dem Mittelwert λ = 5 die Daten generiert hat, wie in der blauen Kurve in der folgenden Abbildung gezeigt. Mit anderen Worten, wir nehmen hier an, dass wir den wahren Wert von λ kennen, der im Allgemeinen nicht bekannt ist und aus den Daten geschätzt werden muss.

Bild vom Autor erzeugt

Im Gegensatz zu der vorherigen Methode, bei der wir die relative Häufigkeit jedes Wertes von Aufrufen professional Minute berechnen mussten Ziel zu finden, was λ ist. Ein weiterer Vorteil dieses generativen Modellansatzes besteht darin, dass er in Bezug auf die Verallgemeinerung von Stichprobe zu Bevölkerung besser ist. Es kann gesagt werden, dass die angenommene Wahrscheinlichkeitsverteilung die Daten auf elegante Weise zusammengefasst haben, die dem Razor -Prinzip des Occam folgt.

Bevor wir weiter übergehen, wie wir diesen Parameter λ finden möchten, zeigen wir einige Python Zuerst der Code, mit dem die obige Abbildung generiert wurde.

# Import the Python libraries that we are going to want on this article
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import math
from scipy import stats

# Poisson distribution instance
lambda_ = 5
sample_size = 1000
data_poisson = stats.poisson.rvs(lambda_,dimension= sample_size) # generate knowledge

# Plot the information histogram vs the PMF
x1 = np.arange(data_poisson.min(), data_poisson.max(), 1)
fig1, ax = plt.subplots()
plt.bar(x1, stats.poisson.pmf(x1,lambda_),
        label="Possion distribution (PMF)",coloration = BLUE2,linewidth=3.0,width=0.3,zorder=2)
ax.hist(data_poisson, bins=x1.dimension, density=True, label="Knowledge histogram",coloration = GRAY9, width=1,zorder=1,align='left')

ax.set_title("Knowledge histogram vs. Poisson true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Chance')
ax.legend()
plt.savefig("Possion_hist_PMF.png", format="png", dpi=800)

In unserem Drawback geht es jetzt darum, den Wert des unbekannten Parameters λ unter Verwendung der von uns gesammelten Daten zu schätzen. Hier werden wir die verwenden Momente Methode (Mama) Ansatz, der im Titel dieses Artikels erscheint.

Zunächst müssen wir definieren, was im Second einer zufälligen Variablen gemeint ist. Mathematisch ist der KTH -Second einer diskreten Zufallsvariablen (x) wie folgt definiert:

Nehmen Sie den ersten Second E (x) als Beispiel, das auch der Mittelwert der Zufallsvariablen ist, und unter der Annahme, dass wir unsere Daten sammeln, die als n IID -Realisierungen der Zufallsvariablen X modelliert werden. Eine vernünftige Schätzung von μ ist die Stichprobenmittelwert, der wie folgt definiert ist:

Um eine MOM -Schätzung eines Modellparameters zu erhalten, der die Wahrscheinlichkeitsverteilung der zufälligen Variablen X parametrisiert, schreiben wir zunächst den unbekannten Parameter als Funktion eines oder mehrerer KTH -Momente der Zufallsvariablen, und dann ersetzen wir die KTH Second mit seiner Stichprobenschätzung. Je unbekannter Parameter wir in unseren Modellen haben, desto mehr Momente brauchen wir.

In unserem Poisson -Modellbeispiel ist dies sehr einfach, wie unten gezeigt.

Im nächsten Teil testen wir unseren MOM -Schätzer auf die simulierten Daten, die wir zuvor hatten. Der Python -Code zum Erhalten des Schätzers und zur Aufteilung der entsprechenden Wahrscheinlichkeitsverteilung unter Verwendung des geschätzten Parameters ist unten dargestellt.

# Methodology of moments estimator utilizing the information (Poisson Dist)
lambda_hat = sum(data_poisson) / len(data_poisson)

# Plot the MoM estimated PMF vs the true PMF
x1 = np.arange(data_poisson.min(), data_poisson.max(), 1)
fig2, ax = plt.subplots()
plt.bar(x1, stats.poisson.pmf(x1,lambda_hat),
        label="Estimated PMF",coloration = ORANGE1,linewidth=3.0,width=0.3)
plt.bar(x1+0.3, stats.poisson.pmf(x1,lambda_),
        label="True PMF",coloration = BLUE2,linewidth=3.0,width=0.3)

ax.set_title("Estimated Poisson distribution vs. true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Chance')
ax.legend()
#ax.grid()
plt.savefig("Possion_true_vs_est.png", format="png", dpi=800)

Die folgende Abbildung zeigt die geschätzte Verteilung im Vergleich zur wahren Verteilung. Die Verteilungen sind ziemlich eng, was darauf hinweist, dass der MOM -Schätzer ein vernünftiger Schätzer für unser Drawback ist. Das Ersetzen der Erwartungen durch Durchschnittswerte im MOM -Schätzer impliziert in der Tat, dass der Schätzer nach dem Gesetz großer Zahlen ein konsistenter Schätzer ist, was eine gute Rechtfertigung für die Verwendung eines solchen Schätzers darstellt.

Bild vom Autor erzeugt

Ein weiteres Beispiel für die MOM -Schätzung ist unten dargestellt, vorausgesetzt, die IID -Daten werden durch eine Normalverteilung mit mittlerer μ und Varianz σ² erzeugt, wie unten gezeigt.

Bild vom Autor erzeugt

In diesem speziellen Beispiel wird angenommen, dass eine Gaußsche (normale) Verteilung mit dem Mittelwert μ = 10 und σ = 2 die Daten generiert hat. Das Histogramm der generierten Datenprobe (Stichprobengröße = 1000) ist in der folgenden Abbildung grau dargestellt, während die wahre Verteilung in der blauen Kurve dargestellt ist.

Bild vom Autor erzeugt

Der Python -Code, der verwendet wurde, um die obige Abbildung zu generieren, ist unten dargestellt.

# Regular distribution instance
mu = 10
sigma = 2
sample_size = 1000
data_normal = stats.norm.rvs(loc=mu, scale=sigma ,dimension= sample_size) # generate knowledge

# Plot the information histogram vs the PDF
x2 = np.linspace(data_normal.min(), data_normal.max(), sample_size)
fig3, ax = plt.subplots()
ax.hist(data_normal, bins=50, density=True, label="Knowledge histogram",coloration = GRAY9)
ax.plot(x2, stats.norm(loc=mu, scale=sigma).pdf(x2),
        label="Regular distribution (PDF)",coloration = BLUE2,linewidth=3.0)

ax.set_title("Knowledge histogram vs. true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Chance')
ax.legend()
ax.grid()

plt.savefig("Normal_hist_PMF.png", format="png", dpi=800)

Jetzt möchten wir den MOM -Schätzer verwenden, um eine Schätzung der Modellparameter, dh, μ und σ², wie unten gezeigt zu finden.

Um diesen Schätzer anhand unserer Stichprobendaten zu testen, zeichnen wir die Verteilung mit den geschätzten Parametern (orange) in der folgenden Abbildung im Vergleich zur tatsächlichen Verteilung (blau) dar. Auch hier kann gezeigt werden, dass die Verteilungen ziemlich nahe sind. Um diesen Schätzer zu quantifizieren, müssen wir ihn natürlich auf mehreren Realisierungen der Daten testen und Eigenschaften wie Verzerrungen, Varianz usw. beobachten. So wichtige Aspekte wurden in einem früheren Artikel erörtert.

Bild vom Autor erzeugt

Der Python -Code, mit dem die Modellparameter mit MOM geschätzt und die obige Abbildung geschätzt wurden, ist unten dargestellt.

# Methodology of moments estimator utilizing the information (Regular Dist)
mu_hat = sum(data_normal) / len(data_normal) # MoM imply estimator
var_hat = sum(pow(x-mu_hat,2) for x in data_normal) / len(data_normal) # variance
sigma_hat = math.sqrt(var_hat)  # MoM customary deviation estimator

# Plot the MoM estimated PDF vs the true PDF
x2 = np.linspace(data_normal.min(), data_normal.max(), sample_size)
fig4, ax = plt.subplots()
ax.plot(x2, stats.norm(loc=mu_hat, scale=sigma_hat).pdf(x2),
        label="Estimated PDF",coloration = ORANGE1,linewidth=3.0)
ax.plot(x2, stats.norm(loc=mu, scale=sigma).pdf(x2),
        label="True PDF",coloration = BLUE2,linewidth=3.0)

ax.set_title("Estimated Regular distribution vs. true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Chance')
ax.legend()
ax.grid()
plt.savefig("Normal_true_vs_est.png", format="png", dpi=800)

Eine weitere nützliche Wahrscheinlichkeitsverteilung ist die Gamma -Verteilung. Ein Beispiel für die Anwendung dieser Verteilung im wirklichen Leben wurde in einem früheren diskutiert Artikel. In diesem Artikel leiten wir jedoch den MOM -Schätzer der Gamma -Verteilungsparameter α und β ab, wie unten gezeigt, unter der Annahme, dass die Daten IID sind.

Bild vom Autor erzeugt

In diesem speziellen Beispiel wird angenommen, dass eine Gamma -Verteilung mit α = 6 und β = 0,5 die Daten generiert hat. Das Histogramm der generierten Datenprobe (Stichprobengröße = 1000) ist in der folgenden Abbildung grau dargestellt, während die wahre Verteilung in der blauen Kurve dargestellt ist.

Bild vom Autor erzeugt

Der Python -Code, der verwendet wurde, um die obige Abbildung zu generieren, ist unten dargestellt.

# Gamma distribution instance
alpha_ = 6 # form parameter
scale_ = 2 # scale paramter (lamda) = 1/beta in gamma dist.
sample_size = 1000
data_gamma = stats.gamma.rvs(alpha_,loc=0, scale=scale_ ,dimension= sample_size) # generate knowledge

# Plot the information histogram vs the PDF
x3 = np.linspace(data_gamma.min(), data_gamma.max(), sample_size)
fig5, ax = plt.subplots()
ax.hist(data_gamma, bins=50, density=True, label="Knowledge histogram",coloration = GRAY9)
ax.plot(x3, stats.gamma(alpha_,loc=0, scale=scale_).pdf(x3),
        label="Gamma distribution (PDF)",coloration = BLUE2,linewidth=3.0)

ax.set_title("Knowledge histogram vs. true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Chance')
ax.legend()
ax.grid()
plt.savefig("Gamma_hist_PMF.png", format="png", dpi=800)

Jetzt möchten wir den MOM -Schätzer verwenden, um eine Schätzung der Modellparameter, dh α und β, zu finden, wie nachstehend gezeigt.

Um diesen Schätzer anhand unserer Stichprobendaten zu testen, zeichnen wir die Verteilung mit den geschätzten Parametern (orange) in der folgenden Abbildung im Vergleich zur tatsächlichen Verteilung (blau) dar. Auch hier kann gezeigt werden, dass die Verteilungen ziemlich nahe sind.

Bild vom Autor erzeugt

Der Python -Code, mit dem die Modellparameter mit MOM geschätzt und die obige Abbildung geschätzt wurden, ist unten dargestellt.

# Methodology of moments estimator utilizing the information (Gamma Dist)
sample_mean = data_gamma.imply()
sample_var = data_gamma.var()
scale_hat = sample_var/sample_mean #scale is the same as 1/beta in gamma dist.
alpha_hat = sample_mean**2/sample_var

# Plot the MoM estimated PDF vs the true PDF
x4 = np.linspace(data_gamma.min(), data_gamma.max(), sample_size)
fig6, ax = plt.subplots()

ax.plot(x4, stats.gamma(alpha_hat,loc=0, scale=scale_hat).pdf(x4),
        label="Estimated PDF",coloration = ORANGE1,linewidth=3.0)
ax.plot(x4, stats.gamma(alpha_,loc=0, scale=scale_).pdf(x4),
        label="True PDF",coloration = BLUE2,linewidth=3.0)

ax.set_title("Estimated Gamma distribution vs. true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Chance')
ax.legend()
ax.grid()
plt.savefig("Gamma_true_vs_est.png", format="png", dpi=800)

Beachten Sie, dass wir die folgenden äquivalenten Möglichkeiten zum Schreiben der Varianz verwendet haben, wenn die Schätzer in den Fällen von Gaußschen und Gamma -Verteilungen abgeleitet wurden.

Abschluss

In diesem Artikel haben wir verschiedene Beispiele für die Methode des Momente Schätzer und ihre Anwendungen in verschiedenen Problemen in der Datenwissenschaft untersucht. Darüber hinaus wird auch ein detaillierter Python -Code gezeigt, mit dem die Schätzer von Grund auf und um die verschiedenen Abbildungen zu zeichnen. Ich hoffe, dass Sie diesen Artikel hilfreich finden.


[ad_2]]]>
http://chatgpz.de/machine-learning/schaetzung-der-momente-mit-python-code/feed/ 0 7205
Die Methode der Momente Schätzer für Gaußsche Mischungsmodelle http://chatgpz.de/machine-learning/die-methode-der-momente-schaetzer-fuer-gausssche-mischungsmodelle/ http://chatgpz.de/machine-learning/die-methode-der-momente-schaetzer-fuer-gausssche-mischungsmodelle/#respond Sun, 09 Feb 2025 20:08:29 +0000 http://chatgpz.de/machine-learning/die-methode-der-momente-schaetzer-fuer-gausssche-mischungsmodelle/

Audioverarbeitung ist eine der wichtigsten Anwendungsdomänen der digitalen Signalverarbeitung (DSP) und maschinelles Lernen. Die Modellierung akustischer Umgebungen ist ein wesentlicher Schritt bei der Entwicklung digitaler Audioverarbeitungssysteme wie Spracherkennung, Sprachverbesserung, akustischer Echo -Stornierung usw.

Akustische Umgebungen sind mit Hintergrundgeräuschen gefüllt, die mehrere Quellen haben können. Wenn Sie beispielsweise in einem Café sitzen, die Straße entlang gehen oder Ihr Auto fahren, hören Sie Geräusche, die als Stör- oder Hintergrundgeräusche angesehen werden können. Solche Störungen folgen nicht unbedingt demselben statistischen Modell, und daher kann eine Mischung von Modellen nützlich sein, um sie zu modellieren.

Diese statistischen Modelle können auch nützlich sein, um akustische Umgebungen in verschiedene Kategorien zu klassifizieren, z. B. ein ruhiges Auditorium (Klasse 1) oder einen etwas lauteren Raum mit geschlossenen Fenstern (Klasse 2) und eine dritte Choice mit Home windows Open (Klasse 3). In jedem Fall kann der Pegel des Hintergrundrauschens unter Verwendung einer Mischung aus Rauschquellen modelliert werden, die jeweils mit einer anderen Wahrscheinlichkeit und einem anderen akustischen Pegel stattfinden.

Eine weitere Anwendung solcher Modelle liegt in der Simulation von akustischen Rauschen in verschiedenen Umgebungen, auf denen Lösungen für DSP und maschinelles Lernen entwickelt werden können, um spezifische akustische Probleme in praktischen Audiosystemen wie Interferenzkrebs, Echo -Stornierung, Spracherkennung, Sprachverbesserung usw. zu lösen. .

Foto von Matoo.studio An Unplash

Ein einfaches statistisches Modell, das in solchen Szenarien nützlich sein kann, ist die Gaußsche Mischungsmodell (GMM), bei dem angenommen wird, dass jede der verschiedenen Rauschquellen einer bestimmten Gaußschen Verteilung mit einer bestimmten Varianz folgt. Es kann angenommen werden, dass alle Verteilungen keinen Mittelwert haben und gleichzeitig für diese Anwendung ausreichend genau sind, wie auch in dieser gezeigt wird Artikel.

Jede der GMM -Verteilungen hat eine eigene Wahrscheinlichkeit, zum Hintergrundgeräusch beizutragen. Zum Beispiel könnte es ein konsistentes Hintergrundgeräusch geben, das die meiste Zeit auftritt, während andere Quellen intermittierend sein können, z. B. das Geräusch, das durch Fenster kommt.

Ein Beispiel für simulierte GMM -Daten im Laufe der Zeit (normalisiert auf die Stichprobenzeit) ist in der folgenden Abbildung dargestellt, in der zwei Gaußsche Rauschquellen vorhanden sind, beide mit Null, jedoch mit zwei unterschiedlichen Varianzen. In diesem Beispiel erfolgt das niedrigere Varianzsignal häufiger mit einer Wahrscheinlichkeit von 90%, daher die intermittierenden Spikes in den generierten Daten, die das Sign mit höherer Varianz darstellen.

In anderen Szenarien und abhängig von der Anwendung kann es umgekehrt sein, in der das Rauschsignal mit hohem Varianz häufiger auftritt (wie in einem späteren Beispiel in diesem Artikel gezeigt wird). Python Der Code zum Generieren und Analyse von GMM -Daten wird später in diesem Artikel auch angezeigt.

Nehmen wir an, dass das gesammelte Hintergrundrauschsignal (beispielsweise unter Verwendung eines hochwertigen Mikrofons) als Realisierungen unabhängiger und identisch verteilter (IID) zufällige Variablen, die wie unten gezeigt folgen, als Realisierungen von unabhängigen und identisch verteilten (IID) modelliert wird.

Das Modellierungsproblem läuft somit auf die Schätzung der Modellparameter (dh P1, σ²1 und σ²2) unter Verwendung der beobachteten Daten (IID) hinaus. In diesem Artikel werden wir die verwenden Momente Methode (Mama) Schätzer für diesen Zweck.

Um die Dinge weiter zu vereinfachen, können wir davon ausgehen, dass die Rauschvarianzen (σ²1 und σ²2) bekannt sind und dass nur der Mischparameter (P1) geschätzt werden soll. Der MOM -Schätzer kann verwendet werden, um mehr als einen Parameter (dh p1, σ²1 und σ²2) zu schätzen, wie in Kapitel 9 des Buches gezeigt: “Statistische Signalverarbeitung: Schätztheorie ”, von Steven Kay. In diesem Beispiel werden wir jedoch annehmen, dass nur P1 unbekannt ist und geschätzt werden soll.

Da beide Gaußschen im GMM null Mittel sind, beginnen wir mit dem zweiten Second und versuchen, den unbekannten Parameter P1 als Funktion des zweiten Moments wie folgt zu erhalten.

Beachten Sie, dass eine weitere einfache Methode, um die Momente einer zufälligen Variablen (z. B. zweiter Second oder höher) zu erhalten, indem die Momentgenerierungsfunktion (MGF) verwendet wird. Ein gutes Lehrbuch in der Wahrscheinlichkeitstheorie, das solche Themen abdeckt, und mehr ist: “Einführung in die Wahrscheinlichkeit für Datenwissenschaft”, Von Stanley H. Chan.

Bevor wir weiter fortfahren, möchten wir diesen Schätzer in Bezug auf die grundlegenden Eigenschaften von Schätzern wie Voreingenommenheit, Varianz, Konsistenz usw. quantifizieren. Wir werden dies später numerisch mit einem Python -Beispiel überprüfen.

Beginnend mit der Schätzerverzerrung können wir zeigen, dass der obige Schätzer von P1 tatsächlich wie folgt unvoreingenommen ist.

Wir können dann die Varianz unseres Schätzers wie folgt abgeben.

Aus der obigen Analyse geht auch hervor, dass der Schätzer konsistent ist, da er unvoreingenommen ist und seine Varianz abnimmt, wenn die Stichprobengröße (n) zunimmt. Wir werden auch die obige Formel der P1 -Schätzungsvarianz in unserem numerischen Python -Beispiel (später in diesem Artikel ausführlich gezeigt) verwenden, wenn sie die Theorie mit praktischen numerischen Ergebnissen vergleichen.

Lassen Sie uns nun einen Python -Code vorstellen und lustige Sachen machen!

Zunächst generieren wir unsere Daten, die einem GMM ohne Mittelwerte und Standardabweichungen von 2 bzw. 10 folgen, wie im folgenden Code gezeigt. In diesem Beispiel entspricht der Mischparameter P1 = 0,2 und die Stichprobengröße der Daten 1000.

# Import the Python libraries that we are going to want on this GMM instance
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

# GMM knowledge technology
mu = 0 # each gaussians in GMM are zero imply
sigma_1 = 2 # std dev of the primary gaussian
sigma_2 = 10 # std dev of the second gaussian
norm_params = np.array(((mu, sigma_1),
                        (mu, sigma_2)))
sample_size = 1000
p1 = 0.2 # chance that the information level comes from first gaussian
mixing_prob = (p1, (1-p1))
# A stream of indices from which to decide on the element
GMM_idx = np.random.alternative(len(mixing_prob), dimension=sample_size, change=True, 
                p=mixing_prob)
# GMM_data is the GMM pattern knowledge
GMM_data = np.fromiter((stats.norm.rvs(*(norm_params(i))) for i in GMM_idx),
                   dtype=np.float64)

Dann zeichnen wir das Histogramm der generierten Daten im Vergleich zur Wahrscheinlichkeitsdichtefunktion wie unten gezeigt. Die Abbildung zeigt den Beitrag beider Gauß -Dichten im Gesamt -GMM, wobei jede Dichte durch ihren entsprechenden Faktor skaliert wird.

Der Python -Code, mit dem die obige Abbildung generiert wird, ist unten dargestellt.

x1 = np.linspace(GMM_data.min(), GMM_data.max(), sample_size)
y1 = np.zeros_like(x1)

# GMM chance distribution
for (l, s), w in zip(norm_params, mixing_prob):
    y1 += stats.norm.pdf(x1, loc=l, scale=s) * w

# Plot the GMM chance distribution versus the information histogram
fig1, ax = plt.subplots()
ax.hist(GMM_data, bins=50, density=True, label="GMM knowledge histogram", 
        colour = GRAY9)
ax.plot(x1, p1*stats.norm(loc=mu, scale=sigma_1).pdf(x1),
        label="p1 × first PDF",colour = GREEN1,linewidth=3.0)
ax.plot(x1, (1-p1)*stats.norm(loc=mu, scale=sigma_2).pdf(x1),
        label="(1-p1) × second PDF",colour = ORANGE1,linewidth=3.0)
ax.plot(x1, y1, label="GMM distribution (PDF)",colour = BLUE2,linewidth=3.0)

ax.set_title("Knowledge histogram vs. true distribution", fontsize=14, loc="left")
ax.set_xlabel('Knowledge worth')
ax.set_ylabel('Likelihood')
ax.legend()
ax.grid()

Danach berechnen wir die Schätzung des Mischparameters P1, den wir früher mit Mama abgeleitet haben und die hier unten als Referenz erneut angezeigt wird.

Der Python -Code, mit dem die obige Gleichung unter Verwendung unserer GMM -Beispieldaten berechnet wird, ist unten angezeigt.

# Estimate the blending parameter p1 from the pattern knowledge utilizing MoM estimator
p1_hat = (sum(pow(x,2) for x in GMM_data) / len(GMM_data) - pow(sigma_2,2))
         /(pow(sigma_1,2) - pow(sigma_2,2))

Um diesen Schätzer ordnungsgemäß zu bewerten, verwenden wir Monte Carlo Simulation durch Generieren mehrerer Realisierungen der GMM -Daten und schätzen P1 für jede Realisierung, wie im folgenden Python -Code gezeigt.

# Monte Carlo simulation of the MoM estimator
num_monte_carlo_iterations = 500
p1_est = np.zeros((num_monte_carlo_iterations,1))

sample_size = 1000
p1 = 0.2 # chance that the information level comes from first gaussian
mixing_prob = (p1, (1-p1))
# A stream of indices from which to decide on the element
GMM_idx = np.random.alternative(len(mixing_prob), dimension=sample_size, change=True, 
          p=mixing_prob)
for iteration in vary(num_monte_carlo_iterations):
  sample_data = np.fromiter((stats.norm.rvs(*(norm_params(i))) for i in GMM_idx))
  p1_est(iteration) = (sum(pow(x,2) for x in sample_data)/len(sample_data) 
                       - pow(sigma_2,2))/(pow(sigma_1,2) - pow(sigma_2,2))

Anschließend prüfen wir nach der Verzerrung und Varianz unseres Schätzers und vergleichen sich mit den theoretischen Ergebnissen, die wir zuvor wie unten gezeigt abgeleitet haben.

p1_est_mean = np.imply(p1_est)
p1_est_var = np.sum((p1_est-p1_est_mean)**2)/num_monte_carlo_iterations
p1_theoritical_var_num = 3*p1*pow(sigma_1,4) + 3*(1-p1)*pow(sigma_2,4) 
                         - pow(p1*pow(sigma_1,2) + (1-p1)*pow(sigma_2,2),2)
p1_theoritical_var_den = sample_size*pow(sigma_1**2-sigma_2**2,2)
p1_theoritical_var = p1_theoritical_var_num/p1_theoritical_var_den
print('Pattern variance of MoM estimator of p1 = %.6f' % p1_est_var)
print('Theoretical variance of MoM estimator of p1 = %.6f' % p1_theoritical_var)
print('Imply of MoM estimator of p1 = %.6f' % p1_est_mean)

# Under are the outcomes of the above code
Pattern variance of MoM estimator of p1 = 0.001876
Theoretical variance of MoM estimator of p1 = 0.001897
Imply of MoM estimator of p1 = 0.205141

Wir können aus den oben genannten Ergebnissen beobachten, dass der Mittelwert der P1 -Schätzung 0,2051 entspricht, was dem wahren Parameter P1 = 0,2 sehr nahe liegt. Dieser Mittelwert kommt dem wahren Parameter mit zunehmender Probengröße noch näher. Somit haben wir numerisch gezeigt, dass der Schätzer ist unvoreingenommen wie die theoretischen Ergebnisse zuvor bestätigt.

Darüber hinaus ist die Stichprobenvarianz des P1 -Schätzers (0,001876) nahezu identisch mit der theoretischen Varianz (0,001897), die schön ist.

Es ist immer ein glücklicher Second, wenn Theorie der Praxis entspricht!

Alle Bilder in diesem Artikel werden vom Autor, sofern nicht anders angegeben, vom Autor.


[ad_2]]]>
http://chatgpz.de/machine-learning/die-methode-der-momente-schaetzer-fuer-gausssche-mischungsmodelle/feed/ 0 7105