Changelog
Source:NEWS.md
profoc 1.3.2
CRAN release: 2024-03-25
Improvements
- The timer functionality of online was moved to a seperate package rcpptimer. This is now added to profoc as a dependency. The timer-related code was removed. This makes the code more modular and easier to maintain. The timer functionality is now also available for other ‘R’ packages and even other languages (i.e. Python, via cpptimer and cppytimer).
profoc 1.3.1
CRAN release: 2024-01-13
Improvements
- Adjusted the clock.h code so that a larger share of code can be shared between the R and Python versions of that file.
- clock.h now uses welfords online algorithm to calculate the mean and variance of the timings. SD is reported in the times table.
Fixes
- Fixed an integer overflow in the clock.h code which caused the package to fail on some systems.
- Fixed online() function for cases where the regret is exactly zero. This can happen if:
- Only a single expert is used
- Only two experts are provided and they both have the same predictions (in the beginning).
profoc 1.3.0
CRAN release: 2024-01-09
Improvements
- New articles explain how to use methods on
online()
objects to deploy online learning algorithms in production. - The
conline
C++ class now exposesweights
to R. - A new article on the usage of the
conline
C++ class was added. - Various functions are now exported to R to allow easier interaction with the
conline
C++ class. These functions are:init_experts_list()
,make_basis_mats
andmake_hat_mats
- The code of
online()
was simplified a bit by utilizing the newinit_experts_list()
function. - Function
post_process_model()
was improved and is now exposed to be used in conjunction with theconline
C++ class. - Move aggregation of timings from cppclock.R to clock.h. This make it faster, easier to maintain and simplifies the code (which will be used in python in the future as well).
profoc 1.2.1
CRAN release: 2023-08-25
Improvements
-
online()
outputs now includepredictions_got_sorted
. A matrix which indicates whether quantile crossing occured and predictions have been sorted. -
tidy()
methods were added to convertweights
,predictions
and loss objects ofonline()
output to a tibble (for further analysis, plotting etc.) - A Get started article was added to the docs.
- Docs of the development version were added to the website
Fixes
- This release fixes import / export of of the
autoplot()
method. In consequence, ggplot2 became a new dependency of this package.
profoc 1.2.0
CRAN release: 2023-06-13
Improvements:
- Periodic splines and penalties added for smoothing the weights in
online()
.
profoc 1.1.0
CRAN release: 2023-01-13
Improvements:
- New
penalty()
function which works with equidistant and non-equidistant knots.
profoc 1.0.0
CRAN release: 2022-12-23
Changes:
- Now,
online()
saves memory by not reportingpast_performance
andpast_predictions_grid
. However, the cumulative performance and the most recent predictions w.r.t to the parameter grid are always included in the output. The former is used internally for choosing the best hyperparameter set, and the latter for updating the weights. Depending on the data and the parameter space considered, both objects may get large. You can still opt-in to include them in the output by settingsave_past_performance = TRUE
andsave_past_predictions_grid = TRUE
inonline()
.
Internal changes
- Minor fixes and improvements to
online()
to reduce memory usage.
profoc 0.9.5
CRAN release: 2022-12-16
Internal changes
- Now
online()
is able to sample from grids of up to 2^64-1 rows. - The new cpp sampling function
sample_int()
works similar tosample.int()
and also respects seeds set byset.seed()
.
profoc 0.9.3
CRAN release: 2022-04-21
Fixes:
-
forget_past_performance
had no effect inonline()
- Improved and fixed documentation
profoc 0.9.0
CRAN release: 2022-02-07
profoc 0.8.5
CRAN release: 2021-10-22
profoc 0.8.3
CRAN release: 2021-08-15
Changes:
- The
profoc
function was extended:-
regret
can now be passed as an array as before, or as a list, e.g.list(regret = regret_array, share = 0.2)
if the provided regret should be mixed with the regret calculated by online. -
loss
can also be provided as a list, see above.
-
- The
batch
function can now minimize an alternative objection function using the quantile weighted CRPS- This weighting scheme can be activated by setting
qw_crps=TRUE
- It defaults to FALSE due to better performance
- This weighting scheme can be activated by setting
Internal changes
- Changes to the splines2 package required some changes on our side. This affected the creation of the b-spline basis. See https://github.com/BerriJ/profoc/pull/3
profoc 0.8.0
CRAN release: 2021-07-28
Changes:
- First release on CRAN
- The
profoc
function was renamed toonline
for consistency. - Added
batch
function to apply batch-learning. - Added
oracle
function to approximate the oracle. - Update, predict, plot, and print methods were added for
online
andbatch
objects.
Interface:
- Unfortunately, we decided to apply significant changes to the API. This likely breaks old code. Please refer to the respective function documentation for more information.
Internal changes:
- The b-spline basis is now calculated using a fast C++ function imported from the splines2 R package.
- The source code is now distributed across different files.
profoc 0.7.0
Changes:
The spline functions where rewritten to add the ability of using a non-equidistant knot sequence and a penalty term defined on the Sobolev space. This change induces breaking changes to small parts of the API.
Interface:
-
ndiff
defines the degree of differencing for creating the penalty term. For values between 1 and 2 a weighted sum of the difference penalization matrices is used. -
rel_nseg
is replaced byknot_distance
( distance between knots). Defaults to 0.025, which corresponds to the grid steps when knot_distance_power = 1 (the default). - A new parameter
knot_distance_power
defines if knots are uniformly distributed. Defaults to 1, which corresponds to the equidistant case. Values less than 1 create more knots in the center, while values above 1 concentrate more knots in the tails. - A new parameter
allow_quantile_crossing
defines if quantile crossing is allowed. Defaults to false, which means that predictions will be sorted.
profoc 0.6.0
Changes:
Interface:
-
y
must now be a matrix of either or . -
trace
specifies whether a progress bar will be printed or not. Default toTRUE
. -
loss_function
lets you now specify “quantile”, “expectile” or “percentage”. All functions are generalized as in Gneitling 2009. The power can be scaled byloss_parameter
. The latter defaults to 1, which leads to the well-known quantile, squared, and absolute percentage loss. -
gradient
lets you specify whether the learning algorithm should consider actual loss or a linearized version using the gradient of the loss. Defaults toTRUE
(gradient-based learning). -
forget_performance
was added. It defines the share of the past performance that will be ignored when selecting the best parameter combination. - Renamed
forget
parameter toforget_regret
to underline its reference to the regret. - New
init_weights
parameter. It has to be either a Kx1 or KxP matrix specifying the experts’ starting weights. - Add
lead_time
parameter. offset for expert forecasts. Defaults to 0 which means that experts predict t+1 at t. Setting this to h means experts’ predictions refer to t+1+h at time t. The weight updates delay accordingly.
Internal changes:
- If more expert forecasts than observations are provided, the excessive expert forecasts are used for prediction using the most recent weights.
-
tau
is now optional. It defaults to 1:P/(P+1). A scalar given to tau will be repeated P times. The latter is useful in multivariate settings. - The
pinball_loss
andloss_pred
functions were replaced by a more flexible function calledloss
. - The
weights
object is changed from a array to a array to match other objects’ dimensions. Now the following indexing scheme is consistent throughout the package: (Time, Probabilities, Experts, Parameter combination) - Fixed Bug that caused single quantile calculations to fail.
- Various internal changes to improve readability and performance.