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

[FEATURE/BUG] Enable definition of traning and validation set for privacy-preserving machine learning #377

Open
prasser opened this issue Jan 29, 2022 · 8 comments
Assignees

Comments

@prasser
Copy link
Collaborator

prasser commented Jan 29, 2022

Is your feature request related to a problem? Please describe.

The privacy-preserving machine learning framwork in ARX uses k-fold cross-validation to quantify the performance of privacy-preserving models. This can lead to misleading estimates as training and validation sets both influence the optimization process performed during anonymization.

Describe the solution you'd like
As an alternative it would be good to enable users to specify a training and a validation set in such a way that only the training set influences the anonymization process. This can easily be done in ARX by using the "research subset" feature, which allows selecting a subset of the records in a dataset that are then anonymized. What would needed to be added is a feature that allows to specify that machine learning performance is determined based on the set of records that is not included in the research subset.

@prasser
Copy link
Collaborator Author

prasser commented Jan 29, 2022

@srcds or @idhamari might want to take a look at this.

@idhamari
Copy link
Contributor

@prasser @srcds sounds interesting, I will have a look at this next week.

@prasser prasser mentioned this issue May 4, 2022
@idhamari
Copy link
Contributor

@prasser

When a user select random records by clicking on "Select Randomly", a view output does not reflect that e.g. by selecting 0.80:

    System.out.println("this.model.getOutput().getNumRows()                   : " + this.model.getOutput().getNumRows());
    System.out.println("this.model.getOutput().getView().getNumRows()         : " + this.model.getOutput().getView().getNumRows());
    System.out.println("this.model.getInputConfig().getResearchSubset.size()  : " + this.model.getInputConfig().getResearchSubset().size());  

I get the output:

         this.model.getOutput().getNumRows()                          : 30162
         this.model.getOutput().getView().getNumRows()          : 30162
         this.model.getInputConfig().getResearchSubset.size()  : 24070

I am using the view output to get the training and the testing subset which makes a problem.

@prasser
Copy link
Collaborator Author

prasser commented May 10, 2022

This is OK and the expected behaviour.

This was referenced Jun 13, 2022
@prasser
Copy link
Collaborator Author

prasser commented Jun 19, 2022

An implementation of this is provided in the following branch: feature-training-test

Might still need a little bit of polishing, though.

@jenno-verdonck
Copy link
Contributor

I was wondering if this feature can already be used it it's current state?

@prasser
Copy link
Collaborator Author

prasser commented Oct 5, 2022

Yes, should work. We would be happy to receive feedback.

@prasser
Copy link
Collaborator Author

prasser commented Oct 5, 2022

To be clear. The feature lives here in this branch:

https://github.com/arx-deidentifier/arx/tree/feature-training-test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants