Recent Releases of anticlust

anticlust - Version 0.8.11-1

anticlust 0.8.11-1

  • Fixes some edges cases of functionality introduced in last update

- R
Published by m-Py 10 months ago

anticlust - Version 0.8.11

anticlust 0.8.11

  • In anticlustering(), argument cannot_link can now be a vector, via 93158fb98a375, inspiration thanks to @einGlasRotwein
    • Makes the computation potentially much faster (and does not rely on a solver) if cannnot-link constraints are induced via a grouping variable.

- R
Published by m-Py 10 months ago

anticlust - Version 0.8.10-1

anticlust 0.8.10-1

  • Minor: Fixed uncatched potential error in tests for CRAN "additional issues" via 75cb7d5760be08b0bb

- R
Published by m-Py about 1 year ago

anticlust - Version 0.8.10

anticlust 0.8.10

  • The commercial Gurobi solver is now available as backened for the exact anticlustering methods
  • The documentation refers to a new anticlustering paper, available from bioRxiv

- R
Published by m-Py about 1 year ago

anticlust - Version 0.8.9-1

anticlust 0.8.9-1

  • Minor fix in three_phase_search_anticlustering() for objective = "dispersion" to address CRAN issue

- R
Published by m-Py about 1 year ago

anticlust - Version 0.8.9

anticlust 0.8.9

User visible changes

  • categories_to_binary() no longer uses dummy coding with a reference category, but instead codes each levels of a categorical variable with a separate variable (thanks to Gunnar Klau for spotting potential problems with dummy coding).
  • anticlustering() has new method = "2PML", which is an improved heuristic when using must-link constraints

- R
Published by m-Py about 1 year ago

anticlust - Version 0.8.8

anticlust 0.8.8

  • three_phase_search_anticlustering() implements the three phase search algorithm by Yang et al., contributed by Hannah Hengelbrock (@HanneyAI)

- R
Published by m-Py about 1 year ago

anticlust - Version 0.8.7

anticlust 0.8.7

User visible changes

  • anticlustering() now has an argument must_link, which can be used force elements into the same cluster
  • It is now possible that a cluster (e.g., in anticlustering()) only has 1 member (this threw an error before)

Bug fixes

- R
Published by m-Py over 1 year ago

anticlust - Version 0.8.6

New features

  • bicriterion_anticlustering() has new arguments: dispersion_distances, average_diversity, init_partitions, return.
  • anticlustering() now has new objective = "average-diversity"
  • In anticlustering(), method = "brusco" now works for objective = "variance" and "objective = kplus"
  • Added lpSolve solver as backend for the optimal methods, and it is now the default solver
  • optimal_anticlustering() and optimal_dispersion() now have an additional argument time_limit
  • anticlustering() now has an argument cannot_link, which can be used to forbid pairs of elements from being assigned to the same cluster. When used, this solves the same (NP hard) graph coloring problem as optimal_dispersion(). Unlike the other optimal methods, it uses the Symphony solver with priority, when it is found (otherwise the lpSolve)

Bug fixes

  • Bug fix in optimal_dispersion(): Output element $edges no longer includes edges that were investigated in the last iteration of the algorithm (and which are not relevant for finding the optimal dispersion)

Internal changes / Other

  • Speed improvements for anticlustering(..., objective = "diversity") when using method = "local-maximum" and repetitions (the restart algorithm is now entirely implemented in C and does not call method = "exchange" repeatedly from R)
  • anticlust now depends on package lpSolve

- R
Published by m-Py over 1 year ago

anticlust - Version 0.8.5

anticlust 0.8.5

New features

  • optimal_anticlustering() is a new exported function that gathers all currently (and in the future) implemented optimal algorithms for anticlustering
  • balanced_clustering() now has an argument solver, which can be used to specify the ILP solver when using method = "ilp"

Internal changes

  • The default selection of ILP solvers in anticlustering(), balanced_clustering() and optimal_dispersion() was changed due to a reoccurring CRAN issue: If both the Rglpk and the Rsymphony packages are available, the GLPK will now be prioritized. This is because the SYMPHONY solver sometimes crashes on Macs (or at least on one CRAN test station). The optimal_anticlustering(), optimal_dispersion(), and balanced_clustering() functions have an argument solver that can be used to circumvent this default behaviour.
  • anticlust now uses tinytest instead of testthat for unit tests.

- R
Published by m-Py almost 2 years ago

anticlust - Version 0.8.3

Documentation

  • Some minor updates to documentation and vignettes
  • Updating all references to the k-plus anticlustering paper after its "actual" publication:

Papenberg, M. (2024). K-plus Anticlustering: An Improved k-means Criterion for Maximizing Between-Group Similarity. British Journal of Mathematical and Statistical Psychology, 77(1), 80--102. https://doi.org/10.1111/bmsp.12315

Internal changes

  • fast_anticlustering() received another internal change to improve the speed of the re-computation of the objective during the optimization. In particular, updating the objective is now done by only inspecting the two clusters between which an exchange actually took place, instead of re-computing a sum across all clusters.
  • A bug in fast_anticlustering() was fixed; the computation of the objective did not incoorporate the cluster sizes

- R
Published by m-Py almost 2 years ago

anticlust - Version 0.8.2

- R
Published by m-Py over 2 years ago

anticlust - Version 0.8.0

anticlust 0.8.0

New features

  • fast_anticlustering() now has an additional argument exchange_partners, which can be used to pass custom exchange partners instead of using the default nearest neighbour search.
  • generate_exchange_partners() is a new exported function that can be used to address the new argument exchange_partners in fast_anticlustering().

Internal changes

  • anticlustering() received internal changes to ensure that it no longer crashes the computer for about N > 250000 elements.
  • fast_anticlustering() has been re-implemented in C, which is much faster than the previous R implementation.
  • fast_anticlustering() now uses an alternative computation of the k-means objective, which reduces run time by an order of magnitude as compared to before.

Documentation

  • Expanded documentation of fast_anticlustering().
  • The vignette "Speeding up anticlustering" has been rewritten to reflect that fast_anticlustering() is now again the best choice for processing (very) large data sets.

- R
Published by m-Py over 2 years ago

anticlust - Version 0.7.0

  • An exact ILP method is now available for maximizing the dispersion, contributed by Max Diekhoff.
    • optimal_dispersion() is a new exported function implementing the method
    • anticlustering() makes it available when using method = "ilp" and objective = "dispersion"
  • kplus_moment_variables() is a new exported function that generates k-plus variables from a data set
    • Offers some additional flexibility as compared to calling kplus_anticlustering(), which generates these variables internally (e.g., use k-plus augmentation on some variables but not all -- such as binary variables)
  • categories_to_binary() is a new exported function that converts one or several categorical variables into a binary representation
    • Can be used to include categorical variables as part of the optimization criterion in k-means / k-plus anticlustering, see new vignette "Using categorical variables with anticlustering"
  • 3 new vignettes have been added to the anticlust documentation
  • Fixed a bug in kplus_anticlustering() that did not correctly implement preclustering = TRUE
  • It is now possible to use the SYMPHONY solver as backend for the optimal ILP methods.

- R
Published by m-Py over 2 years ago

anticlust - Version 0.6.4-3

Mostly synchronizes version number with latest commit on Github.

- R
Published by m-Py almost 3 years ago

anticlust - Version 0.6.4-2

Another problem fixed with categories

- R
Published by m-Py almost 3 years ago

anticlust - Version 0.6.4-1

fixed potential infinite loop for categories argument with uneven group sizes

- R
Published by m-Py almost 3 years ago

anticlust - Version 0.6.4

  • kplus_anticlustering() now has an argument "T" instead of "moments"

- R
Published by m-Py almost 3 years ago

anticlust - Version 0.6.3

New exported function: kplus_anticlustering()

- R
Published by m-Py about 3 years ago

anticlust - Version 0.6.2

Very minor release with some changes in docs. Might be for Github only, not sure if will be pushed to CRAN.

- R
Published by m-Py about 4 years ago

anticlust - Version 0.6.1

Just a minor fix in the code base.

- R
Published by m-Py over 4 years ago

anticlust - Version 0.6.0

Primary new feature: Implements the bicriterion anticlustering algorithm by Brusco, Cradit & Steinley (2020; Britisch Journal of Mathematical and Statistical Psychology). Implementation by Martin Breuer (@ManaLama).

- R
Published by m-Py over 4 years ago

anticlust - Version 0.5.7

New version, only updated the relevant Papenberg&Klau citation to its "actual" publication (not just online) in PsychMethods.

- R
Published by m-Py almost 5 years ago

anticlust - Version 0.5.6-1

Minor bug fix in plotting.

- R
Published by m-Py almost 5 years ago

anticlust - Version 0.5.6

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.5

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.4-1

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.4

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.3

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.2-2

minor fix

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.2-1

Minor bug fix.

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.2

Some new features, such as local maximum search algorithm as of classical exchange method.

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.1

Fixes a bug in anticlustering(), that led to an incorrect computation of cluster centers with option objective = "variance" for unequal cluster sizes, see 2ef6547

- R
Published by m-Py over 5 years ago

anticlust - Version 0.5.0

First version to be submitted to CRAN

- R
Published by m-Py almost 6 years ago

anticlust - Version 0.3.0

Package version associated with the submission of the manuscript »Using anticlustering to partition a stimulus pool into equivalent parts« (https://psyarxiv.com/3razc/)

- R
Published by m-Py over 6 years ago