Skip to content

Commit ee5a004

Browse files
committed
Random seed should be set before background selection
1 parent 62f4958 commit ee5a004

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

NEWS.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44

55
- More pre-calculations for exact part of the methods ([#175](https://github.com/ModelOriented/kernelshap/pull/175)).
66

7+
### Bug fixes
8+
9+
- Setting the random seed in `kernelshap()` or `permshap()` would not respect the random selection of the background dataset.
10+
([#177](https://github.com/ModelOriented/kernelshap/pull/177)).
11+
12+
713
# kernelshap 0.9.0
814

915
### Bug fix

R/kernelshap.R

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,16 +205,17 @@ kernelshap.default <- function(
205205
p == 1L || exact || hybrid_degree %in% 0:(p / 2),
206206
"m must be even" = trunc(m / 2) == m / 2
207207
)
208+
209+
if (!is.null(seed)) {
210+
set.seed(seed)
211+
}
212+
208213
prep_bg <- prepare_bg(X = X, bg_X = bg_X, bg_n = bg_n, bg_w = bg_w, verbose = verbose)
209214
bg_X <- prep_bg$bg_X
210215
bg_w <- prep_bg$bg_w
211216
bg_n <- nrow(bg_X)
212217
n <- nrow(X)
213218

214-
if (!is.null(seed)) {
215-
set.seed(seed)
216-
}
217-
218219
# Calculate v1 and v0
219220
bg_preds <- align_pred(pred_fun(object, bg_X, ...))
220221
v0 <- wcolMeans(bg_preds, bg_w) # Average pred of bg data: 1 x K

R/permshap.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,17 @@ permshap.default <- function(
124124
message(txt)
125125
}
126126

127+
if (!is.null(seed)) {
128+
set.seed(seed)
129+
}
130+
127131
basic_checks(X = X, feature_names = feature_names, pred_fun = pred_fun)
128132
prep_bg <- prepare_bg(X = X, bg_X = bg_X, bg_n = bg_n, bg_w = bg_w, verbose = verbose)
129133
bg_X <- prep_bg$bg_X
130134
bg_w <- prep_bg$bg_w
131135
bg_n <- nrow(bg_X)
132136
n <- nrow(X)
133137

134-
if (!is.null(seed)) {
135-
set.seed(seed)
136-
}
137-
138138
# Baseline and predictions on explanation data
139139
bg_preds <- align_pred(pred_fun(object, bg_X, ...))
140140
v0 <- wcolMeans(bg_preds, w = bg_w) # Average pred of bg data: 1 x K

0 commit comments

Comments
 (0)