Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin
, '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

Fix missing ExampleWeightColumnName in the advanced Options for some trainers - #3104

Merged
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights
Mar 29, 2019
Merged

Fix missing ExampleWeightColumnName in the advanced Options for some trainers#3104
abgoswam merged 4 commits into
dotnet:masterfrom
abgoswam:abgoswam/sdca_weights

Conversation

@abgoswam

Copy link
Copy Markdown
Member

Fixes#2175

  • Added ExampleWeightColumnName in the advanced Options for SDCA trainers {Regression, LogisticRegression, MaximumEntropy}
  • Added tests

@abgoswamabgoswam changed the title Fix missing ExampleWeightColumnName in the advanced Options for some trainersFix missing ExampleWeightColumnName in the advanced Options for some trainersMar 27, 2019

@Ivanidzo4kaIvanidzo4ka 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.

:shipit:

/// Options for the SDCA-based trainers.
/// </summary>
public abstract class OptionsBase : TrainerInputBaseWithLabel
public abstract class OptionsBase : TrainerInputBaseWithWeight

@Ivanidzo4kaIvanidzo4kaMar 27, 2019

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.

TrainerInputBaseWithWeight [](start = 44, length = 26)

I would assume you check all mlContext.*Catalog extensions for SDCA trainers to have exampleWeightColumnName in it? #Resolved

@abgoswamabgoswamMar 27, 2019

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.

yeap. i did verify all of the "simple" SDCA trainer extensions have the exampleWeightColumnName parameter


In reply to: 269666016 [](ancestors = 269666016)

@codecov

codecovBot commented Mar 27, 2019

Copy link
Copy Markdown

Codecov Report

Merging #3104 into master will increase coverage by 0.01%.
The diff coverage is 92.94%.

@@ Coverage Diff @@## master #3104 +/- ##
==========================================
+ Coverage 72.52% 72.53% +0.01% 
==========================================
Files 808 808 Lines 144665 144740 +75 Branches 16198 16202 +4 ==========================================
+ Hits 104912 104982 +70 - Misses 35342 35346 +4 - Partials 4411 4412 +1
FlagCoverage Δ
#Debug72.53% <92.94%> (+0.01%)⬆️
#production68.12% <85.71%> (ø)⬆️
#test88.82% <94.36%> (+0.01%)⬆️
Impacted FilesCoverage Δ
...oft.ML.StandardTrainers/Standard/SdcaMulticlass.cs90.1% <100%> (ø)⬆️
...crosoft.ML.StandardTrainers/Standard/SdcaBinary.cs72.95% <100%> (+0.17%)⬆️
...oft.ML.StandardTrainers/Standard/SdcaRegression.cs95.83% <100%> (ø)⬆️
...ts/TrainerEstimators/TreeEnsembleFeaturizerTest.cs100% <100%> (ø)⬆️
...c/Microsoft.ML.SamplesUtils/SamplesDatasetUtils.cs24.46% <100%> (+0.73%)⬆️
...rc/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs81.72% <60%> (-0.61%)⬇️
.../Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs97.26% <94.11%> (-2.74%)⬇️
src/Microsoft.ML.Transforms/Text/LdaTransform.cs89.26% <0%> (-0.63%)⬇️
...soft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs84.7% <0%> (-0.21%)⬇️
...ML.Transforms/Text/StopWordsRemovingTransformer.cs86.1% <0%> (-0.16%)⬇️
... and 3 more


// Get a small dataset as an IEnumerable and them read it as ML.NET's data type.
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorSamples(5);
IEnumerable<SamplesUtils.DatasetUtils.BinaryLabelFloatFeatureVectorFloatWeightSample> enumerableOfData = SamplesUtils.DatasetUtils.GenerateBinaryLabelFloatFeatureVectorFloatWeightSamples(5);

@wschinwschinMar 28, 2019

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.

How do you examine the effect of having weight? Should it be somehow checked in a test? I feel we need two trainers w/wo weight column and make sure the two trained models are different. #Resolved

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.

Thats what i did in the test SdcaLogisticRegressionWithWeight .. Added two trainers w/wo weights and verified it produced different metrics. Is that sufficient ?


In reply to: 270204851 [](ancestors = 270204851)

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.

Their scores are similar. I'd like to have a more strict criterion. As you heard from Zeeshan S, tiny changes induced large SDCA regression this morning.


In reply to: 270205745 [](ancestors = 270205745,270204851)

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.

added checks in the other tests where we test thoroughly for this


In reply to: 270207991 [](ancestors = 270207991,270205745,270204851)

var sdcaWithWeightBinary = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
new SdcaLogisticRegressionBinaryTrainer.Options { ExampleWeightColumnName = "Weight", NumberOfThreads = 1 });

var prediction1 = sdcaWithoutWeightBinary.Fit(data).Transform(data);

@wschinwschinMar 28, 2019

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.

Could you check that if all (or most) results in prediction1 and prediction2 are different? #Resolved

@abgoswamabgoswamMar 29, 2019

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.

added checks to check that the model parameters for both models are different


In reply to: 270206386 [](ancestors = 270206386)

Assert.Equal(0.3591, metrics2.LogLoss, 4);

// Verify SdcaMaximumEntropy with and without weights.
var sdcaWithoutWeightMulticlass = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label").

@wschinwschinMar 28, 2019

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.

May we put multi-class test to another independent test (to make test small)? #Resolved

}

[Fact]
public void SdcaLogisticRegressionWithWeight()

@wschinwschinMar 28, 2019

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.

LogisticRegression [](start = 24, length = 18)

This is called LogisticRegression but contains MaximumEntropy trainers. #Resolved

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.

WIll fix by separating into 2 tests one each for binary and multiclass


In reply to: 270208235 [](ancestors = 270208235)

@abgoswam
abgoswam merged commit 0a2ec3a into dotnet:masterMar 29, 2019
shauheen pushed a commit to shauheen/machinelearning that referenced this pull request Apr 2, 2019
…trainers (dotnet#3104)
* fixed issue, added tests
* fix review comments
* updating equality checks for floats
@ghostghost locked as resolved and limited conversation to collaborators Mar 23, 2022
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.

3 participants

@abgoswam@Ivanidzo4ka@wschin