-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
executable file
·358 lines (289 loc) · 15 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
=====================
MABWiser CHANGELOG
=====================
August, 02, 2023 2.7.1
-------------------------------------------------------------------------------
minor:
- Implemented LearningPolicyType and NeighborhoodPolicyType to simplify input for MAB.
- Updated tests to accommodate LearningPolicyType and NeighborhoodPolicyType.
February, 07, 2023 2.7.0
-------------------------------------------------------------------------------
major:
- Implement vectorized functions for Linear policies to speed-up prediction for multiple inputs.
- Update tests for LinTS and LinGreedy Policies as a result of using global random seed in vectorized function
January, 24, 2023 2.6.0
-------------------------------------------------------------------------------
major:
- Implement tracking of warm started and partial fitted arms
- Implement tracking of cold arms
- Limit warm start to learning policies
January, 19, 2023 2.5.0
-------------------------------------------------------------------------------
major:
- Update warm start logic to only warm start an arm once
minor:
- Implement fix for fitting scalers in Linear policies when variance is too small
March, 28, 2022 2.4.1
-------------------------------------------------------------------------------
minor:
- Bug fixes in examples
- Validate tree parameters of TreeBandit to be compatible with sklearn.tree.DecisionTreeRegressor
March, 17, 2022 2.4.0
-------------------------------------------------------------------------------
major:
- Implement vectorized functions for non-contextual policies to speed-up prediction for multiple decisions.
- Change MAB predict and predict_expectations to allow empty contexts to be specified for non-contextual policies.
- Update scaler use in Linear policies so that standard scaler can be fit directly instead of pre-trained scalers.
- Change scaler argument from pre-trained `arm_to_scaler` input to a boolean scale flag.
March, 8, 2022 2.3.0
-------------------------------------------------------------------------------
major:
- New Algorithm: LinGreedy as a learning policy.
- Thanks to Yevgeny Popkov for suggesting this algorithm.
-------------------------------------------------------------------------------
March, 2, 2022 2.2.0
-------------------------------------------------------------------------------
major:
- Modified `predict_expectations`, such that `predict` can use `predict_expectations` directly in all non-contextual learning policies
-------------------------------------------------------------------------------
February, 25, 2022 2.1.0
-------------------------------------------------------------------------------
major:
- Added warm_start method to MAB, that allows untrained (cold) arms to be warm started based on features of each arm.
- Added remove_arm method to MAB to allow arms to be removed from bandit.
-------------------------------------------------------------------------------
February, 14, 2022 2.0.0
-------------------------------------------------------------------------------
major:
- Breaking: Updated NumPy RNG backend to utilize the new Generator class. This is a breaking change for algorithms with random components.
- Updated NumPy version dependency to >=1.17.0 to reflect the utilization of the new Generator class.
minor:
- Added multivariate sampling to base RNG class
- Updated multivariate sampling logic in LinTS to utilize updated NumPy RNG backend
-------------------------------------------------------------------------------
August, 01, 2021 1.12.0
-------------------------------------------------------------------------------
major:
- New Algorithm: TreeBandit as a decision-tree based neighborhood policy.
- Many thanks to @irmakbky for her contribution!
- See also Elmachtoub, A. N., et. al. "A practical method for solving contextual bandit problems using decision trees". UAI 2017
-------------------------------------------------------------------------------
April, 15, 2021 1.11.2
-------------------------------------------------------------------------------
minor:
- Updated dtype from np.int to int in base_mab.py line 294 to resolve deprecation warning from numpy>=1.20.0
- Updated sklearn version dependency to >=0.24.0 because of changes in the KMeans implementation
-------------------------------------------------------------------------------
September, 14, 2020 1.11.1
-------------------------------------------------------------------------------
minor:
- Internal variable rename for LSHNearest
- Clarifications to LSHNearest docstring
-------------------------------------------------------------------------------
September, 8, 2020 1.11.0
-------------------------------------------------------------------------------
major:
- New Algorithm: Locality Sensitive Hashing Approximate Nearest Neighbors
- This neighborhood policy uses locality-sensitive hashing with random projection via the SimHash algorithm to create approximate neighborhoods.
- More information: https://en.wikipedia.org/wiki/Locality-sensitive_hashing#Random_projection
minor:
- Refactor of _Neighbors and _Radius classes to support reusability of empty neighborhood functionality
- Switch to centralized version incrementing and use of the opensource@fmr.com email
-------------------------------------------------------------------------------
August, 12, 2020 1.10.1
-------------------------------------------------------------------------------
major:
- Initial release on PyPi.org
-------------------------------------------------------------------------------
June, 22, 2020 1.10.0
-------------------------------------------------------------------------------
- Introduction of base random number generator class to abstract away RNG provider
- Currently, numpy random serves as the rng provider
-------------------------------------------------------------------------------
May, 27, 2020 1.9.1
-------------------------------------------------------------------------------
minor:
- Performance improvement to LinTS algorithm by pre-computing cholesky decomposition in fit.
-------------------------------------------------------------------------------
May, 1, 2020 1.9.0
-------------------------------------------------------------------------------
major:
- New Algorithm: Randomized Popularity (Popularity)
- This bandit uses a probabilistically weighted selection based on mean arm rewards
- Currently, it assumes that the rewards are non-negative
-------------------------------------------------------------------------------
April, 8, 2020 1.8.1
-------------------------------------------------------------------------------
minor:
- Correction for how Softmax normalizes exponents to prevent overflow.
- Removal of Simulator matplotlib backend specification to eliminate Mac OS error.
-------------------------------------------------------------------------------
January, 21, 2020 1.8.0
-------------------------------------------------------------------------------
major:
- New Algorithm: Linear Thompson Sampling (LinTS)
- LinTS implementation uses deterministic sampling of a multivariate normal distribution of the regression coefficients.
- Adapted from Agrawal, Shipra and Navin Goyal. "Thompson Sampling for Contextual Bandits with Linear Payoffs." ICML 2013.
- The implementation is based on an initial design by Anshuman Pradhan (anshuman.pradhan@fmr.com) and Pramod R (pramod.r@fmr.com)
minor:
- Scikit-learn version dependency on 0.22.0 or greater which provides a bug fix for sklearn.cluster.KMeans
-------------------------------------------------------------------------------
December, 17, 2019 1.7.1
-------------------------------------------------------------------------------
minor:
- Bug fix for partial fitting in UCB1 reported in #10 by @harisankarh
-------------------------------------------------------------------------------
November, 27, 2019 1.7.0
-------------------------------------------------------------------------------
major:
- The learning_policy and neighborhood_policy attributes have been changed to decorated properties.
- MAB objects can now be serialized with the pickle module.
-------------------------------------------------------------------------------
November, 14, 2019 1.6.3
-------------------------------------------------------------------------------
minor:
- Documentation now available at https://fidelity.github.io/mabwiser/
-------------------------------------------------------------------------------
October, 21, 2019 1.6.2
-------------------------------------------------------------------------------
minor:
- Changed backend parameter to optional type
-------------------------------------------------------------------------------
August, 27, 2019 1.6.1
-------------------------------------------------------------------------------
minor:
- Configurable parallel backend
-------------------------------------------------------------------------------
Aug, 13, 2019 1.6.0
-------------------------------------------------------------------------------
major:
- Configurable empty neighborhood operation for Radius policy
- Empty neighborhood operation changed to use numpy.random.choice instead of numpy.random.randint. Observed predictions for empty neighborhoods may differ from versions 1.5 and prior.
-------------------------------------------------------------------------------
August, 12, 2019 1.5.10
-------------------------------------------------------------------------------
minor:
- Bug fix for offline expectation tracking in simulator
-------------------------------------------------------------------------------
July, 1, 2019 1.5.9
-------------------------------------------------------------------------------
minor:
- Bug fix for expectation tracking in simulator
- Additional unit tests for simulator expectations tracking
-------------------------------------------------------------------------------
June, 25, 2019 1.5.8
-------------------------------------------------------------------------------
minor:
- Bug fix for chunking in simulator
- Parallelization backend change
-------------------------------------------------------------------------------
June, 17, 2019 1.5.7
-------------------------------------------------------------------------------
minor:
- Bug fix for edge-case handling in simulator
-------------------------------------------------------------------------------
June, 13, 2019 1.5.6
-------------------------------------------------------------------------------
major:
- Initial release on github.com
-------------------------------------------------------------------------------
June, 11, 2019 1.5.6
-------------------------------------------------------------------------------
major:
- license set to Apache 2.0
minor:
- bug fix in Simulator n_jobs handling
-------------------------------------------------------------------------------
May, 16, 2019 1.5.5
-------------------------------------------------------------------------------
minor:
- bug fix in Simulator distance calculation
-------------------------------------------------------------------------------
May, 14, 2019 1.5.4
-------------------------------------------------------------------------------
minor:
- bug fix in Simulator for bandit_to_arm_to_stats_neighborhoods and bandit_to_expectations
-------------------------------------------------------------------------------
April, 30, 2019 1.5.3
-------------------------------------------------------------------------------
minor:
- bug fix in ucb
-------------------------------------------------------------------------------
April, 24, 2019 1.5.2
-------------------------------------------------------------------------------
minor:
- Simulator performs parallel distance calculations
- Bug fix with plotting functionality
- Chunk size in Simulator dependent on number of jobs
-------------------------------------------------------------------------------
April, 19, 2019 1.5.1
-------------------------------------------------------------------------------
minor:
- Simulator save results with a prefix
-------------------------------------------------------------------------------
April, 17, 2019 1.5.0
-------------------------------------------------------------------------------
major:
- New Feature: Simulation utility
- Utility supports both online and offline simulations with historic data sets
- Nearest neighbors simulations share distance calculations and track size, descriptive statistics
minor:
- Parallelization bug fix
-------------------------------------------------------------------------------
April, 2, 2019 1.4.1
-------------------------------------------------------------------------------
minor:
- Additional unit tests to improve code coverage
- Unit test data changes to remove warnings
- Logic fix for Softmax edge case
- Improvements to MAB handling of series data
- LinUCB with scaler array type conversion
-------------------------------------------------------------------------------
March, 12, 2019 1.4.0
-------------------------------------------------------------------------------
major:
- New Feature: Built-in parallelization for both training and testing components
- BaseMAB automates the parallelization of each policy
- Policies to be added in the future can take advantage of built-in parallization as well
- Allow initialization with standard scaler for _Linear class constructor
minor:
- binarization bug fix
- parallelization tests
-------------------------------------------------------------------------------
February, 12, 2019 1.3.0
-------------------------------------------------------------------------------
major:
- simulator script is added for experimentation
- rollback neighborhood calculation to iterative
- no more scikit-learn dependency
minor:
- _convert_array() and _convert_matrix() for efficient numpy transformations
-------------------------------------------------------------------------------
February, 07, 2019 1.2.0
-------------------------------------------------------------------------------
major:
- speed-up in neighborhood calculation.
- This change requires scikit-learn>=0.20.0
- Big thanks to Nicholas Cilfone for this pull request!
minor:
- the change in neighborhood calculation allows combining _predict_operation for radius and knearest
-------------------------------------------------------------------------------
December, 26, 2018 1.1.0
-------------------------------------------------------------------------------
major:
- speed-ups in greedy, ucb, softmax, thompson, and contextual mab
- speed-up numpy _convert_context with row major C arrays
minor:
- numpy _convert function for decision & rewards
- api docstring _convert_context return type fixed
- typo fix in website rst contributing and installation
- replace k in dict.keys() with faster version k in dict
- remove arm_expectation = 0 from uptake_arms in softmax/thompson/ucb
-------------------------------------------------------------------------------
December, 17, 2018 1.0.0
-------------------------------------------------------------------------------
- Initial public release.
-------------------------------------------------------------------------------
July, 7, 2018 0.1.0
-------------------------------------------------------------------------------
- Development starts. Unstable.