Skip to content

Commit

Permalink
Optimizer api change (#35)
Browse files Browse the repository at this point in the history
* Added tolerance parameter.

* Added some optimization

* Remove <bits>

* fix the convergence criterion.

* Correct the doc

* API change.

Target metric should be specified by evaluators.

* Modify the doc and examples.

* Remove Random Walk with Restart

* Fix setup.py accordingly

* Fix tests accordingly.

* Add tests, optimizer class

* fix doc.

* Thanks mypy

* optimizer default_tune_range change.

Remove alpha from default_tune_range of

* P3alphaOptimizer
* RP3betaOptimizer

* Optimizer doc change.

* Pre-compute X_train_all.csc() for user similarity.
  • Loading branch information
tohtsky authored Jan 24, 2021
1 parent cb1fde4 commit bdebf62
Show file tree
Hide file tree
Showing 21 changed files with 485 additions and 356 deletions.
142 changes: 0 additions & 142 deletions cpp_source/rws.cpp

This file was deleted.

7 changes: 3 additions & 4 deletions cpp_source/util.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,6 @@ inline CSCMatrix<Real> SLIM(const CSRMatrix<Real> &X, size_t n_threads,
check_arg(n_iter > 0, "n_iter must be > 0.");
check_arg(l2_coeff >= 0, "l2_coeff must be > 0.");
check_arg(l1_coeff >= 0, "l1_coeff must be > 0.");
const Real tol_all = tol * block_size;
using MatrixType =
Eigen::Matrix<Real, block_size, Eigen::Dynamic, Eigen::ColMajor>;
using VectorType = Eigen::Matrix<Real, block_size, 1>;
Expand All @@ -210,7 +209,7 @@ inline CSCMatrix<Real> SLIM(const CSRMatrix<Real> &X, size_t n_threads,
for (size_t th = 0; th < n_threads; th++) {
workers.emplace_back(std::async(std::launch::async, [&cursor, &X_csc,
l2_coeff, l1_coeff,
n_iter, tol_all] {
n_iter, tol] {
const int64_t F = X_csc.cols();
std::mt19937 gen(0);
std::vector<int64_t> indices(F);
Expand Down Expand Up @@ -328,10 +327,10 @@ inline CSCMatrix<Real> SLIM(const CSRMatrix<Real> &X, size_t n_threads,
const int64_t row = nnz_iter.row();
remnants.col(row).noalias() += nnz_iter.valueRef() * coeff_temp;
}
delta += coeff_temp.squaredNorm();
delta = std::max(delta, coeff_temp.cwiseAbs().array().maxCoeff());
}
}
if (delta < tol_all) {
if (delta < tol) {
break;
}
}
Expand Down
8 changes: 6 additions & 2 deletions docs/source/api_reference.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,17 @@ Recommenders
BaseRecommender
TopPopRecommender
IALSRecommender
DenseSLIMRecommender
P3alphaRecommender
RP3betaRecommender
TruncatedSVDRecommender
CosineKNNRecommender
AsymmetricCosineKNNRecommender
JaccardKNNRecommender
TverskyIndexKNNRecommender
CosineUserKNNRecommender
AsymmetricCosineUserKNNRecommender
SLIMRecommender
DenseSLIMRecommender

A LightFM wrapper for BPR matrix factorization (requires a separate installation of `lightFM <https://github.com/lyst/lightfm>`_).

Expand Down Expand Up @@ -66,15 +68,17 @@ Optimizers
BaseOptimizer
TopPopOptimizer
IALSOptimizer
DenseSLIMOptimizer
P3alphaOptimizer
RP3betaOptimizer
TruncatedSVDOptimizer
CosineKNNOptimizer
AsymmetricCosineKNNOptimizer
JaccardKNNOptimizer
TverskyIndexKNNOptimizer
CosineUserKNNOptimizer
AsymmetricCosineUserKNNOptimizer
SLIMOptimizer
DenseSLIMOptimizer
MultVAEOptimizer

.. currentmodule:: irspack.split
Expand Down
Loading

0 comments on commit bdebf62

Please sign in to comment.