Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Post process negative loss #16

Closed
ypotdevin opened this issue Dec 15, 2021 · 3 comments
Closed

Post process negative loss #16

ypotdevin opened this issue Dec 15, 2021 · 3 comments
Assignees

Comments

@ypotdevin
Copy link
Owner

In dp_rmse.py, the lines

noise = rng.standard_cauchy()
dp_rmse = cast(float, rmse + 2 * (gamma + 1) * sens * noise / epsilon)

may yield (large) negative values – unreasonable for rMSE loss values.
These may be some viable counter measures:

  1. Simply skip new trees having negative associated loss
  2. Keep track of recent losses to detect outlier (not necessarily just negative) losses, skip those
  3. After encountering a negative loss, clip it to 0 and raise the comparison threshold prev_loss < current_loss according to a (yet to be determined) schedule step by step, so that new trees get a chance to join the ensemble again (which would otherwise be highly unlikely).
@ypotdevin
Copy link
Owner Author

Counter measure 3 might be enhanced by recording each tree and the threshold it would have passed (but did not, since the comparison was stricter), and inserting it into the ensemble once (in retrospect) the threshold is loose enough.

@ypotdevin
Copy link
Owner Author

Counter measure 2 may be realized by keeping a history of enhancements (prev_loss - current_loss if current_loss < prev_loss). Then, check whether the current enhancement is significantly better then previous (recent) enhancements. For example, calculate a (moving) average and a (moving) standard deviation [or their robust versions] and check whether the current enhancement is exceeds avg + n * std for some small n.

ypotdevin pushed a commit that referenced this issue Jan 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant