[PYTHON] [PyStan] Probieren Sie Graphical Lasso mit Stan aus.

Hallo, das ist eine lange Zeit, um einen Blog @ kenmatsu4 zu schreiben. Ich habe den Artikel am 23. Tag von [Stan Adventskalender] geschrieben (http://qiita.com/advent-calendar/2016/stan).

In diesem Blog werde ich versuchen, Stan zu verwenden, eine Methode namens Graphical Lasso, die eine Präzisionsmatrix (inverse Matrix einer verteilten, gemeinsam verteilten Matrix) mit L1-Regularisierung schätzt. Der vollständige Code wurde auf [GitHub] hochgeladen (https://github.com/matsuken92/Qiita_Contents/blob/master/Advent2016_stan/Graphical_Lasso_with_Stan-Release.ipynb).

1. Generieren Sie Testdaten

Generieren Sie zunächst eine Zufallszahl, die einer multivariaten Normalverteilung folgt. Dieses Mal werden wir 300 6-dimensionale Daten mit dem folgenden Durchschnitt und der folgenden Varianz generieren. Dann zwingen Sie $ x_6 $ und $ x_4 $ und dann $ x_6 $ und $ x_5 $ zur Korrelation, so dass $ x_4 $ und $ x_5 $ eine indirekte Korrelation haben. Ursprünglich gab es keine $ x_4 $ und $ x_5 $, aber die Werte von $ x_4 $ und $ x_5 $ bewegen sich in Verbindung mit der Fluktuation von $ x_6 $ unter dem Einfluss von $ x_6 $, also Variablen, die ursprünglich nicht korreliert sind Scheint eine Korrelation zu haben. ← (*)

python


    m = np.zeros(M)
    #Kovarianzmatrix zur zufälligen Erzeugung einer multivariaten Normalverteilung
    cov = [[   1, .29, .49, .10, .30,  0],
           [ .29,   1,-.49, .49, .40,  0],
           [ .49,-.49,   1,   0,   0,  0],
           [ .10, .49,   0,   1,   0,  0],
           [ .30, .40,   0,   0,   1,  0],
           [   0,   0,   0,   0,   0,  1]]

    #Erstellen Sie 6 Variablen
    X = st.multivariate_normal.rvs(mean=m, cov=cov, size=size, random_state=random_state)

    #Korreliere x4 und x6 (*)
    X[:,3] += 0.6*X[:,5]
    
    #Korreliere x5 und x6 (*)
    X[:,4] += 0.6*X[:,5]

** Abbildung: Bild der indirekten Korrelation ** スクリーンショット 2016-12-23 20.43.46.png

Das Folgende ist ein Streudiagramm der mit [pairplot] erhaltenen Daten (http://seaborn.pydata.org/generated/seaborn.pairplot.html).

スクリーンショット 2016-12-23 20.48.58.png

Die Korrelationsmatrix und die Teilkorrelationsmatrix werden wie folgt berechnet. Die partielle Korrelation kann als Wert verwendet werden, der den Grad der direkten Korrelation angibt, mit Ausnahme des Effekts der indirekten Korrelation, wie in der vorherigen Abbildung gezeigt. Ich würde gerne sofort sehen, wie die partielle Korrelation ist.

Die partielle Korrelationsmatrix wird unter Verwendung des Elements $ \ lambda_ {ij} $ der Präzisionsmatrix (inverse Matrix der verteilten mitverteilten Matrix) $ \ Lambda $ ausgedrückt.

\hat{\rho}_{ij} = {-\lambda_{ij} \over \sqrt{\lambda_{ii}\lambda_{jj}}}

Es wird sein.

partial_corr_est.png

Das rechte ist die partielle Korrelationsmatrix. Wenn Sie jedoch die Dispersions-Co-Dispersionsmatrix verwenden, die direkt aus den Daten berechnet wird, wird sie durch Rauschen beeinflusst und der Wert ist nicht klar. Es scheint nicht, dass die Struktur der Daten sehr sichtbar ist. Es sieht so aus, als ob alle Variablen zusammenhängen ... Das sollte nicht der Fall sein.

Daher möchte ich den Einfluss von Rauschen durch Verwendung der L1-Regularisierung, dh Lasso, ausschließen und die geschätzte Dispersions-Co-Verteilungsmatrix und Genauigkeitsmatrix verwenden.

  1. Graphical Lasso Ein Markov-Graph, der eine multivariate Normalverteilung annimmt, wird als Gaußsches grafisches Modell bezeichnet, und die Beziehung zwischen Variablen kann unter Verwendung der Präzisionsmatrix $ \ Lambda $, die ein Parameter dieser Verteilung ist, als grafisches Modell betrachtet werden. Das heißt, wenn das i, j-Element $ \ lambda_ {ij} $ der Präzisionsmatrix ungleich Null ist, besteht eine direkte Korrelation zwischen $ x_i $ und $ x_j $. Der in einem solchen Zustand ist in der folgenden Grafik dargestellt und wird als grafisches Modell bezeichnet.
スクリーンショット 2016-12-23 21.26.05.png

Wenn die Daten $ \ boldsymbol {x} $ einer multivariaten Normalverteilung folgen, ist die Verteilung

\mathcal{N}(\boldsymbol{x} | {\bf 0}, \Lambda^{-1}) \sim {|\Lambda|^{1/2} \over (2\pi)^{M/2}} \exp\left( -{1 \over 2} \boldsymbol{x}^\intercal \Lambda \boldsymbol{x} \right)

Kann ausgedrückt werden als. Da wir uns jedoch entschlossen haben zu berücksichtigen, dass es eine direkte Korrelation gibt, wenn ein anderer Wert als 0 so wie er ist enthalten ist, hat die obige Diagrammstruktur eine direkte Korrelation zwischen den meisten Variablen, wenn man bedenkt, dass den meisten Schätzergebnissen Rauschen hinzugefügt wird. Es wird am Ende sein. Es ist notwendig, eine Präzisionsmatrix zu entwickeln, die so dünn wie möglich ist. Eine spärliche Lösung kann erhalten werden, indem eine vorherige Verteilung der Laplace-Verteilung $ p (\ Lambda) $ in der Präzisionsmatrix $ \ Lambda $ angenommen wird. Die hintere Verteilung ist

p(\Lambda|\boldsymbol{x}) \propto p(\Lambda)\prod_{n=1}^{N}\mathcal{N}(\boldsymbol{x}^{(n)}|{\bf 0}, \Lambda)

Nehmen Sie daher ein Protokoll und differenzieren Sie es mit $ \ Lambda $

\ln |\Lambda| - \mathrm{tr}(S\Lambda)-\alpha\|\Lambda\|_1

Wenn Sie die vorherige Verteilung der Laplace-Verteilung festlegen, wird daher die L1-Regularisierung angewendet.

3. Finden Sie die Lösung von Graphical Lasso mit Scikit-Learn

Scikit-Learn implementiert Graph Lasso, das dieses grafische Lasso implementiert. .. Hierzu wird eine Optimierungsmethode verwendet, die als Koordinatenabstiegsmethode bezeichnet wird. Versuchen wir das zuerst.

Es ist sehr einfach zu implementieren. Einfach wie gewohnt passen: entspannt: Dann erhalten Sie die verteilte co-verteilte Matrix und die Präzisionsmatrix.

python


alpha = 0.2 #L1 Regularisierungsparameter
model = GraphLasso(alpha=alpha,
                     max_iter=100,                     
                     verbose=True,
                     assume_centered = True)

model.fit(X)
cov_ = model.covariance_ #Verteilte mitverteilte Matrix
prec_ = model.precision_ #Präzisionsmatrix

Die erhaltene Dispersions-Co-Verteilungsmatrix und Genauigkeitsmatrix sind wie folgt. glasso_cov_prec.png

Zusätzlich sind die daraus berechnete Korrelationsmatrix und die partielle Korrelationsmatrix wie folgt. Von den gewaltsam erzeugten $ x_4-, x_5-, x_6 $ -Korrelationen können Sie sehen, dass die Korrelation zwischen $ x_4 $ und $ x_5 $ in der partiellen Korrelationsmatrix 0 ist. corr_pcorr_sklearn.png

Ich bin übrigens froh, dass ich die partielle Korrelationsmatrix aus der spärlichen Präzisionsmatrix finden kann, aber dieser Blog ist ein Artikel des Stan Adventskalenders 2016. Und ich habe vorhin geschrieben, dass diese L1-Regularisierung so interpretiert werden kann, dass eine Laplace-Verteilung in der vorherigen Verteilung von $ \ Lambda $ angenommen wird. Dann können Sie dies mit Stan versuchen.

4. Finden Sie die Lösung von Graphical Lasso mit Stan

Schreiben wir also Stan-Code und machen dasselbe wie dieses grafische Lasso. In Stan wird die Laplace-Verteilung als doppelte Exponentialverteilung bezeichnet, daher werden wir sie verwenden. Der Stan-Code ist unten.

glasso.stan


data {
  int N;           // Sample size
  int P;           // Feature size
  matrix[N, P] X;  // Data
  real alpha;      // scale parameter of double exponential (L1 parameter)
}
parameters {
  corr_matrix[P] Lambda; // Covariance matrix
}
model {
  vector[P] zeros;
  for (i in 1:P) {
     zeros[i] = 0;
  }
  
  // Precision matrix follows laplace distribution
  to_vector(Lambda) ~ double_exponential(0, 1/alpha);
  
  for (j in 1:N){
    // X follows multi normal distribution
    X[j] ~ multi_normal(zeros, inverse(Lambda));
  }
}
generated quantities {
  matrix[P, P] Sigma;
  Sigma = inverse(Lambda);
}

Hier ist der Python-Code, der ihn aufruft.

python


%time sm = pystan.StanModel(file='glasso.stan')
print('Compile finished.')

n_sample = 1000  #Anzahl der Proben pro Kette
n_warm   = 1000  #Nummer zum Aufwärmen
n_chain  = 4     #Anzahl der Ketten
stan_data = {'N': X.shape[0], 'P': P, 'X': X, 'alpha': alpha}
%time fit = sm.sampling(data=stan_data, chains=n_chain, iter=n_sample+n_warm, warmup=n_warm)
print('Sampling finished.')

fit

Hier ist das Ergebnis. Es ist wichtig zu beachten, dass das Rhat des diagonalen Elements der verteilten, gemeinsam verteilten Matrix zu nan geworden ist, aber der Wert scheint nicht seltsam zu sein, und das Rhat aller anderen Elemente beträgt 1,0.

out


Inference for Stan model: anon_model_31ac7e216f1b5eccff16f1394bd9827e.
4 chains, each with iter=2000; warmup=1000; thin=1; 
post-warmup draws per chain=1000, total post-warmup draws=4000.

              mean se_mean     sd   2.5%    25%    50%    75%  97.5%  n_eff   Rhat
Lambda[0,0]    1.0     0.0    0.0    1.0    1.0    1.0    1.0    1.0   4000    nan
Lambda[1,0]  -0.31  8.7e-4   0.05   -0.4  -0.34  -0.31  -0.28  -0.21   2891    1.0
Lambda[2,0]  -0.42  7.1e-4   0.04   -0.5  -0.45  -0.42  -0.39  -0.33   3735    1.0
Lambda[3,0]   0.04  1.0e-3   0.05  -0.07 2.1e-3   0.04   0.07   0.14   2808    1.0
Lambda[4,0]  -0.12  9.1e-4   0.05  -0.22  -0.15  -0.11  -0.08-9.5e-3   3437    1.0
Lambda[5,0]   0.02  1.0e-3   0.06  -0.09  -0.01   0.02   0.06   0.13   3014    1.0
Lambda[0,1]  -0.31  8.7e-4   0.05   -0.4  -0.34  -0.31  -0.28  -0.21   2891    1.0
Lambda[1,1]    1.0 1.5e-189.0e-17    1.0    1.0    1.0    1.0    1.0   3633    nan
Lambda[2,1]   0.47  6.3e-4   0.04   0.39   0.44   0.47    0.5   0.55   4000    1.0
Lambda[3,1]  -0.31  7.6e-4   0.05   -0.4  -0.34  -0.31  -0.28  -0.22   3810    1.0
Lambda[4,1]  -0.19  9.4e-4   0.05  -0.29  -0.22  -0.19  -0.15  -0.08   3021    1.0
Lambda[5,1]    0.2  8.8e-4   0.05    0.1   0.16    0.2   0.23    0.3   3395    1.0
Lambda[0,2]  -0.42  7.1e-4   0.04   -0.5  -0.45  -0.42  -0.39  -0.33   3735    1.0
Lambda[1,2]   0.47  6.3e-4   0.04   0.39   0.44   0.47    0.5   0.55   4000    1.0
Lambda[2,2]    1.0 3.6e-188.7e-17    1.0    1.0    1.0    1.0    1.0    594    nan
Lambda[3,2]  -0.11  8.9e-4   0.05  -0.22  -0.15  -0.11  -0.08  -0.01   3623    1.0
Lambda[4,2]  -0.04  9.1e-4   0.05  -0.15  -0.08  -0.04-5.8e-3   0.07   3642    1.0
Lambda[5,2]   0.03  9.0e-4   0.05  -0.08-9.2e-3   0.03   0.06   0.13   3495    1.0
Lambda[0,3]   0.04  1.0e-3   0.05  -0.07 2.1e-3   0.04   0.07   0.14   2808    1.0
Lambda[1,3]  -0.31  7.6e-4   0.05   -0.4  -0.34  -0.31  -0.28  -0.22   3810    1.0
Lambda[2,3]  -0.11  8.9e-4   0.05  -0.22  -0.15  -0.11  -0.08  -0.01   3623    1.0
Lambda[3,3]    1.0 2.0e-181.2e-16    1.0    1.0    1.0    1.0    1.0   3553    nan
Lambda[4,3]  -0.02  9.3e-4   0.06  -0.13  -0.06  -0.02   0.02   0.09   3503    1.0
Lambda[5,3]  -0.38  7.5e-4   0.04  -0.47  -0.41  -0.38  -0.35  -0.29   3591    1.0
Lambda[0,4]  -0.12  9.1e-4   0.05  -0.22  -0.15  -0.11  -0.08-9.5e-3   3437    1.0
Lambda[1,4]  -0.19  9.4e-4   0.05  -0.29  -0.22  -0.19  -0.15  -0.08   3021    1.0
Lambda[2,4]  -0.04  9.1e-4   0.05  -0.15  -0.08  -0.04-5.8e-3   0.07   3642    1.0
Lambda[3,4]  -0.02  9.3e-4   0.06  -0.13  -0.06  -0.02   0.02   0.09   3503    1.0
Lambda[4,4]    1.0 2.0e-181.2e-16    1.0    1.0    1.0    1.0    1.0   3633    nan
Lambda[5,4]  -0.36  7.2e-4   0.05  -0.45  -0.39  -0.36  -0.33  -0.27   4000    1.0
Lambda[0,5]   0.02  1.0e-3   0.06  -0.09  -0.01   0.02   0.06   0.13   3014    1.0
Lambda[1,5]    0.2  8.8e-4   0.05    0.1   0.16    0.2   0.23    0.3   3395    1.0
Lambda[2,5]   0.03  9.0e-4   0.05  -0.08-9.2e-3   0.03   0.06   0.13   3495    1.0
Lambda[3,5]  -0.38  7.5e-4   0.04  -0.47  -0.41  -0.38  -0.35  -0.29   3591    1.0
Lambda[4,5]  -0.36  7.2e-4   0.05  -0.45  -0.39  -0.36  -0.33  -0.27   4000    1.0
Lambda[5,5]    1.0 2.2e-181.3e-16    1.0    1.0    1.0    1.0    1.0   3381    nan
Sigma[0,0]    1.31  1.1e-3   0.07   1.19   1.26    1.3   1.35   1.45   3507    1.0
Sigma[1,0]    0.26  1.3e-3   0.08   0.11   0.21   0.27   0.32   0.43   4000    1.0
Sigma[2,0]    0.45  1.3e-3   0.08   0.29   0.39   0.44   0.51   0.62   4000    1.0
Sigma[3,0]     0.1  1.2e-3   0.08  -0.05   0.05    0.1   0.15   0.25   4000    1.0
Sigma[4,0]    0.23  1.2e-3   0.08   0.09   0.18   0.23   0.28   0.38   4000    1.0
Sigma[5,0]    0.03  1.2e-3   0.08  -0.13  -0.02   0.03   0.08   0.18   4000    1.0
Sigma[0,1]    0.26  1.3e-3   0.08   0.11   0.21   0.27   0.32   0.43   4000    1.0
Sigma[1,1]    1.55  1.5e-3   0.09   1.38   1.48   1.54   1.61   1.74   4000    1.0
Sigma[2,1]   -0.56  1.4e-3   0.09  -0.74  -0.62  -0.56  -0.49  -0.39   4000    1.0
Sigma[3,1]    0.41  1.3e-3   0.08   0.24   0.35    0.4   0.46   0.57   4000    1.0
Sigma[4,1]    0.29  1.3e-3   0.08   0.14   0.24   0.29   0.34   0.46   4000    1.0
Sigma[5,1]   -0.04  1.3e-3   0.08   -0.2  -0.09  -0.04   0.02   0.13   4000    1.0
Sigma[0,2]    0.45  1.3e-3   0.08   0.29   0.39   0.44   0.51   0.62   4000    1.0
Sigma[1,2]   -0.56  1.4e-3   0.09  -0.74  -0.62  -0.56  -0.49  -0.39   4000    1.0
Sigma[2,2]    1.47  1.3e-3   0.08   1.32   1.41   1.46   1.52   1.65   4000    1.0
Sigma[3,2]  2.9e-3  1.3e-3   0.08  -0.15  -0.05 1.3e-3   0.06   0.16   4000    1.0
Sigma[4,2]    0.04  1.2e-3   0.08  -0.12  -0.02   0.03   0.09   0.19   4000    1.0
Sigma[5,2]    0.07  1.3e-3   0.08  -0.08   0.02   0.08   0.13   0.23   4000    1.0
Sigma[0,3]     0.1  1.2e-3   0.08  -0.05   0.05    0.1   0.15   0.25   4000    1.0
Sigma[1,3]    0.41  1.3e-3   0.08   0.24   0.35    0.4   0.46   0.57   4000    1.0
Sigma[2,3]  2.9e-3  1.3e-3   0.08  -0.15  -0.05 1.3e-3   0.06   0.16   4000    1.0
Sigma[3,3]    1.36  1.1e-3   0.07   1.23    1.3   1.35    1.4   1.51   4000    1.0
Sigma[4,3]    0.31  1.2e-3   0.08   0.17   0.26   0.31   0.36   0.47   4000    1.0
Sigma[5,3]    0.55  1.4e-3   0.09   0.39   0.49   0.55    0.6   0.73   4000    1.0
Sigma[0,4]    0.23  1.2e-3   0.08   0.09   0.18   0.23   0.28   0.38   4000    1.0
Sigma[1,4]    0.29  1.3e-3   0.08   0.14   0.24   0.29   0.34   0.46   4000    1.0
Sigma[2,4]    0.04  1.2e-3   0.08  -0.12  -0.02   0.03   0.09   0.19   4000    1.0
Sigma[3,4]    0.31  1.2e-3   0.08   0.17   0.26   0.31   0.36   0.47   4000    1.0
Sigma[4,4]    1.29  9.9e-4   0.06   1.19   1.25   1.29   1.33   1.43   4000    1.0
Sigma[5,4]    0.53  1.3e-3   0.08   0.38   0.47   0.52   0.58    0.7   4000    1.0
Sigma[0,5]    0.03  1.2e-3   0.08  -0.13  -0.02   0.03   0.08   0.18   4000    1.0
Sigma[1,5]   -0.04  1.3e-3   0.08   -0.2  -0.09  -0.04   0.02   0.13   4000    1.0
Sigma[2,5]    0.07  1.3e-3   0.08  -0.08   0.02   0.08   0.13   0.23   4000    1.0
Sigma[3,5]    0.55  1.4e-3   0.09   0.39   0.49   0.55    0.6   0.73   4000    1.0
Sigma[4,5]    0.53  1.3e-3   0.08   0.38   0.47   0.52   0.58    0.7   4000    1.0
Sigma[5,5]    1.42  1.3e-3   0.08   1.28   1.36   1.41   1.47   1.59   4000    1.0
lp__        -713.2    0.06   2.67 -719.3 -714.9 -712.9 -711.2 -709.0   1983    1.0

Samples were drawn using NUTS at Sat Dec 24 00:05:39 2016.
For each parameter, n_eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor on split chains (at 
convergence, Rhat=1).

Es ist ein wenig schwer zu erkennen, also lasst uns ein Diagramm zeichnen.

python


#Extraktion geschätzter Parameter
Lambda = fit.extract()["Lambda"]
Sigma  = fit.extract()["Sigma"]

#Berechnung der EAP-Schätzung
EAP_Sigma  = np.mean(Sigma, axis=0)
EAP_Lambda = np.mean(Lambda, axis=0)

#Visualisierung von EAP-Schätzungen
plt.figure(figsize=(10,4))
ax = plt.subplot(121)
sns.heatmap(pd.DataFrame(EAP_Sigma), annot=EAP_Sigma, fmt='0.2f', ax=ax, xticklabels=label, yticklabels=label)
plt.title("Graphical Lasso with Stan: Covariance matrix")

ax = plt.subplot(122)
sns.heatmap(pd.DataFrame(EAP_Lambda), annot=EAP_Lambda, fmt='0.2f', ax=ax, xticklabels=label, yticklabels=label)
plt.title("Graphical Lasso with Stan: Precision matrix")
plt.savefig(img_path+"glasso_stan_cov_prec.png ", dpi=128)
plt.show()

glasso_stan_cov_prec.png

python


#Berechnung der Korrelationsmatrix
EAP_cor = np.empty_like(EAP_Sigma)
for i in range(P):
    for j in range(P):
        EAP_cor[i, j] = EAP_Sigma[i, j]/np.sqrt(EAP_Sigma[i, i]*EAP_Sigma[j, j])
        
#Berechnung der partiellen Korrelationsmatrix
EAP_rho = np.empty_like(EAP_Lambda)
for i in range(P):
    for j in range(P):
        EAP_rho[i, j] = -EAP_Lambda[i, j]/np.sqrt(EAP_Lambda[i, i]*EAP_Lambda[j, j])
        
plt.figure(figsize=(11,4))
ax = plt.subplot(122)
sns.heatmap(pd.DataFrame(EAP_rho), annot=EAP_rho, fmt='0.2f', ax=ax, xticklabels=label, yticklabels=label)
plt.title("Partial correlation Coefficiant with stan")
#plt.savefig(img_path+"partial_corr_sklearn.png ", dpi=128)

ax = plt.subplot(121)
sns.heatmap(pd.DataFrame(EAP_cor), annot=EAP_cor, fmt='0.2f', ax=ax, xticklabels=label, yticklabels=label)
plt.title("Correlation Coefficiant with stan")
plt.savefig(img_path+"corr_pcorr_stan.png ", dpi=128)
plt.show()

Offensichtlich gibt es aufgrund der Zufallszahlensimulation kein Element, das vollständig 0 wird. In diesem Sinne kann der Effekt der L1-Regularisierung nicht durch Stan-Simulation erhalten werden. corr_pcorr_stan.png

Dies ist von Scikit-Learn. Zum Vergleich.

corr_pcorr_sklearn.png

Die Werte unterscheiden sich geringfügig, haben jedoch eine ähnliche Struktur. Die indirekte Korrelation zwischen $ x_4 $ und $ x_5 $ verschwindet ebenfalls in der partiellen Korrelationsmatrix. Das abgetastete Histogramm und das Ergebnis von Scikit-Learn werden überlagert und unten gezeichnet.

Visualisierung der Probenahmeergebnisse

** Histogramm des Stichprobenergebnisses ** grid_dist_plot1.png

Vergrößerte Version. Die rote Linie ist das Ergebnis von Scikit-Learn. Die gepunkteten Linien sind die 2,5% -Punkte und 97,5% -Punkte der posterioren Verteilung. Einige von ihnen sind ausgeschaltet, aber Sie können sehen, dass sie zu einem angemessenen Preis in der Sektion sind. Ich denke also, wir können sagen, dass das Ergebnis fast das gleiche ist (ohne diagonale Elemente). Nicht alles befindet sich in der Überzeugungsabteilung, daher ist möglicherweise etwas mehr Abstimmung erforderlich. grid_dist_plot2.png

Trace Plot trace_plot.png

5. Schlussfolgerung

Es war ein Artikel, den ich geschrieben habe, weil ich wusste, dass die L1-Regularisierung von Graphical Lasso eine Laplace-Verteilung der vorherigen Verteilung von Parametern ist, und ich wollte es mit Stan versuchen. Ich habe eine partielle Korrelationsmatrix mit einer ähnlichen Struktur erhalten, aber es gibt eine leichte Diskrepanz mit dem Ergebnis von Scikit-Learn, daher möchte ich etwas mehr untersuchen.

Referenz

"Erkennung von Abnormalitäten und Änderungserkennung (professionelle Serie für maschinelles Lernen)" Takeshi Ide, Masaru Sugiyama Stan Modeling Language User’s Guide and Reference Manual  ⇒ http://www.uvm.edu/~bbeckage/Teaching/DataAnalysis/Manuals/stan-reference-2.8.0.pdf Teilkorrelationskoeffizient  ⇒ http://www.ae.keio.ac.jp/lab/soc/takeuchi/lectures/5_Parcor.pdf

Recommended Posts

[PyStan] Probieren Sie Graphical Lasso mit Stan aus.
Versuchen Sie es mit Python.
Versuchen Sie eine Regression mit TensorFlow
Versuchen Sie eine multivariate Korrelationsanalyse mit grafischem Lasso bei explosiver Geschwindigkeit
Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie die Funktionsoptimierung mit Optuna
Versuchen Sie es mit TensorFlow
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Versuchen Sie die Kantenerkennung mit OpenCV
Versuchen Sie, RBM mit Chainer zu implementieren.
Versuchen Sie Google Mock mit C.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie die GUI-Programmierung mit Hy
Versuchen Sie Auto Encoder mit Pytorch
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Versuchen Sie die Matrixoperation mit NumPy
Versuchen Sie, CNN mit ChainerRL auszuführen
Probieren Sie verschiedene Dinge mit PhantomJS aus
Versuchen Sie, Parfüm mit Go zu implementieren
[MCMC] WAIC mit Pystan berechnen
Probieren Sie Selenium Grid mit Docker aus
Versuchen Sie die Gesichtserkennung mit Python
Probieren Sie OpenCV mit Google Colaboratory aus
Versuchen Sie TensorFlow MNIST mit RNN
Versuchen Sie, Jupyter Hub mit Docker zu erstellen
Versuchen Sie es mit Folium mit Anakonda