It'd be nice to have MvNormalWishart factor/node (Normal–Wishart) to express a joint prior over component mean and precision:
Why
NormalMixture currently enforces separate mean-field over means and precisions, which can degrade inference (it really does). A joint μ–Λ node (prior) will let us keep mean-field at the mixture level while coupling mean and precision as a single interface, not the nicest, but a pragmatic workaround until mixture nodes support true joint interfaces.
Minimal proposal
- New node:
(μ, Λ) ~ MvNormalWishart(m0, κ, ν, W)
Intended usage with NormalMixture:
# per component k
μΛ[k] ~ MvNormalWishart(m0, κ, ν, W)
y[i] ~ NormalMixture(switch = z[i], mp = μΛ)
Note
MvNormalWishart exists in ExponentialFamily.jl (distribution side), which is helpful, this request is specifically for a ReactiveMP node/factor with conjugate message passing.
It'd be nice to have
MvNormalWishartfactor/node (Normal–Wishart) to express a joint prior over component mean and precision:Why
NormalMixturecurrently enforces separate mean-field over means and precisions, which can degrade inference (it really does). A jointμ–Λnode (prior) will let us keep mean-field at the mixture level while coupling mean and precision as a single interface, not the nicest, but a pragmatic workaround until mixture nodes support true joint interfaces.Minimal proposal
(μ, Λ) ~ MvNormalWishart(m0, κ, ν, W)Intended usage with
NormalMixture:Note
MvNormalWishartexists inExponentialFamily.jl(distribution side), which is helpful, this request is specifically for a ReactiveMP node/factor with conjugate message passing.