Skip to content

Instantly share code, notes, and snippets.

@rashmitpankhania
Created July 20, 2020 14:41
Show Gist options
  • Save rashmitpankhania/96be8637f7231fddc4ebcc4714876082 to your computer and use it in GitHub Desktop.
Save rashmitpankhania/96be8637f7231fddc4ebcc4714876082 to your computer and use it in GitHub Desktop.
Gradient Descent
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Gradient Descent",
"provenance": [],
"authorship_tag": "ABX9TyO/NEFD1I4HMy9BHwjnwBj0",
"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/rashmitpankhania/96be8637f7231fddc4ebcc4714876082/gradient-descent.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "wdTyLa7_Z3CA",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"outputId": "f490d0a9-6aa8-48d1-9d7e-e7160aa86f12"
},
"source": [
"import numpy as np\n",
"x = 2*np.random.rand(100,1)\n",
"y = 13 + 3*x + np.random.randn(100,1)\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.plot(x,y)"
],
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fc52cec3c50>]"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1UNSUxC8bgo2",
"colab_type": "code",
"colab": {}
},
"source": [
"x_b = np.c_[np.ones((100, 1)), x]\n",
"print(x_b)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "btNzuIBMcgdi",
"colab_type": "code",
"colab": {}
},
"source": [
"learning_rate = 0.1\n",
"n_iterations = 1000\n",
"m = 100 # number of data"
],
"execution_count": 30,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "wEhYddMqem5_",
"colab_type": "text"
},
"source": [
"Now there are two methods of calculating the weights\n",
"\n",
"* The Traditonal way is\n",
"![alt text](https://media.geeksforgeeks.org/wp-content/uploads/20200628183306/Normal_equation1.png)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "iC3DIzbJgRyg",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"outputId": "284b907c-fe94-47b7-ba9c-ac93403a8207"
},
"source": [
"calculated_weights = np.linalg.inv(x_b.T.dot(x_b)).dot(x_b.T).dot(y)\n",
"print(calculated_weights)"
],
"execution_count": 21,
"outputs": [
{
"output_type": "stream",
"text": [
"[[16.07733459]\n",
" [ 0.03004894]]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vmTtKPdihNLz",
"colab_type": "text"
},
"source": [
"Now the above was the tradtional way or technically known as closed form solution\n",
"now we will go throught the desired way or the most useful in nowadays that is gradient descent solution\n",
"\n",
"![alt text](https://i1.wp.com/laconicml.com/wp-content/uploads/2020/04/image2-gra.jpg?fit=608%2C333&ssl=1)\n",
"\n",
"and we will put a loop in given n iterations to get this solution\n",
"![alt text](https://i1.wp.com/laconicml.com/wp-content/uploads/2020/04/image3-gra.jpg?fit=395%2C91&ssl=1)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "B7rit68ZnXzl",
"colab_type": "code",
"colab": {}
},
"source": [
"#initial wights\n",
"weights = np.random.randn(2,1)\n",
"for iter in range(n_iterations):\n",
" gradient = 2/m * x_b.T.dot(x_b.dot(weights) - y)\n",
" weights = weights - learning_rate*gradient\n",
" print(\"Iteration : \"+ str(iter) +\". Value of weights is \" + str(weights) )\n",
"print(weights)"
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment