Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sem10-gbm OOB-score fixed #113

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions 2019-fall/seminars/sem10-gbm.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -723,7 +723,7 @@
"source": [
"### Out-of-bag\n",
"\n",
"В случайном лесе за счет обучения на подвыборках можно использовать out-of-bag оценки - ошибка композиции $a(x) = \\sum_{n=1}^N b_n(x)$, построенной с помощью бэггинга с базовыми алгоритмами $b_i(x)$, вычисляется по формуле (подробнее см. конспект лекции 8):\n",
"В случайном лесе за счет обучения на подвыборках можно использовать out-of-bag оценки - ошибка композиции $a(x) = \\frac1N\\sum_{n=1}^N b_n(x)$, построенной с помощью бэггинга с базовыми алгоритмами $b_i(x)$, вычисляется по формуле (подробнее см. конспект лекции 8):\n",
" $$\n",
" \\text{OOB} = \\sum_{i=1}^\\ell L\\biggl(y_i, \\frac 1 {\\sum_{n=1}^N [x_i \\notin X_n]} \\sum_{n=1}^N [x_i \\notin X_n] b_n(x_i)\\biggr)\n",
" $$ \n",
Expand All @@ -737,7 +737,11 @@
"\n",
" * Перемешать значения признака по всем объектам обучающей выборки — мы хотим сделать признак неинформативным\n",
" * Вычислить OOB$_j$ случайного леса, обученного по измененной обучающей выборке\n",
" * Оценить важности: $R_j = \\max(0, \\text{OOB}-\\text{OOB}_j)$"
" * Оценить важности: $R_j = \\max(0, \\text{OOB}_j-\\text{OOB})$\n",
"\n",
"Поясним суть работы этого алгоритма. В силу того, что информативный признак очень помогает при предсказывании, то логично, что после перемешивания его значений по всем объектам выборки мы получим значение OOB-оценки выше, чем было до перемешивания (так как теперь модель будет пресдказывать хуже, а следовательно и значение функции потерь повысится). Таким образом OOB$_j$ должен быть в таком случае не меньше OOB. А в качестве меры важности признака мы просто берем разность OOB-оценок и не разрешаем им быть отрицательными (берем максимум из нуля и разности оценок).\n",
"\n",
"Заметим, что в библиотеке `sklearn` OOB-оценка считается не с помощью функции потерь, а с помощью $R^2$ метрики."
]
},
{
Expand Down Expand Up @@ -807,7 +811,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
"version": "3.7.6"
}
},
"nbformat": 4,
Expand Down