- Update Makevars for ARM version of Windows.
- Sanitize internal usage of
do.call
to avoid huge backtraces. - Support lower triangular
distmat
objects for symmetric distances (#77) - breaking change.
- Remove explicit C++ requirements.
- Documentation update (#61).
- Specify minimum supported version of package
Matrix
.
- Enhanced
compare_clusterings
to allow complex parameters in lists (#59).
- Removed some deprecated interfaces from the C++ code.
- For
compare_clusterings
, fixed a bug that caused the order of columns "k" and "method" to be wrong in the data frame with results for hierarchical configurations.
- Series order is now preserved in plots of included shiny apps.
- The optimization in
sdtw_cent
now usesstats::optim
by default. - Dropped strong dependency on
bigmemory
in case it is archived. It can still be used if available.
- Adjustments for future R 4.0.0 version: matrices now also inherit from
array
.
- Function
dtw_basic
gained parametersqrt.dist
.
- Fixed compilation on Solaris.
- Fixed a bug in the way
compare_clusterings
handled preprocessing of series. - Internal speed optimizations.
- Added support for interruption of multi-threaded tasks via
RcppThread
. - Updated timing experiments.
- Fixed plotting of clusters with labels when a cluster has repeated series.
- Documentation fixes.
- The registration of
hclust
andproc_time
withsetOldClass
now leaves them as virtual classes.
- Added a standalone function to extract centroids for partition around medoids:
pam_cent
. - Fixed the calculation of GAK for non-
NULL
windows. - "Fixed" the calculation of internal CVIs for clusterings done with TADPole.
- Vignette updates.
- Fixed the distance calculation done by the
dtw2
wrapper for multivariate series.
- Added another helper for
compare_clusterings
:cvi_evaluators
. - Fixed the calculation of SF and CH CVIs for hierarchical clustering with default centroid extraction.
- The data frames passed to
pick.clus
incompare_clusterings
now also contain the configurations' data instead of just the scores. This will require adjustment of existingpick.clus
functions. - The
centroids
in the objects returned bytsclust
now have an attributeseries_id
if said centroids were extracted from the provided series without modification. It is an integer vector indicating which series were chosen as centroids. - Improved warning messages in
compare_clusterings
. - Multi-threaded parallelization is now more medium-grained to hopefully balance load a bit better.
- Minor updates to parallelization vignette.
- Added parameter
no.expand
tocompare_clusterings_configs
. - Documentation fixes.
- You should now be able to use this package without attaching it, with some caveats. See documentation for
dtwclust-package
.
- Added 2 shiny apps, see
interactive_clustering
andssdtwclust
. - Added another helper for
compare_clusterings
:repeat_clustering
. - Added
distmat
tofuzzy_control
for whencentroid = "fcmdd"
. - Dropped dependency on
rngtools
. Changing the random number generator after loadingdtwclust
should not be a problem now. - Fixed a bug regarding the way
tsclust
handled theseed
when called fromcompare_clusterings
. This will affectcompare_clusterings
results of hierarchical or TADPole clusterings made therein if a centroid subject to randomness was used (e.g.dba
).
- Several functions now use
RcppParallel
for parallelization, refer to the new parallelization vignette for more information. - None of the distance/centroid functions expose parameters for helper matrices anymore.
- Added the option to add labels to non-dendrogram plots.
- The ellipsis in
sdtw_cent
is now actually passed tonloptr
. - Fixed
tsclust
fordtw_lb
distance andpam.precompute = FALSE
(it was always usingdtw_basic
, so the results should not change). - Updated timing experiments.
- Added soft-DTW information to the PDF vignette.
- Added implementations of soft-DTW distance and centroid.
- Fixed the calculation of the
clusinfo
slot forTSClusters
class for clusterings that ended with empty clusters. - Fixed logic in partitional/fuzzy clustering, which was preventing the usage of parallel backends when only one value of k and one repetition were made.
- Removed all deprecated code.
- Added external fuzzy cluster validity indices.
- Fixed GAK's
sigma
estimation in the non-proxy version. The estimation routine in the proxy version also changed slightly, and the estimates will be different due to randomness. - Fixed the calculation of the Silhouette CVI (#21).
- Modified
tslist
to hopefully make it faster. - Partitional and fuzzy controls (
tsclust-controls
) now specify version 2 of the main loop by default. - Packages
clue
andggplot2
are no longer automatically attached by default. - Fixed minor potential bugs in several functions.
- Changed
plyr
dependency fordplyr
. - Minor vignette updates.
- Added some fuzzy cluster validity indices to
cvi
. - When using
TADPole
clustering throughtsclust
, custom parameters can now be passed to a custom centroid function if provided. - Modified the partitional/fuzzy loops, which were doing an extra iteration. Previous version still available for backwards compatibility. This modification was wrong in version 4.1.0.
- Deactivating PAM precomputation will no longer use sparse matrices by default, explicitly set
pam.sparse
toTRUE
if you want this functionality. - Fixed multivariate plots (#18).
- Fixed
zscore
for data frame input (it was still coercing column-wise instead of row-wise). - Added an additional vignette with some timing experiments.
- Ported the
proxy
versions oflb_keogh
,lb_improved
,SBD
,GAK
anddtw_basic
toC++
and improved them by using thebigmemory
package. - Ported
TADPole
toC++
. - Ported part of the algorithm that updates sparse distance matrices to
C++
. - Improved the optimizations for symmetric matrices that are calculated in parallel.
- Fixed
tsclustFamily
'sdist
function for matrix or data frame input. - Fixed partitional PAM centroids for
dtw_lb
distance andpam.precompute = FALSE
(#16). - Exported a function to coerce matrices and data frames to a list.
- Updated documentation.
- Ported
dtw_lb
toC++
when usingdtw_basic
. - Modified some tests to account for rounding error (CRAN request).
- Optimized
TADPole
for multiplek
anddc
values. - Optimized PAM centroids with
pam.precompute = FALSE
by using sparse matrices from theMatrix
package. - Optimized
shape_extraction
by using theeigs_sym
function from theRSpectra
package. - Implemented the DTW lower bounds in
C++
. - Implemented DBA in
C++
.- Implemented an alternative version of multivariate DBA that might be faster. See its documentation.
- Added a
symmetric
control for fuzzy clustering. - Partitional, hierarchical and fuzzy configurations in
compare_clusterings
now take into account thesymmetric
control parameter. - The functionality for
pick.clus
incompare_clusterings
changed depending on the value ofreturn.objects
. - Fixed an error that sometimes caused objects returned by
tsclust
to have duplicated elements in theargs
slot. - Fixed DTW symmetry detection for fuzzy clustering.
- Some internal functions changed, so older objects might no longer be compatible. Try using
update(old_TSClusters_obj)
. - The
dtwclust
function is now deprecated. Try usingas(dtwclust_class_obj, "TSClusters")
for old objects. - Changed name of function
compute_envelop
tocompute_envelope
(old one still available but deprecated). - Minor vignette updates.
- Several internal optimizations.
- Added functions
compare_clusterings
and helpers to compare many clustering configurations, possibly in parallel. - Fixed an error in
tsclust
that prevented CVIs to be calculated for hierarchical/TADPole cases if a custom centroid function was used. - Added slot
seed
to the objects returned bytsclust
.
- The arguments in
tsclust
's ellipsis are now passed to all preprocessing, centroid and distance functions. - Fixed some symmetry detection in
tsclust
when using DTW. - Updated vignette to use
tsclust
in the examples.
- Seeds are now set when calling TADPole through
dtwclust
with a parallel backend and multiple values ofk
, in case the centroid function has randomness associated. - Added a new experimental function
tsclust
that should be functionally equivalent todtwclust
but is hopefully more coherent in general.
- Fixed subsetting of multivariate plots
- Implemented the memory-saving version of DTW in
dtw_basic
whenbacktrack = FALSE
. - Implemented fuzzy c-medoids.
- Seeds were not being set in hierarchical/TADPole clustering, which could affect reproducibility of preprocessing/centroid functions.
- The
force.symmetry
argument indtw_lb
was removed since it didn't serve any real purpose. - Exported the function to compute envelops.
- Minor vignette updates.
- Bear in mind that the
DTW/SBD
algorithms (and hence the functions that depend on them) might give different results in installations with 32-bit architectures. - Removed deprecated arguments/slots.
- If you have older
dtwclust
objects saved, try updating them withattr(dtwclust_object, "centers") <- NULL
if you run into compatibility problems. DBA
arguments changed order.
- If you have older
- Removed the
dba.alignment
argument fromDBA
since otherstep.pattern
s don't really work. - Added (conditional) support for more hierarchical procedures. See the examples and vignette.
- Added a new distance based on global alignment kernels:
GAK
. - Added support for functions in package
clue
. - Fixed detection of some symmetric DTW cases.
- No longer enforcing preprocessing/centroid functions with ellipsis in their formals.
- Added a multivariate dataset sample:
CharTrajMV
. - Improved plots for clusterings with multivariate series.
- Updated vignette.
- Correction: DTW can be symmetric for series of both equal/different length, although in general this is not necessarily the case, due to asymmetric step patterns or constrained paths.
- Exported the
dtw2
function. - Revamped
zscore
andreinterpolate
functions. - Data frames are now parsed row-wise, like matrices, to maintain consistency with
proxy
. - Fixed a bug where multivariate series with different length had spurious data added to them.
- Fixed a bug in multivariate
shape_extraction
. Reminder: multivariate shape extraction might not be a good idea. - Consistency adjustments: all
center(s)
arguments/slots will be removed and replaced withcentroid(s)
. - Added the
dtw_basic
function, which should be faster due to its limited functionality. It can also be used withdtw_lb
andDBA
. It will now be used by default. - The
SBD
andshape_extraction
functions used thecrossprod
function internally, which returned a 1x1 matrix by default, causing some dimension inconsistencies. In the future,R
will give an error about the inconsistency, so the function has been changed indtwclust
, but it resulted in very small numerical differences, which may be enough to alter some clustering results.
- Added package vignette
- Implemented several cluster validity indices in the new
cvi
function - The custom argument
force.pairwise
used in some of theproxy
distances is not necessary anymore - No longer enforcing
NULL
dimensions for each series (in case multivariate series are to be used), use with caution - Fixed an error that prevented fuzzy clustering from working when
k = 2
- Fixed a possible problem in some of the included proxy distances when a data object had a length of 1
- Added option to specify a function to extract prototypes in hierarchical and TADPole clustering
- Switched algorithm to calculate envelops to Lemire's, which should be slightly faster
- More plot types
- Documentation fixes
- Minor bug fixes for fuzzy clustering
- Fixed the
predict
generic. - The final values returned in the
fcluster
slot needed one final update during clustering. It should be correct now, but it will vary slightly with respect to what was previously given in v2.1.0.
- Fixed the
- Some more examples
- Added fuzzy c-means clustering
- Memory optimizations for DBA
- Support for several
k
values for multiple runs - Update documentation
- Major refactor.
- Many formal parameters from the
dtwclust
function were dropped and implemented in the formal classdtwclustControl
. For now, they will still be supported through...
with a message. - No longer supporting non-proxy distances, in order to be able to take advantage of the included optimizations.
- Dropped inheritance of
flexclust
'skccasimple
- Many slots and methods were ported
- Inheriting from
hclust
class now, and all its associated methods
shape_extraction
now accepts series with different lengths!- More parallel support
- DBA and Shape centroid calculations
- DBA itself (probably unnecessary unless you're averaging a lot of series)
- Custom
proxy
distances directly (exceptDTW2
)
- Several hierarchical procedures can be made in one run.
- Added
distmat
slot andupdate
generic to save some time if possible. See examples ofdtwclust
. - Extra parameters for distance functions should be correctly detected now.
- Using
dtw_lb
function now correctly warns aboutpam.precompute
beingTRUE
. - Option to calculate pairwise distances with
DTW_LB
,SBD
,LB_Keogh
andLB_Improved
. See their respective notes. The distance function created for thedtwclustFamily
slot also supports this. - Clusters are randomly re-initialized if they become empty at some iteration.
- Now all included centroid functions recompute centers only if necessary.
- Option to optimize distmat calculation if the distance function is symmetric.
- Added the possibility to run several repetitions for partitional procedures, using different random starts each time by using the
doRNG
package - Parallel computing all around. Watch out for RAM! Use Linux if possible.
- Repetitions can be done in parallel if the user provides a suitable backend
- Calculation of distance matrices also takes advantage of parallel backends.
TADPole
anddtw_lb
too, probably negligible (maybe even detrimental) for small datasets.
- Added the option to prevent pre-computation of distance matrix when using PAM centroids
- Added an example with a custom distance function
- Using closures instead of relying on passing environments as attributes
- Optimized the
SBD
function registered withproxy
, it's a lot faster now - Optimized clustering with
DBA
andshape_extraction
so that centers are only recomputed if necessary - Added processing time slot to class definition
- Several bug fixes (especially in case custom distances were used, and also for plot method)
- Fixed minor bugs in
TADPole
- Added more options to the plot method for custom time labels
- Fixed an error in the calculation of Lemire's improved lower bound
- Added L2 norm to
DBA
, as well as window constraint - Optimized
DBA
calculations - More examples
- Limited support for time series of different lengths
- Improved plot method
- More control parameters
- Added more slots to the
dtwclust
class - Some parameters changed order
- Default values of some auxiliary functions were changed (
DBA
andSBD
) - No longer supporting native
kccaFamilies
, supporting any distance registered inproxy
instead - Several bug fixes, especially if
dtw
ordtw2
were being used, in which case they may have been erroneously computed before
- Initial release