{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import cudf\nimport cupy\nimport pandas as pd\nfrom sklearn.model_selection import StratifiedKFold\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import roc_auc_score\nfrom catboost import CatBoost\nfrom catboost import Pool\nimport numpy as np\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom catboost import CatBoostClassifier\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-06-14T01:34:36.962453Z","iopub.execute_input":"2022-06-14T01:34:36.963991Z","iopub.status.idle":"2022-06-14T01:34:41.216917Z","shell.execute_reply.started":"2022-06-14T01:34:36.963584Z","shell.execute_reply":"2022-06-14T01:34:41.216029Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def reduce_mem_usage(df):\n    \"\"\" iterate through all the columns of a dataframe and modify the data type\n        to reduce memory usage.\n    \"\"\"\n    start_mem = df.memory_usage().sum() / 1024**2\n    print('Memory usage of dataframe is {:.2f} MB'.format(start_mem))\n\n    for col in df.columns:\n        col_type = df[col].dtype.name\n\n        if col_type not in ['object', 'category', 'datetime64[ns, UTC]']:\n            c_min = df[col].min()\n            c_max = df[col].max()\n            if str(col_type)[:3] == 'int':\n                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n                    df[col] = df[col].astype(np.int16)\n                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n                    df[col] = df[col].astype(np.int16)\n                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n                    df[col] = df[col].astype(np.int32)\n                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:\n                    df[col] = df[col].astype(np.int64)  \n            else:\n                if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:\n                    df[col] = df[col].astype(np.float16)\n                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n                    df[col] = df[col].astype(np.float32)\n                else:\n                    df[col] = df[col].astype(np.float64)\n\n    end_mem = df.memory_usage().sum() / 1024**2\n    print('Memory usage after optimization is: {:.2f} MB'.format(end_mem))\n    print('Decreased by {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem))\n\n    return df","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:34:41.218551Z","iopub.execute_input":"2022-06-14T01:34:41.218910Z","iopub.status.idle":"2022-06-14T01:34:41.235511Z","shell.execute_reply.started":"2022-06-14T01:34:41.218871Z","shell.execute_reply":"2022-06-14T01:34:41.234611Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_adversarial_data(df_train, df_test, cols, N_val=70000):\n    adversarial_val = df_train[cols].append(df_test[cols], ignore_index=True).sample(N_val, replace=False)\n    adversarial_train = df_train[cols].append(df_test[cols], ignore_index=True)[\n        ~df_train[cols].append(df_test[cols], ignore_index=True).index.isin(adversarial_val.index)\n    ]\n    del df_train\n    del df_test\n    return adversarial_train, adversarial_val","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:34:41.236954Z","iopub.execute_input":"2022-06-14T01:34:41.237358Z","iopub.status.idle":"2022-06-14T01:34:41.247487Z","shell.execute_reply.started":"2022-06-14T01:34:41.237320Z","shell.execute_reply":"2022-06-14T01:34:41.246683Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"This work inspired me to create this notebook - https://www.kaggle.com/code/zakopur0/adversarial-validation-private-vs-public/notebook","metadata":{}},{"cell_type":"markdown","source":"## This notebook is an extension of the notebooks: https://www.kaggle.com/code/mikhaildonskoy/looking-for-risky-features-in-train-data, https://www.kaggle.com/code/mikhaildonskoy/looking-for-risky-features-in-first-rows","metadata":{}},{"cell_type":"markdown","source":"## In this work, I want to find out which features differ the most on the test and training dataset, which can lead to overfitting \n## Unlike my previous work, I will look for risky features in aggregated data.","metadata":{}},{"cell_type":"markdown","source":"# Data preparation","metadata":{}},{"cell_type":"code","source":"train = reduce_mem_usage(pd.read_pickle('../input/amex-agg-data-pickle/train_agg.pkl', compression=\"gzip\").sample(100000))\ntest = reduce_mem_usage(pd.read_pickle('../input/amex-agg-data-pickle/test_agg.pkl', compression=\"gzip\").sample(100000))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:34:45.655162Z","iopub.execute_input":"2022-06-14T01:34:45.655903Z","iopub.status.idle":"2022-06-14T01:36:01.924108Z","shell.execute_reply.started":"2022-06-14T01:34:45.655867Z","shell.execute_reply":"2022-06-14T01:36:01.923137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train[\"is_train\"] = 1\ntest[\"is_train\"] = 0\ntarget = ['is_train']\ndrop_cols = ['S_2','customer_ID',\"target\",\"is_train\"]\n\nfeatures = test.columns.to_list()\ncat_features = [\"B_30\",\"B_38\",\"D_114\", \"D_116\",\"D_117\",\"D_120\",\"D_126\",\"D_63\", \"D_64\",\"D_66\", \"D_68\"]\n\ncat_cols = [f\"{cf}_last\" for cf in cat_features]            \nuse_cols = [c for c in train.columns if c not in drop_cols]\n\nadversarial_train, adversarial_test = create_adversarial_data(train, test, features)\ndel train\ndel test","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:36:01.926061Z","iopub.execute_input":"2022-06-14T01:36:01.927574Z","iopub.status.idle":"2022-06-14T01:36:06.263460Z","shell.execute_reply.started":"2022-06-14T01:36:01.927531Z","shell.execute_reply":"2022-06-14T01:36:06.262510Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"adversarial_train[cat_cols] = adversarial_train[cat_cols].astype('str')\nadversarial_test[cat_cols] = adversarial_test[cat_cols].astype('str')","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:36:06.264894Z","iopub.execute_input":"2022-06-14T01:36:06.265229Z","iopub.status.idle":"2022-06-14T01:36:08.048987Z","shell.execute_reply.started":"2022-06-14T01:36:06.265193Z","shell.execute_reply":"2022-06-14T01:36:08.048165Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Starting Negative Feature Selection","metadata":{}},{"cell_type":"code","source":"train_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:36:13.853621Z","iopub.execute_input":"2022-06-14T01:36:13.854743Z","iopub.status.idle":"2022-06-14T01:37:39.661362Z","shell.execute_reply.started":"2022-06-14T01:36:13.854697Z","shell.execute_reply":"2022-06-14T01:37:39.660480Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"params = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:37:39.663309Z","iopub.execute_input":"2022-06-14T01:37:39.663760Z","iopub.status.idle":"2022-06-14T01:39:20.777480Z","shell.execute_reply.started":"2022-06-14T01:37:39.663723Z","shell.execute_reply":"2022-06-14T01:39:20.776739Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"feature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:39:20.781066Z","iopub.execute_input":"2022-06-14T01:39:20.782012Z","iopub.status.idle":"2022-06-14T01:39:21.341028Z","shell.execute_reply.started":"2022-06-14T01:39:20.781974Z","shell.execute_reply":"2022-06-14T01:39:21.340105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop D_121_std","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\"]\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\n            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:39:21.343421Z","iopub.execute_input":"2022-06-14T01:39:21.344147Z","iopub.status.idle":"2022-06-14T01:40:58.640267Z","shell.execute_reply.started":"2022-06-14T01:39:21.344100Z","shell.execute_reply":"2022-06-14T01:40:58.639484Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop S_11_last","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\"]\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\n            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:05:27.576813Z","iopub.execute_input":"2022-06-14T01:05:27.577633Z","iopub.status.idle":"2022-06-14T01:06:57.545841Z","shell.execute_reply.started":"2022-06-14T01:05:27.577596Z","shell.execute_reply":"2022-06-14T01:06:57.545162Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop D_59_last D_118_std D_115_std S_11_min D_59_min D_59_mean S_9_std B_29_mean D_126_nunique","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\n            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:41:21.149904Z","iopub.execute_input":"2022-06-14T01:41:21.150267Z","iopub.status.idle":"2022-06-14T01:42:55.347157Z","shell.execute_reply.started":"2022-06-14T01:41:21.150238Z","shell.execute_reply":"2022-06-14T01:42:55.346345Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\n            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:43:17.320917Z","iopub.execute_input":"2022-06-14T01:43:17.321266Z","iopub.status.idle":"2022-06-14T01:44:51.633991Z","shell.execute_reply.started":"2022-06-14T01:43:17.321237Z","shell.execute_reply":"2022-06-14T01:44:51.632985Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\n            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:46:47.137748Z","iopub.execute_input":"2022-06-14T01:46:47.138102Z","iopub.status.idle":"2022-06-14T01:48:19.736954Z","shell.execute_reply.started":"2022-06-14T01:46:47.138074Z","shell.execute_reply":"2022-06-14T01:48:19.736097Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\n            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:49:08.457581Z","iopub.execute_input":"2022-06-14T01:49:08.458369Z","iopub.status.idle":"2022-06-14T01:50:40.346750Z","shell.execute_reply.started":"2022-06-14T01:49:08.458331Z","shell.execute_reply":"2022-06-14T01:50:40.345881Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:55:07.882791Z","iopub.execute_input":"2022-06-14T01:55:07.883386Z","iopub.status.idle":"2022-06-14T01:56:40.770711Z","shell.execute_reply.started":"2022-06-14T01:55:07.883351Z","shell.execute_reply":"2022-06-14T01:56:40.769944Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T01:57:05.562162Z","iopub.execute_input":"2022-06-14T01:57:05.562909Z","iopub.status.idle":"2022-06-14T01:58:34.704274Z","shell.execute_reply.started":"2022-06-14T01:57:05.562872Z","shell.execute_reply":"2022-06-14T01:58:34.703481Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:02:30.451191Z","iopub.execute_input":"2022-06-14T02:02:30.452089Z","iopub.status.idle":"2022-06-14T02:03:57.841064Z","shell.execute_reply.started":"2022-06-14T02:02:30.452048Z","shell.execute_reply":"2022-06-14T02:03:57.840208Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:07:15.056916Z","iopub.execute_input":"2022-06-14T02:07:15.057506Z","iopub.status.idle":"2022-06-14T02:08:41.497416Z","shell.execute_reply.started":"2022-06-14T02:07:15.057444Z","shell.execute_reply":"2022-06-14T02:08:41.496688Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last',\n            'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:11:11.490828Z","iopub.execute_input":"2022-06-14T02:11:11.491512Z","iopub.status.idle":"2022-06-14T02:12:36.593015Z","shell.execute_reply.started":"2022-06-14T02:11:11.491479Z","shell.execute_reply":"2022-06-14T02:12:36.592110Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'D_123_mean', 'D_83_std', 'R_1_max', 'S_13_min', 'D_114_nunique', 'D_118_last', 'D_42_min', 'S_17_std', 'R_26_max', 'S_13_std'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last',\n            'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique',\n            'D_123_mean', 'D_83_std', 'R_1_max', 'S_13_min', 'D_114_nunique', 'D_118_last', 'D_42_min', 'S_17_std', 'R_26_max', 'S_13_std']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:14:39.097860Z","iopub.execute_input":"2022-06-14T02:14:39.098338Z","iopub.status.idle":"2022-06-14T02:16:04.536581Z","shell.execute_reply.started":"2022-06-14T02:14:39.098278Z","shell.execute_reply":"2022-06-14T02:16:04.535720Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'S_17_max', 'D_62_last', 'B_40_last', 'P_4_std', 'S_22_std', 'S_27_std', 'D_61_mean', 'S_15_min', 'R_26_mean', 'R_26_last'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last',\n            'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique',\n            'D_123_mean', 'D_83_std', 'R_1_max', 'S_13_min', 'D_114_nunique', 'D_118_last', 'D_42_min', 'S_17_std', 'R_26_max', 'S_13_std',\n            'S_17_max', 'D_62_last', 'B_40_last', 'P_4_std', 'S_22_std', 'S_27_std', 'D_61_mean', 'S_15_min', 'R_26_mean', 'R_26_last']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:16:54.289015Z","iopub.execute_input":"2022-06-14T02:16:54.289414Z","iopub.status.idle":"2022-06-14T02:18:18.881025Z","shell.execute_reply.started":"2022-06-14T02:16:54.289383Z","shell.execute_reply":"2022-06-14T02:18:18.880271Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'R_26_min', 'D_62_mean', 'B_40_max', 'R_1_std', 'D_125_mean', 'S_8_max', 'D_68_nunique', 'S_22_min', 'B_17_last', 'D_61_std'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last',\n            'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique',\n            'D_123_mean', 'D_83_std', 'R_1_max', 'S_13_min', 'D_114_nunique', 'D_118_last', 'D_42_min', 'S_17_std', 'R_26_max', 'S_13_std',\n            'S_17_max', 'D_62_last', 'B_40_last', 'P_4_std', 'S_22_std', 'S_27_std', 'D_61_mean', 'S_15_min', 'R_26_mean', 'R_26_last',\n            'R_26_min', 'D_62_mean', 'B_40_max', 'R_1_std', 'D_125_mean', 'S_8_max', 'D_68_nunique', 'S_22_min', 'B_17_last', 'D_61_std']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:19:01.862585Z","iopub.execute_input":"2022-06-14T02:19:01.862964Z","iopub.status.idle":"2022-06-14T02:20:25.273508Z","shell.execute_reply.started":"2022-06-14T02:19:01.862935Z","shell.execute_reply":"2022-06-14T02:20:25.272582Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Drop 'D_61_last', 'D_122_max', 'D_39_last', 'S_24_std', 'B_39_min', 'D_47_min', 'D_42_last', 'B_8_mean', 'D_68_last', 'D_39_max'","metadata":{}},{"cell_type":"code","source":"drop_cols = ['S_2','customer_ID',\"is_train\",\"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last',\n            'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique',\n            'D_123_mean', 'D_83_std', 'R_1_max', 'S_13_min', 'D_114_nunique', 'D_118_last', 'D_42_min', 'S_17_std', 'R_26_max', 'S_13_std',\n            'S_17_max', 'D_62_last', 'B_40_last', 'P_4_std', 'S_22_std', 'S_27_std', 'D_61_mean', 'S_15_min', 'R_26_mean', 'R_26_last',\n            'R_26_min', 'D_62_mean', 'B_40_max', 'R_1_std', 'D_125_mean', 'S_8_max', 'D_68_nunique', 'S_22_min', 'B_17_last', 'D_61_std',\n            'D_61_last', 'D_122_max', 'D_39_last', 'S_24_std', 'B_39_min', 'D_47_min', 'D_42_last', 'B_8_mean', 'D_68_last', 'D_39_max']\nuse_cols = [c for c in adversarial_train.columns if c not in drop_cols]\ncat_cols = [c for c in cat_cols if c not in drop_cols]            \ntrain_data = Pool(\n    data=adversarial_train[use_cols],\n    label=adversarial_train[target],\n    cat_features = cat_cols\n)\nholdout_data = Pool(\n    data=adversarial_test[use_cols],\n    label=adversarial_test[target],\n    cat_features = cat_cols\n)\nparams = {\n    'loss_function' : 'Logloss',\n    'eval_metric' : 'AUC',\n    'od_type': 'Iter',\n    'num_boost_round': 100,\n    'early_stopping_rounds': 10,\n    \"depth\": 2,\n    'task_type': 'GPU'\n}\n\nmodel = CatBoostClassifier(**params)\n_ = model.fit(train_data, eval_set=holdout_data, verbose_eval=50)\n\nfeature_importance =pd.DataFrame({'feature_importance': model.get_feature_importance(), \n              'feature_names': adversarial_train[use_cols].columns}).sort_values(by=['feature_importance'], \n                                                           ascending=False)\nf, ax = plt.subplots(figsize=(10, 10))\nsns.set_color_codes(\"pastel\")\nsns.barplot(x=\"feature_names\", y=\"feature_importance\", data=feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10],color=\"b\")\nprint(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10])\nprint(list(feature_importance.sort_values(by=\"feature_importance\", ascending=False)[:10][\"feature_names\"]))","metadata":{"execution":{"iopub.status.busy":"2022-06-14T02:23:02.691238Z","iopub.execute_input":"2022-06-14T02:23:02.691867Z","iopub.status.idle":"2022-06-14T02:24:25.854469Z","shell.execute_reply.started":"2022-06-14T02:23:02.691830Z","shell.execute_reply":"2022-06-14T02:24:25.853689Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Сonclusion\n","metadata":{}},{"cell_type":"markdown","source":"### Risky features on the last lines: \"R_1\",\"D_59\",\"S_11\",\"B_29\",\"S_9\",\"S_15\",\"D_121\",\"S_24\", \"D_62\",\"R_27\",\"S_17\",\"S_13\", \"S_18\",\"D_45\". ","metadata":{}},{"cell_type":"markdown","source":"### Risky features on the first lines \"R_1\",\"D_59\",\"S_11\",\"D_121\",\"S_27\",\"D_118\",\"D_119\",\"D_120\",\"P_4\",\"D_39\",\"R_27\",\"D_126\"","metadata":{}},{"cell_type":"markdown","source":"Risky features in aggregated data \"D_121_std\",\"S_11_last\", 'D_59_last', 'D_118_std', 'D_115_std',\n             'S_11_min', 'D_59_min', 'D_59_mean', 'S_9_std', 'B_29_mean', 'D_126_nunique',\n            'D_119_std', 'D_59_max', 'S_11_mean', 'B_29_max', 'S_11_max', 'D_59_std', 'S_9_max', 'B_29_min', 'D_121_mean', 'S_22_mean',\n            'B_29_last', 'S_11_std', 'S_9_min', 'B_29_std', 'S_24_min', 'S_9_mean', 'D_55_std', 'S_6_last', 'D_124_std', 'D_121_max',\n            'S_9_last', 'S_15_last', 'D_121_last', 'D_113_std', 'D_45_std', 'S_24_mean', 'D_122_std', 'D_55_min', 'D_121_min', 'S_24_last',\n            'S_24_max', 'S_15_max', 'D_55_max', 'R_27_min', 'P_4_max', 'D_66_last', 'R_27_std', 'S_13_max', 'R_9_std', 'D_55_last'\n            'D_55_mean', 'S_15_std', 'R_27_max', 'D_68_count', 'R_27_mean', 'D_118_min', 'B_8_std', 'D_45_last', 'S_27_mean', 'D_119_min',\n            'R_27_last', 'D_55_mean', 'S_15_mean', 'S_27_max', 'D_126_count', 'D_55_last', 'D_117_nunique', 'S_18_last', 'S_17_last', 'S_8_mean',\n            'D_125_std', 'D_120_count', 'D_45_max', 'D_64_count', 'D_45_min', 'D_116_count', 'D_117_count', 'S_27_min', 'R_26_std', 'S_13_last',\n            'D_114_count', 'D_69_std', 'D_123_std', 'D_64_last', 'S_13_mean', 'D_120_nunique', 'S_17_mean', 'D_120_last', 'D_61_max', 'D_64_nunique',\n            'D_123_mean', 'D_83_std', 'R_1_max', 'S_13_min', 'D_114_nunique', 'D_118_last', 'D_42_min', 'S_17_std', 'R_26_max', 'S_13_std',\n            'S_17_max', 'D_62_last', 'B_40_last', 'P_4_std', 'S_22_std', 'S_27_std', 'D_61_mean', 'S_15_min', 'R_26_mean', 'R_26_last',\n            'R_26_min', 'D_62_mean', 'B_40_max', 'R_1_std', 'D_125_mean', 'S_8_max', 'D_68_nunique', 'S_22_min', 'B_17_last', 'D_61_std',\n            'D_61_last', 'D_122_max', 'D_39_last', 'S_24_std', 'B_39_min', 'D_47_min', 'D_42_last', 'B_8_mean', 'D_68_last', 'D_39_max'","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"### Vote for this notebook if its content was useful or interesting to you","metadata":{}}]}