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
conlineC++ class now exposesweightsto R. - A new article on the usage of the
conlineC++ class was added. - Various functions are now exported to R to allow easier interaction with the
conlineC++ class. These functions are:init_experts_list(),make_basis_matsandmake_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 theconlineC++ 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,predictionsand 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_performanceandpast_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 = TRUEandsave_past_predictions_grid = TRUEinonline().
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_performancehad 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
profocfunction was extended:-
regretcan 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. -
losscan also be provided as a list, see above.
-
- The
batchfunction 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
profocfunction was renamed toonlinefor consistency. - Added
batchfunction to apply batch-learning. - Added
oraclefunction to approximate the oracle. - Update, predict, plot, and print methods were added for
onlineandbatchobjects.
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:
-
ndiffdefines 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_nsegis 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_powerdefines 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_crossingdefines if quantile crossing is allowed. Defaults to false, which means that predictions will be sorted.
profoc 0.6.0
Changes:
Interface:
-
ymust now be a matrix of either or . -
tracespecifies whether a progress bar will be printed or not. Default toTRUE. -
loss_functionlets 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. -
gradientlets 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_performancewas added. It defines the share of the past performance that will be ignored when selecting the best parameter combination. - Renamed
forgetparameter toforget_regretto underline its reference to the regret. - New
init_weightsparameter. It has to be either a Kx1 or KxP matrix specifying the experts’ starting weights. - Add
lead_timeparameter. 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.
-
tauis 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_lossandloss_predfunctions were replaced by a more flexible function calledloss. - The
weightsobject 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.