Die Polynom-Chaos-Expansion ist eine Surrogat-Modellierungstechnik, die eine teure Simulation durch eine Reihe orthogonaler Polynome ersetzt, deren Koeffizienten verwendet werden können, um die Unsicherheit direkt zu schätzen. Einmal angepasst, bietet Ihnen ein PCE-Surrogat analytische Zugriff auf Ausgabemittel, Abweichungen, Konfidenzintervalle und SOBOL-Sensitivitätsindizes, ohne eine einzige zusätzliche Simulation durchzuführen.
Dieser Artikel behandelt PCE von der theoretischen Grundlage bis zur praktischen Umsetzung. Sie werden genau sehen, wie Polynombasen ausgewählt werden, wie Koeffizienten durch Regression, Quadratur oder Projektion geschätzt werden, wie spärliche Techniken PCE auf mäßige Dimensionen erweitern und welche Ausfallmodi die Standard-PCE brechen. Die eingeschlossenen Python-Beispiele verwenden Chaospy, Uqpy und Scikit-Learn, um vollständige, validierte Workflows anzuzeigen.
Schlüssel zum Mitnehmen
- PCE ersetzt zufällige Stichproben durch deterministische Approximation: Anstatt Tausende von Monte-Carlo-Proben zu zeichnen, passt PCE ein Polynom an die Modellantwort an. Die Polynomkoeffizienten liefern dann analytische Momente und Sensitivitätsindizes.
- Die Polynombasis muss mit der Eingabeverteilung übereinstimmen: : Legendre für Uniform, Hermite für Gaussian, Laguerre für Exponential. Eine nicht übereinstimmende Basis zerstört die Orthogonalität und macht alle Koeffizientenschätzungen ungültig.
- Nicht-intrusive PCE ist die Standardwahl für die meisten Workflows: Sie behalten Ihren Simulator als Black Box, bewerten ihn an Trainingspunkten und schätzen die Koeffizienten über Regression. Dies vermeidet das Ändern von Solver-Gleichungen.
- Spärliche PCE-Methoden verarbeiten ~50 Parameter: Hyperbolische Kürzungen, Lasso- und Smolyak-Gitter reduzieren die Größe der Polynombasis dramatisch. Sie funktionieren, wenn die Modellantwort dominante Wechselwirkungen niedriger Ordnung aufweist, aber die Sparsity-Annahme muss überprüft werden.
- PCE ist nicht universell: Diskontinuierliche Antworten, Schwellenereignisse, Kontaktänderungen und Löserfehler führen zu nicht-physikalischen Schwingungen (das Gibbs-Phänomen). Wenn die Antwort diskontinuierlich ist, verwenden Sie Multielement-PCE, rationales Polynom-Chaos oder einen hybriden Ersatz.
Funktionsweise der Polynom-Chaos-Erweiterung
Die Polynom-Chaos-Expansion repräsentiert eine Modellausgabe als gewichtete Summe von orthogonalen Polynomen. Betrachten Sie eine skalare Ausgabe y, die von einem Eingabevektor X abhängt:
Y = M(X)
Die PCE-Näherung ersetzt m(x) durch ein Polynom:
Y(X) ≈ Σ cₖ Ψₖ(X)
Hierbei sind ψₖ multivariate orthogonale Polynome und Cₖ deterministische Koeffizienten. Der Satz von Polynomen muss in Bezug auf die Eingangswahrscheinlichkeitsverteilung orthogonal sein, und die Koeffizienten werden durch das gewählte Schätzverfahren bestimmt.
Orthogonale Polynome und Verteilungsabgleich
Die Polynomfamilie ist direkt an die Eingabeverteilung gebunden. Dies ist keine Designwahl – es ist eine mathematische Voraussetzung für die Orthogonalität.
| Verteilung | Orthogonales Polynom | Normalisierung |
|---|---|---|
| Uniform [-1, 1] | Legende | Pₙ(ξ) = (1/N!)·Dⁿ/Dξⁿ[(ξ²-1)ⁿ] |
| Standardnormal N(0,1) | Hermite | Hₙ(ξ) = (-1)ⁿ·E(ξ²/2)·dⁿ/dξⁿ[e(-ξ²/2)] |
| Exponential λ = 1 | Laguerre | Lₙ(ξ) = (1/N!) · E ^ ξ · Dⁿ/Dξⁿ[ξⁿ] |
| Beta [a, b] | Jacobi | Verallgemeinerte Jacobi-Polynome |
| Poisson | Charlier | Diskrete orthogonale Polynome |
Die Orthonormalitätsbedingung besagt:
∫ Ψᵢ(ξ) Ψⱼ(ξ) w(ξ) dξ = δᵢⱼ
Dabei ist w(ξ) die Wahrscheinlichkeitsdichte der Eingangsverteilung und Δᵢⱼ das Kronecker-Delta. Wenn diese Bedingung gilt, beziehen sich die PCE-Koeffizienten direkt auf Ausgabestatistiken durch Parsevals Identität.
Multivariate Polynomkonstruktion
Wenn die Eingaben unabhängig sind, ist die multivariate Polynombasis ein Tensorprodukt univariater Polynome:
Ψₖ(X) = Π ψₖᵢ(Xᵢ)
Für eine Gesamtgradbasis der Ordnung P in d unsicheren Parametern beträgt die Anzahl der Terme:
N = (d + p)! / (d! · p!)
Für 20 Parameter und Ordnung drei ergibt dies 1.771 Terme. Eine stabile Regression erfordert in der Regel mehr Trainingspunkte als Koeffizienten, sodass der Rechenbedarf schnell wächst.
nicht aufdringlich vs. aufdringlich PCE
Es gibt zwei grundlegend unterschiedliche Ansätze zum Aufbau einer PCE. Der nicht aufdringliche Ansatz behandelt den Simulator als Black Box. Der aufdringliche Ansatz formuliert die maßgeblichen Gleichungen neu.
Nicht aufdringliche PCE
Nicht-intrusive PCE bewertet den deterministischen Simulator an ausgewählten Punkten im Unsicherheitsraum und passt zu einer Polynomregression. Der Workflow:
- Wählen Sie eine Polynombasis aus, die mit den Eingabeverteilungen ausgerichtet ist.
- Trainingspunkte (Quadratur oder Probenahme) generieren.
- Führen Sie den Simulator an diesen Punkten aus.
- Expansionskoeffizienten schätzen.
- Validieren an unabhängigen Testpunkten.
Dieser Ansatz fügt keine Solver-Änderungen hinzu. Sie können ein vorhandenes CFD-, FEM-, Phasenfeld- oder molekulares Modell umwickeln und einen PCE-Surrogat erhalten, ohne einen internen Code zu ändern.
Aufdringliche PCE (stochastischer Galerkin)
Intrusive PCE ersetzt die Polynomexpansion direkt in die maßgeblichen Gleichungen und leitet ein gekoppeltes deterministisches System für die Koeffizienten ab. Für ein einfaches Modell:
∂u/∂t = L(u) + f → Σ ∂cₖΨₖ/∂t = L(Σ cₖΨₖ) + f
Nach dem Projizieren auf jede Basisfunktion löst das gekoppelte System alle Koeffizienten gleichzeitig. Dies kann effizienter sein, da die vollständige Struktur der Gleichungen verwendet wird. Es erfordert jedoch, dass der Solver geändert wird, um das gekoppelte System zu handhaben. Für die meisten Produktionsabläufe ist der aufdringliche Ansatz unpraktisch – der nicht-intrusive Regressionsansatz wird bevorzugt.
So schätzen Sie PCE-Koeffizienten
Die Koeffizientenschätzungsmethode bestimmt sowohl die Genauigkeit als auch die Rechenkosten. Es gibt drei Hauptansätze.
Regressionsbasierte Schätzung
Der nicht-intrusive Regressionsansatz ist der am weitesten verbreitete. Es sampelt Eingabepunkte, wertet das Modell aus und passt das Polynom durch lineare Regression:
y ≈ Φ c
wobei φ die polynome Bewertungsmatrix ist und y der Vektor der Modellbewertungen ist. Wenn n_samples ≥ n_terms ist, lautet die Lösung der kleinsten Quadrate:
c = (ΦᵀΦ)⁻¹ Φᵀ y
Dies ist mit den Polynomial-Funktionen von scikit-learn einfach zu implementieren:
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import Ridge
# Training data: N_samples × N_inputs
X_train = np.random.uniform(-1, 1, (100, 3))
# Polynomial features up to degree 2
poly = PolynomialFeatures(degree=2, include_bias=False)
Phi = poly.fit_transform(X_train) # 100 × 10 matrix
# Ridge regression (regularization stabilizes coefficient estimation)
model = Ridge(alpha=1e-4)
c = model.fit(Phi, y_train).coef_
Die Regression mit Regularisierung (Ridge, Lasso) ist numerisch stabil und funktioniert gut für mäßige Dimensionen. Der Nachteil ist, dass die Regressionsmatrix schlecht konditioniert wird, wenn der Trainingssatz relativ zur Basisgröße klein ist.
Quadraturbasierte (Gauss-Formel) Schätzung
Wenn der Koeffizientenindex k eindimensional ist (ein einzelner Polynombegriff), kann der Koeffizient Cₖ durch numerische Quadratur berechnet werden:
cₖ = ∫ M(X) Ψₖ(X) w(X) dX ≈ Σᵢ M(Xᵢ) Ψₖ(Xᵢ) w(Xᵢ) / ||Ψₖ||²
Für multivariate PCE werden spärliche Quadraturgitter benötigt. Dieser Ansatz ist genau, wenn das Modell ein Polynom von Grad ≤ 2p ist, aber in hohen Dimensionen unpraktisch wird, da die Quadraturgittergröße exponentiell wächst.
Projektionsbasierte (stochastische Kollokation)
Stochastische Kollokation konstruiert die PCE durch Interpolation des Modells an ausgewählten Kollokationspunkten. Der Koeffizient für Term k ist:
cₖ = Σᵢ M(Xᵢ) Ψₖ(Xᵢ) / Ψₖ(Xᵢ)² (diagonal weight)
Die Kollokation vermeidet den Integrationsschritt von Quadratur und ist rechnerisch effizient, wenn spärliche Gitter oder adaptive Verfeinerungsstrategien verwendet werden. Es ist der bevorzugte Ansatz, wenn der Simulator billig genug ist, um an allen Quadraturpunkten zu bewerten.
Spärliche PCE-Methoden
Die volle Polynombasis wächst kombinatorisch mit der Dimension. Spärliche PCE-Methoden reduzieren die Basisgröße und behalten gleichzeitig die Genauigkeit bei, wenn die Modellantwort von Wechselwirkungen niedriger Ordnung dominiert wird.
Hyperbolische Verkürzung
Die hyperbolische Basisbeschränkung (HBR) mit Parameter Q < 1 Limits, welche Multi-Indizes enthalten sind:
∑ αᵢ^(1/q) ≤ p
Bei Q → 1 nähert sich der HBR der Gesamtgradgrundlage. Wenn Q → 0 annähernd nähert, nähert es sich der generalisierten Pareto-Basis. Der Parameter Q steuert den Kompromiss zwischen Basisgröße und Genauigkeit. Für die meisten technischen Modelle bietet q = 0,5 bis 0,7 eine gute Komprimierung bei Beibehaltung wichtiger Interaktionsterme.
Die hyperbolische Kürzung reduziert eine 20-Parameter-Basis von 1.771 Terms auf ungefähr 200-400 Terme, abhängig von q.
Lasso und regulierte Regression
Lasso (least absoluter Schrumpf- und Selektionsoperator) Führt Regression mit einer L1-Strafe aus:
min (||Φc||² + λ ||c||₁)
Die L1-Penalty treibt viele Koeffizienten genau auf Null an und erzeugt eine spärliche Lösung. Elastic Net kombiniert L1- und L2-Penalien, um korrelierte Prädiktoren zu handhaben:
min (||Φc||² + λ₁ ||c||₁ + λ₂ ||c||₂²)
LASSO-basiertes SPARSE PCE wird in UQPY als HyperbolicTruncLARS implementiert (hyperbolische Verkürzung mit Regression des kleinsten Winkels). Der Workflow:
from uqpy.surrogates import HyperbolicTruncLARS
from uqpy.distributions import MultivariateGaussian, Uniform
# Define distributions
dist = MultivariateGaussian(np.zeros(5), np.eye(5))
# Generate samples and run model
samples = dist.sample(n=500)
y_train = model_function(samples)
# Build sparse PCE with q=0.5
pce = HyperbolicTruncLARS(distribution=dist, q=0.5, p=3)
pce.fit(samples, y_train)
# Validate
validation_samples = dist.sample(n=100)
y_pred = pce.predict(validation_samples)
rmse = np.sqrt(np.mean((y_pred - y_test)**2))
Smolyak spärliche Gitter
Die Smolyak-Konstruktion kombiniert univariate Quadraturregeln mit der spärlichen Gitterformel:
Qₘ = Σ_{|k|=m} (-1)^(m-|k|) · Πᵢ Q_{kᵢ}
wobei q_d der d-dimensionale Quadraturoperator ist und | k | = σ kᵢ. Smolyak-Gitter reduzieren die Anzahl der mehrdimensionalen Punkte von exponentieller bis polynomialem Wachstum in der Dimension. Sie sind am effektivsten, wenn die Reaktion reibungslos ist und Interaktionen niedriger Ordnung dominieren.
Wenn PCE wirksam ist
PCE konvergiert exponentiell schnell für reibungslose Modellantworten. Die Konvergenzrate hängt ab von:
- Glätte: Analytische Reaktionen konvergieren geometrisch. Stückweise glatte Reaktionen konvergieren algebraisch.
- Effektive Dimension: Auch bei 50 Nennparametern, wenn nur 5 die Reaktion steuern, konvergiert PCE auf 5 Dimensionen.
- Parameterinteraktionen: Starke Interaktionen höherer Ordnung erhöhen die erforderliche Basisgröße.
- Experimentelle Designqualität: SOBOL-Sequenzen oder spärliche Quadratur-Gitter schneiden besser ab als eine einheitliche Zufallsstichprobe.
Basiskontext
- PCE bietet analytische Momente und SOBOL-Indizes ohne zusätzliche Modellbewertungen.
- Der Regressionsansatz behandelt den Simulator als Black Box.
- Spärliche Methoden können PCE auf ~ 50 unsichere Parameter erweitern, wenn das Modell spärliche Wechselwirkungen aufweist.
- Das Python-UQ-Ökosystem umfasst Chaospy, Uqpy, Salib, Smt und Unwägbarkeit.
PCE gegen Kriging vs. Neuralnetze
PCE ist ein Ersatz unter vielen. Wenn Sie die Kompromisse verstehen, können Sie die richtige Methode für Ihr Problem auswählen.
| Dimension | Verfahren | Daten benötigt | Interpretationsfähigkeit | Dimensionalität | UQ-Extraktion | SOBOL-Indizes |
|---|---|---|---|---|---|---|
| PCE | Polynomregression / Quadratur | n_terms × 1,5 | Hoch (Koeffizientenabweichung) | Mäßig (spärlich erstreckt sich bis ~50) | Genaue analytische Momente | Exakt (koeffiziente Gruppierung) |
| Kriging (Gaussischer Prozess) | Korrelationsbasierte Interpolation | ~ 10-50 × D | Medium (Korrelationsstruktur) | Niedrig-Moderat (~10-30) | Vorhersageintervalle | Nein (numerische Ableitung erforderlich) |
| Neuronale Netze | Tiefe / flache Architektur | Hunderte bis Tausende | Niedrig (schwarze Box) | Hoch (100+ möglich) | Nein (kein inhärentes UQ-Modell) | Nein (Empfindlichkeit durch Störung) |
| Modelle mit reduzierter Ordnung | Projektion / richtig orthogonal | Problemspezifisch | Medium (Projektionsvektoren) | Hoch (Einbettungen Physik) | Nein (deterministische Projektion) | Nein |
PCE ist der einzige Ersatz, der aus den Koeffizienten exakte analytische Sobol-Indizes ergibt. Kriging gibt Vorhersageintervalle, erfordert jedoch eine numerische Differenzierung für die Empfindlichkeit. Neuronale Netze erfordern eine störungsbasierte Empfindlichkeit. Modelle mit reduzierter Ordnung sind deterministische Projektionen.
Wann wählen Sie PCE
PCE ist die beste Wahl, wenn:
- Sie benötigen analytische Momente und Sensitivitätsindizes: Die Koeffizienten geben Ihnen E[Y], Var(y) und Sobol-Indizes ohne zusätzliche Berechnung.
- Die Reaktion ist glatt und niedrigdimensional : Analytische Reaktionen konvergieren geometrisch in PCE.
- Sie brauchen schnellen Monte Carlo auf dem Ersatz: Nach dem Anpassen ist die Bewertung des Polynoms O (1). Dies ist für die Zuverlässigkeitsanalyse oder die Schwellenwahrscheinlichkeitsschätzung von unschätzbarem Wert.
- Der Simulator ist mäßig teuer: Wenn jede Auswertung Minuten bis Stunden dauert, ist eine PCE von 100 bis 500 Punkten möglich.
Wann pCE zu vermeiden
Vermeiden Sie PCE, wenn:
- Die Reaktion ist diskontinuierlich: Das Gibbs-Phänomen erzeugt Oszillationen in der Nähe von Diskontinuitäten. Verwenden Sie Multi-Element-PCE oder einen Hybrid-Surrogat.
- Sie benötigen ein hochdimensionales Modell: Auch spärliche PCE wird über ~50 Parameter ohne verifizierte Sparsität instabil.
- Die Antwort ist sehr nichtlinear mit starkem Schwellenwertverhalten: PCE glättet Schwellenwerte. Verwenden Sie stattdessen Monte Carlo oder zufälliges QMC.
- Daten sind extrem knapp: Mit weniger als 20 Trainingspunkten ist PCE unzuverlässig. Kriging- oder Polynom-Antwortflächen können robuster sein.
Das Gibbs-Phänomen
Das Gibbs-Phänomen ist der grundlegendste Fehlermodus von Standard-PCE. Bei diskontinuierlichen Antworten, Schwellenereignissen, Kontaktänderungen oder Löserfehlern erzeugt die Polynom-Approximation nicht-physische Schwingungen in der Nähe der Diskontinuität. Dies ist mathematisch identisch mit den Schwingungen, die bei der Annäherung einer Schrittfunktion mit einer Fourier-Reihe zu sehen sind.
Für eine reibungslose Reaktion konvergiert PCE schnell. Für eine Antwort mit einer einzelnen Sprungdiskontinuität oszilliert das Polynom mit einer der Sprunghöhe proportionalen Amplitude und zerfällt nur als 1 / √n. Das Erhöhen der Polynomordnung macht die Oszillation schlechter, nicht besser.
Minderungsstrategien
Multi-Element PCE (ME-PCE): Die Eingabedomäne ist in Teilregionen partitioniert. In jedem Teilbereich wird ein separates Polynom angepasst, wobei die Kontinuität an den Grenzen durchgesetzt wird. Dies ist der zuverlässigste Ansatz für diskontinuierliche Antworten.
Polynomial Chaos-Kriging-Hybrid : Eine PCE erfasst die glatte Komponente der Antwort, während ein Kriging-Modell die verbleibende Diskontinuität erfasst. Dies nutzt die Stärken beider Methoden.
Rationales Polynom-Chaos: Padé-legendre Approximationen verwenden ein Verhältnis von Polynomen anstelle eines einzelnen Polynoms. Die rationale Form kann diskontinuierliche Sprünge genauer darstellen als ein reines Polynom.
Aktive Lerndomänenzerlegung: Novák et al. (2023) führten einen sequentiellen Ansatz ein, bei dem die Eingabedomäne basierend auf dem Verhalten des Modells in jeder Region iterativ zerlegt wird. Dies ist der flexibelste Ansatz für komplexe diskontinuierliche Antworten.
Python-Implementierungshandbuch
Chaospy
Chaospy ist eine fokussierte Bibliothek für PCE- und Wahrscheinlichkeitsverteilungen. Es zielt nicht darauf ab, ein All-in-One-UQ-Framework zu sein.
import chaospy as cp
import numpy as np
# Independent uncertain parameters
distribution = cp.J(
cp.Uniform(0.8, 1.2),
cp.Normal(2.0, 0.1)
)
# Total-degree polynomial basis
order = 3
expansion = cp.generate_expansion(order, distribution)
# Experimental design (Sobol)
samples = distribution.sample(100, rule='sobol')
# Model evaluations
def model(sample):
conductivity = sample[0]
source = sample[1]
return source / conductivity + 0.2 * conductivity**2
evaluations = np.array([model(samples[:, i]) for i in range(samples.shape[1])])
# Fit PCE by regression
approximation = cp.fit_regression(expansion, samples.T, evaluations)
# Extract statistics (analytical, no additional model evaluations)
mean = cp.E(approximation, distribution)
variance = cp.Var(approximation, distribution)
first_order = cp.Sens_m(approximation, distribution)
total_order = cp.Sens_t(approximation, distribution)
print(f"Mean: {mean}")
print(f"Standard deviation: {np.sqrt(variance)}")
print(f"First-order Sobol: {first_order}")
print(f"Total-order Sobol: {total_order}")
Uqpy
UQPY bietet spärliche PCE-, LARs- und umfangreiche Validierungsdienstprogramme.
from uqpy.distributions import MultivariateGaussian
from uqpy.surrogates import HyperbolicTruncLARS, MonteCarlo
import numpy as np
# Define distribution
dist = MultivariateGaussian(np.zeros(5), np.eye(5))
# Generate samples and run model
samples = dist.sample(n=500)
y_train = np.array([model_function(x) for x in samples])
# Build sparse PCE
pce = HyperbolicTruncLARS(distribution=dist, q=0.5, p=3)
pce.fit(samples, y_train)
# Validate on independent test points
test_samples = dist.sample(n=100)
y_pred = pce.predict(test_samples)
y_test = np.array([model_function(x) for x in test_samples])
# Root mean squared error
rmse = np.sqrt(np.mean((y_pred - y_test)**2))
print(f"RMSE: {rmse}")
# Monte Carlo uncertainty propagation on the surrogate
n_mc = 10000
mc_samples = dist.sample(n_mc)
mc_predictions = pce.predict(mc_samples)
mc_mean = np.mean(mc_predictions)
mc_std = np.std(mc_predictions)
print(f"MC propagation mean: {mc_mean}")
print(f"MC propagation std: {mc_std}")
scikit-learn Regularisierte PCE
Für Projekte, die bereits Scikit-Learn, Ridge oder Lasso Regression verwenden, ist unkompliziert.
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import Lasso
# Generate Sobol samples
N = 300
d = 4
from scipy.stats import qmc
sampler = qmc.Sobol(d)
sample = sampler.random(base2=np.ceil(np.log2(N)).astype(int))
# Model evaluations
y = np.array([model_function(row) for row in sample])
# Polynomial features with hyperbolic truncation (manual basis selection)
poly = PolynomialFeatures(degree=2, include_bias=False)
Phi = poly.fit_transform(sample)
# LASSO regression
lasso = Lasso(alpha=1e-3)
c = lasso.fit(Phi, y).coef_
print(f"Non-zero coefficients: {np.sum(c != 0)} out of {len(c)}")
print(f"Coefficients: {c}")
Validierung eines PCE-Surrogates
Einem PCE-Surrogat sollte niemals ohne Validierung vertraut werden. Die Polynomkoeffizienten liefern genaue Momente, aber diese Momente sind bedeutungslos, wenn der Ersatz das Modell nicht genau annähert.
Validierungsprotokoll
- Validierungspunkte erstellen: Unabhängig vom Training. Verwenden Sie SOBOL-Sequenzen oder lateinische Hypercube-Sampling.
- Remse und maximaler Fehler berechnen : Vergleichen Sie PCE-Vorhersagen mit echten Modellbewertungen an Validierungspunkten.
- Prüfmomentgenauigkeit: Vergleichen Sie den PCE-extrahierten Mittelwert und die Varianz mit den Monte-Carlo-Schätzungen auf dem Validierungssatz.
- Sensitivitätsstabilität : Wenn sich die SOBOL-Indizes zwischen Training und Validierung signifikant ändern, wird die PCE nicht konvergiert.
- Überprüfen Sie auf Gibbs-Oszillationen: PCE-Vorhersagen gegen ein Gitter. Nicht glatte Oszillationen weisen auf diskontinuierliche Antwortfehler hin.
Konvergenzüberwachung
Verfolgen Sie die Polynomreihenfolge und die Anzahl der Trainingspunkte. Wenn beide zunehmen, sollte der RMSE monoton abnehmen. Wenn RMSE mit höherer Ordnung stagniert oder steigt, ist die Basis die Überanpassung der Trainingsdaten.
# Monitoring convergence as polynomial order increases
for order in [2, 3, 4, 5]:
expansion = cp.generate_expansion(order, distribution)
samples = distribution.sample(N)
evaluations = np.array([model(s) for s in samples])
pce = cp.fit_regression(expansion, samples.T, evaluations)
# Validate
test = distribution.sample(N_test)
y_pred = np.array([pce(s) for s in test])
y_true = np.array([model(s) for s in test])
rmse = np.sqrt(np.mean((y_pred - y_true)**2))
print(f"Order {order}: RMSE = {rmse:.6f}")
häufige Fehler und wie man sie vermeidet
1. Nicht übereinstimmende Polynombasis
Die Verwendung von Legendre-Polynomen für Gaußsche Eingaben zerstört die Orthogonalität. Die Koeffizienten werden vorgespannt und die Momentextraktion ist ungültig. Ordnen Sie die Polynomfamilie immer der Eingabeverteilung zu.
2. Überanpassung der Polynombasis
Ein Grad-5-Basis in 10 Parametern hat 2.002 Begriffe. Mit 2.000 Trainingspunkten ist die Regression kaum stabil. Verwenden Sie Informationskriterien (AIC, BIC) oder Kreuzvalidierung, um die Polynomreihenfolge auszuwählen.
3. Vertrauensvolle PCE-Momente ohne Validierung
Der Mittelwert und die von PCE-Koeffizienten extrahierten Varianz sind genaue mathematische Ausdrücke. Sie sind jedoch nur gültig, wenn die Polynom-Näherung genau ist. Vor dem Melden von Momenten immer gegen unabhängige Testpunkte validieren.
4. Ignorieren des Gibbs-Phänomens
Bei diskontinuierlichen Reaktionen oszilliert das Polynom nahe Diskontinuitäten. Melden Sie den RMSE in einem Raster, das Diskontinuitätsregionen enthält. Wenn RMSE von einigen Oszillationspunkten dominiert wird, ist die PCE nicht gültig.
5. Annahme von Sparsamkeit ohne Überprüfung
Die Lasso- oder hyperbolische Verkürzung geht davon aus, dass die Modellantwort von Wechselwirkungen niedriger Ordnung dominiert wird. Wenn das wahre Modell starke Interaktionen höherer Ordnung aufweist, wird die spärliche PCE diese vermissen. Überprüfen Sie die Sparsität, indem Sie die Koeffizientennormen von Full- vs. spärlichen Basen vergleichen.
Zusammenfassung und nächste Schritte
Die Erweiterung des Polynom-Chaos wandelt einen deterministischen Simulator in einen stochastischen Surrogat um, der analytischen Zugriff auf Ausgabestatistiken, Unsicherheitsintervalle und Sensitivitätsindizes bietet. Die Methode zeichnet sich aus, wenn die Antwort reibungslos ist, die Dimensionalität moderat ist und die Rechenkosten hoch genug sind, um die Ersatzkonstruktion zu rechtfertigen.
Empfohlener Arbeitsablauf
- Überprüfen Sie die numerische Konvergenz des deterministischen Simulators vor UQ. Diskretisierungsfehler und numerische Unsicherheit sollten vor der Ausbreitung festgestellt werden.
- Verteilungen von experimentellen Daten oder dokumentiertes Expertenurteil zuweisen. Standardmäßig nicht auf einheitliche Verteilungen setzen.
- Wählen Sie die Polynombasis aus, indem Sie Verteilungen mit orthogonalen Polynomen übereinstimmen. Überprüfen Sie die Orthonormalitätsbedingungen.
- Wählen Sie eine Koeffizientenschätzungsmethode : Regression für nicht-intrusive PCE, Quadratur für effiziente niederdimensionale Fälle, Kollokation für billige Modelle.
- Validieren Sie den Ersatz gegen unabhängige Testpunkte und überwachen Sie die Konvergenz mit zunehmender Polynomordnung.
- Momente und Sensitivitätsindizes melden Erst nach der Validierung. Schließen Sie Konfidenzintervalle für geschätzte Statistiken ein.
Was zu vermeiden
- Verwenden von PCE für diskontinuierliche Antworten ohne Abschwächung
- Angenommen, spärliches PCE funktioniert für jedes hochdimensionale Problem
- PCE-Momente ohne Validierung melden
- Verwirrende nicht-intrusive PCE mit intrusivem stochastischem Galerkin
- Verwenden von vollständigen Polynombasis bei Problemen, bei denen die Basisgröße den Trainingssatz überschreitet
Verwandte Anleitungen
- Unsicherheitsquantifizierung und Sensitivitätsanalyse in der wissenschaftlichen Simulation — breiterer UQ-Workflow, SoBol-Sensitivitätsanalyse, Monte Carlo-Methoden und Python-UQ-Tools.
- Monte Carlo-Methoden für wissenschaftliche Simulationen — Vergleichen Sie Stichproben, QMC, LHS und Konvergenzverhalten gegen St.
- Maschinenlern-Surrogate für wissenschaftliche Simulationen — Erstellen und validieren Sie nebeneinander St.
- Verifikation vs. Validierung in wissenschaftlichen Simulationen — Etablieren Sie numerische Konvergenz vor dem Start Eine UQ-Kampagne.
Referenzen
- Caflisch, R. E., & Mosolova, N. (1998). Monte Carlo und Quasi-Monte Carlo Methoden. UCLA Cam-Bericht.
- Novák et al. (2023). Aktive Lerndomäne adaptive lokalisierte Surrogate. Computermethoden in angewandter Mechanik und Technik . doi
- Schneider (2023). Rationales Chaos-Expansion für Polynome. tum Dissertation. pdf
- Helmholtz UQ-Wörterbuch. Eintrag für die Erweiterung des Polynom-Chaos. url
- COMSOL-Lernzentrum. Ersatzmodellierungstheorie und PCE. url
Benötigen Sie Hilfe beim Erstellen von PCE-Surrogaten für Ihre Simulationen?
Wenn Sie mit der Implementierung von Polynom-Chaos, der Auswahl der Basis, der spärlichen PCE-Regularisierung oder der Ersatzvalidierung zu kämpfen haben, können wir Ihnen helfen. Wir spezialisieren uns auf Python-basierte Unsicherheitsquantifizierungs-Workflows und können Sie von grundlegenden PCE-Skripten zu produktionstechnischen Ersatzpipelines führen.