{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Machine Learning\n", "> A Summary of lecture \"Introduction to Computational Thinking and Data Science\", via MITx-6.00.2x (edX)\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Chanseok Kang\n", "- categories: [Python, edX, Machine Learning]\n", "- image: images/ml_block.png" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- What is Machine Learning\n", " - Many useful programs learn something\n", "> Note: \"Field of study that gives computers the ability to learn without being explicitly programmed\" - Arthur Samuel\n", " - Modern statistics meets optimization\n", "![ml](image/ml_block.png)\n", "- Basic Paradigm\n", " - Observe set of examples: **training data**\n", " - Infer something about process that generated that data\n", " - Use inference to make predictions about previously unseen data: **test data**\n", "- All ML Methods Require\n", " - Representation of the features\n", " - Distance metric for feature vectors\n", " - Objective function and constraints\n", " - Optimization method for learning the model\n", " - Evaluation method\n", "- Supervised Learning\n", " - Start with set of feature vector / value pairs\n", " - Goal : find a model that predicts a value for a previously unseen feature vector\n", " - **Regression** models predict a real\n", " - E.g. linear regression\n", " - **Classification** models predict a label (chosen from a finite set of labels)\n", "- Unsupervied Learning\n", " - Start with a set of feature vectors\n", " - Goal : uncover some latent structure in the set of feature vectors\n", " - **Clustering** the most common technique\n", " - Define some metric that captures how similar one feature vector is to another\n", " - Group examples based on this metric\n", "- Choosing Features\n", " - Features never fully describe the situation\n", " - Feature Engineering\n", " - Represent examples by feature vectors that will facilitate generalization\n", " - Suppose I want to use 100 examples from past to predict which students will pass the final exam\n", " - Some features surely helpful, e.g., their grade on the midterm, did they do the problem sets, etc.\n", " - Others might cause me to overfit, e.g., birth month\n", " - Whant to maximize ratio of useful input to irrelevant input\n", " - Signal-to-Noise Ratio (SNR)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- K-Nearest Neighbors\n", " - Distance between vectors\n", " - Minkowski metric\n", " $$ dist(X_1, X_2, p) = (\\sum_{k=1}^{len}abs({X_1}_k - {X_2}_k)^p)^{\\frac{1}{p}} \\\\\n", " p=1 : \\text{Manhattan Distance} \\\\\n", " p=2 : \\text{Euclidean Distance}$$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from lecture12_segment2 import *" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "cobra = Animal('cobra', [1,1,1,1,0])\n", "rattlesnake = Animal('rattlesnake', [1,1,1,1,0])\n", "boa = Animal('boa\\nconstrictor', [0,1,0,1,0])\n", "chicken = Animal('chicken', [1,1,0,1,2])\n", "alligator = Animal('alligator', [1,1,0,1,4])\n", "dartFrog = Animal('dart frog', [1,0,1,0,4])\n", "zebra = Animal('zebra', [0,0,0,0,4])\n", "python = Animal('python', [1,1,0,1,0])\n", "guppy = Animal('guppy', [0,1,0,0,0])\n", "animals = [cobra, rattlesnake, boa, chicken, guppy,\n", " dartFrog, zebra, python, alligator]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method scale in module matplotlib.table:\n", "\n", "scale(xscale, yscale) method of matplotlib.table.Table instance\n", " Scale column widths by *xscale* and row heights by *yscale*.\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compareAnimals(animals, 3) # k=3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Using Distance Matrix for classification\n", " - Simplest approach is probably nearest neighbor\n", " - Remember training data\n", " - When predicting the label of a new example\n", " - Find the nearest example in the training data\n", " - Predict the label associated with that example\n", "- Advantage and Disadvantage of KNN\n", " - Advantages\n", " - Learning fase, no explicit training\n", " - No theory required\n", " - Easy to explain method and results\n", " - Disadvantages\n", " - Memory intensive and predictions can take a long time\n", " - Are better algorithms than brute force\n", " - No model to shed light on process that generated data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Applying scaling\n", "cobra = Animal('cobra', [1,1,1,1,0])\n", "rattlesnake = Animal('rattlesnake', [1,1,1,1,0])\n", "boa = Animal('boa\\nconstrictor', [0,1,0,1,0])\n", "chicken = Animal('chicken', [1,1,0,1,2])\n", "alligator = Animal('alligator', [1,1,0,1,1])\n", "dartFrog = Animal('dart frog', [1,0,1,0,1])\n", "zebra = Animal('zebra', [0,0,0,0,1])\n", "python = Animal('python', [1,1,0,1,0])\n", "guppy = Animal('guppy', [0,1,0,0,0])\n", "animals = [cobra, rattlesnake, boa, chicken, guppy,\n", " dartFrog, zebra, python, alligator]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method scale in module matplotlib.table:\n", "\n", "scale(xscale, yscale) method of matplotlib.table.Table instance\n", " Scale column widths by *xscale* and row heights by *yscale*.\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfIAAAE6CAYAAADtKtAJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeVwTd/4/8FcMtli88OBbBReLHGJOEBARFbwK3gIqiojiWevRu9u6au3aw+LuqlXZVikeddVqaz1A1qJ4sexPQNBq19YDrIKrICIgooG8f3+wTA0kIVyBse/n4+HDR2Y+M/Oamc/MOyGfJBIiAmOMMcbEqVVzB2CMMcZY/XEhZ4wxxkSMCzljjDEmYlzIGWOMMRHjQs4YY4yJGBdyxhhjTMQsmjuAmLRp0+a/ZWVl/9fcOerK0tJSW1ZWJsonbWLNzrnNi3Obn1izizj3nUePHr2ob56EP0duOolEQmI8XhKJBGLMDYg3O+c2L85tfmLNLvLcEn3zRPeshDHGGGO/4ULOGGOMiRgXcvZMys7Ohlwub+4YjDHW5LiQM8YYYyLGhZw9s8rLyxEREQGlUomQkBCUlpbi2LFjcHNzg0KhQGRkJB4/fgwA+PDDD+Hp6Qm5XI65c+eKcjAMY+z3iQs5e2b9/PPPmDt3Li5cuID27dvjr3/9K2bMmIE9e/bgxx9/RHl5OaKjowEACxcuRGpqKi5evIhHjx7h8OHDzZyeMcZMw4WcPbN69OiBAQMGAACmTZuGY8eO4aWXXoKzszMAICIiAqdOnQIAJCUloV+/flAoFDh+/DguXbrUbLkZY6wu+Ath2DNLItH7kcsaysrKsGDBAqSlpaFHjx744IMPUFZW1sTpGGOscfAr8mY2Y8YM7Nu3r1m2vXbtWpSWlgqPP/74Y535bdu2NUuOrVu3YuHChY2+3l9//RUpKSkAgF27dmHYsGHIzs7G1atXAQA7duzA4MGDhaLdpUsXlJSUmO18GDr3ubm5CAkJMbpsz549kZ+f31TRngkffPAB1qxZU6dlTpw4gX/961965z1+/BjDhg2DWq3Gnj17GiNikxBb33j6vtNSPm3y9DGsug+acl0aU/1+25i4kItAeXl5vZc1NmirtkIudq6urti2bRuUSiUKCgrw+uuvIzY2FhMnToRCoUCrVq0wf/58dOzYEXPmzIFCocD48ePh6enZrLm7d+/ebE/ufs/Ky8uNFvKMjAxoNBpkZmZi8uTJOvMqKirMEbHRNOSe0tjEct9p6HVZn0Jucr8iIv5n4r/Kw2Wabdu2kUKhIKVSSdOmTaPs7GwaMmQIKRQKGjJkCN24cYOIiCIiImjevHnk6+tLTk5OdOjQISIiio2NpZCQEBo9ejT5+/tTcXExDRkyhNzc3Egul9P3339vcNtZWVnUu3dveuWVV0itVhMA6tu3L/Xp04eWL19ORETr1q2j1q1bk1wuJz8/P3r33XepVatWpFKpaOrUqUREZGVlJazzs88+Iw8PD1IoFMI6SkpKaOTIkaRUKkkmk9Hu3buJiMje3p6WL18uZP3Pf/5DRET/7//9P+rfvz+p1Wrq378/Xb58WdjXV199lYiIDh8+TN7e3pSXl0d3796luhzzlkRf7up9IiIighYtWkT9+/enl156ifbu3UtEledPJpMREVF5eTm9+eabJJfLSaFQ0Pr164mo8hjn5eVRaWkpvfzyy/Tll18SEdGOHTvI09OTVCoVzZ07l8rLy4mo8ly+//77pFQqqV+/fvTf//7X5NzVffjhh+Ti4kLDhg2j0NBQioqKosGDB1NqaioREeXl5ZG9vT0RVZ7bsWPH0ssvv0zOzs70wQcfCPvo4uJC06dPJ4VCQcHBwfTw4UNKTEyk8ePHC9s6evQoTZgwweTjvWrVKnJ2dqahQ4cK2YiIvvzyS/Lw8CClUklBQUH08OFDIqq8/l5//XXy8/OjoKAg+r//+z/q3r07qVQqOnXqlLD+O3fuUK9evah9+/akUqno6tWrZG9vTytXrqQBAwbQrl27KCMjg/r160cKhYLGjx9PBQUFRER09uxZUigU5O3tTW+99ZZwbk093kRE0dHRpFKpSKVSUc+ePcnPz4/++c9/kre3N7m5uVFISAgVFxcTUWXfeOedd8jT05M8PT3pypUrNfb1jTfeMHg9mspQdn3n9vDhw3rPa/X7TtW9a/bs2dSnTx8aPnw4lZaWEhEZPL6DBw8W9tfJyUnnvJmSe9y4ceTu7k59+vShL774QjiGeXl5RPTbffDp6/Lhw4c0ceJEUigUNGnSJPLy8hL6//z582u93xIR/eMf/yC5XE4ymYzeeecdIY+VlRUtW7aMvLy86PTp09Vz669Nhmbwv/oX8osXL5Kzs7PQEe7du0ejR4+mrVu3EhFRTEwMjRs3jogqL66XX36ZKioq6JdffiFbW1t69OgRxcbGkq2tLd27d4+IiDQaDT148ICIKm+UvXr1Iq1Wq3f7WVlZJJFIKCUlhYh+67jl5eU0ePBgOn/+PBHpdlYi3cL99ON//vOfNGfOHNJqtVRRUUGjRo2ikydP0r59+2j27NlC+8LCQmG9VQVn48aNNGvWLCIievDgAWk0GiIi+uGHHygoKIiIfivk3333Hfn6+goX6JQpU56ZQq6vT0RERFBISAhVVFTQpUuXqFevXkSke8PYtGkTBQUFCcetqj/Y29tTVlYWDR06lLZt20ZERD/99BONHj2anjx5QkREr7zyijAPAB08eJCIiN5++23685//bFLu6lJTU0mlUlFpaSkVFRWRo6NjrYX8xRdfpPz8fCotLSWZTEapqamUlZVFAOjMmTNERDRz5kyKiooirVZLLi4udPfuXSKq7ANVuWs73mlpaSSXy+nhw4f04MED6tWrl1DI8/PzhbZLly4V+mdERASNGjVKeMKzYsUKYZnqkpKSaNSoUcJje3t7Wr16tfBYoVDQiRMniIho2bJltGTJEiIikslklJycTERE7777br0KeZUnT56Qr68vbd++nQYOHEglJSVERPTpp5/SypUrhVyrVq0iosonj1WZq++roevRVMYKefVz+9lnnxk8r0/fd7KyskgqlVJGRgYREU2cOJF27NhBRIaP7+DBg+mNN94gIqK4uDgaOnRonXJXXVNV/TM/P7/WQh4VFUVz584lIqIff/yRpFKp0P+r1mfsfpuTk0M9evSgu3fvkkajIX9/f9q/f7+Qb8+ePYZy661N/Kf1JnD8+HGEhISgS5cuAIBOnTohJSUFU6dOBQCEh4fjzJkzQvtJkyahVatWcHJygoODAy5fvgwAGD58ODp16gSg8gnX+++/D6VSiWHDhiEnJwd37twxmMHe3h7e3t7CY3d3d7i5ueHSpUv46aef6rQ/R48exdGjR+Hm5gZ3d3dcvnwZV65cgUKhQGJiIt59912cPn0aHTp0EJYJCgoCAPTt2xfZ2dkAgAcPHmDixImQy+V4/fXXdUaGJyUlYfXq1YiLi4O1tTUAIDExsU45WzJ9fQIAxo8fj1atWqFPnz56z2diYiLmz58PCwsLneUAYNy4cZg5cyamT58OADh27BjS09Ph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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compareAnimals(animals, 3) k = 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- A more General Approach: Scaling\n", " - Z-scaling\n", " - Each feature has a mean of 0 & a standard deviation of 1\n", " - Interpolation\n", " - Map minimum value to 0, maximum value to 1, and linearly interpolate\n", "```python\n", "def zScaleFeatures(vals):\n", " \"\"\"Assumes vals is a sequence of floats\"\"\"\n", " result = np.array(vals)\n", " mean = np.mean(vals)\n", " result = result - mean\n", " return result/np.std(result)\n", "\n", "def iScaleFeatures(vals):\n", " \"\"\"Assumes vals is a sequence of floats\"\"\"\n", " minVal, maxVal = min(vals), max(vals)\n", " fit = np.polyfit([minVal, maxVal], [0, 1], 1)\n", " return np.polyval(fit, vals)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Clustering\n", " - Partition examples into groups (clusters) such that examples in a group are more similar to each other than to examples in other groups\n", " - Unlike classification, there is not typically a \"right answer\"\n", " - Answer dictated by feature vector and distance metric, not by a group truth label\n", "- Optimization Problem\n", "$$ variability(c) = \\sum_{e \\in c} distance(mean(c), e)^2 \\\\\n", "dissimilarity(C) = \\sum_{c \\in C} variability(c) \\\\\n", "c :\\text{one cluster} \\\\\n", "C : \\text{all of the clusters}$$\n", " - Why not divide variability by size of cluster?\n", " - Big and bad worse than small and bad\n", " - Is optimization problem finding a $C$ that minimizes $dissimilarity(C)$?\n", " - No, otherwise could put each example in its own cluster\n", " - Need constraints, e.g.\n", " - Minimum distance between clusters\n", " - Number of clusters\n", "- K-means Clustering\n", " - Constraint: exactly k non-empty clusters\n", " - Use a greedy algorithm to find an approximation to minimizing objective function\n", "- Algorithm\n", "```\n", "randomly chose k examples as initial centroids\n", "while true:\n", " create k clusters by assigning each example to closest centroid\n", " compute k new centroids by averaging examples in each cluster\n", " if centroids don`t change:\n", " break\n", "```" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from lecture12_segment3 import *" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration #1\n", "Cluster color = 0\n", "Cluster with centroid [1.66014278 3.18525178] contains:\n", " (2, 3)-1\n", "Cluster color = 1\n", "Cluster with centroid [1.8494407 2.7367613] contains:\n", " (2, 3)-0, (2, 3)-2, (2, 3)-3, (2, 3)-4\n", "Cluster color = 2\n", "Cluster with centroid [5.57612073 6.33385138] contains:\n", " (4, 6)-0, (4, 6)-1, (4, 6)-2, (4, 6)-3, (4, 6)-4, (7, 7)-0, (7, 7)-1, (7, 7)-2, (7, 7)-3, (7, 7)-4\n", "Cluster color = 3\n", "Cluster with centroid [7.11402489 3.98797723] contains:\n", " (7, 4)-0, (7, 4)-1, (7, 4)-2, (7, 4)-3, (7, 4)-4\n", "\n", "Iteration #2\n", "Cluster color = 0\n", "Cluster with centroid [1.49914988 3.08204521] contains:\n", " (2, 3)-1, (2, 3)-2, (2, 3)-4\n", "Cluster color = 1\n", "Cluster with centroid [2.28022797 2.44308067] contains:\n", " (2, 3)-0, (2, 3)-3\n", "Cluster color = 2\n", "Cluster with centroid [5.57612073 6.33385138] contains:\n", " (4, 6)-0, (4, 6)-1, (4, 6)-2, (4, 6)-3, (4, 6)-4, (7, 7)-0, (7, 7)-1, (7, 7)-2, (7, 7)-3, (7, 7)-4\n", "Cluster color = 3\n", "Cluster with centroid [7.11402489 3.98797723] contains:\n", " (7, 4)-0, (7, 4)-1, (7, 4)-2, (7, 4)-3, (7, 4)-4\n", "\n", "Iteration #3\n", "Cluster color = 0\n", "Cluster with centroid [1.49914988 3.08204521] contains:\n", " (2, 3)-1, (2, 3)-2, (2, 3)-4\n", "Cluster color = 1\n", "Cluster with centroid [2.28022797 2.44308067] contains:\n", " (2, 3)-0, (2, 3)-3\n", "Cluster color = 2\n", "Cluster with centroid [5.57612073 6.33385138] contains:\n", " (4, 6)-0, (4, 6)-1, (4, 6)-2, (4, 6)-3, (4, 6)-4, (7, 7)-0, (7, 7)-1, (7, 7)-2, (7, 7)-3, (7, 7)-4\n", "Cluster color = 3\n", "Cluster with centroid [7.11402489 3.98797723] contains:\n", " (7, 4)-0, (7, 4)-1, (7, 4)-2, (7, 4)-3, (7, 4)-4\n", "\n" ] }, { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "centers = [(2, 3), (4, 6), (7, 4), (7,7)]\n", "examples = []\n", "random.seed(0)\n", "for c in centers:\n", " for i in range(5):\n", " xVal = (c[0] + random.gauss(0, .5))\n", " yVal = (c[1] + random.gauss(0, .5))\n", " name = str(c) + '-' + str(i)\n", " example = Example(name, pylab.array([xVal, yVal]))\n", " examples.append(example)\n", "\n", "xVals, yVals = [], []\n", "for e in examples:\n", " xVals.append(e.getFeatures()[0])\n", " yVals.append(e.getFeatures()[1])\n", "\n", "random.seed(2)\n", "kmeans(examples, 4, True) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Mitigating Dependence on Initial Centroids\n", "```python\n", "best = kMeans(points)\n", "for t in range(numTrials):\n", " C = kMeans(points)\n", " if dissimilarity(C) < dissimilarity(best):\n", " best = C\n", "return best\n", "```\n", "- A Pretty Example\n", " - User k-means to cluster groups of pixels in an image by their color\n", " - Get the color associated with the centroid of each cluster, i.e., the average color of the cluster\n", " - For each pixel in the original image, find the centroid that is its nearest neighbor\n", " - Replaced the pixel by that centroid" ] } ], "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }