Skip to content

Instantly share code, notes, and snippets.

@BankNatchapol
Created March 18, 2020 10:17
Show Gist options
  • Save BankNatchapol/09de0637460f8abec11af42a6b286bd3 to your computer and use it in GitHub Desktop.
Save BankNatchapol/09de0637460f8abec11af42a6b286bd3 to your computer and use it in GitHub Desktop.
OneVar-Linear-Regression.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "OneVar-Linear-Regression.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyOsM8uirjtv1hqO/WON+DbD",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/BankNatchapol/09de0637460f8abec11af42a6b286bd3/onevar-linear-regression.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "09a37j0BW3ml",
"colab_type": "text"
},
"source": [
"#**One Variable Linear Regression**\n",
"---\n",
"*One variable linear regression* คือ โมเดลทางสถิติที่สามารถบอกถึงความสัมพันธ์ ของตัวแปลต้น 1 ตัวและตัวแปรตามได้ <br><br> \n",
"ซึ่ง linear regression สามารถเขียน **hypothesis function** ได้ว่า <br><br>\n",
"\\begin{equation}\n",
"h_\\theta (x) = \\theta _0 + \\theta _1x\n",
"\\end{equation} <br><br> \n",
"และ **cost function** หรือ loss function ได้ว่า <br><br> \n",
"\\begin{equation}\n",
"J(\\theta_0,\\theta_1) = \\frac{1}{2m}\\sum^m_{i=1}(h_\\theta(x^{(i)}) - y^{(i)})^2\n",
"\\end{equation}<br><br>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "-loiVnCEZAYZ",
"colab_type": "code",
"colab": {}
},
"source": [
"import numpy as np # For calculation \n",
"import matplotlib.pyplot as plt # For plot \n",
"\n",
"def costFunction(s0,s1,m): # Function that return cost \n",
" '''\n",
" s0: seta#0\n",
" s1: seta#1\n",
" m: the number of members in array\n",
" '''\n",
" diff = s0 + s1*x - y\n",
" summa = sum(map(lambda x:x**2,diff))\n",
" return (1/(2*m))*summa"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "XAMMJhEviJkG",
"colab_type": "text"
},
"source": [
"##**Hyperparameters**\n",
"ในส่วนของ parameter ที่เราจำเป็นต้องกำหนดค่านั้นจะมีอยู่ 2 ตัวด้วยกัน <br>\n",
">1. initial point หรือค่า $\\theta_j$ เริ่มต้น\n",
">2. learning rate หรือค่า $\\alpha$"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Uwbvl5hRp6Tl",
"colab_type": "code",
"colab": {}
},
"source": [
"s0 = 0\n",
"s1 = 0\n",
"alpha = 0.05 # learning rate"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "JEItxhZsqs3j",
"colab_type": "text"
},
"source": [
"ในการที่จะ ปรับค่า $\\theta_j$ ให้เป็นค่าที่ทำให้ hypothesis function สามารถประมาณค่า output ได้ และ ทำให้ cost function มีค่าน้อยที่สุด สามารถทำได้โดยใช้ **Gradient Descent Algorithm**<br>\n",
">while (! convergence) {<br>\n",
"$\\;\\;\\;\\;\\;\\;\\;\\theta_j:=\\theta_j - \\alpha\\frac{\\partial}{\\partial\\theta_j}J(\\theta_0,\\theta_1)$<br>\n",
"}"
]
},
{
"cell_type": "code",
"metadata": {
"id": "-Dtj_DKJxse1",
"colab_type": "code",
"outputId": "e9b7e33a-98e4-48b2-c70b-31801c6394fe",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 298
}
},
"source": [
"x = np.array([3,1,0,4,10,5,3,4,8,7,5,1,5,4,6]) #input array \n",
"y = np.array([2,2,1,3,6,4,3,4,5,5,4,1,5,3,5]) #result array\n",
"plt.scatter(x,y)\n",
"plt.title('x,y')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, 'x,y')"
]
},
"metadata": {
"tags": []
},
"execution_count": 50
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1fUzjXBRgkC2",
"colab_type": "code",
"colab": {}
},
"source": [
"m = len(x)\n",
"dif = s0 + s1*x - y\n",
"gradient0 = sum(dif)/m\n",
"gradient1 = sum(dif*x)/m"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "IRCvHqpbusru",
"colab_type": "text"
},
"source": [
"ซึ่งสามารถเขียนย่อยออกมาเป็นสมการได้ว่า<br>\n",
">while (! convergence) {<br>\n",
"$\\;\\;\\;\\;\\;\\;\\;\\theta_0:=\\theta_0-\\alpha\\frac{1}{m}\\sum^m_{i=1}(\\theta_0+\\theta_1x^{(i)}-y^{(i)})$<br>\n",
"$\\;\\;\\;\\;\\;\\;\\;\\theta_1:=\\theta_1-\\alpha\\frac{1}{m}\\sum^m_{i=1}(\\theta_0+\\theta_1x^{(i)}-y^{(i)})x^{(i)}$<br>\n",
"}"
]
},
{
"cell_type": "code",
"metadata": {
"id": "kqph2vKfaTAV",
"colab_type": "code",
"outputId": "e814694b-9ac0-4edf-e417-6256e4b4f5a8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 50
}
},
"source": [
"costLog = []\n",
"for i in range(1000): # Learning\n",
" diff = s0 + s1*x - y\n",
" gradient0 = sum(diff)/m\n",
" gradient1 = sum(diff*x)/m\n",
" s0 = s0 - alpha*gradient0\n",
" s1 = s1 - alpha*gradient1\n",
" costLog.append(costFunction(s0,s1,m))\n",
" \n",
"print(f's0 = {s0}\\ns1 = {s1}')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"s0 = 1.16010175007572\n",
"s1 = 0.5393706290173826\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fx05IQVlx5JL",
"colab_type": "text"
},
"source": [
"เมื่อดูค่า cost ในแต่ละการ update จะพบว่า ค่าcost จะลดลงเรื่อยๆจนเข้าใกล้ 0"
]
},
{
"cell_type": "code",
"metadata": {
"id": "XFDia-41jImV",
"colab_type": "code",
"outputId": "e25412c3-8b2f-4ea3-bee5-b761de46e38f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
}
},
"source": [
"plt.plot(range(len(costLog)),costLog);\n",
"plt.title('Cost is converging');"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAZaElEQVR4nO3dfZRddX3v8fdnZjJ5AhJCRsgTJNSI\nBFqBNSD4cBctioFKoq16iVqfaLO8hV5aUAutVy2tbdWWKi5E6S2yLlWQWqsRcwXk4baIIEOhSBIi\nI0+Z8JQASQgPSSb53j/27yRnT3YyJ5OZnPzOfF5rncXZe/9mn+8+O3zmN9+954wiAjMzy19bswsw\nM7Ph4UA3M2sRDnQzsxbhQDczaxEOdDOzFuFANzNrEQ50y46kt0pa2ew69jVJH5B0U7PrsP2XfB+6\n7Q1J7wcuAF4PvAjcD3w+Iu7Yi30+Bvx+RPxkWIo0GyU8Q7chk3QB8GXgr4FDgcOBrwELm1lXjlTw\n/4+2V/wPyIZE0iTgEuDciPheRLwUEVsi4ocR8ck0ZqykL0t6Mj2+LGls2jZV0g2S1kl6XtJ/SGqT\ndA3FN4YfStoo6VMVr32qpL665T+VtFrSi5JWSjptFzWPl/T3kh6XtF7SHZLGp20LJC1L9dwu6ei6\nr3tM0ickPZC+7juSxqVtKyS9s25sh6Q1kk5IyydLujPt978knVo39nZJn5f0U+Bl4EhJp6djWC/p\na5L+n6TfT+M/IumOuq8PSR+X9HDa/+WSlLa1p2NdK+lRSeel8R17eKotJxHhhx97/ADmA/1Ax27G\nXALcBbwG6ALuBP4ybfsb4OvAmPR4KztagI8Bb9vNfk8F+tLzo4BVwPS0PBv4tV183eXA7cAMoB14\nEzAWeB3wEvD2VMungF6gs66enwPTgSnACuDjadtngG/VvcZvAyvS8xnAc8CZFJOnt6flrrT9duAJ\n4BigI71HG4DfScvnA1so2k8AHwHuqHutAG4AJlN8E1wDzE/bPg4sB2YCBwM/SeN3eb78yP/hGboN\n1SHA2ojo382YDwCXRMSzEbEG+Avg99K2LcA04IgoZvb/ESmJ9tBWilCeJ2lMRDwWEb8aOCi1Mz4G\nnB8RqyNia0TcGRGbgP8O/Cgibo6ILcDfAeMpAr/msoh4MiKeB34IHJfWfxtYIGlCWn4/cG16/kFg\n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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "o_YoSxUOhk3-",
"colab_type": "code",
"colab": {}
},
"source": [
"para = np.array([[s0,s1]]).T\n",
"domain = np.array([[1]*12,range(12)]).T\n",
"result = np.dot(domain[:12],para)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "xefRlPWnxUJI",
"colab_type": "text"
},
"source": [
"เมื่อนำสัมประสิทธิ์ $\\theta_0$ และ $\\theta_1$ มาแทนใน hypothesis function และ plot ออกมาก็จะได้ผลลัพท์ของ linear regression"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ky3cGiTOfjNb",
"colab_type": "code",
"outputId": "a530c313-1838-49de-f14e-1bfbec455f50",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
}
},
"source": [
"plt.scatter(x,y)\n",
"plt.plot(range(12),result)\n",
"plt.title('Linear Regression');"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAEICAYAAAB25L6yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nO3dd3xV9f3H8deHJECYYYQVCJswEhWI\nIG6lCopVpEvrrLbYbVtLf6yKC2lLbbXDKq1VW0frCHEW3LhpQSw3jLBX2CMQIEDG5/dHLj5SBJLA\nvTn3Ju/n45EHueeO8z6X5H1Pzvgec3dERCR2NQg6gIiIHJ+KWkQkxqmoRURinIpaRCTGqahFRGKc\nilpEJMapqKXGzOwcM8sPOkddYGaLzOz8oHNIbFNRyzGZ2Roz+8KR0939PXfPCCLTkczsDjMrMbO9\nZlZoZh+a2bCgc1WXuw9w93eCziGxTUUtccPMEo9x1z/dvRnQFngbeDYK8zYz0++LBEI/eFJjZna+\nmW2odHuNmf3UzBaa2W4z+6eZNa50/2Vm9mmlNd5TKt033sxWmlmRmS02sysr3XejmX1gZr81sx3A\nHcfL5e6lwJNAmpmlhl+jpZk9YmabzKzAzO4xs4TwfQlmdp+ZbTez1Wb2fTPzwx8IZvaOmU01sw+A\n/UAPM+trZq+b2U4zyzezr1bKe2l4GYrC8/ppeHpbM3s5vPw7zey9w6Vf+a8WM2tkZveb2cbw1/1m\n1qjye25mt5nZ1vDyfOPE/gcl3qioJVK+CowEugOnADcCmNlA4K/ALUAb4GHgxcMFBKwEzgFaAncC\nT5hZx0qvOxRYBbQHph4vgJk1BK4HdgC7wpMfA0qBXsBA4GLgm+H7vgVcApwGDAJGH+VlrwPGAs2B\nbcDrwFNAO+Aq4EEz6x9+7CPALe7eHMgE3gpPvw3YAKSGl2MicLSxGyYBZ4TznAoMASZXur8DFe9T\nGnAz8Ecza3W890TqBhW1RMrv3H2ju+8EXqKibKCi5B5297nuXubujwMHqSgk3P3Z8PPK3f2fwHIq\nCuqwje7+e3cvdffiY8z7q2ZWCBRTUb5fdvdSM2sPXAr8yN33uftW4LdUFCxUfLg84O4b3H0X8Iuj\nvPZj7r4ovLY+Eljj7o+G8ywAnge+En5sCdDfzFq4+y53/6TS9I5AV3cvCW/jP1pRXwPc5e5b3X0b\n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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment