"HeSC", "HeEC") now uses the closed-form
M-step of the classification likelihood under the implied mixing
proportions. Earlier versions iterated the stationarity conditions (Eqs.
14 and 16 of Melnykov and Michael, 2020) as updates with lagged
proportions; that recursion is not a contraction (it oscillates for p =
2 and diverges for p > 2), which produced the component collapses and
non-convergence documented for version 0.2.0.chooseK() seeds every grid point from the calling RNG
stream, so the curve and the recommendation are reproducible from
set.seed() for any number of cores; previously
cores > 1 gave irreproducible results.G = "auto" is
not available.G = "auto" measured gaps on the raw log-overlap scale,
so numerical underflow among negligible overlaps (1e-11 versus exactly
0, say) could produce the largest gap and a spurious cut: four
well-separated clusters on a line were cut into three. Gaps are now
measured on log(overlap + 1e-4), which treats overlaps
below 1e-4 as ties. The rule targets well-separated clusters and is now
refused with Ward’s linkage, where it was never meaningful.set.seed() for any
value of cores (previously results with
cores > 1 were not reproducible). The serial
init = "random" path is unchanged. On Windows,
cores > 1 now emits a message and runs serially instead
of being silently ignored.cem.iter.max is reached without convergence; previously
this was visible only in summary().start accepts centers as well as labels: a
K x p matrix, or a list with a
centers/centroids element such as the value of
ClusterR::MiniBatchKmeans(). Observations are assigned to
the nearest center, which makes the partition consistent with
predict() by construction.pairwise_overlap() accepts mixing proportions
tau in the heteroscedastic cases as well, so the overlap of
an arbitrary fitted Gaussian mixture can be computed; the DEMP-K implied
proportions remain the default.chooseK() locates the elbow by the chord method (the
grid point farthest from the line joining the first and last points of
the SSB/SSTO curve), which is less sensitive to the starting point of
the grid than the previous marginal-gain threshold. The recommendation
remains one grid step beyond the elbow.predict() reproduces them.predict()
round-trip.G = "auto" is now computed from the single-linkage
merge sequence of the overlap matrix regardless of the fitting linkage
(the previous Ward-height gaps were unreliable); its limits (range
2:(K-1), spurious suggestions on structureless data) are
documented.variant = "HeEC" crashed on univariate data;
plot(fit, what = "tree") failed for K = 2; Inf
values slipped past validation into cryptic downstream errors
(MergeKmeans, predict, chooseK); overlap_map() crashed on
missing values; predict() silently propagated
NA.init = "kmeans++" is the new default initialization of
the K-means restarts (Arthur & Vassilvitskii, 2007), stabilizing the
large-K component solutions on which the merging is built;
init = "random" restores the previous behavior.start argument: MergeKmeans() can now
merge a partition computed by any external engine (a kmeans
object, a ClusterR-style list, or a bare label vector), skipping its own
K-means step entirely. This removes the single-threaded
stats::kmeans ceiling for very large datasets.G = "auto" cuts the merge tree at the largest gap in
merge heights (also available in recut()); when no
G/omega.star is supplied the fit-time message
now reports the suggested G.K = NULL (new default) selects the number of components
automatically via chooseK().chooseK() now reports and marks a recommended
K (one grid step beyond the detected elbow) and gained a
cores argument.cores argument forks the K-means restarts via the
parallel package (POSIX systems).tidy(), glance(), and
augment() methods are registered when broom is loaded.omega.star with Ward’s linkage is now an error (it
previously warned and returned a degenerate unmerged partition).recut(),
chooseK(), pairwise_overlap(), and
print/summary/plot/predict methods.MixSim::overlap() and by independent Monte Carlo
simulation; the paper’s illustrative examples and pen-digits application
reproduced.
Need a high-speed mirror for your open-source project?
Contact our mirror admin team at info@clientvps.com.
This archive is provided as a free public service to the community.
Proudly supported by infrastructure from VPSPulse , RxServers , BuyNumber , UnitVPS , OffshoreName and secure payment technology by ArionPay.