Return to site

Which Machine Learning Classifiers are Best for Small Datasets?

An Empirical Study

Although "big data" and "deep learning" are dominant, my own work at the Gates Foundation involves a lot of small (but expensive) datasets, where the number of rows (subjects, samples) is between 100 and 1000. For example, detailed measurements throughout a pregnancy and subsequent neonatal outcomes from pregnant women. A lot of my collaborative investigations involve fitting machine learning models to small datasets like these, and it's not clear what best practices are in this case.

Along with my own experience, there is some informal wisdom floating around the ML community. Folk wisdom makes me wary and I wanted to do something more systematic. I took the following approach:

  1. Get a lot of small classification benchmark datasets. I used a subset of this prepackaged repo. The final total was 108 datasets. (To do: also run regression benchmarks using this nice dataset library.)
  2. Select some reasonably representative ML classifiers: linear SVM, Logistic Regression, Random Forest, LightGBM (ensemble of gradient boosted decision trees), AugoGluon (fancy automl mega-ensemble).
  3. Set up sensible hyperparameter spaces.
  4. Run every classifier on every dataset via nested cross-validation.
  5. Plot results.

All the code and results are here: https://github.com/sergeyf/SmallDataBenchmarks

Feel free to add your own algorithms.

Let's look at the results. The metric of interest is weighted one-vs-all area under the ROC curve, averaged over the outer folds.

Section image

Some observations:

  • AutoGluon is best overall, but it has some catastrophic failures (AUROC < 0.5) that Logistic Regression does not and LightGBM has fewer of.
  • You can't tell from this particular plot, but AutoGluon needs "enough" time. It has a budget parameter which tells it how much time to spend improving the fancy ensemble. Five minutes per fold was the minimum that worked well - this adds up to 108 datasets * 4 outer folds * 300s = 1.5 days for the entire benchmark.
  • Linear SVC is better than Logistic Regression on average. There are also two datasets where SVC is 0.3 and 0.1 AUROC better than every other model. It's worth keeping in the toolbox.
  • Logistic Regression needs the "elasticnet" regularizer to ensure it doesn't have the kind of awful generalization failures that you see with AutoGluon and Random Forest.
  • LightGBM is second best. I used hyperopt to find good hyperparameters. I also tried scikit-optimize and Optuna, but they didn't work as well. User error is possible.
  • Random Forest is pretty good, and much easier/faster to optimize than LightGBM and AutoGluon. I only cross-validated a single parameter for it (depth).

Here are counts of datasets where each algorithm wins or is within 0.5% of winning AUROC (out of 108):

  • AutoGluon (sec=300): 71
  • LightGBM (n_hyperparams=50): 43
  • LightGBM (n_hyperparams=25): 41
  • Random Forest: 32
  • Logistic Regression: 28
  • SVC: 23

And average AUROC across all datasets:

  • AutoGluon (sec=300): 0.885
  • LightGBM (n_hyperparams=50): 0.876
  • LightGBM (n_hyperparams=25): 0.873
  • Random Forest: 0.870
  • SVC: 0.841
  • Logistic Regression: 0.835

And counts where each algorithm does the worst or is within 0.5% of the worst AUROC: 

  • Logistic Regression: 54
  • SVC: 48
  • Random Forest: 25
  • LightGBM (n_hyperparams=25): 19
  • LightGBM (n_hyperparams=50): 18
  • AutoGluon (sec=300): 14

Which shows that even the smart ensemble can still fail 10% of the time. Not a single free lunch to be eaten anywhere.

Here is a plot of average (over folds) AUROC vs number of samples:

Section image

I was surprised when I saw this plot the first time. The collective wisdom that I've ingested is something like: "don't bother using complex models for tiny data." But this doesn't seem true for these 108 datasets. Even at the low end, AutoGluon works very well, and LightGBM/Random Forest handily beat out the two linear models. There's an odd peak in the model where the linear models suddenly do better - I don't think it's meaningful.

The last plot - standard deviation of AUROC across outer folds:

Section image

Linear models don't just generalize worse regardless of dataset size - they also have higher generalization variance. Note the one strange SVC outlier. Another SVC mystery...

IID Thoughts

How applicable are these experiments? Both levels of the nested cross-validation used class-stratified random splits. So the splits were IID: independent and identically distributed. The test data looked like the validation data which looked like the training data. This is both unrealistic and precisely how most peer-reviewed publications evaluate when they try out machine learning. (At least the good ones.) In some cases, there is actual covariate-shifted "test" data available. It's possible that LightGBM is better than linear models for IID data regardless of its size, but this is no longer true if the test set is from some related but different distribution than the training set. I can't experiment very easily in this scenario: "standard" benchmark datasets are readily available, but realistic pairs of training and covariate-shifted test sets are not.

Conclusions & Caveats

So what can we conclude?

  • If you only care about the IID setting or only have access to a single dataset, non-linear models are likely to be superior even if you only have 50 samples.
  • AutoGluon is a great way to get an upper bound on performance, but it's much harder to understand the final complex ensemble than, say, LightGBM where you can plot the SHAP values.
  • hyperopt is old and has some warts but works better than the alternatives that I've tried. I'm going to stick with it.
  • SVC can in rare cases completely dominate all other algorithms.

Caveats:

  • LightGBM has a lot of excellent bells and whistles that were not at all used here: native missing value handling (we had none), smarter encoding of categorical variables (I used one-hot encoding for the sake of uniformity/fairness), per-feature monotonic constraints (need to have prior knowledge).
  • AutoGluon includes a tabular neural network in its ensemble, but I haven't run benchmarks on it in isolation. It would be interesting to find out if modern tabular neural network architectures can work out-of-the-box for small datasets.
  • This is just classification. Regression might have different outcomes.

Again, check out the code and feel free to add new scripts with other algorithms. It shouldn't be too hard. https://github.com/sergeyf/SmallDataBenchmarks

, '
Return to site

Which Machine Learning Classifiers are Best for Small Datasets?

An Empirical Study

Although "big data" and "deep learning" are dominant, my own work at the Gates Foundation involves a lot of small (but expensive) datasets, where the number of rows (subjects, samples) is between 100 and 1000. For example, detailed measurements throughout a pregnancy and subsequent neonatal outcomes from pregnant women. A lot of my collaborative investigations involve fitting machine learning models to small datasets like these, and it's not clear what best practices are in this case.

Along with my own experience, there is some informal wisdom floating around the ML community. Folk wisdom makes me wary and I wanted to do something more systematic. I took the following approach:

  1. Get a lot of small classification benchmark datasets. I used a subset of this prepackaged repo. The final total was 108 datasets. (To do: also run regression benchmarks using this nice dataset library.)
  2. Select some reasonably representative ML classifiers: linear SVM, Logistic Regression, Random Forest, LightGBM (ensemble of gradient boosted decision trees), AugoGluon (fancy automl mega-ensemble).
  3. Set up sensible hyperparameter spaces.
  4. Run every classifier on every dataset via nested cross-validation.
  5. Plot results.

All the code and results are here: https://github.com/sergeyf/SmallDataBenchmarks

Feel free to add your own algorithms.

Let's look at the results. The metric of interest is weighted one-vs-all area under the ROC curve, averaged over the outer folds.

Section image

Some observations:

  • AutoGluon is best overall, but it has some catastrophic failures (AUROC < 0.5) that Logistic Regression does not and LightGBM has fewer of.
  • You can't tell from this particular plot, but AutoGluon needs "enough" time. It has a budget parameter which tells it how much time to spend improving the fancy ensemble. Five minutes per fold was the minimum that worked well - this adds up to 108 datasets * 4 outer folds * 300s = 1.5 days for the entire benchmark.
  • Linear SVC is better than Logistic Regression on average. There are also two datasets where SVC is 0.3 and 0.1 AUROC better than every other model. It's worth keeping in the toolbox.
  • Logistic Regression needs the "elasticnet" regularizer to ensure it doesn't have the kind of awful generalization failures that you see with AutoGluon and Random Forest.
  • LightGBM is second best. I used hyperopt to find good hyperparameters. I also tried scikit-optimize and Optuna, but they didn't work as well. User error is possible.
  • Random Forest is pretty good, and much easier/faster to optimize than LightGBM and AutoGluon. I only cross-validated a single parameter for it (depth).

Here are counts of datasets where each algorithm wins or is within 0.5% of winning AUROC (out of 108):

  • AutoGluon (sec=300): 71
  • LightGBM (n_hyperparams=50): 43
  • LightGBM (n_hyperparams=25): 41
  • Random Forest: 32
  • Logistic Regression: 28
  • SVC: 23

And average AUROC across all datasets:

  • AutoGluon (sec=300): 0.885
  • LightGBM (n_hyperparams=50): 0.876
  • LightGBM (n_hyperparams=25): 0.873
  • Random Forest: 0.870
  • SVC: 0.841
  • Logistic Regression: 0.835

And counts where each algorithm does the worst or is within 0.5% of the worst AUROC: 

  • Logistic Regression: 54
  • SVC: 48
  • Random Forest: 25
  • LightGBM (n_hyperparams=25): 19
  • LightGBM (n_hyperparams=50): 18
  • AutoGluon (sec=300): 14

Which shows that even the smart ensemble can still fail 10% of the time. Not a single free lunch to be eaten anywhere.

Here is a plot of average (over folds) AUROC vs number of samples:

Section image

I was surprised when I saw this plot the first time. The collective wisdom that I've ingested is something like: "don't bother using complex models for tiny data." But this doesn't seem true for these 108 datasets. Even at the low end, AutoGluon works very well, and LightGBM/Random Forest handily beat out the two linear models. There's an odd peak in the model where the linear models suddenly do better - I don't think it's meaningful.

The last plot - standard deviation of AUROC across outer folds:

Section image

Linear models don't just generalize worse regardless of dataset size - they also have higher generalization variance. Note the one strange SVC outlier. Another SVC mystery...

IID Thoughts

How applicable are these experiments? Both levels of the nested cross-validation used class-stratified random splits. So the splits were IID: independent and identically distributed. The test data looked like the validation data which looked like the training data. This is both unrealistic and precisely how most peer-reviewed publications evaluate when they try out machine learning. (At least the good ones.) In some cases, there is actual covariate-shifted "test" data available. It's possible that LightGBM is better than linear models for IID data regardless of its size, but this is no longer true if the test set is from some related but different distribution than the training set. I can't experiment very easily in this scenario: "standard" benchmark datasets are readily available, but realistic pairs of training and covariate-shifted test sets are not.

Conclusions & Caveats

So what can we conclude?

  • If you only care about the IID setting or only have access to a single dataset, non-linear models are likely to be superior even if you only have 50 samples.
  • AutoGluon is a great way to get an upper bound on performance, but it's much harder to understand the final complex ensemble than, say, LightGBM where you can plot the SHAP values.
  • hyperopt is old and has some warts but works better than the alternatives that I've tried. I'm going to stick with it.
  • SVC can in rare cases completely dominate all other algorithms.

Caveats:

  • LightGBM has a lot of excellent bells and whistles that were not at all used here: native missing value handling (we had none), smarter encoding of categorical variables (I used one-hot encoding for the sake of uniformity/fairness), per-feature monotonic constraints (need to have prior knowledge).
  • AutoGluon includes a tabular neural network in its ensemble, but I haven't run benchmarks on it in isolation. It would be interesting to find out if modern tabular neural network architectures can work out-of-the-box for small datasets.
  • This is just classification. Regression might have different outcomes.

Again, check out the code and feel free to add new scripts with other algorithms. It shouldn't be too hard. https://github.com/sergeyf/SmallDataBenchmarks

], ['\\\\(', '\\\\)']],\n processEscapes: true\n },\n startup: {\n ready: function() {\n MathJax.startup.defaultReady();\n \/\/ Re-typeset on SPA navigation\n if (typeof _strk !== 'undefined') {\n _strk.push([\"Page.didMount\", function() {\n setTimeout(function() {\n MathJax.typesetPromise();\n if (window.PR) PR.prettyPrint();\n }, 100);\n }]);\n }\n }\n }\n};\n\u003c\/script\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/mathjax@4\/tex-chtml.js\" async\u003e\u003c\/script\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/gh\/google\/code-prettify@master\/loader\/run_prettify.js\"\u003e\u003c\/script\u003e","has_subscription_code_before":false,"has_subscription_code":false,"show_amp":true,"show_more_posts_with":"popup","used_disqus_comments_before":false,"show_rss":true,"enable_comments":true,"footer_custom_code":"","show_subscription_form":true,"hide_new_blog_tips":true,"show_subscriptions_tab":true,"positive_order":true},"isPro":true,"isV4":true,"forcedLocale":"en","userId":174108,"membership":"pro","theme":{"id":59,"css_file":"themes/s5-theme/main","color_list":"","created_at":"2017-12-17T18:25:54.886-08:00","updated_at":"2018-04-10T19:58:57.731-07:00","display_name":"S5 Theme","default_slide_list":"","navbar_file":"s5-theme/navbar","footer_file":null,"name":"s5-theme","thumb_image":null,"use_background_image":false,"demo_page_id":null,"type_mask":1,"data_page_id":null,"is_new":false,"priority":0,"header_file":null,"data":"{\"menu\":{\"type\":\"Menu\",\"components\":{\"logo\":{\"type\":\"Image\",\"image_type\":\"small\",\"url\":\"/images/defaults/default_logo.png\"},\"title\":{\"type\":\"RichText\",\"value\":\"Title Text\",\"text_type\":\"title\"}}}}","name_with_v4_fallback":"s5-theme"},"permalink":"data-cowboys","subscriptionPlan":"pro_yearly","subscriptionPeriod":"yearly","isOnTrial":false,"customColors":{"type":"CustomColors","id":"f_d35970ff-fab0-4cef-a27f-e8b4bf8cae86","defaultValue":null,"active":true,"highlight1":"#f2b134","highlight2":null,"lastClearHl1":null,"lastClearHl2":"#d97706"},"animations":{"type":"Animations","id":"f_1e864d09-1899-4c92-98b3-d7c80ca2377e","defaultValue":null,"page_scroll":"none","background":"none","image_link_hover":"none"},"s5Theme":{"type":"Theme","id":"f_247e5d2c-d437-4993-a487-1c633cb2e339","defaultValue":null,"version":"11","nav":{"type":"NavTheme","id":"f_a7eefaef-c78a-4fe1-925d-f515062961c4","defaultValue":null,"name":"circleIcon","layout":"f","padding":"small","sidebarWidth":"medium","topContentWidth":"full","horizontalContentAlignment":"center","verticalContentAlignment":"middle","fontSize":"medium","backgroundColor1":"#ffffff","highlightColor":"#f2b036","presetColorName":"whiteMinimal","itemColor":"#000000","itemSpacing":"normal","dropShadow":"small","socialMediaListType":"link","isTransparent":false,"isSticky":true,"keptOldLayout":false,"showSocialMedia":false,"highlight":{"blockBackgroundColor":"#f2b036","blockTextColor":"#000000","blockBackgroundColorSettings":{"id":"194663d2-a09e-402b-961d-cfd6ad5c0f99","default":"#f2b036","preIndex":null,"type":"default"},"blockTextColorSettings":{"id":"e425bbe1-6408-484c-bfda-9a313be9e929","default":"#000000","preIndex":null,"type":"default"},"blockShape":"pill","textColor":"#f2b036","textColorSettings":{"id":"9d3a681d-45eb-4cf6-809d-59991d3fc598","default":"#f2b036","preIndex":null,"type":"default"},"type":"underline","id":"f_68dfd963-9083-4438-88c2-d2a8a804b8b4"},"border":{"enable":false,"borderColor":"#000","position":"bottom","thickness":"small","borderColorSettings":{"preIndex":null,"type":"custom","default":"#ffffff","id":"f_8ea8e862-1991-42e8-b943-d640bd7ea2f2"}},"layoutsVersionStatus":{"a":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"},"b":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"},"g":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"},"e":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"}},"socialMedia":[],"socialMediaButtonList":[{"type":"Facebook","id":"a8d01728-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false},{"type":"Twitter","id":"a8d01729-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false},{"type":"LinkedIn","id":"a8d0172a-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false},{"type":"Pinterest","id":"a8d03e30-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false}],"socialMediaContactList":[{"type":"SocialMediaPhone","id":"a8d03e33-e47d-11f0-8a7d-d7cc903ea455","defaultValue":"","className":"fas fa-phone-alt"},{"type":"SocialMediaEmail","id":"a8d03e34-e47d-11f0-8a7d-d7cc903ea455","defaultValue":"","className":"fas fa-envelope"}],"backgroundColorSettings":{"id":"47a8cdac-b64d-4e7e-9b45-80abcdf6602e","default":"#ffffff","preIndex":null,"type":"default"},"highlightColorSettings":{"id":"7f824b80-2661-4f72-8c7f-eda8df8f6944","default":"#f2b036","preIndex":null,"type":"default"},"itemColorSettings":{"id":"d2f2d711-73d2-4009-bc36-f51c60fc7c92","default":"#000000","preIndex":null,"type":"default"}},"section":{"type":"SectionTheme","id":"f_4fc6197e-5182-4a82-a157-ca9ae223252b","defaultValue":null,"padding":"normal","contentWidth":"normal","contentAlignment":"center","baseFontSize":17,"titleFontSize":36,"subtitleFontSize":null,"itemTitleFontSize":null,"itemSubtitleFontSize":null,"textHighlightColor":null,"baseColor":"","titleColor":"","subtitleColor":"#f2b134","itemTitleColor":"","itemSubtitleColor":"#f2b134","textHighlightSelection":{"type":"TextHighlightSelection","id":"f_804ed909-da2e-4606-9d8d-df346e5bbc2c","defaultValue":null,"title":false,"subtitle":true,"itemTitle":false,"itemSubtitle":true},"base":{"preIndex":null,"type":"default","default":"#50555c","id":"f_82ef0e17-1f6b-447a-917c-70db64859740"},"title":{"preIndex":null,"type":"default","default":"#1D2023","id":"f_5e1547fe-a243-4fb8-a83d-e6927c7d2d85"},"subtitle":{"preIndex":null,"type":"default","default":"#f2b134","id":"f_7ac11fef-260c-4ef2-a574-4b342fe150b4"},"itemTitle":{"preIndex":null,"type":"default","default":"#1D2023","id":"f_3ce5ebe4-ed13-49b0-92d3-8af9f4348370"},"itemSubtitle":{"preIndex":null,"type":"default","default":"#f2b134","id":"f_e476cb98-82b3-4c4f-a7bd-bccd19962834"}},"firstSection":{"type":"FirstSectionTheme","id":"f_db90f220-e55e-4a61-8251-f8e855dc7278","defaultValue":null,"height":"normal","shape":"none"},"button":{"type":"ButtonTheme","id":"f_78383a89-ed4d-4cda-9d68-f5c72825706d","defaultValue":null,"backgroundColor":"#f2b134","shape":"square","fill":"solid","backgroundSettings":{"preIndex":null,"type":"default","default":"#f2b134","id":"f_d7acfed7-654d-4f80-b156-be66e48dea70"}}},"id":217121,"headingFont":"source sans pro","titleFont":"titillium web","bodyFont":"source sans pro","usedWebFontsNormalized":"Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic,700italic|Titillium+Web:300,700,300italic,700italic|Montserrat:400,700","showAmp":true,"subscribersCount":14,"templateVariation":"","showStrikinglyLogo":false,"multiPage":true,"sectionLayout":"one-smallCircle-long-none","siteName":"Data Cowboys: Machine Learning \u0026 AI Consulting","siteRollouts":{"custom_code":true,"pro_sections":true,"pro_apps":true,"multi_pages":false,"google_analytics":true,"strikingly_analytics":true,"manually_checked":false,"custom_form":false,"popup":null,"membership_feature":false,"custom_ads":true,"disable_google_invisible_recaptcha":false},"pageCustomDomain":"www.data-cowboys.com","pagePublicUrl":"https:\/\/www.data-cowboys.com\/","googleAnalyticsTracker":"G-5DWSBZVFVF","googleAnalyticsType":"ga4","facebookPixelId":"","gaTrackingId":"UA-25124444-6","errorceptionKey":"\"518ac810441fb4b7180002fa\"","keenioProjectId":"5317e03605cd66236a000002","keenioWriteKey":"efd460f8e282891930ff1957321c12b64a6db50694fd0b4a01d01f347920dfa3ce48e8ca249b5ea9917f98865696cfc39bc6814e4743c39af0a4720bb711627d9cf0fe63d5d52c3866c9c1c3178aaec6cbfc1a9ab62a3c9a827d2846a9be93ecf4ee3d61ebee8baaa6a1d735bff6e37b","wechatMpAccountId":null,"blogSubscriptionUrl":"\/show_iframe_component\/873380","chatSettings":null,"showNav":null,"hideNewBlogTips":true,"connectedSites":[],"enableFixedTextColor":true,"enableFixedTextColorRemaining":true,"enableFixedTextColorHasBgColor":true,"enableFixedGallerySectionRtlStyle":true,"enableSectionSmartBinding":true,"enableFixedSectionContentStyle20251020":true,"enableNewLumaVersion":true,"enableFixedNavSpecialLogicColor":true},"content":{"type":"Blog.BlogData","id":"f_d6dcffc8-ba0b-4a5a-a90e-9e31f02ed35f","defaultValue":null,"showComments":true,"showShareButtons":null,"header":{"type":"Blog.Header","id":"f_6de34ac7-4fa7-4c92-b38d-03a69fcaad9c","defaultValue":null,"title":{"type":"Blog.Text","id":"f_96144ebe-b181-4c88-adef-d8be80767376","defaultValue":false,"value":"\u003cp\u003eWhich Machine Learning Classifiers are Best for Small Datasets?\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null}},"subTitle":{"type":"Blog.Text","id":"f_a1f4e748-abb3-4577-bbab-5beb4dd63ba5","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp\u003eAn Empirical Study\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null},"defaultDataProcessed":true},"backgroundImage":{"type":"Blog.BackgroundImage","id":"f_360f7760-cdf4-4951-84ed-fd4eb91f332c","defaultValue":false,"url":"!","textColor":"overlay","backgroundVariation":null,"sizing":"cover","userClassName":null,"linkUrl":null,"linkTarget":null,"videoUrl":null,"videoHtml":"","storageKey":"174108\/stacked_kdes_jk7z4r","storage":"s","format":"png","h":879,"w":1715,"s":24845,"useImage":true,"noCompression":null,"focus":null,"linkInputEnabled":null,"descriptionInputEnabled":null}},"footer":{"type":"Blog.Footer","id":"f_1352b56c-3ca9-419f-9643-dbde60bc1f9a","defaultValue":null,"comment":{"type":"Blog.Comment","id":"f_31a679ed-8db5-46c9-922f-85d2843f4269","defaultValue":null,"shortName":""},"shareButtons":{"type":"Blog.ShareButtons","id":"f_4edbe98f-b0b0-48b3-a1e9-db4a29a3fdd1","defaultValue":false,"list_type":"link","button_list":[{"type":"Facebook","id":"f_1f886986-5dfd-4da4-9a2a-c6ab98e72b6c","defaultValue":null,"url":"","link_url":null,"share_text":null,"show_button":true,"app_id":null},{"type":"LinkedIn","id":"f_f7bc0644-053a-4b18-bfbf-5e46bed0b0fa","defaultValue":null,"url":"","link_url":null,"share_text":null,"show_button":true},{"type":"Twitter","id":"f_7da17294-5819-46f5-9054-043c9a71d0c5","defaultValue":null,"url":"","link_url":null,"share_text":null,"show_button":true},{"type":"Pinterest","id":"f_53bf6a30-3e19-450b-aa1a-5ab6c0717fde","defaultValue":null,"url":"","link_url":null,"share_text":null,"show_button":false}]}},"sections":[{"type":"Blog.Section","id":"f_abf1833c-d228-469e-913e-8b5721d7a9b7","defaultValue":null,"component":{"type":"RichText","id":"1611b686-22ef-4080-b23c-0c5e19679ccd","defaultValue":false,"value":"\u003cp\u003eAlthough \"big data\" and \"deep learning\" are dominant, my own work at the Gates Foundation involves a lot of small (but expensive) datasets, where the number of rows (subjects, samples) is between 100 and 1000. For example, detailed measurements throughout a pregnancy and subsequent neonatal outcomes from pregnant women. A lot of my collaborative investigations involve fitting machine learning models to small datasets like these, and it's not clear what best practices are in this case.\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_35d6c59d-ac14-4d52-bcff-3cdebea893c5","defaultValue":null,"component":{"type":"RichText","id":"c67f8107-2e44-4c33-a167-d6454d7fe739","defaultValue":false,"value":"\u003cp\u003eAlong with my own experience, there is some informal wisdom floating around the ML community. Folk wisdom makes me wary and I wanted to do something more systematic. I took the following approach:\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_35d6c59d-ac14-4d52-bcff-3cdebea893c5","defaultValue":null,"component":{"type":"RichText","id":"aa580e09-6c65-4db7-86b9-1b29b242b426","defaultValue":false,"value":"\u003col\u003e\u003cli\u003eGet a lot of small classification benchmark datasets. I used a subset of\u00a0\u003ca href=\"https:\/\/github.com\/lpfgarcia\/ucipp\" data-type=\"\" target=\"_blank\"\u003ethis prepackaged repo\u003c\/a\u003e. The final total was 108 datasets. (To do: also run regression benchmarks using \u003ca href=\"https:\/\/github.com\/EpistasisLab\/pmlb\" data-type=\"\" target=\"_blank\"\u003ethis\u003c\/a\u003e nice dataset library.)\u003c\/li\u003e\u003cli\u003eSelect some reasonably representative ML classifiers: linear SVM, Logistic Regression, Random Forest, LightGBM (ensemble of gradient boosted decision trees), AugoGluon (fancy automl mega-ensemble).\u003c\/li\u003e\u003cli\u003eSet up sensible hyperparameter spaces.\u003c\/li\u003e\u003cli\u003eRun every classifier on every dataset via nested cross-validation.\u003c\/li\u003e\u003cli\u003ePlot results.\u003c\/li\u003e\u003c\/ol\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_f147aa64-05bd-4e92-8061-5fe2a6b0b63b","defaultValue":null,"component":{"type":"RichText","id":"d07bba11-ac7e-4bb9-8245-8accc6a63fe5","defaultValue":false,"value":"\u003cp\u003eAll the code and results are here: https:\/\/github.com\/sergeyf\/SmallDataBenchmarks\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_f147aa64-05bd-4e92-8061-5fe2a6b0b63b","defaultValue":null,"component":{"type":"RichText","id":"ebb409e6-2925-4238-b64f-27f00dfd1786","defaultValue":false,"value":"\u003cp\u003eFeel free to add your own algorithms.\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_a2df8054-01d7-4eee-9f1f-9ae89e620141","defaultValue":null,"component":{"type":"RichText","id":"ec66b19f-7c17-4685-8e75-4b1238c77896","defaultValue":false,"value":"\u003cp\u003eLet's look at the results. The metric of interest is weighted one-vs-all area under the ROC curve, averaged over the outer folds.\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_ac90c3ac-32e9-47c5-a87d-b0ed236f3f9e","defaultValue":null,"component":{"type":"Image","id":"f_c836358b-74a5-4aa7-8d15-44f7cadb3e73","defaultValue":null,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/405478_658788","storage":"s","storagePrefix":null,"format":"png","h":473,"w":1200,"s":48911,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}}},{"type":"Blog.Section","id":"f_e00d60cf-978a-498e-8713-61365dbfd3ae","defaultValue":null,"component":{"type":"RichText","id":"103d5951-bf9c-4be0-a597-e45ff46d5eca","defaultValue":false,"value":"\u003cp\u003eSome observations:\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_e00d60cf-978a-498e-8713-61365dbfd3ae","defaultValue":null,"component":{"type":"RichText","id":"46065efb-d74b-427c-b85e-fc6f4e8d6c7a","defaultValue":false,"value":"\u003cul\u003e\u003cli\u003eAutoGluon is best overall, but it has some catastrophic failures (AUROC \u0026lt; 0.5) that Logistic Regression does not and LightGBM has fewer of.\u003c\/li\u003e\u003cli\u003eYou can't tell from this particular plot, but AutoGluon needs \"enough\" time. It has a budget parameter which tells it how much time to spend improving the fancy ensemble. Five minutes per fold was the minimum that worked well - this adds up to 108 datasets * 4 outer folds * 300s = 1.5 days for the entire benchmark.\u003c\/li\u003e\u003cli\u003eLinear SVC is better than Logistic Regression on average. There are also two datasets where SVC is 0.3 and 0.1 AUROC better than every other model. It's worth keeping in the toolbox.\u003c\/li\u003e\u003cli\u003eLogistic Regression needs the \"elasticnet\" regularizer to ensure it doesn't have the kind of awful generalization failures that you see with AutoGluon and Random Forest.\u003c\/li\u003e\u003cli\u003eLightGBM is second best. I used hyperopt to find good hyperparameters. I also tried scikit-optimize and Optuna, but they didn't work as well. User error is possible.\u003c\/li\u003e\u003cli\u003eRandom Forest is pretty good, and much easier\/faster to optimize than LightGBM and AutoGluon. I only cross-validated a single parameter for it (depth).\u003c\/li\u003e\u003c\/ul\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_cc108d31-227e-4356-b016-1eb6e1a96d31","defaultValue":null,"component":{"type":"RichText","id":"3576e786-5f9e-4313-abc7-857b32850f6b","defaultValue":false,"value":"\u003cp\u003eHere are counts of datasets where each algorithm wins or is within 0.5% of winning AUROC (out of 108):\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_cc108d31-227e-4356-b016-1eb6e1a96d31","defaultValue":null,"component":{"type":"RichText","id":"174ddddd-4e61-4720-9d8f-f114e1908f6e","defaultValue":false,"value":"\u003cul\u003e\u003cli\u003eAutoGluon (sec=300): 71\u003c\/li\u003e\u003cli\u003eLightGBM (n_hyperparams=50): 43\u003c\/li\u003e\u003cli\u003eLightGBM (n_hyperparams=25): 41\u003c\/li\u003e\u003cli\u003eRandom Forest: 32\u003c\/li\u003e\u003cli\u003eLogistic Regression: 28\u003c\/li\u003e\u003cli\u003eSVC: 23\u003c\/li\u003e\u003c\/ul\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_cc108d31-227e-4356-b016-1eb6e1a96d31","defaultValue":null,"component":{"type":"RichText","id":"252cc04b-0937-4a84-8870-617224ec2abc","defaultValue":false,"value":"\u003cp\u003eAnd average AUROC across all datasets:\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_cc108d31-227e-4356-b016-1eb6e1a96d31","defaultValue":null,"component":{"type":"RichText","id":"291109f1-bb4b-444c-99de-b407d0e94783","defaultValue":false,"value":"\u003cul\u003e\u003cli\u003eAutoGluon (sec=300): 0.885\u003c\/li\u003e\u003cli\u003eLightGBM (n_hyperparams=50): 0.876\u003c\/li\u003e\u003cli\u003eLightGBM (n_hyperparams=25): 0.873\u003c\/li\u003e\u003cli\u003eRandom Forest: 0.870\u003c\/li\u003e\u003cli\u003eSVC: 0.841\u003c\/li\u003e\u003cli\u003eLogistic Regression: 0.835\u003c\/li\u003e\u003c\/ul\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"1ebdec70-1a5f-40ae-9fbc-20e8f8b82ad1","defaultValue":null,"component":{"type":"RichText","id":"2ce56f64-e4ac-4a47-8a15-29422c3efffa","defaultValue":false,"value":"\u003cp\u003eAnd counts where each algorithm does the worst or is within 0.5% of the worst AUROC:\u00a0\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_d5a8595a-20af-4100-9c2c-e6c253a3f1c5","defaultValue":null,"component":{"type":"RichText","id":"08e11573-8210-441a-a195-b4ed681b8c95","defaultValue":false,"value":"\u003cul\u003e\u003cli\u003eLogistic Regression: 54\u003c\/li\u003e\u003cli\u003eSVC: 48\u003c\/li\u003e\u003cli\u003eRandom Forest: 25\u003c\/li\u003e\u003cli\u003eLightGBM (n_hyperparams=25): 19\u003c\/li\u003e\u003cli\u003eLightGBM (n_hyperparams=50): 18\u003c\/li\u003e\u003cli\u003eAutoGluon (sec=300): 14\u003c\/li\u003e\u003c\/ul\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_d5a8595a-20af-4100-9c2c-e6c253a3f1c5","defaultValue":null,"component":{"type":"RichText","id":"b3a035dc-fdbf-45d5-91b7-8e9b21920b0d","defaultValue":false,"value":"\u003cp\u003eWhich shows that even the smart ensemble can still fail 10% of the time. Not a single free lunch to be eaten anywhere.\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_0e956e81-4afa-45d2-9d77-3351ba479542","defaultValue":null,"component":{"type":"RichText","id":"5a7647c2-f1a6-456f-8bd7-590cb2e1c6a9","defaultValue":false,"value":"\u003cp\u003eHere is a plot of average (over folds) AUROC vs number of samples:\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_05a8602d-fdc4-40b3-a283-a19e6de19a64","defaultValue":null,"component":{"type":"Image","id":"f_9c60e111-8851-4bc8-b35f-30a7a4459b5f","defaultValue":null,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/900727_648400","storage":"s","storagePrefix":null,"format":"png","h":546,"w":1200,"s":168104,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}}},{"type":"Blog.Section","id":"f_6f35f835-7565-47da-9460-f4fd0479e818","defaultValue":null,"component":{"type":"RichText","id":"33c25983-cdb3-40e5-8960-d533766f3920","defaultValue":false,"value":"\u003cp\u003eI was surprised when I saw this plot the first time. The collective wisdom that I've ingested is something like: \"don't bother using complex models for tiny data.\" But this doesn't seem true for these 108 datasets. Even at the low end, AutoGluon works very well, and LightGBM\/Random Forest handily beat out the two linear models. There's an odd peak in the model where the linear models suddenly do better - I don't think it's meaningful.\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_66ba3f5d-88c7-49af-8d83-2c14a22b8624","defaultValue":null,"component":{"type":"RichText","id":"ac92a29c-ec24-45eb-9a39-a4010e11a515","defaultValue":false,"value":"\u003cp\u003eThe last plot - standard deviation of AUROC across outer folds:\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_2188613f-2419-418d-922b-134e4e2688fc","defaultValue":null,"component":{"type":"Image","id":"f_c10958f6-8a18-400b-800a-0c1666bbc435","defaultValue":null,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/378656_205907","storage":"s","storagePrefix":null,"format":"png","h":553,"w":1200,"s":145100,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}}},{"type":"Blog.Section","id":"f_f4db990e-835d-464a-b3b9-15006bac5671","defaultValue":null,"component":{"type":"RichText","id":"84975d5c-a04b-4e31-89cb-c377393ac745","defaultValue":false,"value":"\u003cp\u003eLinear models don't just generalize worse regardless of dataset size - they also have higher generalization variance. Note the one strange SVC outlier. Another SVC mystery...\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_f4db990e-835d-464a-b3b9-15006bac5671","defaultValue":null,"component":{"type":"RichText","id":"530d31dd-c749-4355-ae6e-5264f30ce37c","defaultValue":false,"value":"\u003cp\u003e\u003cspan style=\"display: inline-block\"\u003e\u003c\/span\u003e\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_c28f361a-436b-4585-93ba-909aa2a216f1","defaultValue":null,"component":{"type":"RichText","id":"a856e33e-c4b2-4802-9ac7-36b095cf7613","defaultValue":false,"value":"\u003cp\u003e\u003cstrong\u003eIID Thoughts\u003c\/strong\u003e\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_2f959ced-1005-4d5a-b290-eb26b5db1277","defaultValue":null,"component":{"type":"RichText","id":"52af5161-c71c-417a-ba52-9bf9eea396d1","defaultValue":false,"value":"\u003cp\u003eHow applicable are these experiments? Both levels of the nested cross-validation used class-stratified random splits. So the splits were IID: independent and identically distributed. The test data looked like the validation data which looked like the training data. This is both unrealistic and precisely how most peer-reviewed publications evaluate when they try out machine learning. (At least the good ones.) In some cases, there is actual covariate-shifted \"test\" data available. It's possible that LightGBM is better than linear models for IID data regardless of its size, but this is no longer true if the test set is from some related but different distribution than the training set. I can't experiment very easily in this scenario: \"standard\" benchmark datasets are readily available, but realistic pairs of training and covariate-shifted test sets are not.\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_2e483435-fc0e-44d2-921f-1f53c0778246","defaultValue":null,"component":{"type":"RichText","id":"bffdcbb4-446a-4698-94aa-8339803958fa","defaultValue":false,"value":"\u003cp\u003e\u003cstrong\u003eConclusions \u0026amp; Caveats\u003c\/strong\u003e\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_862c6c2c-21a2-471e-a023-56b874479f68","defaultValue":null,"component":{"type":"RichText","id":"637f16a7-5827-494f-bf81-b89e11d66bec","defaultValue":false,"value":"\u003cp\u003eSo what can we conclude?\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_862c6c2c-21a2-471e-a023-56b874479f68","defaultValue":null,"component":{"type":"RichText","id":"0a0dc6ec-febb-496c-b4fb-6735e4839e82","defaultValue":false,"value":"\u003cul\u003e\u003cli\u003eIf you only care about the IID setting or only have access to a single dataset, non-linear models are likely to be superior even if you only have 50 samples.\u003c\/li\u003e\u003cli\u003eAutoGluon is a great way to get an upper bound on performance, but it's much harder to understand the final complex ensemble than, say, LightGBM where you can plot the SHAP values.\u003c\/li\u003e\u003cli\u003ehyperopt is old and has some warts but works better than the alternatives that I've tried. I'm going to stick with it.\u003c\/li\u003e\u003cli\u003eSVC can in rare cases completely dominate all other algorithms.\u003c\/li\u003e\u003c\/ul\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_862c6c2c-21a2-471e-a023-56b874479f68","defaultValue":null,"component":{"type":"RichText","id":"3040140b-9131-4dca-ad75-3d7ec9577369","defaultValue":false,"value":"\u003cp\u003eCaveats:\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_862c6c2c-21a2-471e-a023-56b874479f68","defaultValue":null,"component":{"type":"RichText","id":"2e6aa87f-a6e5-4335-bc3e-b4e585b9a9dc","defaultValue":false,"value":"\u003cul\u003e\u003cli\u003eLightGBM has a lot of excellent bells and whistles that were not at all used here: native missing value handling (we had none), smarter encoding of categorical variables (I used one-hot encoding for the sake of uniformity\/fairness), per-feature monotonic constraints (need to have prior knowledge).\u003c\/li\u003e\u003cli\u003eAutoGluon includes a tabular neural network in its ensemble, but I haven't run benchmarks on it in isolation. It would be interesting to find out if modern tabular neural network architectures can work out-of-the-box for small datasets.\u003c\/li\u003e\u003cli\u003eThis is \u003cem\u003ejust\u003c\/em\u003e classification. Regression might have different outcomes.\u003c\/li\u003e\u003c\/ul\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"f_862c6c2c-21a2-471e-a023-56b874479f68","defaultValue":null,"component":{"type":"RichText","id":"b59722e8-b6ff-4234-a343-a487fb457a1a","defaultValue":false,"value":"\u003cp\u003eAgain, check out the code and feel free to add new scripts with other algorithms. It shouldn't be too hard. https:\/\/github.com\/sergeyf\/SmallDataBenchmarks\u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}},{"type":"Blog.Section","id":"23569abc-a11c-43b5-adff-23028809ca08","defaultValue":null,"component":{"type":"RichText","id":"4a6a38b0-8566-424b-9b0a-ac00dd67162d","defaultValue":false,"value":"\u003cp\u003e \u003c\/p\u003e","backupValue":null,"version":1,"wrapperClass":"s-narrow-margin"}}]},"settings":{"hideBlogDate":true,"edit_session_uuid":null,"metaDescription":"Explore best practices in machine learning for small datasets with a study on fitting models to data involving 100-1000 samples, as seen from 108 datasets. Discover which ML classifiers perform best, from AutoGluon to SVC, and the implications for real-world applications. Full details and code at: https:\/\/github.com\/sergeyf\/SmallDataBenchmarks"},"pageMode":null,"pageData":{"type":"Site","id":"f_f78008a3-6282-4a1f-af6d-6106881bb104","defaultValue":null,"horizontal":false,"fixedSocialMedia":false,"new_page":false,"showMobileNav":true,"showCookieNotification":false,"useSectionDefaultFormat":true,"useSectionImprovementsPart1":true,"showTermsAndConditions":false,"showPrivacyPolicy":false,"activateGDPRCompliance":false,"multi_pages":true,"live_chat":false,"isFullScreenOnlyOneSection":true,"showNav":true,"showFooter":false,"showStrikinglyLogo":false,"showNavigationButtons":true,"showShoppingCartIcon":true,"showButtons":true,"navFont":"","titleFont":"titillium web","logoFont":"","bodyFont":"source sans pro","buttonFont":"source sans pro","headingFont":"source sans pro","titleFontWeight":null,"navItemFont":null,"navDropdownFont":null,"bodyFontWeight":"400","buttonFontWeight":null,"headingFontWeight":null,"navItemFontWeight":null,"navDropdownFontWeight":null,"theme":"fresh","templateVariation":"","templatePreset":"default","termsText":null,"privacyPolicyText":null,"fontPreset":null,"cookieNotificationArea":"eu","GDPRHtml":null,"pages":[{"type":"Page","id":"f_fcca2448-2224-497f-b0cc-ff57f721a70c","defaultValue":null,"sections":[{"type":"Slide","id":"f_08eeaa73-bf9f-4a30-b497-0583a2b114b1","defaultValue":null,"template_id":null,"template_name":"title","template_version":"s6","components":{"slideSettings":{"type":"SlideSettings","id":"f_2a78c78a-e361-4dea-a28a-ba1f13de513c","defaultValue":false,"show_nav":false,"show_nav_multi_mode":null,"nameChanged":null,"hidden_section":null,"name":"Data Cowboys","sync_key":null,"layout_variation":"center-bottom-full","display_settings":{},"padding":{"top":"normal","bottom":"normal"},"layout_config":{"width":"auto","height":"auto","vertical_alignment":"middle"}},"background1":{"type":"Background","id":"f_0439e8ae-d386-47a4-ba7b-8a3c3940465d","defaultValue":false,"url":"!","textColor":"light","backgroundVariation":"","sizing":"cover","userClassName":null,"linkUrl":null,"linkTarget":null,"videoUrl":"","videoHtml":"","storageKey":"174108\/910830_433375","storage":"s","format":"png","h":5400,"w":5400,"s":4529085,"useImage":true,"noCompression":null,"focus":null,"backgroundColor":null},"text1":{"type":"RichText","id":"f_b316746e-8452-4373-bba3-f4b8e0fa310a","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003ch1 class=\" s-rich-text-wrapper font-size-tag-header-one s-text-font-size-over-40\" style=\"text-align: center; font-size: 48px;\"\u003e\u003cspan style=\"color: #ffffff;\"\u003eWe design AI models, data pipelines, and evaluation so you can deploy confidently.\u003c\/span\u003e\u003c\/h1\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"center","lastLineTextAlign":"center"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_c1fd7a1d-020d-41f2-b70b-36c597e09a9d","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\"\u003e10+ years delivering production ML (since 2014).\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null},"defaultDataProcessed":true},"block1":{"type":"BlockComponent","id":"35445bcb-957a-4ef0-a85c-f4ebf31a4191","defaultValue":null,"items":[{"type":"BlockComponentItem","id":"f_ccc5b5ba-ae00-4d8b-b069-f46459703aae","name":"rowBlock","components":{"block1":{"type":"BlockComponent","id":"f1c924dc-b557-46d3-8324-d632bb3d0206","items":[{"type":"BlockComponentItem","id":"9d965a17-315e-44e5-afc9-8135a8593a31","name":"columnBlock","components":{"block1":{"type":"BlockComponent","id":"f_5a8b9ef4-6364-4e55-ad5d-c9086ee7d152","items":[{"type":"BlockComponentItem","id":"f3e40222-c8e9-420e-b72d-92ce0b29c423","defaultValue":null,"name":"media","components":{"media1":{"type":"Media","id":"f_e9c53b1c-8970-454d-b878-ac086d4b8a70","defaultValue":null,"video":{"type":"Video","id":"f_eaf56e5c-2976-4aeb-8a12-9d7c869bd771","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_f3540fd4-8632-491e-bbc0-c3f1f09b4156","defaultValue":true,"link_url":null,"thumb_url":null,"url":"","caption":"","description":"","storageKey":null,"storage":null,"storagePrefix":null,"format":null,"h":null,"w":null,"s":null,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"current":"image"}}}],"inlineLayout":null}}}],"inlineLayout":"12"}}},{"type":"BlockComponentItem","id":"f_bb1b4c1e-fc26-4a77-acb1-3cdab9d64821","name":"rowBlock","components":{"block1":{"type":"BlockComponent","id":"2dafdbe5-521a-45fd-ae6f-8d7bbd90b565","items":[{"type":"BlockComponentItem","id":"80f497bf-950d-46ae-8380-1693921198e0","name":"columnBlock","components":{"block1":{"type":"BlockComponent","id":"f_76e60604-3505-4146-ad93-0a5111334d6e","items":[{"type":"BlockComponentItem","id":"bdb5df42-77f3-4e29-be96-ed6d93472026","defaultValue":null,"name":"title","components":{"text1":{"type":"RichText","id":"1c45425d-0620-4d51-8450-19061398a36a","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003ch1 class=\" s-rich-text-wrapper font-size-tag-header-one s-text-font-size-over-40 s-title s-font-title\" style=\"text-align: center; font-size: 48px;\"\u003e\u003cspan style=\"color: var(--s-pre-color10);\"\u003e\u003cstrong\u003eWe design AI models, data pipelines, and evaluation so you can deploy confidently.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h1\u003e\u003ch4 class=\" s-rich-text-wrapper s-subtitle\"\u003e\u003cspan style=\"color: var(--s-pre-color10);\"\u003e\u003cstrong\u003e10+ years delivering production ML (since 2014).\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h4\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"center","lastLineTextAlign":null},"defaultDataProcessed":true}}}],"inlineLayout":null}}}],"inlineLayout":"12"}}}],"inlineLayout":"1"}}},{"type":"Slide","id":"f_d1b33b17-4f8a-41ce-be85-cb8f82a7d323","defaultValue":null,"template_id":null,"template_name":"text","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_101eb165-a331-46ce-abec-b3da2c9e86d7","defaultValue":null,"show_nav":true,"show_nav_multi_mode":null,"nameChanged":true,"hidden_section":null,"name":"About","sync_key":null,"layout_variation":"box-one-text","display_settings":{},"padding":{},"layout_config":{}}}},{"type":"Slide","id":"f_68abbeff-13bf-4bfb-bc13-3f656603691b","defaultValue":null,"template_id":null,"template_name":"columns","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_8a6ae540-f5a8-4468-aeb7-f1c639022a03","defaultValue":false,"show_nav":true,"show_nav_multi_mode":true,"nameChanged":true,"hidden_section":null,"name":"Team","sync_key":null,"layout_variation":"col-three-text","display_settings":{},"padding":{},"layout_config":{"isNewMobileLayout":true}}}},{"type":"Slide","id":"f_9b0a1617-fc31-42b1-b5a1-0d9ac085c651","defaultValue":null,"template_id":null,"template_name":"rows","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_66e8835c-c23b-4fe1-8d75-b91eaa9bfed0","defaultValue":null,"show_nav":true,"show_nav_multi_mode":null,"nameChanged":true,"hidden_section":false,"name":"Testimonials","sync_key":null,"layout_variation":"col-two-text","display_settings":{},"padding":{},"layout_config":{"isNewMobileLayout":true}}}},{"type":"Slide","id":"f_3ffcc8f5-65b4-4765-9a9c-ddd0c524d58e","defaultValue":null,"template_id":null,"template_name":"blog","template_version":"beta-s6","components":{"slideSettings":{"type":"SlideSettings","id":"f_69e292a6-3ffc-427a-baeb-987161903eff","defaultValue":null,"show_nav":true,"show_nav_multi_mode":true,"nameChanged":true,"hidden_section":false,"name":"Blog","sync_key":null,"layout_variation":"one-smallCircle-long-none","display_settings":{},"padding":{"top":"normal","bottom":"normal"},"layout_config":{"customized":false,"snippetLength":"none","templateName":"F","imageShape":"square","imageAlignment":"left","structure":"tiled","textAlignment":"auto","imageSize":"m","columns":3}},"text1":{"type":"RichText","id":"f_9d2fa9f3-f4c9-48a3-94f8-94002e744df8","defaultValue":false,"value":"\u003ch2 class=\"s-title s-font-title\"\u003eBlog\u003c\/h2\u003e","backupValue":"","version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null}},"text2":{"type":"RichText","id":"f_cd32d4bf-e70c-4721-858b-a7c7249fa9c9","defaultValue":false,"value":"","backupValue":"","version":1},"background1":{"type":"Background","id":"f_ceef6eaf-6f13-4065-8009-9eeea341b6c6","defaultValue":false,"url":"","textColor":"","backgroundVariation":"","sizing":"","userClassName":"","linkUrl":null,"linkTarget":null,"videoUrl":"","videoHtml":"","storageKey":null,"storage":null,"format":null,"h":null,"w":null,"s":null,"useImage":false,"noCompression":null,"focus":null,"backgroundColor":{"themeColorRangeIndex":null,"value":"#f9f7f5","type":"custom","id":"f_9c05928a-1ae3-4596-b2b4-c752adad84fc"}},"blog1":{"type":"BlogCollectionComponent","id":40,"defaultValue":null,"app_instance_id":null,"app_id":null,"category":{"id":"all","name":"All Categories"}}}},{"type":"Slide","id":"f_86f6d7ed-3765-4aa2-844a-02cddf9f3b23","defaultValue":null,"template_id":null,"template_name":"title","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_566da130-1281-4393-bf65-abb2d781ccf1","defaultValue":null,"show_nav":true,"show_nav_multi_mode":true,"nameChanged":true,"hidden_section":null,"name":"Contact","sync_key":null,"layout_variation":"center-subTop-full","display_settings":{},"padding":{},"layout_config":{}}}}],"title":"Home","description":null,"uid":"77c9e0f9-c8df-4bef-b786-4638f0aaed73","path":"\/home","pageTitle":null,"pagePassword":null,"memberOnly":null,"paidMemberOnly":null,"buySpecificProductList":{},"specificTierList":{},"pwdPrompt":null,"autoPath":true,"authorized":true},{"type":"Page","id":"f_cbe77937-da0c-4d35-9cf4-a994db3e4bd4","defaultValue":null,"sections":[{"type":"Slide","id":"f_42817d6b-9bcf-4fdd-889e-bbef3a988109","defaultValue":null,"template_id":null,"template_name":"rows","template_version":null,"components":{"repeatable1":{"type":"Repeatable","id":"f_916ae5b6-6d0b-47d5-8e08-03a8fd31be3e","defaultValue":false,"list":[{"type":"RepeatableItem","id":"f_d9ba48b3-4845-4876-b92c-bb08912c727e","components":{"text3":{"type":"RichText","id":"f_ab19d203-8686-4f78-9436-f919baf3bb62","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eSergey is Head of AI at Alongside, a clinician-developed youth wellbeing coach that helps students navigate school stress, friend drama, and big emotions through brief, guided chats and skill-building plans. \u003c\/p\u003e\u003cp class=\" s-rich-text-wrapper\"\u003e\u003cspan style=\"display: inline-block\"\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eAs Head of AI, he leads the design of structured (non-companion) LLM coaching, including topic modules (40+), multilingual support, and safety systems that detect serious concerns and route alerts to human support via school protocols. \u003c\/p\u003e\u003cp class=\" s-rich-text-wrapper\"\u003e\u003cspan style=\"display: inline-block\"\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eAlongside reports measurable impact in partner settings (e.g., reductions in anxiety and suicidal ideation; attendance improvements) backed by external studies and evidence standards. \u003c\/p\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e\u003cspan style=\"display: inline-block\"\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eOngoing since: April, 2022.\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_d8f2818b-a60f-4fb7-931a-0f6550544444","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: \u003c\/strong\u003e\u003ca href=\"http:\/\/alongside.care\" data-type=\"undefined\" target=\"_blank\"\u003e\u003cstrong\u003eAlongside\u003c\/strong\u003e\u003c\/a\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text1":{"type":"RichText","id":"f_8e76553d-cdda-4053-b25a-af77e8e3bb14","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e\u003cstrong\u003eLLM Chatbots for Youth Well-Being\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_706edf58-3aae-4a0b-8281-13554d43ae50","defaultValue":null,"video":{"type":"Video","id":"f_247d3d8f-2419-4fe8-a58b-e1e45857fa1b","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_5fa881d1-ba9a-40dd-97d0-e03c7befb158","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/316474_918351","storage":"s","storagePrefix":null,"format":"png","h":417,"w":1522,"s":36445,"new_target":true,"noCompression":null,"cropMode":null,"focus":null},"current":"image"},"button1":{"type":"Button","id":"f_e787c140-686f-4f4f-a7e8-679436f1f13e","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_b6be4998-6998-4ac9-a489-b5c308b5e884","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_72363fdc-1373-4dd7-9f75-c3eab9058d8c","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eSergey is a Principal Research Scientist at Ai2, building production-grade AI systems for scientific discovery and knowledge access. His work sits at the intersection of information retrieval, entity resolution, and LLM\/RAG evaluation, powering tools used by Semantic Scholar (which indexes 200M+ papers) and Ai2\u2019s emerging Asta agent ecosystem.\u003c\/p\u003e\u003cul\u003e\u003cli class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eContributed to \u003ca href=\"https:\/\/allenai.org\/blog\/ai2-scholarqa\" data-type=\"undefined\" target=\"_blank\"\u003eAi2 ScholarQA\u003c\/a\u003e, an open RAG system for scientific QA and literature review with attribution; released as an \u003ca href=\"https:\/\/github.com\/allenai\/ai2-scholarqa-lib\" data-type=\"undefined\" target=\"_blank\"\u003eopen-source library\u003c\/a\u003e + \u003ca href=\"https:\/\/asta.allen.ai\/\" data-type=\"undefined\" target=\"_blank\"\u003eapp\u003c\/a\u003e. \u003c\/li\u003e\u003cli class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eLearning-to-rank search for large scholarly corpora. Overhauled Semantic Scholar\u2019s search reranker using real search logs and deployed it at scale; released the full reranker model and tooling as open-source (\u003ca href=\"https:\/\/github.com\/allenai\/s2search\/\" data-type=\"undefined\" target=\"_blank\"\u003es2search\u003c\/a\u003e) alongside a \u003ca href=\"https:\/\/medium.com\/ai2-blog\/building-a-better-search-engine-for-semantic-scholar-ea23a0b661e7\" data-type=\"undefined\" target=\"_blank\"\u003edetailed engineering \u201ctell-all.\u003c\/a\u003e\u201d\u003c\/li\u003e\u003cli class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eAuthor identity resolution (\u003ca href=\"https:\/\/arxiv.org\/abs\/2103.07534\" data-type=\"undefined\" target=\"_blank\"\u003eS2AND\u003c\/a\u003e). Co-developed the benchmark + production author disambiguation system used on Semantic Scholar; released \u003ca href=\"https:\/\/github.com\/allenai\/S2AND\/\" data-type=\"undefined\" target=\"_blank\"\u003ecode, datasets, and reference models\u003c\/a\u003e. \u003c\/li\u003e\u003cli class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eBuilt core components of a low-error paper clustering model (\u003ca href=\"https:\/\/github.com\/allenai\/S2APLER\/\" data-type=\"undefined\" target=\"_blank\"\u003eS2APLER\u003c\/a\u003e) intended for Semantic Scholar production workflows; open-sourced the dataset\/model. \u003c\/li\u003e\u003cli class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eCo-authored SPECTER (\u003ca href=\"https:\/\/arxiv.org\/abs\/2004.07180\" data-type=\"undefined\" target=\"_blank\"\u003eACL 2020\u003c\/a\u003e) and contributed to SPECTER2 (\u003ca href=\"http:\/\/SciRepEval:%20A%20Multi-Format%20Benchmark%20for%20Scientific%20Document%20Representations\" data-type=\"undefined\" target=\"_blank\"\u003eACL 2023\u003c\/a\u003e) and its multi-task evaluation ecosystem; models are \u003ca href=\"https:\/\/huggingface.co\/allenai\/specter2\" data-type=\"undefined\" target=\"_blank\"\u003epublicly released\u003c\/a\u003e. \u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003eA \u003ca href=\"https:\/\/jamanetwork.com\/journals\/jamanetworkopen\/fullarticle\/2737103\" data-type=\"\" target=\"_blank\"\u003epaper\u003c\/a\u003e about gender bias in clinical trial recruitment published in JAMA Network Open, along with \u003ca href=\"https:\/\/qz.com\/1657408\/why-are-women-still-underrepresented-in-clinical-research\/\" data-type=\"\" target=\"_blank\"\u003enews coverage\u003c\/a\u003e.\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003e\u003ca href=\"https:\/\/medium.com\/@sergeyfeldman\/the-association-between-early-arxiv-posting-and-citations-72034f0914b2\" data-type=\"\" target=\"_blank\"\u003eA blog post\u003c\/a\u003e and \u003ca href=\"https:\/\/www.semanticscholar.org\/paper\/Citation-Count-Analysis-for-Papers-with-Preprints-Feldman-Lo\/c9aef1d76799e24dd236889c0c7bacaa501a3b62\" data-type=\"\" target=\"_blank\"\u003epaper\u003c\/a\u003e about the association between posting your papers on ArXiV before review and subsequent citations.\u003c\/li\u003e\u003c\/ul\u003e\u003cp style=\"text-align: left;\"\u003e \u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eOngoing since: March, 2016.\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_12ca08a5-b28d-4585-9900-68133c4fa004","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: \u003c\/strong\u003e\u003ca href=\"https:\/\/research.semanticscholar.org\" data-type=\"\" target=\"_blank\"\u003e\u003cstrong\u003eAllen Institute of Artificial Intelligence, Semantic Scholar\u003c\/strong\u003e\u003c\/a\u003e\u003cstrong\u003e and \u003c\/strong\u003e\u003ca href=\"https:\/\/asta.allen.ai\/\" data-type=\"undefined\" target=\"_blank\"\u003e\u003cstrong\u003eAsta\u003c\/strong\u003e\u003c\/a\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text1":{"type":"RichText","id":"f_b775061b-e61f-4d77-ae10-5d06e35b634a","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp\u003e\u003cstrong\u003eAI For Scientists\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_834f8cee-3985-47ea-b13c-b7ce4d461048","defaultValue":null,"video":{"type":"Video","id":"f_eea79864-ff0e-4dad-b838-99d6591b404e","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_2fc59dc7-7b12-4b5b-9d7b-e58ea8124ec8","defaultValue":false,"link_url":"https:\/\/github.com\/allenai\/citeomatic","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/116991_596022","storage":"s","storagePrefix":null,"format":"png","h":879,"w":2771,"s":48077,"new_target":true,"noCompression":null,"cropMode":null,"focus":null},"current":"image"},"button1":{"type":"Button","id":"f_5b82cb03-b1c7-4413-9af9-02009892560f","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_bdc1a714-76ee-4d41-948d-da6a316b65d0","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_e4d29c44-287e-4b2d-92ee-f95f59e7a177","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eThe Healthy Birth, Growth, and Development (HBGD) program was launched in 2013 by the Gates Foundation.\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e \u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eThe Knowledge Integration (Ki) initiative aims facilitates collaboration between researchers, quantitative experts, and policy makers in fields related to HBGD. The broad goal is to aggregate data from past longitudinal studies about pathways and risk factors that affect birth, growth, and neurocognitive development in order to better predict Ki outcomes.\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e \u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eSergey worked closely with Ki leadership - designing and overseeing data science contests; managing external collaborations with academic research labs and software companies; and modeling many diverse global health datasets (an example is described \u003ca href=\"https:\/\/www.kiglobalhealth.org\/case-studies\/evaluating-the-feasibility-of-using-algorithms-to-stratify-pregnancy-risk\/\" data-type=\"\" target=\"_blank\"\u003ehere\u003c\/a\u003e).\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_6cc39d79-1a7a-4874-9b9f-46e5ab826768","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: \u003c\/strong\u003e\u003ca href=\"http:\/\/hbgdki.org\/\" data-type=\"\" target=\"_blank\"\u003e\u003cstrong\u003eThe Gates Foundation\u003c\/strong\u003e\u003c\/a\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text1":{"type":"RichText","id":"f_f6fc3501-944d-485e-b981-ac8e9cf27474","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eMachine Learning Strategy Consulting\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_2f31d35b-1e68-438d-b2f5-c57d28dc7a70","defaultValue":false,"video":{"type":"Video","id":"f_eea79864-ff0e-4dad-b838-99d6591b404e","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_2fc59dc7-7b12-4b5b-9d7b-e58ea8124ec8","defaultValue":false,"link_url":"https:\/\/kiglobalhealth.org\/","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/637153_67847","storage":"s","storagePrefix":null,"format":"png","h":632,"w":1796,"s":40412,"new_target":true,"noCompression":null,"cropMode":null,"focus":null},"current":"image"},"button1":{"type":"Button","id":"f_df04434a-6387-44b5-a4f8-f32c7af26dd9","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_f5eae955-a4c7-4218-9134-d2e0cebb8cc9","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_d34047e9-3be9-47ff-b5e8-15c1b1532773","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003eWe contribute to the Python data science ecosystem.\u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eNotably, Sergey co-wrote the imputation package \u003ca href=\"https:\/\/github.com\/iskandr\/fancyimpute\" data-type=\"\" target=\"_blank\"\u003efancyimpute\u003c\/a\u003e, and merged \u003ca href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.impute.IterativeImputer.html\" data-type=\"\" target=\"_blank\"\u003eIterativeImputer\u003c\/a\u003e into the machine learning uber-library scikit-learn. Some other packages we've worked on:\u003c\/p\u003e\u003cul\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/allenai\/S2AND\/\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/allenai\/s2_fos\/\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/allenai\/specter\/\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/allenai\/scidocs\/\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/allenai\/s2search\/\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/sergeyf\/SmallDataBenchmarks\/\u003c\/li\u003e\u003cli style=\"text-align: left;\"\u003ehttps:\/\/github.com\/allenai\/citeomatic\/\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_a04c25b8-882b-4c5e-bbdd-233cee97d74a","defaultValue":false,"value":"\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: Everyone\u003c\/strong\u003e\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"}},"text1":{"type":"RichText","id":"f_8ef2499e-1d89-4de2-893b-3f0b0dac3ec1","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eOpen Source Contributions\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_d71fe057-47e0-4920-866f-342da7035ecd","defaultValue":false,"video":{"type":"Video","id":"f_eea79864-ff0e-4dad-b838-99d6591b404e","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_2fc59dc7-7b12-4b5b-9d7b-e58ea8124ec8","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/654579_364680","storage":"s","storagePrefix":null,"format":"png","h":200,"w":200,"s":9412,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"current":"image"},"button1":{"type":"Button","id":"f_51163551-8fd1-4aff-a6c0-cc25a9f6422d","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_4f8d4459-2b09-42ff-a085-66eeaa512da3","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_f14f2a47-f12f-4942-93a4-e93fb91cf04f","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e \u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eActively Learn makes a reading tool that enables teachers to guide, monitor, and improve student learning. With our help, they wrote and were awarded an \u003ca href=\"https:\/\/www.research.gov\/research-portal\/appmanager\/base\/desktop;jsessionid=LpRXVc0T5WCN5cWJWMvkT6HL52kypwKccBZGCQDt7QGPmn3PQlTF!-745634694!1239949331?_nfpb=true\u0026amp;_windowLabel=rsrRecentAwards_2\u0026amp;wsrp-urlType=blockingAction\u0026amp;wsrp-url=\u0026amp;wsrp-requiresRewrite=\u0026amp;wsrp-navigationalState=eJyLL07OL0i1Tc-JT0rMUYNQtgBZ6Af8\u0026amp;wsrp-interactionState=wlprsrRecentAwards_2_action%3DviewRsrDetail%26wlprsrRecentAwards_2_fedAwrdId%3D1534790\u0026amp;wsrp-mode=wsrp%3Aview\u0026amp;wsrp-windowState=\" data-type=\"\" target=\"_blank\"\u003eNSF SBIR grant\u003c\/a\u003e to answer the key question: \"How can we personalize reading instruction so as to increase comprehension \u0026amp; learning?\" We are diving deep into the data with sophisticated machine learning tools, and bringing back testable hypotheses about what helps and hinders students.\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_17eb06b2-628e-4610-90c3-4bfe0280afa4","defaultValue":false,"value":"\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: \u003ca target=\"_blank\" href=\"http:\/\/www.activelylearn.com\/\"\u003eActively Learn\u003c\/a\u003e \u003c\/strong\u003e\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"}},"text1":{"type":"RichText","id":"f_bb00411a-80fb-4839-8607-431d2b0dafd0","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eImproving Reading Comprehension\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_96ece3f7-4527-469a-af7f-951722b5205e","defaultValue":false,"video":{"type":"Video","id":"f_87bd6357-cb61-4888-8e39-41f2a571888b","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_88a34a04-6a19-452c-bb24-540b11df969e","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/actively_learn_2_tvds7b","storage":"c","storagePrefix":null,"format":"png","h":720,"w":720,"s":22906,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"current":"image"},"button1":{"type":"Button","id":"f_8090c8ef-1b23-460a-a8a1-b462ab13c93d","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_4a0a3520-57b2-46f3-8f13-a807d6317f07","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_7204c36a-95eb-41cf-9e07-dd61e5727fbb","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u0026nbsp;\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eJenny Dearborn, Chief Learning Officer and Senior Vice President at SAP, has written \u003ca href=\"http:\/\/www.wiley.com\/WileyCDA\/WileyTitle\/productCd-1119043123.html\" data-type=\"\" target=\"_blank\"\u003eData Driven\u003c\/a\u003e, a \"practical guide to increasing sales success, using the power of data analytics,\" and \u003ca href=\"http:\/\/www.wiley.com\/WileyCDA\/WileyTitle\/productCd-1119382203.html\" data-type=\"\" target=\"_blank\"\u003eThe Data Driven Leader\u003c\/a\u003e (with David Swanson), \"a clear, accessible guide to solving important leadership challenges through human resources-focused and other data analytics.\"\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u0026nbsp;\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eWe helped her and her team come up with clear and compelling ways to communicate the deep mathematical models that are at the core of the book, as well as contributed to the plot and characterizations.\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text2":{"type":"RichText","id":"f_6b55f81b-f60b-4c8e-8c1e-f71a8e785a66","defaultValue":false,"value":"\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003e\u003cstrong\u003eFor\u003c\/strong\u003e: \u003ca target=\"_blank\" href=\"http:\/\/jennydearborn.com\/\"\u003eJenny Dearborn\u003c\/a\u003e \u003c\/strong\u003e\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"}},"text1":{"type":"RichText","id":"f_9231dfad-bb97-4d6d-a9a8-c73935866821","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eContributing to Technical Books\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_ca6b1514-9f8b-4b5a-94ce-9883bc2742bc","defaultValue":false,"video":{"type":"Video","id":"f_60f73773-7591-4b94-bbf2-1e9bb14c173d","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_9a39eea1-abe4-4c56-970b-b8406710a1d4","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/data_driven_books_hsbtil","storage":"c","storagePrefix":null,"format":"jpg","h":331,"w":428,"s":44543,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"current":"image"},"button1":{"type":"Button","id":"f_44517dde-82fa-4666-a9de-34df6e0fbf02","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_4159182e-fbaf-4c29-8fb0-eabc020fda04","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_f5ac93b3-096f-4fae-a094-2310d369836b","defaultValue":false,"value":"\u003cp style=\"text-align: left;\"\u003e\u00a0\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eLong Tail NLP-Based Recommendations\u003c\/strong\u003e. Most e-commerce recommendation engines have difficulty highlighting less frequently bought products, which is an issue that compounds itself and ends up recommending the same popular products over and over. We developed a language-based model for RichRelevance that identifies good recommendations based on comparisons of the product descriptions and description metadata rather than purchase data. This evens the playing field between newer products and the old standbys, so the recommendations have more variety and are generally more applicable.\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u00a0\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eBayesian A\/B Testing. \u003c\/strong\u003eRichRelevance swears by their top-notch recommendations. But what's the right way to measure their efficacy? Sergey put together an intuitive, comprehensive Bayesian A\/B testing system that works for any KPI, and can provide direct answers to key customer questions like \"What is the probability that algorithm A has at least 5% lift over algorithm B?\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u00a0\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eRead all about this work in Sergey's three (archived) blog posts: \u003ca title=\"Bayesian A\/B Tests\" target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20160117035128\/http:\/\/engineering.richrelevance.com:80\/bayesian-ab-tests\/\"\u003e[1]\u003c\/a\u003e, \u003ca title=\"Bayesian Analysis of Normal Distributions with Python\" target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20160304040821\/http:\/\/engineering.richrelevance.com\/bayesian-analysis-of-normal-distributions-with-python\/\"\u003e[2]\u003c\/a\u003e, and \u003ca title=\"Bayesian A\/B Testing with a Log-Normal Model\" target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20160304034523\/http:\/\/engineering.richrelevance.com\/bayesian-ab-testing-with-a-log-normal-model\/\"\u003e[3]\u003c\/a\u003e.\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u00a0\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eBandits for Online Recommendations.\u003c\/strong\u003e The most important piece of RichRelevance's impressive big data pipeline is their core recommendation system. It serves thousands of recommendations every minute, and it has to learn quickly from new data. Working with their analytics team, Sergey engineered a modern bandit-based approach to online recommendations that learns from less data, adapts easily to any optimization metric, and does not compromise quality at production-scale.\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003e\u00a0\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eThree (now archived) blog posts describe the results of our research: \u003ca target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20161226125829\/http:\/\/engineering.richrelevance.com\/bandits-recommendation-systems\/\"\u003e[1]\u003c\/a\u003e, \u003ca target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20161226123730\/http:\/\/engineering.richrelevance.com\/recommendations-thompson-sampling\/\"\u003e[2]\u003c\/a\u003e, and \u003ca target=\"_blank\" href=\"https:\/\/web.archive.org\/web\/20161226121822\/http:\/\/engineering.richrelevance.com\/personalization-contextual-bandits\/\"\u003e[3]\u003c\/a\u003e.\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"}},"text2":{"type":"RichText","id":"f_b721cbd1-4d96-4db0-a383-40b23bb18b54","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: \u003c\/strong\u003e\u003ca href=\"http:\/\/www.richrelevance.com\/\" data-type=\"\" target=\"_blank\"\u003e\u003cstrong\u003eRichRelevance\u003c\/strong\u003e\u003c\/a\u003e\u003cstrong\u003e \u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"text1":{"type":"RichText","id":"f_c647854c-d234-4b3a-a4f3-18bceefb70ab","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp class=\" s-rich-text-wrapper\" style=\"text-align: left;\"\u003e\u003cstrong\u003eRecommendation Systems\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_ff39c258-7096-4562-99d2-5e48f0f179d1","defaultValue":null,"video":{"type":"Video","id":"f_247d3d8f-2419-4fe8-a58b-e1e45857fa1b","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_5fa881d1-ba9a-40dd-97d0-e03c7befb158","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/rr_cyj3oa","storage":"c","storagePrefix":null,"format":"png","h":720,"w":720,"s":22703,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"current":"image"},"button1":{"type":"Button","id":"f_c50f41fa-d36d-4223-a570-b67272fd1633","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}},{"type":"RepeatableItem","id":"f_562073b0-8955-420f-8382-69d79009d32e","defaultValue":null,"components":{"text3":{"type":"RichText","id":"f_cba5ab95-6af4-4571-955b-0dd33390fcef","defaultValue":false,"value":"\u003cp style=\"text-align: left;\"\u003e\u00a0\u003c\/p\u003e\u003cp style=\"text-align: left;\"\u003eSeattle Against Slavery mobilizes the community in the fight against labor and sex trafficking through education, advocacy, and collaboration with local and national partners. We are proud to provide them with analytics and statistics services on a volunteer basis.\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"}},"text2":{"type":"RichText","id":"f_857f12c7-09c7-4fca-978d-6fe22ae84305","defaultValue":false,"value":"\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003eFor: \u003ca href=\"https:\/\/www.seattleagainstslavery.org\/\"\u003eSeattle Against Slavery\u003c\/a\u003e\u003c\/strong\u003e\u003c\/p\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"}},"text1":{"type":"RichText","id":"f_1efff26d-0616-46d1-bb59-59cc986b58a1","defaultValue":false,"value":"\u003cdiv class=\"s-rich-text-wrapper\" style=\"display: block; \"\u003e\u003cp style=\"text-align: left;\"\u003e\u003cstrong\u003ePro Bono Data Science\u003c\/strong\u003e\u003c\/p\u003e\u003c\/div\u003e","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":"left","lastLineTextAlign":"left"},"defaultDataProcessed":true},"media1":{"type":"Media","id":"f_6efd3354-bc13-41eb-a67e-6b372a1f904b","defaultValue":null,"video":{"type":"Video","id":"f_247d3d8f-2419-4fe8-a58b-e1e45857fa1b","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_5fa881d1-ba9a-40dd-97d0-e03c7befb158","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/403477_481105","storage":"s","storagePrefix":null,"format":"png","h":3686,"w":4000,"s":517273,"new_target":true,"noCompression":null,"cropMode":null,"focus":null},"current":"image"},"button1":{"type":"Button","id":"f_1373f375-fece-46d4-a912-258765ef3ee6","defaultValue":false,"alignment":"","text":"","link_type":null,"page_id":null,"section_id":null,"url":"","new_target":null,"version":"2"}}}],"components":{"text3":{"type":"RichText","id":"f_7594b743-4d42-4d19-bfb9-978d40ab7755","defaultValue":null,"value":"Ixtapa, Mexico\u003cbr\u003eOpportunity Collaboration brings together nonprofit leaders, social entrepreneurs, and social investors to move together towards poverty alleviation. With Kip's help, Opportunity Collaboration's Facebook reach grew by up to 700 percent.","backupValue":null,"version":null},"text2":{"type":"RichText","id":"f_37ab4311-d044-4ffa-9c97-43621d24a27d","defaultValue":null,"value":"\u003cstrong\u003eMission: Social Change Leaders + Conversations + Beaches\u003c\/strong\u003e","backupValue":null,"version":null},"text1":{"type":"RichText","id":"f_b8d2779a-bff0-4fd2-ac4e-8d9ebcb826b8","defaultValue":null,"value":"Opportunity Collaboration","backupValue":null,"version":null},"media1":{"type":"Media","id":"f_85a102b5-9f37-4305-83ff-5097d8fcef09","defaultValue":null,"video":{"type":"Video","id":"f_d2076034-9ec2-4a50-a463-eec119f51007","defaultValue":null,"html":"","url":"","thumbnail_url":null,"maxwidth":700,"description":null},"image":{"type":"Image","id":"f_ffe437c3-89ef-46f9-9eff-960cf6b16d10","defaultValue":true,"link_url":"","thumb_url":"","url":"\/assets\/themes\/fresh\/logo3.png","caption":"","description":"","storageKey":null,"storage":null,"storagePrefix":null,"format":null,"h":null,"w":null,"s":null,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"current":"image"}}},"text2":{"type":"RichText","id":"f_c0dc7a0a-c5b7-42a7-a21c-29a311725c6e","defaultValue":false,"alignment":null,"value":"","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null}},"text1":{"type":"RichText","id":"f_35d9a22f-35b6-405c-aa9d-f420b8abb0fe","defaultValue":false,"value":"","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null},"defaultDataProcessed":true},"background1":{"type":"Background","id":"f_496ba060-8080-4645-81f0-eb8c01abb560","defaultValue":false,"url":"","textColor":"","backgroundVariation":null,"sizing":"","userClassName":"","linkUrl":null,"linkTarget":null,"videoUrl":null,"videoHtml":"","storageKey":null,"storage":null,"format":null,"h":null,"w":null,"s":null,"useImage":false,"noCompression":null,"focus":null,"backgroundColor":{"themeColorRangeIndex":null,"value":"#f9f7f5","type":"custom","id":"f_77997cee-d29e-47f6-8aab-280d9c0c9e49"}},"slideSettings":{"type":"SlideSettings","id":"f_83d4d5e3-ad9f-4f11-96af-dbb587e03b55","defaultValue":false,"show_nav":true,"show_nav_multi_mode":null,"nameChanged":true,"hidden_section":null,"name":"Work","sync_key":null,"layout_variation":"row-small-text-left","display_settings":{},"padding":{"top":"normal","bottom":"normal"},"layout_config":{"isNewMobileLayout":true}}}},{"type":"Slide","id":"f_4a843bb2-9432-469c-8c0c-0e160da07f1c","defaultValue":null,"template_id":null,"template_name":"rows","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_fca3220e-6232-4526-8de9-4cc37294917f","defaultValue":null,"show_nav":true,"show_nav_multi_mode":false,"nameChanged":true,"hidden_section":false,"name":"Partnerships","sync_key":null,"layout_variation":"row-small-text-left","display_settings":{},"padding":{"top":"normal","bottom":"normal"},"layout_config":{"isNewMobileLayout":true}}}},{"type":"Slide","id":"f_091ff14d-a651-42cb-8aa6-392cc903cf63","defaultValue":null,"template_id":null,"template_name":"text","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_82999dd2-eca1-4b36-833c-85d21f022927","defaultValue":null,"show_nav":false,"show_nav_multi_mode":true,"nameChanged":true,"hidden_section":null,"name":"Publications","sync_key":null,"layout_variation":"text-one-text","display_settings":{},"padding":{"top":"normal","bottom":"normal"},"layout_config":{}}}},{"type":"Slide","id":"f_ebdb3ae5-4ddd-43d0-add6-10d6249ccb79","defaultValue":null,"template_id":null,"template_name":"title","template_version":null,"components":{"slideSettings":{"type":"SlideSettings","id":"f_c2db69d9-8a0a-4723-bcb9-2cabec53c0ce","defaultValue":null,"show_nav":true,"show_nav_multi_mode":false,"nameChanged":true,"hidden_section":null,"name":"Contact","sync_key":null,"layout_variation":"center-subTop-full","display_settings":{},"padding":{},"layout_config":{}}}}],"title":"Work","description":"Data Cowboys is a data science and machine learning consulting cooperative, owned and run by professional consultants. We excel at using machine learning, AI, data science, and statistics tools to generate custom, practical solutions to complex real-world problems.","uid":"05ddcb0c-fc84-4b7e-b7df-5ef959b95299","path":"\/work","pageTitle":"Data Cowboys - Work","pagePassword":null,"memberOnly":null,"paidMemberOnly":null,"buySpecificProductList":{},"specificTierList":{},"pwdPrompt":null,"autoPath":true,"authorized":true}],"menu":{"type":"Menu","id":"f_261c075b-965c-4ecd-8a4b-9ae9990e059d","defaultValue":null,"template_name":"navbar","logo":null,"components":{"button1":{"type":"Button","id":"f_549fa287-e758-469d-b3ae-00fa679f4c30","defaultValue":false,"alignment":"","text":"Email Us","link_type":"Email","page_id":null,"section_id":null,"url":"mailto:ilya@data-cowboys.com","new_target":null,"version":"2"},"text2":{"type":"RichText","id":"f_c2ba5401-f651-43ad-b6a7-f62bdb65be7d","defaultValue":null,"value":"Subtitle Text","backupValue":null,"version":null},"text1":{"type":"RichText","id":"f_27a88b5f-c981-430a-b7c2-278145209c3a","defaultValue":false,"value":"","backupValue":null,"version":1,"lineAlignment":{"firstLineTextAlign":null,"lastLineTextAlign":null},"defaultDataProcessed":true},"image2":{"type":"Image","id":"f_5142bdd9-647f-42c2-ac7d-9b89487c8b80","defaultValue":null,"link_url":"#1","thumb_url":"\/assets\/icons\/transparent.png","url":"\/assets\/icons\/transparent.png","caption":"","description":"","storageKey":null,"storage":null,"storagePrefix":null,"format":null,"h":null,"w":null,"s":null,"new_target":true,"noCompression":null,"cropMode":null,"focus":{}},"image1":{"type":"Image","id":"f_29a158b6-f31c-4020-bd0e-52f3a9344926","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/440429_913037","storage":"s","storagePrefix":null,"format":"png","border_radius":null,"aspect_ratio":null,"h":600,"w":1430,"s":468575,"new_target":true,"noCompression":null,"cropMode":null,"focus":null},"background1":{"type":"Background","id":"f_a6d372ab-8812-4408-8260-53cdaaecf3f0","defaultValue":null,"url":"https:\/\/uploads.strikinglycdn.com\/static\/backgrounds\/striking-pack-2\/28.jpg","textColor":"light","backgroundVariation":"","sizing":"cover","userClassName":null,"linkUrl":null,"linkTarget":null,"videoUrl":"","videoHtml":"","storageKey":null,"storage":null,"format":null,"h":null,"w":null,"s":null,"useImage":null,"noCompression":null,"focus":{},"backgroundColor":{}},"image3":{"type":"Image","id":"bd66d97d-14cf-4fed-a9c3-7b6f20bdde81","defaultValue":false,"link_url":"","thumb_url":"!","url":"!","caption":"","description":"","storageKey":"174108\/440429_913037","storage":"s","storagePrefix":null,"format":"png","border_radius":null,"aspect_ratio":null,"h":600,"w":1430,"s":468575,"new_target":true,"noCompression":null,"cropMode":null,"focus":null}}},"footer":{"type":"Footer","id":"f_269821f4-206d-4b81-874f-5bc794ddf928","defaultValue":null,"socialMedia":{"type":"SocialMediaList","id":"f_4347ccc4-02e2-44a1-b00f-e2ce02e182d1","defaultValue":null,"link_list":[{"type":"Facebook","id":"f_d802bbe5-6891-4692-934a-92adcd956498","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":null,"app_id":138736959550286},{"type":"Twitter","id":"f_1af2283e-2014-4dd6-a620-f5afbb3003a1","defaultValue":null,"url":"","link_url":"","share_text":"Saw an awesome one pager. Check it out #strikingly","show_button":null},{"type":"GPlus","id":"f_ab9d6ea6-2905-480f-a19a-bbbf3448d66a","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":null}],"button_list":[{"type":"Facebook","id":"f_c8682a32-ae3d-4166-aac9-e88a288fff8d","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":false,"app_id":138736959550286},{"type":"Twitter","id":"f_e290c403-39a2-4871-b3a3-b464bb212afe","defaultValue":null,"url":"","link_url":"","share_text":"Saw an awesome one pager. Check it out @strikingly","show_button":false},{"type":"GPlus","id":"f_f13824e5-af29-476e-95f0-f7130e19edf8","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":false},{"type":"LinkedIn","id":"f_53e266d2-3f6e-4f11-9031-ee849e94259e","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":false}],"list_type":null},"copyright":{"type":"RichText","id":"f_d871c121-20b6-40c1-91d3-b46662fd0f54","defaultValue":null,"value":"\u003cdiv\u003e\u00a9\u00a02014\u003c\/div\u003e","backupValue":null,"version":null},"components":{"copyright":{"type":"RichText","id":"f_06443c13-7f62-450d-85b2-da111b90c536","defaultValue":null,"value":"\u003cdiv\u003e\u00a9\u00a02014\u003c\/div\u003e","backupValue":null,"version":null},"socialMedia":{"type":"SocialMediaList","id":"f_1f1fd053-deaa-44a5-84ad-dd9a0fa1d8a3","defaultValue":null,"link_list":[{"type":"Facebook","id":"f_04d1015d-f6a4-4bb0-8685-02648b7a0308","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":null,"app_id":138736959550286},{"type":"Twitter","id":"f_3fa9ce02-aeca-476f-8361-ecc93a2ab544","defaultValue":null,"url":"","link_url":"","share_text":"Saw an awesome one pager. Check it out #strikingly","show_button":null},{"type":"GPlus","id":"f_7d8af652-1f0f-4a04-8306-1b25bae5740d","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":null}],"button_list":[{"type":"Facebook","id":"f_d6eb4361-dae0-4037-b0e9-582383bbcfba","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":false,"app_id":138736959550286},{"type":"Twitter","id":"f_57df9480-db0e-4616-bee8-2e5c011cd4bf","defaultValue":null,"url":"","link_url":"","share_text":"Saw an awesome one pager. Check it out @strikingly","show_button":false},{"type":"GPlus","id":"f_c05e275e-6b8b-4493-a2d8-e54b064c80b0","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":false},{"type":"LinkedIn","id":"f_89ea920e-4de1-45af-a3c1-ad7ba9fcbaba","defaultValue":null,"url":"","link_url":"","share_text":"Data Cowboys, LLC is a Data Science \u0026 Machine Learning consultancy staffed by experienced PhDs, working out of Seattle and San Francisco.","show_button":false}],"list_type":null},"background1":{"type":"Background","id":"f_e627c278-e5da-4d32-a365-766349c8a8dc","defaultValue":true,"url":"","textColor":"light","backgroundVariation":"","sizing":"cover","videoUrl":"","videoHtml":"","useSameBg":true,"backgroundApplySettings":{}}},"layout_variation":null,"padding":{}},"submenu":{"type":"SubMenu","id":"f_84887124-c210-4990-b7e9-912d37c514d0","defaultValue":null,"list":[],"components":{"link":{"type":"Button","id":"f_3638681d-7e19-45fc-9e8b-f154ef131daa","defaultValue":null,"text":"Facebook","link_type":null,"page_id":null,"section_id":null,"url":"http:\/\/www.facebook.com","new_target":true}}},"customColors":{"type":"CustomColors","id":"f_d35970ff-fab0-4cef-a27f-e8b4bf8cae86","defaultValue":null,"active":true,"highlight1":"#f2b134","highlight2":null,"lastClearHl1":null,"lastClearHl2":"#d97706"},"animations":{"type":"Animations","id":"f_1e864d09-1899-4c92-98b3-d7c80ca2377e","defaultValue":null,"page_scroll":"none","background":"none","image_link_hover":"none"},"s5Theme":{"type":"Theme","id":"f_247e5d2c-d437-4993-a487-1c633cb2e339","defaultValue":null,"version":"11","nav":{"type":"NavTheme","id":"f_a7eefaef-c78a-4fe1-925d-f515062961c4","defaultValue":null,"name":"circleIcon","layout":"f","padding":"small","sidebarWidth":"medium","topContentWidth":"full","horizontalContentAlignment":"center","verticalContentAlignment":"middle","fontSize":"medium","backgroundColor1":"#ffffff","highlightColor":"#f2b036","presetColorName":"whiteMinimal","itemColor":"#000000","itemSpacing":"normal","dropShadow":"small","socialMediaListType":"link","isTransparent":false,"isSticky":true,"keptOldLayout":false,"showSocialMedia":false,"highlight":{"blockBackgroundColor":"#f2b036","blockTextColor":"#000000","blockBackgroundColorSettings":{"id":"194663d2-a09e-402b-961d-cfd6ad5c0f99","default":"#f2b036","preIndex":null,"type":"default"},"blockTextColorSettings":{"id":"e425bbe1-6408-484c-bfda-9a313be9e929","default":"#000000","preIndex":null,"type":"default"},"blockShape":"pill","textColor":"#f2b036","textColorSettings":{"id":"9d3a681d-45eb-4cf6-809d-59991d3fc598","default":"#f2b036","preIndex":null,"type":"default"},"type":"underline","id":"f_68dfd963-9083-4438-88c2-d2a8a804b8b4"},"border":{"enable":false,"borderColor":"#000","position":"bottom","thickness":"small","borderColorSettings":{"preIndex":null,"type":"custom","default":"#ffffff","id":"f_8ea8e862-1991-42e8-b943-d640bd7ea2f2"}},"layoutsVersionStatus":{"a":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"},"b":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"},"g":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"},"e":{"status":"done","from":"v1","to":"v2","currentVersion":"v2"}},"socialMedia":[],"socialMediaButtonList":[{"type":"Facebook","id":"a8d01728-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false},{"type":"Twitter","id":"a8d01729-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false},{"type":"LinkedIn","id":"a8d0172a-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false},{"type":"Pinterest","id":"a8d03e30-e47d-11f0-8a7d-d7cc903ea455","url":"","link_url":"","share_text":"","show_button":false}],"socialMediaContactList":[{"type":"SocialMediaPhone","id":"a8d03e33-e47d-11f0-8a7d-d7cc903ea455","defaultValue":"","className":"fas fa-phone-alt"},{"type":"SocialMediaEmail","id":"a8d03e34-e47d-11f0-8a7d-d7cc903ea455","defaultValue":"","className":"fas fa-envelope"}],"backgroundColorSettings":{"id":"47a8cdac-b64d-4e7e-9b45-80abcdf6602e","default":"#ffffff","preIndex":null,"type":"default"},"highlightColorSettings":{"id":"7f824b80-2661-4f72-8c7f-eda8df8f6944","default":"#f2b036","preIndex":null,"type":"default"},"itemColorSettings":{"id":"d2f2d711-73d2-4009-bc36-f51c60fc7c92","default":"#000000","preIndex":null,"type":"default"}},"section":{"type":"SectionTheme","id":"f_4fc6197e-5182-4a82-a157-ca9ae223252b","defaultValue":null,"padding":"normal","contentWidth":"normal","contentAlignment":"center","baseFontSize":17,"titleFontSize":36,"subtitleFontSize":null,"itemTitleFontSize":null,"itemSubtitleFontSize":null,"textHighlightColor":null,"baseColor":"","titleColor":"","subtitleColor":"#f2b134","itemTitleColor":"","itemSubtitleColor":"#f2b134","textHighlightSelection":{"type":"TextHighlightSelection","id":"f_804ed909-da2e-4606-9d8d-df346e5bbc2c","defaultValue":null,"title":false,"subtitle":true,"itemTitle":false,"itemSubtitle":true},"base":{"preIndex":null,"type":"default","default":"#50555c","id":"f_82ef0e17-1f6b-447a-917c-70db64859740"},"title":{"preIndex":null,"type":"default","default":"#1D2023","id":"f_5e1547fe-a243-4fb8-a83d-e6927c7d2d85"},"subtitle":{"preIndex":null,"type":"default","default":"#f2b134","id":"f_7ac11fef-260c-4ef2-a574-4b342fe150b4"},"itemTitle":{"preIndex":null,"type":"default","default":"#1D2023","id":"f_3ce5ebe4-ed13-49b0-92d3-8af9f4348370"},"itemSubtitle":{"preIndex":null,"type":"default","default":"#f2b134","id":"f_e476cb98-82b3-4c4f-a7bd-bccd19962834"}},"firstSection":{"type":"FirstSectionTheme","id":"f_db90f220-e55e-4a61-8251-f8e855dc7278","defaultValue":null,"height":"normal","shape":"none"},"button":{"type":"ButtonTheme","id":"f_78383a89-ed4d-4cda-9d68-f5c72825706d","defaultValue":null,"backgroundColor":"#f2b134","shape":"square","fill":"solid","backgroundSettings":{"preIndex":null,"type":"default","default":"#f2b134","id":"f_d7acfed7-654d-4f80-b156-be66e48dea70"}}},"navigation":{"items":[{"type":"page","id":"77c9e0f9-c8df-4bef-b786-4638f0aaed73","visibility":true},{"id":"05ddcb0c-fc84-4b7e-b7df-5ef959b95299","type":"page","visibility":true}],"links":[]},"migrateFeatures":{"migratedRtlFeatureListE":true,"migratedRtlBlogImageAlignment":true,"migratedRtlSlider":true}}};$S.siteData={"terms_text":null,"privacy_policy_text":null,"show_terms_and_conditions":false,"show_privacy_policy":false,"gdpr_html":null,"live_chat":false};$S.stores={"fonts_v2":[{"name":"titillium web","fontType":"google","displayName":"Titillium","cssValue":"\"titillium web\", titillium, helvetica","settings":{"weight":"300,700,300italic,700italic"},"hidden":false,"cssFallback":"sans-serif","disableBody":null,"isSuggested":true},{"name":"source sans pro","fontType":"google","displayName":"Source Sans","cssValue":"\"source sans pro\", helvetica","settings":{"weight":"300,400,600,700,300italic,400italic,600italic,700italic"},"hidden":false,"cssFallback":"sans-serif","disableBody":null,"isSuggested":true},{"name":"montserrat","fontType":"google","displayName":"Montserrat","cssValue":"montserrat, helvetica","settings":{"weight":"400,700"},"hidden":false,"cssFallback":"sans-serif","disableBody":null,"isSuggested":true}],"features":{"allFeatures":[{"name":"ecommerce_shipping_region","canBeUsed":true,"hidden":false},{"name":"ecommerce_taxes","canBeUsed":true,"hidden":false},{"name":"ecommerce_category","canBeUsed":true,"hidden":false},{"name":"product_page","canBeUsed":true,"hidden":false},{"name":"ecommerce_free_shipping","canBeUsed":true,"hidden":false},{"name":"ecommerce_custom_product_url","canBeUsed":true,"hidden":false},{"name":"ecommerce_coupon","canBeUsed":true,"hidden":false},{"name":"ecommerce_checkout_form","canBeUsed":true,"hidden":false},{"name":"mobile_actions","canBeUsed":true,"hidden":false},{"name":"ecommerce_layout","canBeUsed":true,"hidden":false},{"name":"portfolio_layout","canBeUsed":true,"hidden":false},{"name":"analytics","canBeUsed":true,"hidden":false},{"name":"fb_image","canBeUsed":true,"hidden":false},{"name":"twitter_card","canBeUsed":true,"hidden":false},{"name":"favicon","canBeUsed":true,"hidden":false},{"name":"style_panel","canBeUsed":true,"hidden":false},{"name":"google_analytics","canBeUsed":true,"hidden":false},{"name":"blog_custom_url","canBeUsed":true,"hidden":false},{"name":"page_collaboration","canBeUsed":true,"hidden":false},{"name":"bookings","canBeUsed":true,"hidden":false},{"name":"membership","canBeUsed":true,"hidden":false},{"name":"social_feed_facebook_page","canBeUsed":true,"hidden":false},{"name":"portfolio_category","canBeUsed":true,"hidden":false},{"name":"premium_templates","canBeUsed":true,"hidden":false},{"name":"custom_domain","canBeUsed":true,"hidden":false},{"name":"premium_support","canBeUsed":true,"hidden":false},{"name":"remove_branding_title","canBeUsed":true,"hidden":false},{"name":"full_analytics","canBeUsed":true,"hidden":false},{"name":"ecommerce_layout","canBeUsed":true,"hidden":false},{"name":"portfolio_layout","canBeUsed":true,"hidden":false},{"name":"ecommerce_digital_download","canBeUsed":true,"hidden":false},{"name":"disable_captcha","canBeUsed":true,"hidden":false},{"name":"password_protection","canBeUsed":true,"hidden":false},{"name":"remove_logo","canBeUsed":true,"hidden":false},{"name":"optimizely","canBeUsed":true,"hidden":false},{"name":"custom_code","canBeUsed":true,"hidden":false},{"name":"blog_custom_code","canBeUsed":true,"hidden":false},{"name":"premium_assets","canBeUsed":true,"hidden":false},{"name":"premium_apps","canBeUsed":true,"hidden":false},{"name":"premium_sections","canBeUsed":true,"hidden":false},{"name":"blog_mailchimp_integration","canBeUsed":true,"hidden":false},{"name":"multiple_page","canBeUsed":true,"hidden":false},{"name":"ecommerce_layout","canBeUsed":true,"hidden":false},{"name":"portfolio_layout","canBeUsed":true,"hidden":false},{"name":"facebook_pixel","canBeUsed":true,"hidden":false},{"name":"blog_category","canBeUsed":true,"hidden":false},{"name":"custom_font","canBeUsed":true,"hidden":false},{"name":"blog_post_amp","canBeUsed":true,"hidden":false},{"name":"site_search","canBeUsed":true,"hidden":false},{"name":"portfolio_category","canBeUsed":true,"hidden":false},{"name":"popup","canBeUsed":true,"hidden":false},{"name":"custom_form","canBeUsed":true,"hidden":false},{"name":"portfolio_custom_product_url","canBeUsed":true,"hidden":false},{"name":"email_automation","canBeUsed":true,"hidden":false},{"name":"blog_password_protection","canBeUsed":true,"hidden":false},{"name":"custom_ads","canBeUsed":true,"hidden":false},{"name":"portfolio_form_custom_fields","canBeUsed":true,"hidden":false},{"name":"live_chat","canBeUsed":false,"hidden":false},{"name":"auto_translation","canBeUsed":false,"hidden":false},{"name":"membership_tier","canBeUsed":false,"hidden":false},{"name":"redirect_options","canBeUsed":false,"hidden":false},{"name":"portfolio_region_options","canBeUsed":false,"hidden":false},{"name":"require_contact_info_view_portfolio","canBeUsed":false,"hidden":false},{"name":"ecommerce_product_add_on_categories","canBeUsed":false,"hidden":false}]},"showStatic":{"footerLogoSeoData":{"anchor_link":"https:\/\/www.strikingly.com\/?ref=logo\u0026permalink=data-cowboys\u0026custom_domain=www.data-cowboys.com\u0026utm_campaign=footer_pbs\u0026utm_content=https%3A%2F%2Fwww.data-cowboys.com%2F\u0026utm_medium=user_page\u0026utm_source=174108\u0026utm_term=pbs_b","anchor_text":"Make a website"},"isEditMode":false},"ecommerceProductCollection":null,"ecommerceProductOrderList":{},"ecommerceCategoryCollection":null,"hasEcommerceProducts":false,"portfolioCategoryCollection":null,"hasPortfolioProducts":false,"blogCategoryCollection":{},"hasBlogs":true};$S.liveBlog=true;
Return to site

Which Machine Learning Classifiers are Best for Small Datasets?

An Empirical Study

Although "big data" and "deep learning" are dominant, my own work at the Gates Foundation involves a lot of small (but expensive) datasets, where the number of rows (subjects, samples) is between 100 and 1000. For example, detailed measurements throughout a pregnancy and subsequent neonatal outcomes from pregnant women. A lot of my collaborative investigations involve fitting machine learning models to small datasets like these, and it's not clear what best practices are in this case.

Along with my own experience, there is some informal wisdom floating around the ML community. Folk wisdom makes me wary and I wanted to do something more systematic. I took the following approach:

  1. Get a lot of small classification benchmark datasets. I used a subset of this prepackaged repo. The final total was 108 datasets. (To do: also run regression benchmarks using this nice dataset library.)
  2. Select some reasonably representative ML classifiers: linear SVM, Logistic Regression, Random Forest, LightGBM (ensemble of gradient boosted decision trees), AugoGluon (fancy automl mega-ensemble).
  3. Set up sensible hyperparameter spaces.
  4. Run every classifier on every dataset via nested cross-validation.
  5. Plot results.

All the code and results are here: https://github.com/sergeyf/SmallDataBenchmarks

Feel free to add your own algorithms.

Let's look at the results. The metric of interest is weighted one-vs-all area under the ROC curve, averaged over the outer folds.

Section image

Some observations:

  • AutoGluon is best overall, but it has some catastrophic failures (AUROC < 0.5) that Logistic Regression does not and LightGBM has fewer of.
  • You can't tell from this particular plot, but AutoGluon needs "enough" time. It has a budget parameter which tells it how much time to spend improving the fancy ensemble. Five minutes per fold was the minimum that worked well - this adds up to 108 datasets * 4 outer folds * 300s = 1.5 days for the entire benchmark.
  • Linear SVC is better than Logistic Regression on average. There are also two datasets where SVC is 0.3 and 0.1 AUROC better than every other model. It's worth keeping in the toolbox.
  • Logistic Regression needs the "elasticnet" regularizer to ensure it doesn't have the kind of awful generalization failures that you see with AutoGluon and Random Forest.
  • LightGBM is second best. I used hyperopt to find good hyperparameters. I also tried scikit-optimize and Optuna, but they didn't work as well. User error is possible.
  • Random Forest is pretty good, and much easier/faster to optimize than LightGBM and AutoGluon. I only cross-validated a single parameter for it (depth).

Here are counts of datasets where each algorithm wins or is within 0.5% of winning AUROC (out of 108):

  • AutoGluon (sec=300): 71
  • LightGBM (n_hyperparams=50): 43
  • LightGBM (n_hyperparams=25): 41
  • Random Forest: 32
  • Logistic Regression: 28
  • SVC: 23

And average AUROC across all datasets:

  • AutoGluon (sec=300): 0.885
  • LightGBM (n_hyperparams=50): 0.876
  • LightGBM (n_hyperparams=25): 0.873
  • Random Forest: 0.870
  • SVC: 0.841
  • Logistic Regression: 0.835

And counts where each algorithm does the worst or is within 0.5% of the worst AUROC: 

  • Logistic Regression: 54
  • SVC: 48
  • Random Forest: 25
  • LightGBM (n_hyperparams=25): 19
  • LightGBM (n_hyperparams=50): 18
  • AutoGluon (sec=300): 14

Which shows that even the smart ensemble can still fail 10% of the time. Not a single free lunch to be eaten anywhere.

Here is a plot of average (over folds) AUROC vs number of samples:

Section image

I was surprised when I saw this plot the first time. The collective wisdom that I've ingested is something like: "don't bother using complex models for tiny data." But this doesn't seem true for these 108 datasets. Even at the low end, AutoGluon works very well, and LightGBM/Random Forest handily beat out the two linear models. There's an odd peak in the model where the linear models suddenly do better - I don't think it's meaningful.

The last plot - standard deviation of AUROC across outer folds:

Section image

Linear models don't just generalize worse regardless of dataset size - they also have higher generalization variance. Note the one strange SVC outlier. Another SVC mystery...

IID Thoughts

How applicable are these experiments? Both levels of the nested cross-validation used class-stratified random splits. So the splits were IID: independent and identically distributed. The test data looked like the validation data which looked like the training data. This is both unrealistic and precisely how most peer-reviewed publications evaluate when they try out machine learning. (At least the good ones.) In some cases, there is actual covariate-shifted "test" data available. It's possible that LightGBM is better than linear models for IID data regardless of its size, but this is no longer true if the test set is from some related but different distribution than the training set. I can't experiment very easily in this scenario: "standard" benchmark datasets are readily available, but realistic pairs of training and covariate-shifted test sets are not.

Conclusions & Caveats

So what can we conclude?

  • If you only care about the IID setting or only have access to a single dataset, non-linear models are likely to be superior even if you only have 50 samples.
  • AutoGluon is a great way to get an upper bound on performance, but it's much harder to understand the final complex ensemble than, say, LightGBM where you can plot the SHAP values.
  • hyperopt is old and has some warts but works better than the alternatives that I've tried. I'm going to stick with it.
  • SVC can in rare cases completely dominate all other algorithms.

Caveats:

  • LightGBM has a lot of excellent bells and whistles that were not at all used here: native missing value handling (we had none), smarter encoding of categorical variables (I used one-hot encoding for the sake of uniformity/fairness), per-feature monotonic constraints (need to have prior knowledge).
  • AutoGluon includes a tabular neural network in its ensemble, but I haven't run benchmarks on it in isolation. It would be interesting to find out if modern tabular neural network architectures can work out-of-the-box for small datasets.
  • This is just classification. Regression might have different outcomes.

Again, check out the code and feel free to add new scripts with other algorithms. It shouldn't be too hard. https://github.com/sergeyf/SmallDataBenchmarks

, '
Return to site

Which Machine Learning Classifiers are Best for Small Datasets?

An Empirical Study

Although "big data" and "deep learning" are dominant, my own work at the Gates Foundation involves a lot of small (but expensive) datasets, where the number of rows (subjects, samples) is between 100 and 1000. For example, detailed measurements throughout a pregnancy and subsequent neonatal outcomes from pregnant women. A lot of my collaborative investigations involve fitting machine learning models to small datasets like these, and it's not clear what best practices are in this case.

Along with my own experience, there is some informal wisdom floating around the ML community. Folk wisdom makes me wary and I wanted to do something more systematic. I took the following approach:

  1. Get a lot of small classification benchmark datasets. I used a subset of this prepackaged repo. The final total was 108 datasets. (To do: also run regression benchmarks using this nice dataset library.)
  2. Select some reasonably representative ML classifiers: linear SVM, Logistic Regression, Random Forest, LightGBM (ensemble of gradient boosted decision trees), AugoGluon (fancy automl mega-ensemble).
  3. Set up sensible hyperparameter spaces.
  4. Run every classifier on every dataset via nested cross-validation.
  5. Plot results.

All the code and results are here: https://github.com/sergeyf/SmallDataBenchmarks

Feel free to add your own algorithms.

Let's look at the results. The metric of interest is weighted one-vs-all area under the ROC curve, averaged over the outer folds.

Section image

Some observations:

  • AutoGluon is best overall, but it has some catastrophic failures (AUROC < 0.5) that Logistic Regression does not and LightGBM has fewer of.
  • You can't tell from this particular plot, but AutoGluon needs "enough" time. It has a budget parameter which tells it how much time to spend improving the fancy ensemble. Five minutes per fold was the minimum that worked well - this adds up to 108 datasets * 4 outer folds * 300s = 1.5 days for the entire benchmark.
  • Linear SVC is better than Logistic Regression on average. There are also two datasets where SVC is 0.3 and 0.1 AUROC better than every other model. It's worth keeping in the toolbox.
  • Logistic Regression needs the "elasticnet" regularizer to ensure it doesn't have the kind of awful generalization failures that you see with AutoGluon and Random Forest.
  • LightGBM is second best. I used hyperopt to find good hyperparameters. I also tried scikit-optimize and Optuna, but they didn't work as well. User error is possible.
  • Random Forest is pretty good, and much easier/faster to optimize than LightGBM and AutoGluon. I only cross-validated a single parameter for it (depth).

Here are counts of datasets where each algorithm wins or is within 0.5% of winning AUROC (out of 108):

  • AutoGluon (sec=300): 71
  • LightGBM (n_hyperparams=50): 43
  • LightGBM (n_hyperparams=25): 41
  • Random Forest: 32
  • Logistic Regression: 28
  • SVC: 23

And average AUROC across all datasets:

  • AutoGluon (sec=300): 0.885
  • LightGBM (n_hyperparams=50): 0.876
  • LightGBM (n_hyperparams=25): 0.873
  • Random Forest: 0.870
  • SVC: 0.841
  • Logistic Regression: 0.835

And counts where each algorithm does the worst or is within 0.5% of the worst AUROC: 

  • Logistic Regression: 54
  • SVC: 48
  • Random Forest: 25
  • LightGBM (n_hyperparams=25): 19
  • LightGBM (n_hyperparams=50): 18
  • AutoGluon (sec=300): 14

Which shows that even the smart ensemble can still fail 10% of the time. Not a single free lunch to be eaten anywhere.

Here is a plot of average (over folds) AUROC vs number of samples:

Section image

I was surprised when I saw this plot the first time. The collective wisdom that I've ingested is something like: "don't bother using complex models for tiny data." But this doesn't seem true for these 108 datasets. Even at the low end, AutoGluon works very well, and LightGBM/Random Forest handily beat out the two linear models. There's an odd peak in the model where the linear models suddenly do better - I don't think it's meaningful.

The last plot - standard deviation of AUROC across outer folds:

Section image

Linear models don't just generalize worse regardless of dataset size - they also have higher generalization variance. Note the one strange SVC outlier. Another SVC mystery...

IID Thoughts

How applicable are these experiments? Both levels of the nested cross-validation used class-stratified random splits. So the splits were IID: independent and identically distributed. The test data looked like the validation data which looked like the training data. This is both unrealistic and precisely how most peer-reviewed publications evaluate when they try out machine learning. (At least the good ones.) In some cases, there is actual covariate-shifted "test" data available. It's possible that LightGBM is better than linear models for IID data regardless of its size, but this is no longer true if the test set is from some related but different distribution than the training set. I can't experiment very easily in this scenario: "standard" benchmark datasets are readily available, but realistic pairs of training and covariate-shifted test sets are not.

Conclusions & Caveats

So what can we conclude?

  • If you only care about the IID setting or only have access to a single dataset, non-linear models are likely to be superior even if you only have 50 samples.
  • AutoGluon is a great way to get an upper bound on performance, but it's much harder to understand the final complex ensemble than, say, LightGBM where you can plot the SHAP values.
  • hyperopt is old and has some warts but works better than the alternatives that I've tried. I'm going to stick with it.
  • SVC can in rare cases completely dominate all other algorithms.

Caveats:

  • LightGBM has a lot of excellent bells and whistles that were not at all used here: native missing value handling (we had none), smarter encoding of categorical variables (I used one-hot encoding for the sake of uniformity/fairness), per-feature monotonic constraints (need to have prior knowledge).
  • AutoGluon includes a tabular neural network in its ensemble, but I haven't run benchmarks on it in isolation. It would be interesting to find out if modern tabular neural network architectures can work out-of-the-box for small datasets.
  • This is just classification. Regression might have different outcomes.

Again, check out the code and feel free to add new scripts with other algorithms. It shouldn't be too hard. https://github.com/sergeyf/SmallDataBenchmarks

], ['\\(', '\\)']], processEscapes: true }, startup: { ready: function() { MathJax.startup.defaultReady(); // Re-typeset on SPA navigation if (typeof _strk !== 'undefined') { _strk.push(["Page.didMount", function() { setTimeout(function() { MathJax.typesetPromise(); if (window.PR) PR.prettyPrint(); }, 100); }]); } } } };
Return to site

Which Machine Learning Classifiers are Best for Small Datasets?

An Empirical Study

Although "big data" and "deep learning" are dominant, my own work at the Gates Foundation involves a lot of small (but expensive) datasets, where the number of rows (subjects, samples) is between 100 and 1000. For example, detailed measurements throughout a pregnancy and subsequent neonatal outcomes from pregnant women. A lot of my collaborative investigations involve fitting machine learning models to small datasets like these, and it's not clear what best practices are in this case.

Along with my own experience, there is some informal wisdom floating around the ML community. Folk wisdom makes me wary and I wanted to do something more systematic. I took the following approach:

  1. Get a lot of small classification benchmark datasets. I used a subset of this prepackaged repo. The final total was 108 datasets. (To do: also run regression benchmarks using this nice dataset library.)
  2. Select some reasonably representative ML classifiers: linear SVM, Logistic Regression, Random Forest, LightGBM (ensemble of gradient boosted decision trees), AugoGluon (fancy automl mega-ensemble).
  3. Set up sensible hyperparameter spaces.
  4. Run every classifier on every dataset via nested cross-validation.
  5. Plot results.

All the code and results are here: https://github.com/sergeyf/SmallDataBenchmarks

Feel free to add your own algorithms.

Let's look at the results. The metric of interest is weighted one-vs-all area under the ROC curve, averaged over the outer folds.

Section image

Some observations:

  • AutoGluon is best overall, but it has some catastrophic failures (AUROC < 0.5) that Logistic Regression does not and LightGBM has fewer of.
  • You can't tell from this particular plot, but AutoGluon needs "enough" time. It has a budget parameter which tells it how much time to spend improving the fancy ensemble. Five minutes per fold was the minimum that worked well - this adds up to 108 datasets * 4 outer folds * 300s = 1.5 days for the entire benchmark.
  • Linear SVC is better than Logistic Regression on average. There are also two datasets where SVC is 0.3 and 0.1 AUROC better than every other model. It's worth keeping in the toolbox.
  • Logistic Regression needs the "elasticnet" regularizer to ensure it doesn't have the kind of awful generalization failures that you see with AutoGluon and Random Forest.
  • LightGBM is second best. I used hyperopt to find good hyperparameters. I also tried scikit-optimize and Optuna, but they didn't work as well. User error is possible.
  • Random Forest is pretty good, and much easier/faster to optimize than LightGBM and AutoGluon. I only cross-validated a single parameter for it (depth).

Here are counts of datasets where each algorithm wins or is within 0.5% of winning AUROC (out of 108):

  • AutoGluon (sec=300): 71
  • LightGBM (n_hyperparams=50): 43
  • LightGBM (n_hyperparams=25): 41
  • Random Forest: 32
  • Logistic Regression: 28
  • SVC: 23

And average AUROC across all datasets:

  • AutoGluon (sec=300): 0.885
  • LightGBM (n_hyperparams=50): 0.876
  • LightGBM (n_hyperparams=25): 0.873
  • Random Forest: 0.870
  • SVC: 0.841
  • Logistic Regression: 0.835

And counts where each algorithm does the worst or is within 0.5% of the worst AUROC: 

  • Logistic Regression: 54
  • SVC: 48
  • Random Forest: 25
  • LightGBM (n_hyperparams=25): 19
  • LightGBM (n_hyperparams=50): 18
  • AutoGluon (sec=300): 14

Which shows that even the smart ensemble can still fail 10% of the time. Not a single free lunch to be eaten anywhere.

Here is a plot of average (over folds) AUROC vs number of samples:

Section image

I was surprised when I saw this plot the first time. The collective wisdom that I've ingested is something like: "don't bother using complex models for tiny data." But this doesn't seem true for these 108 datasets. Even at the low end, AutoGluon works very well, and LightGBM/Random Forest handily beat out the two linear models. There's an odd peak in the model where the linear models suddenly do better - I don't think it's meaningful.

The last plot - standard deviation of AUROC across outer folds:

Section image

Linear models don't just generalize worse regardless of dataset size - they also have higher generalization variance. Note the one strange SVC outlier. Another SVC mystery...

IID Thoughts

How applicable are these experiments? Both levels of the nested cross-validation used class-stratified random splits. So the splits were IID: independent and identically distributed. The test data looked like the validation data which looked like the training data. This is both unrealistic and precisely how most peer-reviewed publications evaluate when they try out machine learning. (At least the good ones.) In some cases, there is actual covariate-shifted "test" data available. It's possible that LightGBM is better than linear models for IID data regardless of its size, but this is no longer true if the test set is from some related but different distribution than the training set. I can't experiment very easily in this scenario: "standard" benchmark datasets are readily available, but realistic pairs of training and covariate-shifted test sets are not.

Conclusions & Caveats

So what can we conclude?

  • If you only care about the IID setting or only have access to a single dataset, non-linear models are likely to be superior even if you only have 50 samples.
  • AutoGluon is a great way to get an upper bound on performance, but it's much harder to understand the final complex ensemble than, say, LightGBM where you can plot the SHAP values.
  • hyperopt is old and has some warts but works better than the alternatives that I've tried. I'm going to stick with it.
  • SVC can in rare cases completely dominate all other algorithms.

Caveats:

  • LightGBM has a lot of excellent bells and whistles that were not at all used here: native missing value handling (we had none), smarter encoding of categorical variables (I used one-hot encoding for the sake of uniformity/fairness), per-feature monotonic constraints (need to have prior knowledge).
  • AutoGluon includes a tabular neural network in its ensemble, but I haven't run benchmarks on it in isolation. It would be interesting to find out if modern tabular neural network architectures can work out-of-the-box for small datasets.
  • This is just classification. Regression might have different outcomes.

Again, check out the code and feel free to add new scripts with other algorithms. It shouldn't be too hard. https://github.com/sergeyf/SmallDataBenchmarks