{ "cells": [ { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Simple regression example\n", "\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt \n", "\n", "beta0true = 1\n", "beta1true = 1\n", "\n", "beta = np.asarray([beta0true, beta1true])\n", "\n", "x = np.linspace(0,1,10)\n", "\n", "\n", "# feature matrix \n", "# hstack : stack numpy arrays horizontally\n", "# vstack : stack vertically\n", "\n", "\n", "Xtilde = np.hstack((np.ones((len(x), 1)), x.reshape(-1,1)))\n", "\n", "\n", "# Xtilde = [1, x] = [1, x^(1); 1 x^(2); ... ]\n", "\n", "t = np.matmul(Xtilde, np.asarray(beta))\n", "\n", "tnoisy = t+np.random.normal(0,.1, len(t))\n", "\n", "plt.scatter(x, tnoisy, c='r')\n", "plt.plot(x, t)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1.81090843]\n", " [-1.48249031]]\n" ] } ], "source": [ "print(beta)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# RSS = (Xtilde*beta - t)^T (Xtilde*beta - t)\n", "\n", "beta0 = np.random.normal(0,1,1)\n", "beta1 = np.random.normal(0,1,1)\n", "\n", "beta = np.squeeze(beta)\n", "\n", "\n", "maxIter = 1000\n", "eta = .01\n", "\n", "\n", "# grad_beta0 = (2/N) * sum_i (t_i - (beta0 + beta1 * x_1^i )) (-1)\n", "# grad_beta1 = (2/N) * sum_i (t_i - (beta0 + beta1 * x_1^i )) (-x_1^i)\n", "\n", "\n", "N = len(x) # number of training samples\n", "\n", "RSS = np.zeros((maxIter, ))\n", "\n", "for i in np.arange(maxIter): \n", " \n", " grad_beta0 = (2/N) * np.sum((t - np.matmul(Xtilde,beta)))*(-1)\n", " \n", " grad_beta1 = (2/N) * np.sum(np.multiply((t - np.matmul(Xtilde,beta)).reshape(-1,1), -x.reshape(-1,1)))\n", " \n", " beta0 -= eta*grad_beta0\n", " beta1 -= eta*grad_beta1\n", " \n", " beta = np.squeeze(np.asarray([beta0, beta1]))\n", " \n", " \n", " RSS[i] = (1/N)*np.sum((t - np.matmul(Xtilde,beta))**2)\n", " \n", " \n", " \n", "beta_learned = beta\n", " \n", "xtest = np.linspace(0,1,100)\n", "\n", "Xtilde_test = np.hstack((np.ones((len(xtest), 1)), xtest.reshape(-1,1)))\n", "\n", "prediction = np.matmul(Xtilde_test, beta_learned.reshape(-1,1))\n", "\n", "\n", "plt.scatter(x, tnoisy, c='r')\n", "plt.plot(x, t)\n", "plt.plot(xtest, prediction, c='g')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.semilogy(RSS)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# RSS = (Xtilde*beta - t)^T (Xtilde*beta - t)\n", "\n", "beta0 = np.random.normal(0,1,1)\n", "beta1 = np.random.normal(0,1,1)\n", "\n", "beta = np.squeeze(beta)\n", "\n", "\n", "eta = .05\n", "\n", "\n", "# grad_beta0 = (2/N) * sum_i (t_i - (beta0 + beta1 * x_1^i )) (-1)\n", "# grad_beta1 = (2/N) * sum_i (t_i - (beta0 + beta1 * x_1^i )) (-x_1^i)\n", "\n", "\n", "N = len(x) # number of training samples\n", "\n", "\n", "num_epochs = 40\n", "\n", "RSS = np.zeros((len(x)*num_epochs, ))\n", "\n", "for epoch in np.arange(num_epochs):\n", "\n", " for i in np.arange(len(x)):\n", "\n", " \n", " xtilde_i = np.squeeze(np.asarray([1, x[i]]))\n", " grad_beta0 = (t[i] - np.matmul(xtilde_i,beta))*(-1)\n", " grad_beta1 = (t[i] - np.matmul(xtilde_i,beta))*(-x[i])\n", "\n", " beta0 -= eta*grad_beta0\n", " beta1 -= eta*grad_beta1\n", "\n", " beta = np.squeeze(np.asarray([beta0, beta1]))\n", "\n", " RSS[epoch*len(x) +i] = (1/N)*np.sum((t - np.matmul(Xtilde,beta))**2)\n", " \n", " \n", " \n", "beta_learned = beta\n", " \n", "xtest = np.linspace(0,1,100)\n", "\n", "Xtilde_test = np.hstack((np.ones((len(xtest), 1)), xtest.reshape(-1,1)))\n", "\n", "prediction = np.matmul(Xtilde_test, beta_learned.reshape(-1,1))\n", "\n", "\n", "plt.scatter(x, tnoisy, c='r')\n", "plt.plot(x, t)\n", "plt.plot(xtest, prediction, c='g')\n", "plt.show()\n", " " ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.semilogy(RSS)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }