Veröffentlicht am 13. April 2020
Heutzutage wird die Forschung zum maschinellen Lernen hauptsächlich in der Python-Sprache durchgeführt. Weil es in Python viele Bibliotheken (sogenannte Module) für die schnelle Datenanalyse und -berechnung gibt. Unter diesen werden wir dieses Mal ein Modul namens ** pyTorch ** verwenden und über ** torch.var () ** darin sprechen. Zusammenfassend ist die Berechnung mit ** torch.var () ** keine Varianz, sondern eine ** unverzerrte Varianz (Stichprobenvarianz) **. Tatsächlich scheint sich in vielen statistischen Bibliotheken ** Variation ** auf ** unvoreingenommene Varianz ** zu beziehen (ich wusste es nicht, aber Statistiker halten es für selbstverständlich). Ich werde diese Geschichte tatsächlich durch das Programm vorstellen.
Dieser Artikel ähnelt jedoch Ihrem eigenen Memo, und ich möchte, dass Sie ihn nur als Referenz verwenden. Es kann Fälle geben, in denen Sie der Kürze halber falsche Ausdrücke oder Ausdrücke verwenden. Bitte haben Sie Verständnis dafür. Ich möchte, dass du es tust.
Ich möchte, dass Sie Pythons Numpy und PyTorch in gewissem Umfang als Vorkenntnisse verwenden können. In diesem Artikel werden wir mit einem Körper fortfahren, der selbstverständlich verwendet werden kann. Weitere Informationen finden Sie im Artikel über den Tensor-Typ von pyTorch im folgenden Link.
Was ist der Tensor-Typ von pyTorch
Bevor ich das Programm schreibe, zeige ich zunächst die Formeln für den Durchschnitt $ \ mu $, die Varianz $ \ sigma ^ 2 $ und die unverzerrte Varianz $ s ^ 2 $.
\mu = \frac{1}{n}\sum_i^n x_i\\
\sigma^2 = \frac{1}{n}\sum_i^n (x_i-\mu)^2\\
s^2 = \frac{1}{n-1}\sum_i^n (x_i-\mu)^2
Dabei ist $ x $ das Eingabe-Sample und $ n $ die Anzahl der Samples.
Die Beispieldaten sind wie folgt definiert.
filename.rb
a = torch.tensor([1.,2.,3.,4.,5.])
print(a)
------'''Ausgabeergebnis unten'''--------
tensor([1., 2., 3., 4., 5.])
Zunächst einmal, wenn Sie versuchen, die Dispersion normal zu finden
filename.rb
mu = torch.mean(a)
var = torch.mean((a - mu)**2)
print(var)
------'''Ausgabeergebnis unten'''--------
tensor(2.)
Hier berechnet ** torch.mean () ** den Durchschnitt aller Eingabeelemente. Somit wurde eine Varianz von 2,0 gefunden.
Verwenden wir nun pytorchs ** torch.var () **.
filename.rb
var = torch.var(a)
print(var)
------'''Ausgabeergebnis unten'''--------
tensor(2.5000)
Und der Wert hat sich geändert. Diese Antwort ist der Grund, warum ** torch.var () ** nicht nach Verteilung fragt. Tatsächlich findet ** torch.var () ** die ** unverzerrte Varianz (Stichprobenvarianz) ** aller Eingabeelemente.
Es ist wichtig zu beachten, wenn Sie ** torch.var () ** tatsächlich verwenden, aber es ist nicht immer der Fall, dass Sie es vermeiden sollten, wenn Sie eine Verteilung erwarten. Dies liegt daran, dass, wie aus der Gleichung ersichtlich ist, bei einer sehr großen Anzahl von Abtastwerten die Werte nahezu gleich sind (wenn n 1000 ist, sind die durch 1000 geteilte Varianz und die durch 999 geteilte unverzerrte Varianz nahezu gleich). Wenn Sie diesmal ** mit einer kleinen Anzahl von Proben ** wie in meinem Beispiel arbeiten, müssen Sie vorsichtig sein.
Diesmal habe ich die Dinge über torch.var () zusammengefasst. Vielleicht ist es nur eine Selbstverständlichkeit, aber ich war überrascht und habe es als Artikel geschrieben. Da ich wenig über die solide Bedeutung von Dispersion und unvoreingenommener Dispersion weiß, möchte ich Sie auch bitten, auf Fehler im Ausdruck hinzuweisen. Ich denke, es gab viele Punkte, die schwer zu lesen waren, aber ich danke Ihnen für das Lesen.
Recommended Posts