{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "Линейные_методы,_аналитическое_решение.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "PNK_0ITKDx_c" }, "source": [ "# **План**\n", "\n", "- Линейные методы. Определение и постановка задачи линейной регрессии. *Lp* норма\n", "\n", "- Ridge и Lasso регрессия. *Lp* регуляризация\n", "\n", "- Рекомендованная литература" ] }, { "cell_type": "markdown", "metadata": { "id": "qCBVKNE-FeP9" }, "source": [ "ссылка на ноутбук в колаб: https://drive.google.com/file/d/1au2UdCsZKCHwYEKvdH95AQig_g4B9izr/view?usp=sharing" ] }, { "cell_type": "markdown", "metadata": { "id": "2paKyvORD_EA" }, "source": [ "# Линейные методы. Регрессия." ] }, { "cell_type": "markdown", "metadata": { "id": "DW6oRt_HKcpE" }, "source": [ "Матричные производные:\n", "\n", "http://www.machinelearning.ru/wiki/images/archive/9/93/20170127140036!MO17_seminar3.pdf" ] }, { "cell_type": "markdown", "metadata": { "id": "fRVu5ANBLGGo" }, "source": [ "Линейные методы предполагают, что между признаками объекта и целевой переменной существует линейная зависимость, то есть:\n", "$$ y = w_1 x_1 + w_2 x_2 + ... + w_k x_k + b $$,\n", "где у - целевая переменная (что мы хотим предсказать), $x_i$ -- признак объекта х, $w_i$ -- вес i-го признака, b -- bias (смещение, свободный член)\n", "\n", "Часто предполагают, что объект х содержит в себе фиктивный признак, который всегда равен 1, тогда bias это есть вес этого признака. В этом случае формула принимает простой вид:\n", "$$ y = $$,\n", "где $<\\cdot, \\cdot>$ -- скалярное произведение векторов.\n", "\n", "В матричной форме, в случае, когда у нас есть n объектов формулу можно переписать следующим образом:\n", "$$ y = Xw $$,\n", "y -- вектор размера n, X -- матрица объекты-признаки размера $n \\times k$, w -- вектор весов размера k.\n", "\n", "Решение по методу наименьших квадратов дает \n", "$$ w = (X^TX)^{-1}X^Ty $$" ] }, { "cell_type": "markdown", "metadata": { "id": "xx_zFZBo6iKb" }, "source": [ "**Определение (Lp-норма):**\n", "\n", "$$\n", " \\|\\cdot\\|_{p}: \\mathbb{R}^{d} \\to \\mathbb{R}\\\\\n", " \\forall p \\geq 1: \\forall x \\in \\mathbb{R}^{d}: \\|x\\|_{p} = \\sqrt[p]{\\sum_{i=1}^{n} x_{i}^{p}}\n", "$$\n", "\n", "**Доказательство**\n", "\n", "Вспомним, как выглядит задача оптимизации:\n", "\n", "$$\n", " \\frac{1}{n} \\sum_{i=1}^{n} (y_i - \\langle x_i, w \\rangle)^2 \\to \\min\\limits_{w}\n", "$$\n", "\n", "Эта задача оптимизации допускает следующую более удобную запись:\n", "\n", "$$\n", " \\frac{1}{n} \\| Xw - y \\|_{2}^{2} \\to \\min\\limits_{w}\n", "$$\n", "\n", "Утверждается, что:\n", "\n", "$$\n", " \\frac{1}{n} \\| Xw - y \\|_{2}^{2} = \\frac{1}{n} (Xw - y)^{\\top} (Xw - y)\n", "$$\n", "\n", "(потому что $\\| x \\|_{2}^{2} = \\langle x, x\\rangle$)\n", "\n", "Раскроем это выражение:\n", "\n", "$$\n", "\\begin{align*}\n", " & (Xw - y)^{\\top} (Xw - y) =\\\\\n", " &= (w^{\\top} X^{\\top} - y^{\\top}) (Xw - y) =\\\\\n", " &= (w^{\\top} X^{\\top} X w - w^{\\top} X^{\\top} y) - (y^{\\top} X w - y^{\\top} y) =\\\\\n", " &= w^{\\top} X^{\\top} X w - 2 y^{\\top} X w + y^{\\top} y\n", "\\end{align*}\n", "$$\n", "\n", "Найдём градиент этой функции, т.е. все частные производные по весам (т.е. по $w_1, \\ldots, w_d$).\n", "\n", "$$\n", "\\begin{align*}\n", " &\\frac{\\partial}{\\partial w} (w^{\\top} X^{\\top} X w - 2 y^{\\top} X w + y^{\\top} y) =\\\\\n", " &= 2 X^{\\top} X w - 2 X^{\\top} y = 0\n", "\\end{align*}\n", "$$\n", "\n", "Отсюда получаем итоговый ответ:\n", "\n", "$$\n", "\\begin{align*}\n", " X^{\\top} X w &= X^{\\top} y\\\\\n", " w &= (X^{\\top} X)^{-1} X^{\\top} y\n", "\\end{align*}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "id": "xOt0ORJluEhQ" }, "source": [ "Полезная статья про решение Линейной регрессии: https://habr.com/ru/post/474602/" ] }, { "cell_type": "code", "metadata": { "id": "e9dsBCqULS3F" }, "source": [ "import numpy as np\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Ss3Xirk33T5x" }, "source": [ "# Сгенерируем рандомный набор точек\n", "X = np.linspace(-5, 5, 100)\n", "y = 10 * X - 7\n", "\n", "\n", "X_train = X[0::2].reshape(-1, 1)\n", "y_train = y[0::2] + np.random.randn(50) * 10\n", "\n", "X_test = X[1::2].reshape(-1, 1)\n", "y_test = y[1::2] + np.random.randn(50) * 10" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "MTCJ6Jc2LP3h", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "3297fb6e-dfc1-4ae3-8ea0-e04ebe6f5f8e" }, "source": [ "X_train[1], y_train[1]" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(array([-4.7979798]), -45.68415850975976)" ] }, "metadata": { "tags": [] }, "execution_count": 3 } ] }, { "cell_type": "code", "metadata": { "id": "RV_yTmiAMcZc", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "b1bd2b17-9b33-4d3a-e3a5-83999cde21b2" }, "source": [ "def fit(X, y):\n", " n, k = X.shape\n", " X = np.hstack((X, np.ones((n, 1))))\n", " w = np.linalg.inv(X.T @ X) @ X.T @ y\n", " return w\n", "\n", "def predict(X, w):\n", " n, k = X.shape\n", " X = np.hstack((X, np.ones((n, 1))))\n", " y_pred = X @ w\n", " return y_pred\n", "\n", "weights = fit(X_train, y_train)\n", "weights" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([ 9.60296716, -8.10179328])" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "code", "metadata": { "id": "HDM9jvhOyFp8" }, "source": [ "y_hat = predict(X_test, weights)" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "lSr7D-CsyRXY", "colab": { "base_uri": "https://localhost:8080/", "height": 418 }, "outputId": "a3e338e6-6843-4a25-d9cd-04e1d550db0b" }, "source": [ "plt.hist((y_test - y_hat)**2, bins = 20)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(array([27., 7., 3., 2., 3., 0., 0., 1., 2., 0., 1., 1., 1.,\n", " 1., 0., 0., 0., 0., 0., 1.]),\n", " array([3.92997287e-02, 3.71952408e+01, 7.43511818e+01, 1.11507123e+02,\n", " 1.48663064e+02, 1.85819005e+02, 2.22974946e+02, 2.60130887e+02,\n", " 2.97286828e+02, 3.34442769e+02, 3.71598710e+02, 4.08754651e+02,\n", " 4.45910592e+02, 4.83066533e+02, 5.20222474e+02, 5.57378415e+02,\n", " 5.94534356e+02, 6.31690297e+02, 6.68846238e+02, 7.06002179e+02,\n", " 7.43158120e+02]),\n", " )" ] }, "metadata": { "tags": [] }, "execution_count": 6 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "4JIVQm0J1bde", "colab": { "base_uri": "https://localhost:8080/", "height": 269 }, "outputId": "9288306c-51bb-489e-8f6e-5014c1dc65c3" }, "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(X, y, label = 'data')\n", "plt.scatter(X_train, y_train, label ='train')\n", "plt.scatter(X_test, y_test, label ='test')\n", "plt.legend()\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "rwSr7vva14-I", "colab": { "base_uri": "https://localhost:8080/", "height": 269 }, "outputId": "58c396f5-d340-4a3f-e15b-213425b6be5c" }, "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(X, y, label = 'data')\n", "plt.scatter(X_train, y_train, label ='train')\n", "plt.scatter(X_test, y_test, label ='test')\n", "plt.plot(X[1::2], X[1::2].reshape(-1, 1).dot(weights[:-1]) + weights[-1], label = 'preds')\n", "plt.legend()\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "3PLeQb5xGGI2" }, "source": [ "**Определение (R2-score или коэффициент детерминации):**\n", "\n", "$$ R^2 = 1 - \\frac{MSE(y, \\widehat{y})}{D y} $$" ] }, { "cell_type": "code", "metadata": { "id": "VykDMvHG2zHE", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "c8684e8c-b94a-460e-ff5e-4275c6b74f40" }, "source": [ "from sklearn.metrics import r2_score\n", "\n", "train_preds = predict(X_train, weights)\n", "test_preds = predict(X_test, weights)\n", "\n", "print('train r2', r2_score(y_train, train_preds))\n", "print('test r2', r2_score(y_test, test_preds))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "train r2 0.9179964244553839\n", "test r2 0.8985775336147465\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "7VEiNra22QmH", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "931ba05f-9d79-4e2b-fae8-066b6753b34e" }, "source": [ "from sklearn.metrics import mean_squared_error\n", "\n", "train_preds = predict(X_train, weights)\n", "test_preds = predict(X_test, weights)\n", "\n", "print('train mse', mean_squared_error(y_train, train_preds))\n", "print('test mse', mean_squared_error(y_test, test_preds))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "train mse 77.84201506126992\n", "test mse 97.77251242777237\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "pgQ_SIEREWeV" }, "source": [ "# Ridge и Lasso регрессия. *Lp* регуляризация" ] }, { "cell_type": "markdown", "metadata": { "id": "G276_whHL02N" }, "source": [ "### Ridge&Lasso\n", "\n", "На практике точные формулы для подсчета коэффициентов линейной регрессии не используются, а используется метод градиентного спуска который состоит в подсчете производных от ошибки и шагу в направлении наискорейшего убывания функции (напомню, что мы стремимся минимизировать функцию потерь). Эти методы работают быстрее, чем точное вычисление обратных матриц и их перемножение.\n", "Более того, во многих задачах это единственный способ обучить модель, так как не всегда (на самом деле почти никогда) удается выписать точную формулу для минимума сложного функционала ошибки.\n", "\n", "Давайте рассмотрим реализации линейных регрессоров в библиотеке sklearn\n", "\n", "Но сначала давайте поймём, зачем вообще нужна регуляризация. Рассмотрим проблему мультиколлинеарности. В упрощённом понимании, это означает, что признаки линейно зависимы. Посмотрим, к чему это ведёт." ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cLhFPkULyke-", "outputId": "d092bcca-b0b0-40b5-cf84-6c9e849d257e" }, "source": [ "X_train" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[-5. ],\n", " [-4.7979798 ],\n", " [-4.5959596 ],\n", " [-4.39393939],\n", " [-4.19191919],\n", " [-3.98989899],\n", " [-3.78787879],\n", " [-3.58585859],\n", " [-3.38383838],\n", " [-3.18181818],\n", " [-2.97979798],\n", " [-2.77777778],\n", " [-2.57575758],\n", " [-2.37373737],\n", " [-2.17171717],\n", " [-1.96969697],\n", " [-1.76767677],\n", " [-1.56565657],\n", " [-1.36363636],\n", " [-1.16161616],\n", " [-0.95959596],\n", " [-0.75757576],\n", " [-0.55555556],\n", " [-0.35353535],\n", " [-0.15151515],\n", " [ 0.05050505],\n", " [ 0.25252525],\n", " [ 0.45454545],\n", " [ 0.65656566],\n", " [ 0.85858586],\n", " [ 1.06060606],\n", " [ 1.26262626],\n", " [ 1.46464646],\n", " [ 1.66666667],\n", " [ 1.86868687],\n", " [ 2.07070707],\n", " [ 2.27272727],\n", " [ 2.47474747],\n", " [ 2.67676768],\n", " [ 2.87878788],\n", " [ 3.08080808],\n", " [ 3.28282828],\n", " [ 3.48484848],\n", " [ 3.68686869],\n", " [ 3.88888889],\n", " [ 4.09090909],\n", " [ 4.29292929],\n", " [ 4.49494949],\n", " [ 4.6969697 ],\n", " [ 4.8989899 ]])" ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "code", "metadata": { "id": "ClvBLotDHCVt", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "c5491929-ca1e-4f8e-e9f1-015b88aad08f" }, "source": [ "X_adversary = X_train.copy()\n", "X_adversary[:, 0] = 2\n", "print(X_train.shape, X_adversary.shape)" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "(50, 1) (50, 1)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_u6CJateyofQ", "outputId": "4bcacc73-7003-4697-808c-b957cd3041ec" }, "source": [ "X_adversary" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.],\n", " [2.]])" ] }, "metadata": { "tags": [] }, "execution_count": 13 } ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 358 }, "id": "X-xlOw0FyhlP", "outputId": "567355a1-2ba7-426f-c1cc-349e4181987d" }, "source": [ "w_adversary = fit(X_adversary, y_train)\n", "w_adversary" ], "execution_count": null, "outputs": [ { "output_type": "error", "ename": "LinAlgError", "evalue": "ignored", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mw_adversary\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_adversary\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mw_adversary\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mfit\u001b[0;34m(X, y)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhstack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mones\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mw\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<__array_function__ internals>\u001b[0m in \u001b[0;36minv\u001b[0;34m(*args, **kwargs)\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/numpy/linalg/linalg.py\u001b[0m in \u001b[0;36minv\u001b[0;34m(a)\u001b[0m\n\u001b[1;32m 544\u001b[0m \u001b[0msignature\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'D->D'\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misComplexType\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m'd->d'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 545\u001b[0m \u001b[0mextobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_linalg_error_extobj\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_raise_linalgerror_singular\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 546\u001b[0;31m \u001b[0mainv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_umath_linalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msignature\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msignature\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextobj\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mextobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 547\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mainv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult_t\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 548\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/numpy/linalg/linalg.py\u001b[0m in \u001b[0;36m_raise_linalgerror_singular\u001b[0;34m(err, flag)\u001b[0m\n\u001b[1;32m 86\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_raise_linalgerror_singular\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 88\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mLinAlgError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Singular matrix\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 89\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_raise_linalgerror_nonposdef\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mLinAlgError\u001b[0m: Singular matrix" ] } ] }, { "cell_type": "markdown", "metadata": { "id": "R1iQ4tbeyuN0" }, "source": [ "**ВОПРОС** Почему так произошло??" ] }, { "cell_type": "code", "metadata": { "id": "6Pic637Cy4nm" }, "source": [ "#TODO" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "GTUfDWr4Iwxr" }, "source": [ "**Что произошло**\n", "\n", "Ранг матрицы $\\mathrm{X_{adversary}}$ равен 1, а размерность признакового пространства равна 2. Из линейной алгебры известно, что ранг произведения матриц не превосходит минимального ранга этих двух матриц: \n", "\n", "$$\n", " \\mathrm{rk} AB \\leq \\min \\{\\mathrm{rk} A, \\mathrm{rk} B\\}\n", "$$\n", "\n", "К чему это здесь приводит? Посмотрим на аналитическое решение\n", "$$\n", " w = (X^{\\top} X)^{-1} X^{\\top} y\n", "$$\n", "\n", "Нас интересует компонента $(X^{\\top} X)^{-1}$. Здесь обратная не определена, потому что ранг матрицы $X^{\\top} X$ не превосходит единицы. При этом матрица $X^{\\top} X$ -- квадратная, размера 2x2. Из линейной алгебры мы знаем, что квадратная матрица обратима только тогда, когда она полноранговая. Именно об этом Вам сигналит ошибка LinAlgError: Вы пытаетесь обратить матрицу, которую обращать нельзя. Что делать?\n", "\n", "**Определение ($L_{p}$-регуляризация):**\n", "Пусть задана линейная регрессия с вектором весов $w$ и функцией ошибок $\\mathcal{L}(y, \\widehat{y}(w))$ (например, среднеквадратичная ошибка), тогда к ней можно добавить $L_{p}$-регуляризацию изменив функционал ошибки следующим образом:\n", "\n", "$$\n", " \\mathcal{L}(y, \\widehat{y}(w)) + \\alpha \\|w\\|_{p}^{p} \\to \\min\\limits_{w}\n", "$$\n", "\n", "Если $p$ равно 2, то это называют **Ridge**-регуляризацией, а если $p$ равно 1, то **Lasso**-регуляризацией.\n", "\n", "**Утверждение:** $L_{2}$-регуляризация позволяет избежать этой проблемы ($L_{p}$-нормы для произвольных $p$, на самом деле, тоже, но это уже нетривиально доказывать).\n", "\n", "**Определение (напоминание):** Собственные значения матрицы $A$ это такие числа $\\lambda$, что существует ненулевой вектор $x$, такой что $Ax = \\lambda x$\n", "\n", "А как вообще понять, насколько плохо всё с матрицей в плане того, что с ней будет происходить при попытке её обратить?\n", "Посчитать коэффициент обусловленности: отношение максимального собственного значения к минимальному. Чем он больше, тем всё хуже." ] }, { "cell_type": "code", "metadata": { "id": "DW79B9eNPHYf", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "b6061c73-c5ca-45bb-e130-c666fc7502f1" }, "source": [ "eigenvals, eigenvectors = np.linalg.eig(X.reshape(1,-1).T @ X.reshape(1,-1))\n", "eigenvals.max() / eigenvals.min()" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(-3.02413172630763e+16-0j)" ] }, "metadata": { "tags": [] }, "execution_count": 16 } ] }, { "cell_type": "code", "metadata": { "id": "m5x9U-gELRjY" }, "source": [ "from sklearn.linear_model import LinearRegression, Ridge, Lasso" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "UgaA6qihMav8" }, "source": [ "from sklearn.datasets import load_wine" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "zTf8-WxNMhF7", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "27e1b7c7-d56c-494e-db8d-ca62689df18e" }, "source": [ "wine_data = load_wine()\n", "wine_data" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "{'DESCR': '.. _wine_dataset:\\n\\nWine recognition dataset\\n------------------------\\n\\n**Data Set Characteristics:**\\n\\n :Number of Instances: 178 (50 in each of three classes)\\n :Number of Attributes: 13 numeric, predictive attributes and the class\\n :Attribute Information:\\n \\t\\t- Alcohol\\n \\t\\t- Malic acid\\n \\t\\t- Ash\\n\\t\\t- Alcalinity of ash \\n \\t\\t- Magnesium\\n\\t\\t- Total phenols\\n \\t\\t- Flavanoids\\n \\t\\t- Nonflavanoid phenols\\n \\t\\t- Proanthocyanins\\n\\t\\t- Color intensity\\n \\t\\t- Hue\\n \\t\\t- OD280/OD315 of diluted wines\\n \\t\\t- Proline\\n\\n - class:\\n - class_0\\n - class_1\\n - class_2\\n\\t\\t\\n :Summary Statistics:\\n \\n ============================= ==== ===== ======= =====\\n Min Max Mean SD\\n ============================= ==== ===== ======= =====\\n Alcohol: 11.0 14.8 13.0 0.8\\n Malic Acid: 0.74 5.80 2.34 1.12\\n Ash: 1.36 3.23 2.36 0.27\\n Alcalinity of Ash: 10.6 30.0 19.5 3.3\\n Magnesium: 70.0 162.0 99.7 14.3\\n Total Phenols: 0.98 3.88 2.29 0.63\\n Flavanoids: 0.34 5.08 2.03 1.00\\n Nonflavanoid Phenols: 0.13 0.66 0.36 0.12\\n Proanthocyanins: 0.41 3.58 1.59 0.57\\n Colour Intensity: 1.3 13.0 5.1 2.3\\n Hue: 0.48 1.71 0.96 0.23\\n OD280/OD315 of diluted wines: 1.27 4.00 2.61 0.71\\n Proline: 278 1680 746 315\\n ============================= ==== ===== ======= =====\\n\\n :Missing Attribute Values: None\\n :Class Distribution: class_0 (59), class_1 (71), class_2 (48)\\n :Creator: R.A. Fisher\\n :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\\n :Date: July, 1988\\n\\nThis is a copy of UCI ML Wine recognition datasets.\\nhttps://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data\\n\\nThe data is the results of a chemical analysis of wines grown in the same\\nregion in Italy by three different cultivators. There are thirteen different\\nmeasurements taken for different constituents found in the three types of\\nwine.\\n\\nOriginal Owners: \\n\\nForina, M. et al, PARVUS - \\nAn Extendible Package for Data Exploration, Classification and Correlation. \\nInstitute of Pharmaceutical and Food Analysis and Technologies,\\nVia Brigata Salerno, 16147 Genoa, Italy.\\n\\nCitation:\\n\\nLichman, M. (2013). UCI Machine Learning Repository\\n[https://archive.ics.uci.edu/ml]. Irvine, CA: University of California,\\nSchool of Information and Computer Science. \\n\\n.. topic:: References\\n\\n (1) S. Aeberhard, D. Coomans and O. de Vel, \\n Comparison of Classifiers in High Dimensional Settings, \\n Tech. Rep. no. 92-02, (1992), Dept. of Computer Science and Dept. of \\n Mathematics and Statistics, James Cook University of North Queensland. \\n (Also submitted to Technometrics). \\n\\n The data was used with many others for comparing various \\n classifiers. The classes are separable, though only RDA \\n has achieved 100% correct classification. \\n (RDA : 100%, QDA 99.4%, LDA 98.9%, 1NN 96.1% (z-transformed data)) \\n (All results using the leave-one-out technique) \\n\\n (2) S. Aeberhard, D. Coomans and O. de Vel, \\n \"THE CLASSIFICATION PERFORMANCE OF RDA\" \\n Tech. Rep. no. 92-01, (1992), Dept. of Computer Science and Dept. of \\n Mathematics and Statistics, James Cook University of North Queensland. \\n (Also submitted to Journal of Chemometrics).\\n',\n", " 'data': array([[1.423e+01, 1.710e+00, 2.430e+00, ..., 1.040e+00, 3.920e+00,\n", " 1.065e+03],\n", " [1.320e+01, 1.780e+00, 2.140e+00, ..., 1.050e+00, 3.400e+00,\n", " 1.050e+03],\n", " [1.316e+01, 2.360e+00, 2.670e+00, ..., 1.030e+00, 3.170e+00,\n", " 1.185e+03],\n", " ...,\n", " [1.327e+01, 4.280e+00, 2.260e+00, ..., 5.900e-01, 1.560e+00,\n", " 8.350e+02],\n", " [1.317e+01, 2.590e+00, 2.370e+00, ..., 6.000e-01, 1.620e+00,\n", " 8.400e+02],\n", " [1.413e+01, 4.100e+00, 2.740e+00, ..., 6.100e-01, 1.600e+00,\n", " 5.600e+02]]),\n", " 'feature_names': ['alcohol',\n", " 'malic_acid',\n", " 'ash',\n", " 'alcalinity_of_ash',\n", " 'magnesium',\n", " 'total_phenols',\n", " 'flavanoids',\n", " 'nonflavanoid_phenols',\n", " 'proanthocyanins',\n", " 'color_intensity',\n", " 'hue',\n", " 'od280/od315_of_diluted_wines',\n", " 'proline'],\n", " 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,\n", " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2]),\n", " 'target_names': array(['class_0', 'class_1', 'class_2'], dtype='" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "Z5WwzMmiMfyr", "colab": { "base_uri": "https://localhost:8080/", "height": 539 }, "outputId": "32704791-e43b-437e-cc66-12371cdbb657" }, "source": [ "import seaborn as sns\n", "\n", "plt.figure(figsize = (10,6))\n", "sns.heatmap(X.corr())" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 72 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "tn3C6aLWNg-E", "colab": { "base_uri": "https://localhost:8080/", "height": 747 }, "outputId": "245cd141-bee6-4011-ec8d-b57605caa0bc" }, "source": [ "sns.clustermap(X.corr())" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 73 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "ZewQhvWnMipr" }, "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " X, y, test_size=0.3, random_state=99\n", ")" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "yjfmaMKIMlWT" }, "source": [ "from sklearn.preprocessing import StandardScaler\n", "\n", "scaler = StandardScaler()\n", "\n", "X_train = scaler.fit_transform(X_train)\n", "X_test = scaler.transform(X_test)" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "VFdldjDfMsGD" }, "source": [ "from sklearn.metrics import mean_squared_error" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "oaslBvEsMnKj", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "47443722-864f-4b09-f384-4304803ebf9d" }, "source": [ "regressor = LinearRegression()\n", "\n", "regressor.fit(X_train, y_train)\n", "test_predictions = regressor.predict(X_test)\n", "\n", "print('test mse: ', mean_squared_error(y_test, test_predictions))\n", "print('r2 score: ', r2_score(y_test, test_predictions))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "test mse: 0.07475703133417169\n", "r2 score: 0.8738475096235853\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "1eGcAHp4UiMq", "colab": { "base_uri": "https://localhost:8080/", "height": 439 }, "outputId": "b2e60d30-1b26-422d-9ebc-af79d5d21144" }, "source": [ "X" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
alcoholmalic_acidashalcalinity_of_ashmagnesiumtotal_phenolsflavanoidsnonflavanoid_phenolsproanthocyaninscolor_intensityhueod280/od315_of_diluted_winesproline
014.231.712.4315.6127.02.803.060.282.295.641.043.921065.0
113.201.782.1411.2100.02.652.760.261.284.381.053.401050.0
213.162.362.6718.6101.02.803.240.302.815.681.033.171185.0
314.371.952.5016.8113.03.853.490.242.187.800.863.451480.0
413.242.592.8721.0118.02.802.690.391.824.321.042.93735.0
..........................................
17313.715.652.4520.595.01.680.610.521.067.700.641.74740.0
17413.403.912.4823.0102.01.800.750.431.417.300.701.56750.0
17513.274.282.2620.0120.01.590.690.431.3510.200.591.56835.0
17613.172.592.3720.0120.01.650.680.531.469.300.601.62840.0
17714.134.102.7424.596.02.050.760.561.359.200.611.60560.0
\n", "

178 rows × 13 columns

\n", "
" ], "text/plain": [ " alcohol malic_acid ash ... hue od280/od315_of_diluted_wines proline\n", "0 14.23 1.71 2.43 ... 1.04 3.92 1065.0\n", "1 13.20 1.78 2.14 ... 1.05 3.40 1050.0\n", "2 13.16 2.36 2.67 ... 1.03 3.17 1185.0\n", "3 14.37 1.95 2.50 ... 0.86 3.45 1480.0\n", "4 13.24 2.59 2.87 ... 1.04 2.93 735.0\n", ".. ... ... ... ... ... ... ...\n", "173 13.71 5.65 2.45 ... 0.64 1.74 740.0\n", "174 13.40 3.91 2.48 ... 0.70 1.56 750.0\n", "175 13.27 4.28 2.26 ... 0.59 1.56 835.0\n", "176 13.17 2.59 2.37 ... 0.60 1.62 840.0\n", "177 14.13 4.10 2.74 ... 0.61 1.60 560.0\n", "\n", "[178 rows x 13 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 78 } ] }, { "cell_type": "code", "metadata": { "id": "nUrN2soBMoxb", "colab": { "base_uri": "https://localhost:8080/", "height": 501 }, "outputId": "4d0bb0c1-323c-4db2-95ff-69f3aabdef17" }, "source": [ "plt.figure(figsize=(20, 8))\n", "plt.bar(X.columns, regressor.coef_)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 79 }, { "output_type": "display_data", "data": { "image/png": "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AAAA60NIBAAAAICQCAAAAAAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAASTatdwGAHWfryUevdxEAAADYSehJBAAAAICeRAAAADsbPcaBHUFIBACwi3OwCQAkLjcDAAAAIEIiAAAAACIkAgAAACBCIgAAAAAiJAIAAAAgQiIAAAAAIiQCAAAAIEIiAAAAACIkAgAAACBCIgAAAAAiJAIAAAAgQiIAAAAAIiQCAAAAIEIiAAAAACIkAgAAACBCIgAAAAAiJAIAAAAgQiIAAAAAkmxa7wLsCraefPR6FwEAAABgSXoSAQAAACAkAgAAAEBIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAZgyJqmqvqjqnqq4Z/2+3yHhvq6p/rqq3zDI/AAAAAHaMWXsSnZjkvNbagUnOG4+neUGSJ8w4LwAAAAB2kFlDomOSnDGGz0jymGkjtdbOS/KvM84LAAAAgB1k1pBo39batWP4i0n2nXF6AAAAAKyDTcuNUFXnJrnDlJeeM/mgtdaqqs1SmKo6IckJSXLAAQfMMikAAAAAtsOyIVFr7YjFXquqL1XVfq21a6tqvyRfnqUwrbVTk5yaJFu2bJkpcAIAAABg5Wa93OysJMeP4eOTvHnG6QEAAACwDmYNiU5O8oiquibJEeNxqmpLVZ02N1JVXZDk9UkOr6rPV9XPzDhfAAAAANbQspebLaW1dn2Sw6c8f3GSJ088PnSW+QAAAACwY83akwgAAACAmwEhEQAAAABCIgAAAACERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAAQIREAAAAAERIBAAAAECERAAAAABESAQAAABAhEQAAAAAREgEAAAA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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "BBT8gghkM0aI" }, "source": [ "Теперь обратимся к методам с регуляризацией.\n", "\n", "Ridge (L2-регуляризация) сильно штрафует за слишком большие веса и не очень за малые. При увеличении коэффициента перед регуляризатором веса меняются плавно" ] }, { "cell_type": "code", "metadata": { "id": "a4OT2jMXMzz8", "colab": { "base_uri": "https://localhost:8080/", "height": 279 }, "outputId": "7256ddb9-3686-4e18-e216-6f0f4872a751" }, "source": [ "alphas = np.linspace(1, 1000, 100)\n", "\n", "weights = np.empty((len(X.columns), 0))\n", "for alpha in alphas:\n", " ridge_regressor = Ridge(alpha)\n", " ridge_regressor.fit(X_train, y_train)\n", " weights = np.hstack((weights, ridge_regressor.coef_.reshape(-1, 1)))\n", "plt.plot(alphas, weights.T)\n", "plt.xlabel('regularization coef')\n", "plt.ylabel('weight value')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "dRt8FhcHM4f_" }, "source": [ "Lasso одинаково сильно штрафует малые и большие веса, поэтому при достаточно большом коэффициенте регуляризации многие признаки становятся равными нулю, при этом остаются только наиболее инфромативные. Этот факт можно использовать для решения задачи отбора признаков." ] }, { "cell_type": "code", "metadata": { "id": "cBqkQ24lM3lG", "colab": { "base_uri": "https://localhost:8080/", "height": 334 }, "outputId": "519c61ac-beaa-48c9-f408-be182f68dcb9" }, "source": [ "alphas = np.linspace(0.1, 1, 100)\n", "\n", "plt.figure(figsize=(10, 5))\n", "weights = np.empty((len(X.columns), 0))\n", "for alpha in alphas:\n", " lasso_regressor = Lasso(alpha)\n", " lasso_regressor.fit(X_train, y_train)\n", " weights = np.hstack((weights, lasso_regressor.coef_.reshape(-1, 1)))\n", "plt.plot(alphas, weights.T)\n", "plt.xlabel('regularization coef')\n", "plt.ylabel('weight value')\n", "plt.grid()\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "wNcemWQ4My2y", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "b3e60240-d4d5-4cb8-b135-89dc70daf70e" }, "source": [ "ridge = Ridge(0.1)\n", "ridge.fit(X_train, y_train)\n", "print('\\n r2 score ridge: ', r2_score(y_test, ridge.predict(X_test)))\n", "print('test mse ridge: ', mean_squared_error(y_test, ridge.predict(X_test)))\n", "\n", "lasso = Lasso(0.1)\n", "lasso.fit(X_train, y_train)\n", "print('\\n r2 score lasso: ', r2_score(y_test, lasso.predict(X_test)))\n", "print('test mse lasso: ', mean_squared_error(y_test, lasso.predict(X_test)))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "\n", " r2 score ridge: 0.8740521897249454\n", "test mse ridge: 0.07463573942225457\n", "\n", " r2 score lasso: 0.8096651433986044\n", "test mse lasso: 0.11279102613416034\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "0XRm91YX2D7i" }, "source": [ "# Выводы\n", "\n", "- Реализовано аналитическое решение задачи линейной регрессии\n", "- Дано определение Lp регуляризации\n", "- Приведено сравнение Ridge и Lasso регуляризаций модели\n" ] }, { "cell_type": "markdown", "metadata": { "id": "7rS3LA4QME_2" }, "source": [ "# Рекомендованная литература\n", "\n", "- [Матричные производные](http://www.machinelearning.ru/wiki/images/archive/9/93/20170127140036!MO17_seminar3.pdf)\n", "- [Решение уравнения простой линейной регрессии](https://habr.com/ru/post/474602/)\n", "\n" ] } ] }