Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Fairlearn - #6539

Merged
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn
May 11, 2023
Merged

Fairlearn#6539
LittleLittleCloud merged 63 commits into
dotnet:mainfrom
LittleLittleCloud:fairlearn

Conversation

@LittleLittleCloud

@LittleLittleCloudLittleLittleCloud commented Jan 13, 2023

Copy link
Copy Markdown
Member

We are excited to review your PR.

So we can do the best job, please check:

  • There's a descriptive title that will make sense to other developers some time from now.
  • There's associated issues. All PR's should have issue(s) associated - unless a trivial self-evident change such as fixing a typo. You can use the format Fixes #nnnn in your description to cause GitHub to automatically close the issue(s) when your PR is merged.
  • Your change description explains what the change does, why you chose your approach, and anything else that reviewers should know.
  • You have included any necessary tests in the same PR.

Might be helpful to resolve#1912

Jordi Ramosand others added 30 commits June 13, 2022 14:07
Added `inPlace:true` to the append to fix the bug that no columns are added;
Added unit testing to test the basic funcitonality of Metrc.Regression.ByGroup()
Added MSE and MAE (MeanAbsoluteError), and included tests for MSE and RMS
RMS and MSE fully supported by Fairlearn.Metric.Regression now accross all three functions
created the moment class and utilityParity class. Initial commit
Passed the initial unit tests for Demographic Parity. Every class is made public which needs to be changed in the future. Utility Parity still needs to be changed for other parities to work
There is still a lot of development needed to be done with the moment class
…search
getting sensitive feature column names directly from a getter function, adjusted default value for the option to a random value
built the first prototype for the gridSearchTrialRunner. We have enabled a seperate training set for training and testing set for validating the result, which is a different approach from the original implementation.
Added a new feature so that users can look up row item by the name of the column instead of the raw row index
… fairlearn
In fairlearn AutoML, we have to add in a singleton to the serviceCollection called moment, which will be later extracted to calculate the fairness parity.
Added an if statement to output fairlearn metric if using fairlearn
the experiment is able to add a moment to its serviceCollection which is later used to calculate fairlearn parity.
Created a tuner so that we can go through the search space through the gridsearch algorithm
Comment threadsrc/Microsoft.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/MLContextExtension.cs Outdated
Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
// get all the columns of the schema
DataViewSchema columns = _eval.Schema;

// TODO: is converting IDataview to DataFrame the best practice?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not the best practice, especially when input files (depending on the trainer) can be streamed in and can be larger than the memory on the machine. Its probably fine to start out this way, but it will be something that is needed to change later.

Comment threadsrc/Microsoft.ML.Fairlearn/metrics/FairlearnMetricCatalog.cs
using Microsoft.ML.SearchSpace;
using Microsoft.ML.SearchSpace.Option;

namespace Microsoft.ML.Fairlearn.reductions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to have the namespace be reductions with a lowercase r? Would be better to be a capital.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LittleLittleCloud looks like its still lowecase r. Is there a reason for it to be that way?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope there's no reason for that but a mistake. I thought I fixed it but maybe not. Let me check

Comment threadsrc/Microsoft.ML.Fairlearn/reductions/UtilityParity.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/MetricTest.cs
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated
Comment threadtest/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs Outdated

@michaelgsharpmichaelgsharp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly minor formatting changes, but the namespace needs to be addressed.

@ghostghost removed the needs-author-action label May 8, 2023
@codecov

codecovBot commented May 10, 2023

Copy link
Copy Markdown

Codecov Report

Merging #6539 (dda3785) into main (247f3a0) will increase coverage by 0.19%.
The diff coverage is 82.51%.

Additional details and impacted files
@@ Coverage Diff @@## main #6539 +/- ##
==========================================
+ Coverage 68.59% 68.78% +0.19% 
==========================================
Files 1201 1215 +14 Lines 250296 251523 +1227 Branches 26094 26227 +133 ==========================================
+ Hits 171681 173006 +1325 + Misses 71802 71705 -97 + Partials 6813 6812 -1 
FlagCoverage Δ
Debug68.78% <82.51%> (+0.19%)⬆️
production63.30% <80.75%> (+0.22%)⬆️
test88.87% <87.01%> (+0.02%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted FilesCoverage Δ
src/Microsoft.ML.Fairlearn/AutoML/TunerFactory.cs0.00% <0.00%> (ø)
...Microsoft.ML.AutoML.Tests/AutoMLExperimentTests.cs83.93% <0.00%> (-4.93%)⬇️
src/Microsoft.Data.Analysis/DataFrameRow.cs66.66% <50.00%> (-3.71%)⬇️
...t.ML.Fairlearn/AutoML/AutoMLExperimentExtension.cs66.66% <66.66%> (ø)
src/Microsoft.ML.Fairlearn/Reductions/Moment.cs68.18% <68.18%> (ø)
...Microsoft.ML.Fairlearn/Reductions/UtilityParity.cs79.71% <79.71%> (ø)
...oft.ML.Fairlearn/Metrics/FairlearnMetricCatalog.cs88.02% <88.02%> (ø)
src/Microsoft.ML.Fairlearn/FairlearnCatalog.cs100.00% <100.00%> (ø)
src/Microsoft.ML.Fairlearn/MLContextExtension.cs100.00% <100.00%> (ø)
...t.ML.Fairlearn/Reductions/GridSearchTrialRunner.cs100.00% <100.00%> (ø)
... and 4 more

... and 44 files with indirect coverage changes

@LittleLittleCloud
LittleLittleCloud merged commit 1dcae10 into dotnet:mainMay 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jun 10, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add metadata of bias and fairness metrics to models

3 participants

@LittleLittleCloud@michaelgsharp@jordi1215