Skip to content

Commit

Permalink
fix gini
Browse files Browse the repository at this point in the history
  • Loading branch information
Vladimir Nikolaev committed May 7, 2018
1 parent e0952d6 commit 4b5b504
Showing 1 changed file with 27 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -496,10 +496,28 @@
"metadata": {},
"outputs": [],
"source": [
"import sklearn.metrics\n",
"\n",
"def gini(y_true, y_pred):\n",
" return 2*sklearn.metrics.auc(y_true, y_pred) - 1"
" # check and get number of samples\n",
" assert y_true.shape == y_pred.shape\n",
" n_samples = y_true.shape[0]\n",
" \n",
" # sort rows on prediction column \n",
" # (from largest to smallest)\n",
" arr = np.array([y_true, y_pred]).transpose()\n",
" true_order = arr[arr[:,0].argsort()][::-1,0]\n",
" pred_order = arr[arr[:,1].argsort()][::-1,0]\n",
" \n",
" # get Lorenz curves\n",
" L_true = np.cumsum(true_order) / np.sum(true_order)\n",
" L_pred = np.cumsum(pred_order) / np.sum(pred_order)\n",
" L_ones = np.linspace(1/n_samples, 1, n_samples)\n",
" \n",
" # get Gini coefficients (area between curves)\n",
" G_true = np.sum(L_ones - L_true)\n",
" G_pred = np.sum(L_ones - L_pred)\n",
" \n",
" # normalize to true Gini coefficient\n",
" return G_pred/G_true"
]
},
{
Expand Down Expand Up @@ -651,12 +669,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Что бы мы ни делали, бустинги по-прежнему остаются самыми лучшими алгоритмами прогнозирования для широкого спектра задач. В особенности, если мы не работаем со структурированными данными: последовательностями или картинками. Бустинг хоть и сложный по своей структуре алгоритм, но вероятностные распределения не чужды и ему. Запустите _LGBMModel_ используя классическую регрессию и регрессию Пуассона. Настройте параметры, чтобы добиться наилучшего качества. В особенности обратите внимание на _objective_, _n_estimators_, *num_leaves* и _colsample_bytree_.\n",
"\n",
" У меня в первом приближении получилось 1181.6, надеюсь, у вас получится лучше. И если вам будет интересно,\n",
" можете попробовать предсказанные данные на Kaggle. Ведь для этого уже всё готово :) У меня выходит ни много, \n",
" ни мало 0.384266 нормированный gini на private.\n",
" "
"Что бы мы ни делали, бустинги по-прежнему остаются самыми лучшими алгоритмами прогнозирования для широкого спектра задач. В особенности, если мы не работаем со структурированными данными: последовательностями или картинками. Бустинг хоть и сложный по своей структуре алгоритм, но вероятностные распределения не чужды и ему. Запустите _LGBMModel_ используя классическую регрессию и регрессию Пуассона. Настройте параметры, чтобы добиться наилучшего качества. В особенности обратите внимание на *objective*, *n_estimators*, *num_leaves* и *colsample_bytree*."
]
},
{
Expand Down Expand Up @@ -732,21 +745,21 @@
"metadata": {
"hide_input": false,
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 2",
"language": "python",
"name": "python3"
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
"pygments_lexer": "ipython2",
"version": "2.7.14"
},
"widgets": {
"state": {},
Expand Down

0 comments on commit 4b5b504

Please sign in to comment.