Skip to content
This repository has been archived by the owner on Jun 22, 2022. It is now read-only.

Dev sklearn preprocess #157

Merged
merged 46 commits into from
Jul 26, 2018
Merged

Conversation

kstrzala
Copy link

@kstrzala kstrzala commented Jul 25, 2018

Major issues

-cleaning in sklearn models: move normalization/fillna/one_hot into sklearn_preprocess block
-stacking_normalization block for log_reg stacking

Minor issues

-parameter udpate

jakubczakon and others added 30 commits July 4, 2018 09:45
* Dynamic features

* Smart features (minerva-ml#61)

* Update README.md

* Update README.md

* Update

* Smart features update

* More descriptive transformer name

* Reading all data in main

* More application features

* Transformer for cleaning

* Multiinput data dictionary

* Fix (minerva-ml#63)

* fixed configs

* dropped redundand steps, moved stuff to cleaning, refactored groupby (minerva-ml#64)

* dropped redundand steps, moved stuff to cleanining, refactored groupby

* restructured, added stacking + CV

* Fix format string

* Update pipeline_manager.py

clipped prediction -> prediction

* added stratified kfold option (minerva-ml#77)

* Update config (minerva-ml#79)

* dropped redundand steps, moved stuff to cleanining, refactored groupby

* restructured, added stacking + CV

* Update pipeline_config.py

* Dev review (minerva-ml#81)

* dropped feature by type split, refactored pipleine_config

* dropped feature by type split method

* explored application features

* trash

* reverted refactor of aggs

* fixed/updated bureau features

* cleared notebooks

* agg features added to notebook bureau

* credit card cleaned

* added other feature notebooks

* added rank mean

* updated model arch

* reverted to old params

* fixed rank mean calculations

* ApplicationCleaning update (minerva-ml#84)

* Cleaning - application

* Clear output in notebook

* clenaed names in steps, refactored mergeaggregate transformer, changed caching/saving specs (minerva-ml#85)

* local trash

* External sources notebook (minerva-ml#86)

* Update

* External sources notebook

* Dev lgbm params (minerva-ml#88)

* local trash

* updated configs

* dropped comment

* updated lgb params

* Dev app agg fix (minerva-ml#90)

* dropped app_aggs

* app agg features fixed

* cleaned leftovers

* dropped fast read-in for debug

* External_sources statistics (minerva-ml#89)

* Speed-up ext_src notebook

* exernal_sources statistics

* Weighted mean and notebook fix

* application notebook update

* clear notebook output

* Fix auto submission (minerva-ml#95)

* CreditCardBalance monthly diff mean

* POSCASH remaining installments

* POSCASH completed_contracts

* notebook update

* Resolve conflicts

* Fix

* Update neptune.yaml

* Update neptune_random_search.yaml

* Split static and dynamic features - credit card balance
* added nan_count

* added nan count with parameter
* added simple features, parallel groupby, last-installment features

* refactored last_installment features

* added features for the very last installment
* added dynamic-trend features

* formated configs

* added skew/iqr features
* added number of credit agreement change features

* reverted sample size
* previous_application handcrafted features

* previous application cleaning

* Update neptune.yaml

* code improvement

* Update notebook
* refactored aggs to calculate only once per training, sped up installment and credit card (only single index groupby)

* sped up all hand crafted

* fixed bureau worker errors

* fixed isntallment names

* fixed isntallment names

* fixed bureau and prev_app naming bugs

* reverted to vectorized where possible

* updated hyperparams

* updated early stopping params to meet convergence

* reverted to old fallback neptune file

* updated paths

* updated paths, explored prev-app features
* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Features - family - test

* Features - family - aggregate

* Features - family - aggregate 2

* Features - family - aggregate 3

* Features - family - aggregate 4

* Update pipeline_config.py
…#129)

* new previous application features

* Data cleaning

* update application notebook

* credit card cleaning

* Data cleaning - groupby agg

* Include suggested changes
* new previous application features

* Data cleaning

* update application notebook

* credit card cleaning

* Data cleaning - groupby agg

* Include suggested changes

* Fix
* added fraction features to eda and feature extraction, updated configs

* updated hyperparams
* age/employment dummies (minerva-ml#104)

* added diff features

* New handcrafted features (minerva-ml#102)

* Dynamic features

* Smart features (minerva-ml#61)

* Update README.md

* Update README.md

* Update

* Smart features update

* More descriptive transformer name

* Reading all data in main

* More application features

* Transformer for cleaning

* Multiinput data dictionary

* Fix (minerva-ml#63)

* fixed configs

* dropped redundand steps, moved stuff to cleaning, refactored groupby (minerva-ml#64)

* dropped redundand steps, moved stuff to cleanining, refactored groupby

* restructured, added stacking + CV

* Fix format string

* Update pipeline_manager.py

clipped prediction -> prediction

* added stratified kfold option (minerva-ml#77)

* Update config (minerva-ml#79)

* dropped redundand steps, moved stuff to cleanining, refactored groupby

* restructured, added stacking + CV

* Update pipeline_config.py

* Dev review (minerva-ml#81)

* dropped feature by type split, refactored pipleine_config

* dropped feature by type split method

* explored application features

* trash

* reverted refactor of aggs

* fixed/updated bureau features

* cleared notebooks

* agg features added to notebook bureau

* credit card cleaned

* added other feature notebooks

* added rank mean

* updated model arch

* reverted to old params

* fixed rank mean calculations

* ApplicationCleaning update (minerva-ml#84)

* Cleaning - application

* Clear output in notebook

* clenaed names in steps, refactored mergeaggregate transformer, changed caching/saving specs (minerva-ml#85)

* local trash

* External sources notebook (minerva-ml#86)

* Update

* External sources notebook

* Dev lgbm params (minerva-ml#88)

* local trash

* updated configs

* dropped comment

* updated lgb params

* Dev app agg fix (minerva-ml#90)

* dropped app_aggs

* app agg features fixed

* cleaned leftovers

* dropped fast read-in for debug

* External_sources statistics (minerva-ml#89)

* Speed-up ext_src notebook

* exernal_sources statistics

* Weighted mean and notebook fix

* application notebook update

* clear notebook output

* Fix auto submission (minerva-ml#95)

* CreditCardBalance monthly diff mean

* POSCASH remaining installments

* POSCASH completed_contracts

* notebook update

* Resolve conflicts

* Fix

* Update neptune.yaml

* Update neptune_random_search.yaml

* Split static and dynamic features - credit card balance

* Dev nan count (minerva-ml#105)

* added nan_count

* added nan count with parameter

* Dev fe installments (minerva-ml#106)

* added simple features, parallel groupby, last-installment features

* refactored last_installment features

* added features for the very last installment

* Dev fe instalments dynamic (minerva-ml#107)

* added dynamic-trend features

* formated configs

* added skew/iqr features

* added number of credit agreement change features (minerva-ml#109)

* added number of credit agreement change features

* reverted sample size

* Dynamic features - previous application (minerva-ml#108)

* previous_application handcrafted features

* previous application cleaning

* Update neptune.yaml

* code improvement

* Update notebook

* Notebook - feature importance (minerva-ml#112)

* Dev speed up (minerva-ml#111)

* refactored aggs to calculate only once per training, sped up installment and credit card (only single index groupby)

* sped up all hand crafted

* fixed bureau worker errors

* fixed isntallment names

* fixed isntallment names

* fixed bureau and prev_app naming bugs

* reverted to vectorized where possible

* updated hyperparams

* updated early stopping params to meet convergence

* reverted to old fallback neptune file

* updated paths

* updated paths, explored prev-app features

* dropped duplicated agg

* POS_CASH added features

* POS CASH features added

* POS_CASH_balance feature cleaning

* Yaml adjustment

* Path change
'<' instead of '>'
'<' instead of '>'
* application agg cleaning

* update neptune.yaml
@kstrzala kstrzala requested a review from pknut July 25, 2018 13:37
**kwargs):
config, model_params, rs_config = full_config
model_name = '{}{}'.format(clf_name, suffix)
model_params = getattr(config, clf_name)
Copy link
Contributor

Choose a reason for hiding this comment

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

@kstrzala Why not simply go with config[clf_name] and config.random_search[clf_name] ?

Copy link
Author

Choose a reason for hiding this comment

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

Because then you loose AttrDict behaviour (sad but true) and code fixing it would probably be similarly complex.

Copy link
Contributor

Choose a reason for hiding this comment

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

ok, fair

PersistResults(**rs_config.callbacks.persist_results)]
)
features_train, features_valid = features
if getattr(config.random_search, clf_name).n_runs:
Copy link
Contributor

Choose a reason for hiding this comment

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

@kstrzala since we have already fetched the random_search_params lets just use random_search_params.n_runs

experiment_directory=config.pipeline.experiment_directory,
**kwargs
)
return sklearn_preprocess, sklearn_preprocess_valid
Copy link
Contributor

Choose a reason for hiding this comment

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

@kstrzala I believe it is cleaner to have if else rather just if here.

@@ -470,6 +532,51 @@ def stacking_features(config, train_mode, suffix, **kwargs):
return feature_combiner


def stacking_normalization(features, config, train_mode, suffix, **kwargs):
Copy link
Contributor

Choose a reason for hiding this comment

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

@kstrzala Since we are working on predictions at this point I am wondering which (if any) normalization strategy should one choose. I guess for our problem normalized rank could be a better choice than normalizing the predictions. What do you think?

@@ -410,6 +410,7 @@ def _read_data(dev_mode, read_train=True, read_test=False):
on='SK_ID_BUREAU', how='right')
if dev_mode:
Copy link
Contributor

Choose a reason for hiding this comment

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

@kstrzala I don't understand what it does since we've loaded only nrows from bureau anyways via .read_csv(...nrows)

src/pipelines.py Outdated
@@ -99,9 +106,6 @@ def xgboost(config, train_mode, suffix=''):


def sklearn_main(config, ClassifierClass, clf_name, train_mode, suffix='', normalize=False):
Copy link
Contributor

Choose a reason for hiding this comment

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

@kstrzala let's just call it sklearn_pipeline or sklearn_classifier or something along those lines. sklearn_main could mean a lot of things

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

Successfully merging this pull request may close these issues.

4 participants