### mlpack ?.?.? ###### ????-??-?? * Migrate from boost tests to Catch2 framework (#2523), (#2584). * Bump minimum armadillo version from 8.400 to 9.800 (#3043), (#3048). * Adding a copy constructor in the Convolution layer (#3067). * Replace `boost::spirit` parser by a local efficient implementation (#2942). * Disable correctly the autodownloader + fix tests stability (#3076). * Replace `boost::any` with `core::v2::any` or `std::any` if available (#3006). * Remove old non used Boost headers (#3005). * Replace `boost::enable_if` with `std::enable_if` (#2998). * Replace `boost::is_same` with `std::is_same` (#2993). * Remove invalid option for emsmallen and STB (#2960). * Check for armadillo dependencies before downloading armadillo (#2954). * Disable the usage of autodownloader by default (#2953). * Install dependencies downloaded with the autodownloader (#2952). * Download older Boost if the compiler is old (#2940). * Add support for embedded systems (#2531). * Build mlpack executable statically if the library is statically linked (#2931). * Fix cover tree loop bug on embedded arm systems (#2869). * Fix a LAPACK bug in `FindArmadillo.cmake` (#2929). * Add an autodownloader to get mlpack dependencies (#2927). * Remove Coverage files and configurations from CMakeLists (#2866). * Added `Multi Label Soft Margin Loss` loss function for neural networks (#2345). * Added Decision Tree Regressor (#2905). It can be used using the class `mlpack::tree::DecisionTreeRegressor`. It is accessible only though C++. * Added dict-style inspection of mlpack models in python bindings (#2868). * Added Extra Trees Algorithm (#2883). Currently, it can be used using the class `mlpack::tree::ExtraTrees`, but only through C++. * Add Flatten T Swish activation function (`flatten-t-swish.hpp`) * Added warm start feature to Random Forest (#2881); this feature is accessible from mlpack's bindings to different languages. * Added Pixel Shuffle layer (#2563). * Add "check_input_matrices" option to python bindings that checks for NaN and inf values in all the input matrices (#2787). * Add Adjusted R squared functionality to R2Score::Evaluate (#2624). * Disabled all the bindings by default in CMake (#2782). * Added an implementation to Stratify Data (#2671). * Add `BUILD_DOCS` CMake option to control whether Doxygen documentation is built (default ON) (#2730). * Add Triplet Margin Loss function (#2762). * Add finalizers to Julia binding model types to fix memory handling (#2756). * HMM: add functions to calculate likelihood for data stream with/without pre-calculated emission probability (#2142). * Replace Boost serialization library with Cereal (#2458). * Add `PYTHON_INSTALL_PREFIX` CMake option to specify installation root for Python bindings (#2797). * Removed `boost::visitor` from model classes for `knn`, `kfn`, `cf`, `range_search`, `krann`, and `kde` bindings (#2803). * Add k-means++ initialization strategy (#2813). * `NegativeLogLikelihood<>` now expects classes in the range `0` to `numClasses - 1` (#2534). * Add `Lambda1()`, `Lambda2()`, `UseCholesky()`, and `Tolerance()` members to `LARS` so parameters for training can be modified (#2861). * Remove unused `ElemType` template parameter from `DecisionTree` and `RandomForest` (#2874). * Fix Python binding build when the CMake variable `USE_OPENMP` is set to `OFF` (#2884). * The `mlpack_test` target is no longer built as part of `make all`. Use `make mlpack_test` to build the tests. * Fixes to `HoeffdingTree`: ensure that training still works when empty constructor is used (#2964). * Fix Julia model serialization bug (#2970). * Fix `LoadCSV()` to use pre-populated `DatasetInfo` objects (#2980). * Add `probabilities` option to softmax regression binding, to get class probabilities for test points (#3001). * Fix thread safety issues in mlpack bindings to other languages (#2995). * Fix double-free of model pointers in R bindings (#3034). * Fix Julia, Python, R, and Go handling of categorical data for `decision_tree()` and `hoeffding_tree()` (#2971). * Depend on `pkgbuild` for R bindings (#3081). * Replaced Numpy deprecated code in Python bindings (#3126). ### mlpack 3.4.2 ###### 2020-10-26 * Added Mean Absolute Percentage Error. * Added Softmin activation function as layer in ann/layer. * Fix spurious ARMA_64BIT_WORD compilation warnings on 32-bit systems (#2665). ### mlpack 3.4.1 ###### 2020-09-07 * Fix incorrect parsing of required matrix/model parameters for command-line bindings (#2600). * Add manual type specification support to `data::Load()` and `data::Save()` (#2084, #2135, #2602). * Remove use of internal Armadillo functionality (#2596, #2601, #2602). ### mlpack 3.4.0 ###### 2020-09-01 * Issue warnings when metrics produce NaNs in KFoldCV (#2595). * Added bindings for _R_ during Google Summer of Code (#2556). * Added common striptype function for all bindings (#2556). * Refactored common utility function of bindings to bindings/util (#2556). * Renamed InformationGain to HoeffdingInformationGain in methods/hoeffding_trees/information_gain.hpp (#2556). * Added macro for changing stream of printing and warnings/errors (#2556). * Added Spatial Dropout layer (#2564). * Force CMake to show error when it didn't find Python/modules (#2568). * Refactor `ProgramInfo()` to separate out all the different information (#2558). * Add bindings for one-hot encoding (#2325). * Added Soft Actor-Critic to RL methods (#2487). * Added Categorical DQN to q_networks (#2454). * Added N-step DQN to q_networks (#2461). * Add Silhoutte Score metric and Pairwise Distances (#2406). * Add Go bindings for some missed models (#2460). * Replace boost program_options dependency with CLI11 (#2459). * Additional functionality for the ARFF loader (#2486); use case sensitive categories (#2516). * Add `bayesian_linear_regression` binding for the command-line, Python, Julia, and Go. Also called "Bayesian Ridge", this is equivalent to a version of linear regression where the regularization parameter is automatically tuned (#2030). * Fix defeatist search for spill tree traversals (#2566, #1269). * Fix incremental training of logistic regression models (#2560). * Change default configuration of `BUILD_PYTHON_BINDINGS` to `OFF` (#2575). ### mlpack 3.3.2 ###### 2020-06-18 * Added Noisy DQN to q_networks (#2446). * Add Go bindings (#1884). * Added Dueling DQN to q_networks, Noisy linear layer to ann/layer and Empty loss to ann/loss_functions (#2414). * Storing and adding accessor method for action in q_learning (#2413). * Added accessor methods for ANN layers (#2321). * Addition of `Elliot` activation function (#2268). * Add adaptive max pooling and adaptive mean pooling layers (#2195). * Add parameter to avoid shuffling of data in preprocess_split (#2293). * Add `MatType` parameter to `LSHSearch`, allowing sparse matrices to be used for search (#2395). * Documentation fixes to resolve Doxygen warnings and issues (#2400). * Add Load and Save of Sparse Matrix (#2344). * Add Intersection over Union (IoU) metric for bounding boxes (#2402). * Add Non Maximal Supression (NMS) metric for bounding boxes (#2410). * Fix `no_intercept` and probability computation for linear SVM bindings (#2419). * Fix incorrect neighbors for `k > 1` searches in `approx_kfn` binding, for the `QDAFN` algorithm (#2448). * Fix serialization of kernels with state for FastMKS (#2452). * Add `RBF` layer in ann module to make `RBFN` architecture (#2261). ### mlpack 3.3.1 ###### 2020-04-29 * Minor Julia and Python documentation fixes (#2373). * Updated terminal state and fixed bugs for Pendulum environment (#2354, #2369). * Added `EliSH` activation function (#2323). * Add L1 Loss function (#2203). * Pass CMAKE_CXX_FLAGS (compilation options) correctly to Python build (#2367). * Expose ensmallen Callbacks for sparseautoencoder (#2198). * Bugfix for LARS class causing invalid read (#2374). * Add serialization support from Julia; use `mlpack.serialize()` and `mlpack.deserialize()` to save and load from `IOBuffer`s. ### mlpack 3.3.0 ###### 2020-04-07 * Added `Normal Distribution` to `ann/dists` (#2382). * Templated return type of `Forward function` of loss functions (#2339). * Added `R2 Score` regression metric (#2323). * Added `poisson negative log likelihood` loss function (#2196). * Added `huber` loss function (#2199). * Added `mean squared logarithmic error` loss function for neural networks (#2210). * Added `mean bias loss function` for neural networks (#2210). * The DecisionStump class has been marked deprecated; use the `DecisionTree` class with `NoRecursion=true` or use `ID3DecisionStump` instead (#2099). * Added `probabilities_file` parameter to get the probabilities matrix of AdaBoost classifier (#2050). * Fix STB header search paths (#2104). * Add `DISABLE_DOWNLOADS` CMake configuration option (#2104). * Add padding layer in TransposedConvolutionLayer (#2082). * Fix pkgconfig generation on non-Linux systems (#2101). * Use log-space to represent HMM initial state and transition probabilities (#2081). * Add functions to access parameters of `Convolution` and `AtrousConvolution` layers (#1985). * Add Compute Error function in lars regression and changing Train function to return computed error (#2139). * Add Julia bindings (#1949). Build settings can be controlled with the `BUILD_JULIA_BINDINGS=(ON/OFF)` and `JULIA_EXECUTABLE=/path/to/julia` CMake parameters. * CMake fix for finding STB include directory (#2145). * Add bindings for loading and saving images (#2019); `mlpack_image_converter` from the command-line, `mlpack.image_converter()` from Python. * Add normalization support for CF binding (#2136). * Add Mish activation function (#2158). * Update `init_rules` in AMF to allow users to merge two initialization rules (#2151). * Add GELU activation function (#2183). * Better error handling of eigendecompositions and Cholesky decompositions (#2088, #1840). * Add LiSHT activation function (#2182). * Add Valid and Same Padding for Transposed Convolution layer (#2163). * Add CELU activation function (#2191) * Add Log-Hyperbolic-Cosine Loss function (#2207). * Change neural network types to avoid unnecessary use of rvalue references (#2259). * Bump minimum Boost version to 1.58 (#2305). * Refactor STB support so `HAS_STB` macro is not needed when compiling against mlpack (#2312). * Add Hard Shrink Activation Function (#2186). * Add Soft Shrink Activation Function (#2174). * Add Hinge Embedding Loss Function (#2229). * Add Cosine Embedding Loss Function (#2209). * Add Margin Ranking Loss Function (#2264). * Bugfix for incorrect parameter vector sizes in logistic regression and softmax regression (#2359). ### mlpack 3.2.2 ###### 2019-11-26 * Add `valid` and `same` padding option in `Convolution` and `Atrous Convolution` layer (#1988). * Add Model() to the FFN class to access individual layers (#2043). * Update documentation for pip and conda installation packages (#2044). * Add bindings for linear SVM (#1935); `mlpack_linear_svm` from the command-line, `linear_svm()` from Python. * Add support to return the layer name as `std::string` (#1987). * Speed and memory improvements for the Transposed Convolution layer (#1493). * Fix Windows Python build configuration (#1885). * Validate md5 of STB library after download (#2087). * Add `__version__` to `__init__.py` (#2092). * Correctly handle RNN sequences that are shorter than the value of rho (#2102). ### mlpack 3.2.1 ###### 2019-10-01 * Enforce CMake version check for ensmallen (#2032). * Fix CMake check for Armadillo version (#2029). * Better handling of when STB is not installed (#2033). * Fix Naive Bayes classifier computations in high dimensions (#2022). ### mlpack 3.2.0 ###### 2019-09-25 * Fix some potential infinity errors in Naive Bayes Classifier (#2022). * Fix occasionally-failing RADICAL test (#1924). * Fix gcc 9 OpenMP compilation issue (#1970). * Added support for loading and saving of images (#1903). * Add Multiple Pole Balancing Environment (#1901, #1951). * Added functionality for scaling of data (#1876); see the command-line binding `mlpack_preprocess_scale` or Python binding `preprocess_scale()`. * Add new parameter `maximum_depth` to decision tree and random forest bindings (#1916). * Fix prediction output of softmax regression when test set accuracy is calculated (#1922). * Pendulum environment now checks for termination. All RL environments now have an option to terminate after a set number of time steps (no limit by default) (#1941). * Add support for probabilistic KDE (kernel density estimation) error bounds when using the Gaussian kernel (#1934). * Fix negative distances for cover tree computation (#1979). * Fix cover tree building when all pairwise distances are 0 (#1986). * Improve KDE pruning by reclaiming not used error tolerance (#1954, #1984). * Optimizations for sparse matrix accesses in z-score normalization for CF (#1989). * Add `kmeans_max_iterations` option to GMM training binding `gmm_train_main`. * Bump minimum Armadillo version to 8.400.0 due to ensmallen dependency requirement (#2015). ### mlpack 3.1.1 ###### 2019-05-26 * Fix random forest bug for numerical-only data (#1887). * Significant speedups for random forest (#1887). * Random forest now has `minimum_gain_split` and `subspace_dim` parameters (#1887). * Decision tree parameter `print_training_error` deprecated in favor of `print_training_accuracy`. * `output` option changed to `predictions` for adaboost and perceptron binding. Old options are now deprecated and will be preserved until mlpack 4.0.0 (#1882). * Concatenated ReLU layer (#1843). * Accelerate NormalizeLabels function using hashing instead of linear search (see `src/mlpack/core/data/normalize_labels_impl.hpp`) (#1780). * Add `ConfusionMatrix()` function for checking performance of classifiers (#1798). * Install ensmallen headers when it is downloaded during build (#1900). ### mlpack 3.1.0 ###### 2019-04-25 * Add DiagonalGaussianDistribution and DiagonalGMM classes to speed up the diagonal covariance computation and deprecate DiagonalConstraint (#1666). * Add kernel density estimation (KDE) implementation with bindings to other languages (#1301). * Where relevant, all models with a `Train()` method now return a `double` value representing the goodness of fit (i.e. final objective value, error, etc.) (#1678). * Add implementation for linear support vector machine (see `src/mlpack/methods/linear_svm`). * Change DBSCAN to use PointSelectionPolicy and add OrderedPointSelection (#1625). * Residual block support (#1594). * Bidirectional RNN (#1626). * Dice loss layer (#1674, #1714) and hard sigmoid layer (#1776). * `output` option changed to `predictions` and `output_probabilities` to `probabilities` for Naive Bayes binding (`mlpack_nbc`/`nbc()`). Old options are now deprecated and will be preserved until mlpack 4.0.0 (#1616). * Add support for Diagonal GMMs to HMM code (#1658, #1666). This can provide large speedup when a diagonal GMM is acceptable as an emission probability distribution. * Python binding improvements: check parameter type (#1717), avoid copying Pandas dataframes (#1711), handle Pandas Series objects (#1700). ### mlpack 3.0.4 ###### 2018-11-13 * Bump minimum CMake version to 3.3.2. * CMake fixes for Ninja generator by Marc Espie. ### mlpack 3.0.3 ###### 2018-07-27 * Fix Visual Studio compilation issue (#1443). * Allow running local_coordinate_coding binding with no initial_dictionary parameter when input_model is not specified (#1457). * Make use of OpenMP optional via the CMake 'USE_OPENMP' configuration variable (#1474). * Accelerate FNN training by 20-30% by avoiding redundant calculations (#1467). * Fix math::RandomSeed() usage in tests (#1462, #1440). * Generate better Python setup.py with documentation (#1460). ### mlpack 3.0.2 ###### 2018-06-08 * Documentation generation fixes for Python bindings (#1421). * Fix build error for man pages if command-line bindings are not being built (#1424). * Add 'shuffle' parameter and Shuffle() method to KFoldCV (#1412). This will shuffle the data when the object is constructed, or when Shuffle() is called. * Added neural network layers: AtrousConvolution (#1390), Embedding (#1401), and LayerNorm (layer normalization) (#1389). * Add Pendulum environment for reinforcement learning (#1388) and update Mountain Car environment (#1394). ### mlpack 3.0.1 ###### 2018-05-10 * Fix intermittently failing tests (#1387). * Add big-batch SGD (BBSGD) optimizer in src/mlpack/core/optimizers/bigbatch_sgd/ (#1131). * Fix simple compiler warnings (#1380, #1373). * Simplify NeighborSearch constructor and Train() overloads (#1378). * Add warning for OpenMP setting differences (#1358/#1382). When mlpack is compiled with OpenMP but another application is not (or vice versa), a compilation warning will now be issued. * Restructured loss functions in src/mlpack/methods/ann/ (#1365). * Add environments for reinforcement learning tests (#1368, #1370, #1329). * Allow single outputs for multiple timestep inputs for recurrent neural networks (#1348). * Add He and LeCun normal initializations for neural networks (#1342). Neural networks: add He and LeCun normal initializations (#1342), add FReLU and SELU activation functions (#1346, #1341), add alpha-dropout (#1349). ### mlpack 3.0.0 ###### 2018-03-30 * Speed and memory improvements for DBSCAN. --single_mode can now be used for situations where previously RAM usage was too high. * Bump minimum required version of Armadillo to 6.500.0. * Add automatically generated Python bindings. These have the same interface as the command-line programs. * Add deep learning infrastructure in src/mlpack/methods/ann/. * Add reinforcement learning infrastructure in src/mlpack/methods/reinforcement_learning/. * Add optimizers: AdaGrad, CMAES, CNE, FrankeWolfe, GradientDescent, GridSearch, IQN, Katyusha, LineSearch, ParallelSGD, SARAH, SCD, SGDR, SMORMS3, SPALeRA, SVRG. * Add hyperparameter tuning infrastructure and cross-validation infrastructure in src/mlpack/core/cv/ and src/mlpack/core/hpt/. * Fix bug in mean shift. * Add random forests (see src/mlpack/methods/random_forest). * Numerous other bugfixes and testing improvements. * Add randomized Krylov SVD and Block Krylov SVD. ### mlpack 2.2.5 ###### 2017-08-25 * Compilation fix for some systems (#1082). * Fix PARAM_INT_OUT() (#1100). ### mlpack 2.2.4 ###### 2017-07-18 * Speed and memory improvements for DBSCAN. --single_mode can now be used for situations where previously RAM usage was too high. * Fix bug in CF causing incorrect recommendations. ### mlpack 2.2.3 ###### 2017-05-24 * Bug fix for --predictions_file in mlpack_decision_tree program. ### mlpack 2.2.2 ###### 2017-05-04 * Install backwards-compatibility mlpack_allknn and mlpack_allkfn programs; note they are deprecated and will be removed in mlpack 3.0.0 (#992). * Fix RStarTree bug that surfaced on OS X only (#964). * Small fixes for MiniBatchSGD and SGD and tests. ### mlpack 2.2.1 ###### 2017-04-13 * Compilation fix for mlpack_nca and mlpack_test on older Armadillo versions (#984). ### mlpack 2.2.0 ###### 2017-03-21 * Bugfix for mlpack_knn program (#816). * Add decision tree implementation in methods/decision_tree/. This is very similar to a C4.5 tree learner. * Add DBSCAN implementation in methods/dbscan/. * Add support for multidimensional discrete distributions (#810, #830). * Better output for Log::Debug/Log::Info/Log::Warn/Log::Fatal for Armadillo objects (#895, #928). * Refactor categorical CSV loading with boost::spirit for faster loading (#681). ### mlpack 2.1.1 ###### 2016-12-22 * HMMs now use random initialization; this should fix some convergence issues (#828). * HMMs now initialize emissions according to the distribution of observations (#833). * Minor fix for formatted output (#814). * Fix DecisionStump to properly work with any input type. ### mlpack 2.1.0 ###### 2016-10-31 * Fixed CoverTree to properly handle single-point datasets. * Fixed a bug in CosineTree (and thus QUIC-SVD) that caused split failures for some datasets (#717). * Added mlpack_preprocess_describe program, which can be used to print statistics on a given dataset (#742). * Fix prioritized recursion for k-furthest-neighbor search (mlpack_kfn and the KFN class), leading to orders-of-magnitude speedups in some cases. * Bump minimum required version of Armadillo to 4.200.0. * Added simple Gradient Descent optimizer, found in src/mlpack/core/optimizers/gradient_descent/ (#792). * Added approximate furthest neighbor search algorithms QDAFN and DrusillaSelect in src/mlpack/methods/approx_kfn/, with command-line program mlpack_approx_kfn. ### mlpack 2.0.3 ###### 2016-07-21 * Added multiprobe LSH (#691). The parameter 'T' to LSHSearch::Search() can now be used to control the number of extra bins that are probed, as can the -T (--num_probes) option to mlpack_lsh. * Added the Hilbert R tree to src/mlpack/core/tree/rectangle_tree/ (#664). It can be used as the typedef HilbertRTree, and it is now an option in the mlpack_knn, mlpack_kfn, mlpack_range_search, and mlpack_krann command-line programs. * Added the mlpack_preprocess_split and mlpack_preprocess_binarize programs, which can be used for preprocessing code (#650, #666). * Added OpenMP support to LSHSearch and mlpack_lsh (#700). ### mlpack 2.0.2 ###### 2016-06-20 * Added the function LSHSearch::Projections(), which returns an arma::cube with each projection table in a slice (#663). Instead of Projection(i), you should now use Projections().slice(i). * A new constructor has been added to LSHSearch that creates objects using projection tables provided in an arma::cube (#663). * Handle zero-variance dimensions in DET (#515). * Add MiniBatchSGD optimizer (src/mlpack/core/optimizers/minibatch_sgd/) and allow its use in mlpack_logistic_regression and mlpack_nca programs. * Add better backtrace support from Grzegorz Krajewski for Log::Fatal messages when compiled with debugging and profiling symbols. This requires libbfd and libdl to be present during compilation. * CosineTree test fix from Mikhail Lozhnikov (#358). * Fixed HMM initial state estimation (#600). * Changed versioning macros __MLPACK_VERSION_MAJOR, __MLPACK_VERSION_MINOR, and __MLPACK_VERSION_PATCH to MLPACK_VERSION_MAJOR, MLPACK_VERSION_MINOR, and MLPACK_VERSION_PATCH. The old names will remain in place until mlpack 3.0.0. * Renamed mlpack_allknn, mlpack_allkfn, and mlpack_allkrann to mlpack_knn, mlpack_kfn, and mlpack_krann. The mlpack_allknn, mlpack_allkfn, and mlpack_allkrann programs will remain as copies until mlpack 3.0.0. * Add --random_initialization option to mlpack_hmm_train, for use when no labels are provided. * Add --kill_empty_clusters option to mlpack_kmeans and KillEmptyClusters policy for the KMeans class (#595, #596). ### mlpack 2.0.1 ###### 2016-02-04 * Fix CMake to properly detect when MKL is being used with Armadillo. * Minor parameter handling fixes to mlpack_logistic_regression (#504, #505). * Properly install arma_config.hpp. * Memory handling fixes for Hoeffding tree code. * Add functions that allow changing training-time parameters to HoeffdingTree class. * Fix infinite loop in sparse coding test. * Documentation spelling fixes (#501). * Properly handle covariances for Gaussians with large condition number (#496), preventing GMMs from filling with NaNs during training (and also HMMs that use GMMs). * CMake fixes for finding LAPACK and BLAS as Armadillo dependencies when ATLAS is used. * CMake fix for projects using mlpack's CMake configuration from elsewhere (#512). ### mlpack 2.0.0 ###### 2015-12-24 * Removed overclustering support from k-means because it is not well-tested, may be buggy, and is (I think) unused. If this was support you were using, open a bug or get in touch with us; it would not be hard for us to reimplement it. * Refactored KMeans to allow different types of Lloyd iterations. * Added implementations of k-means: Elkan's algorithm, Hamerly's algorithm, Pelleg-Moore's algorithm, and the DTNN (dual-tree nearest neighbor) algorithm. * Significant acceleration of LRSDP via the use of accu(a % b) instead of trace(a * b). * Added MatrixCompletion class (matrix_completion), which performs nuclear norm minimization to fill unknown values of an input matrix. * No more dependence on Boost.Random; now we use C++11 STL random support. * Add softmax regression, contributed by Siddharth Agrawal and QiaoAn Chen. * Changed NeighborSearch, RangeSearch, FastMKS, LSH, and RASearch API; these classes now take the query sets in the Search() method, instead of in the constructor. * Use OpenMP, if available. For now OpenMP support is only available in the DET training code. * Add support for predicting new test point values to LARS and the command-line 'lars' program. * Add serialization support for Perceptron and LogisticRegression. * Refactor SoftmaxRegression to predict into an arma::Row object, and add a softmax_regression program. * Refactor LSH to allow loading and saving of models. * ToString() is removed entirely (#487). * Add --input_model_file and --output_model_file options to appropriate machine learning algorithms. * Rename all executables to start with an "mlpack" prefix (#229). * Add HoeffdingTree and mlpack_hoeffding_tree, an implementation of the streaming decision tree methodology from Domingos and Hulten in 2000. ### mlpack 1.0.12 ###### 2015-01-07 * Switch to 3-clause BSD license (from LGPL). ### mlpack 1.0.11 ###### 2014-12-11 * Proper handling of dimension calculation in PCA. * Load parameter vectors properly for LinearRegression models. * Linker fixes for AugLagrangian specializations under Visual Studio. * Add support for observation weights to LinearRegression. * MahalanobisDistance<> now takes the root of the distance by default and therefore satisfies the triangle inequality (TakeRoot now defaults to true). * Better handling of optional Armadillo HDF5 dependency. * Fixes for numerous intermittent test failures. * math::RandomSeed() now sets the random seed for recent (>=3.930) Armadillo versions. * Handle Newton method convergence better for SparseCoding::OptimizeDictionary() and make maximum iterations a parameter. * Known bug: CosineTree construction may fail in some cases on i386 systems (#358). ### mlpack 1.0.10 ###### 2014-08-29 * Bugfix for NeighborSearch regression which caused very slow allknn/allkfn. Speeds are now restored to approximately 1.0.8 speeds, with significant improvement for the cover tree (#347). * Detect dependencies correctly when ARMA_USE_WRAPPER is not being defined (i.e., libarmadillo.so does not exist). * Bugfix for compilation under Visual Studio (#348). ### mlpack 1.0.9 ###### 2014-07-28 * GMM initialization is now safer and provides a working GMM when constructed with only the dimensionality and number of Gaussians (#301). * Check for division by 0 in Forward-Backward Algorithm in HMMs (#301). * Fix MaxVarianceNewCluster (used when re-initializing clusters for k-means) (#301). * Fixed implementation of Viterbi algorithm in HMM::Predict() (#303). * Significant speedups for dual-tree algorithms using the cover tree (#235, #314) including a faster implementation of FastMKS. * Fix for LRSDP optimizer so that it compiles and can be used (#312). * CF (collaborative filtering) now expects users and items to be zero-indexed, not one-indexed (#311). * CF::GetRecommendations() API change: now requires the number of recommendations as the first parameter. The number of users in the local neighborhood should be specified with CF::NumUsersForSimilarity(). * Removed incorrect PeriodicHRectBound (#58). * Refactor LRSDP into LRSDP class and standalone function to be optimized (#305). * Fix for centering in kernel PCA (#337). * Added simulated annealing (SA) optimizer, contributed by Zhihao Lou. * HMMs now support initial state probabilities; these can be set in the constructor, trained, or set manually with HMM::Initial() (#302). * Added Nyström method for kernel matrix approximation by Marcus Edel. * Kernel PCA now supports using Nyström method for approximation. * Ball trees now work with dual-tree algorithms, via the BallBound<> bound structure (#307); fixed by Yash Vadalia. * The NMF class is now AMF<>, and supports far more types of factorizations, by Sumedh Ghaisas. * A QUIC-SVD implementation has returned, written by Siddharth Agrawal and based on older code from Mudit Gupta. * Added perceptron and decision stump by Udit Saxena (these are weak learners for an eventual AdaBoost class). * Sparse autoencoder added by Siddharth Agrawal. ### mlpack 1.0.8 ###### 2014-01-06 * Memory leak in NeighborSearch index-mapping code fixed (#298). * GMMs can be trained using the existing model as a starting point by specifying an additional boolean parameter to GMM::Estimate() (#296). * Logistic regression implementation added in methods/logistic_regression (see also #293). * L-BFGS optimizer now returns its function via Function(). * Version information is now obtainable via mlpack::util::GetVersion() or the __MLPACK_VERSION_MAJOR, __MLPACK_VERSION_MINOR, and __MLPACK_VERSION_PATCH macros (#297). * Fix typos in allkfn and allkrann output. ### mlpack 1.0.7 ###### 2013-10-04 * Cover tree support for range search (range_search), rank-approximate nearest neighbors (allkrann), minimum spanning tree calculation (emst), and FastMKS (fastmks). * Dual-tree FastMKS implementation added and tested. * Added collaborative filtering package (cf) that can provide recommendations when given users and items. * Fix for correctness of Kernel PCA (kernel_pca) (#270). * Speedups for PCA and Kernel PCA (#198). * Fix for correctness of Neighborhood Components Analysis (NCA) (#279). * Minor speedups for dual-tree algorithms. * Fix for Naive Bayes Classifier (nbc) (#269). * Added a ridge regression option to LinearRegression (linear_regression) (#286). * Gaussian Mixture Models (gmm::GMM<>) now support arbitrary covariance matrix constraints (#283). * MVU (mvu) removed because it is known to not work (#183). * Minor updates and fixes for kernels (in mlpack::kernel). ### mlpack 1.0.6 ###### 2013-06-13 * Minor bugfix so that FastMKS gets built. ### mlpack 1.0.5 ###### 2013-05-01 * Speedups of cover tree traversers (#235). * Addition of rank-approximate nearest neighbors (RANN), found in src/mlpack/methods/rann/. * Addition of fast exact max-kernel search (FastMKS), found in src/mlpack/methods/fastmks/. * Fix for EM covariance estimation; this should improve GMM training time. * More parameters for GMM estimation. * Force GMM and GaussianDistribution covariance matrices to be positive definite, so that training converges much more often. * Add parameter for the tolerance of the Baum-Welch algorithm for HMM training. * Fix for compilation with clang compiler. * Fix for k-furthest-neighbor-search. ### mlpack 1.0.4 ###### 2013-02-08 * Force minimum Armadillo version to 2.4.2. * Better output of class types to streams; a class with a ToString() method implemented can be sent to a stream with operator<<. * Change return type of GMM::Estimate() to double (#257). * Style fixes for k-means and RADICAL. * Handle size_t support correctly with Armadillo 3.6.2 (#258). * Add locality-sensitive hashing (LSH), found in src/mlpack/methods/lsh/. * Better tests for SGD (stochastic gradient descent) and NCA (neighborhood components analysis). ### mlpack 1.0.3 ###### 2012-09-16 * Remove internal sparse matrix support because Armadillo 3.4.0 now includes it. When using Armadillo versions older than 3.4.0, sparse matrix support is not available. * NCA (neighborhood components analysis) now support an arbitrary optimizer (#245), including stochastic gradient descent (#249). ### mlpack 1.0.2 ###### 2012-08-15 * Added density estimation trees, found in src/mlpack/methods/det/. * Added non-negative matrix factorization, found in src/mlpack/methods/nmf/. * Added experimental cover tree implementation, found in src/mlpack/core/tree/cover_tree/ (#157). * Better reporting of boost::program_options errors (#225). * Fix for timers on Windows (#212, #211). * Fix for allknn and allkfn output (#204). * Sparse coding dictionary initialization is now a template parameter (#220). ### mlpack 1.0.1 ###### 2012-03-03 * Added kernel principal components analysis (kernel PCA), found in src/mlpack/methods/kernel_pca/ (#74). * Fix for Lovasz-Theta AugLagrangian tests (#182). * Fixes for allknn output (#185, #186). * Added range search executable (#192). * Adapted citations in documentation to BibTeX; no citations in -h output (#195). * Stop use of 'const char*' and prefer 'std::string' (#176). * Support seeds for random numbers (#177). ### mlpack 1.0.0 ###### 2011-12-17 * Initial release. See any resolved tickets numbered less than #196 or execute this query: http://www.mlpack.org/trac/query?status=closed&milestone=mlpack+1.0.0