move notebook to notes/*
This commit is contained in:
1 parent
d03167d134
commit
a43aacf083
6 files changed
+461
-164
No files matched your search
+3
-1
@@ -1,2 +1,4 @@
|
||||
.venv
|
||||
.vscode
|
||||
.vscode
|
||||
|
||||
__pycache__
|
||||
@@ -1,163 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "70f73980",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e8012b5c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Numerical Optimization\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bea6fa0f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Linear Classifier\n",
|
||||
"\n",
|
||||
"$D = \\set{x_i, y_i }^N_{i=1}$ is given. ($x_i \\in \\R^D,\\, y_i\\in \\set{0, 1}$)\n",
|
||||
"\n",
|
||||
"like"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 37,
|
||||
"id": "3ad846b8",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGiCAYAAADA0E3hAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKdtJREFUeJzt3QtQ1XX+//E3ooBOgZWrKKKUlXYxNW+r5gS7bEw2hlO2bDje8rJdthGdNjVLs5vdB7cwJ7tYU6ktP2ucdKjWYqqNXSfMmWrTptRAVlDXBNMCw+9/3p/zP8Q5HJAD5/Y55/mYOR2/n/P5cr7wFc+rzzXOcRxHAAAALNAl3BcAAADQXgQXAABgDYILAACwBsEFAABYg+ACAACsQXABAADWILgAAABrEFwAAIA1CC4AAMAaBBcAABC9weWjjz6SyZMnS79+/SQuLk7efvvtM55TWloqV155pSQmJsqFF14o69ev7+j1AgCAGOZ3cDlx4oQMGzZMioqK2lV/3759ct1110lWVpbs2rVLCgoKZO7cufLuu+925HoBAEAMi+vMJova4vLWW2/JlClTWq2zePFi2bp1q3z55ZdNZX/605/k2LFjUlJS0tG3BgAAMahrsN+grKxMsrOzPcpycnJMy0tr6uvrzcPt9OnTcvToUTnvvPNMWAIAAJFP20aOHz9uhpd06dLFjuBSXV0tffr08SjT47q6Ovnpp5+ke/fuLc5ZtWqVrFy5MtiXBgAAQqCyslL69+9vR3DpiKVLl8qiRYuajmtra2XAgAHmG09OTg7rtQEAgPbRRor09HQ5++yzJVCCHlxSU1OlpqbGo0yPNYD4am1ROvtIH970HIILAAB2CeQwj6Cv4zJu3DjZvn27R9n7779vygEAAIIaXH788UczrVkf7unO+ueKioqmbp4ZM2Y01b/11ltl7969cvfdd8vu3btlzZo18uabb8rChQv9fWsAABDj/A4un332mYwYMcI8lI5F0T8vX77cHB88eLApxKjzzz/fTIfWVhZd/+Wpp56SF154wcwsAgAACNk6LqEc3JOSkmIG6TLGBQDQEfpx98svv0hjY2O4LyVqxMfHS9euXVsdwxKMz++InFUEAEAgNTQ0mB6BkydPhvtSok6PHj2kb9++kpCQEJL3I7gAAKKaLmKq4zG1dUAXQtMPWBYzDUwLlgbCw4cPm5/vRRddFLBF5tpCcAEARDX9cNXwouuJaOsAAkeXNenWrZt8//335ueclJQkwRb8aAQAQAQIRWtALOoS4p8rdxEAAFiD4AIAAKxBcAEAANYguAAAgCZHjx6VadOmmXVXevbsKXPmzDGr5kcKggsAAO2li9eVlops2OB6jsLF7KZNmyZfffWVWfH+nXfekY8++kjmz58vkYLgAgBAe2zeLJKRIZKVJZKf73rWYy0PgldffVXOO+88qa+v9yifMmWKTJ8+PSjv+fXXX0tJSYnZmmfs2LFy1VVXyTPPPCMbN26U//73vxIJCC4AAJyJhpOpU0UOHPAsr6pylQchvNx0001me4ItW7Y0lR06dMjs/3fLLbe0et5ll10mZ511VquPa6+9ttVzy8rKTPfQqFGjmsqys7PNlOd///vfEglYgA4AgLZod9CCBbpUbMvXtExX4S0oEMnN1c17Arq4W35+vrz88ssmxKjXXntNBgwYIJmZma2et23bNjl16lSbX7c11dXV0rt3b48y3Yvo3HPPNa9FAoILAABt+fjjli0t3uGlstJVr41A0RHz5s2T0aNHS1VVlaSlpcn69etl1qxZbW5ZMHDgQIlmdBUBANCWgwcDW88PI0aMkGHDhpnxLuXl5WbQrAaXtnSmqyg1NdV0RzWnO2rrTCN9LRLQ4gIAQFv69g1sPT/NnTtXCgsLTatLdna22XOpLZ3pKho3bpwcO3bMhKSRI0easg8++MDs9aSDdSNBnKPbO0a4uro6SUlJkdraWjOvHACA9vr555/N7sXnn39+xzYB1DEuOntIB+L6+sjUbpv+/UX27QvoGBc3/ezTXa215ePVV1+VvLw8CSZtkampqZG1a9eaADR79mwzWPeNN97w++cbjM9vuooAAGiLhpHVq11/9h5b4j4uLAxKaFH6wX/jjTeabp4pU6ZIsL3++usyZMgQ+f3vfy+TJk0yU6Kff/55iRR0FQEAcCY33CBSXOyaXdR8oK62tGho0deDSLuJdGG4xMRECTadQdRa60okILgAANAeGk50yrPOHtKBuDqmZeLEoLW0qB9++EFKS0vNY82aNUF7H5sQXAAAaC8NKQGe8nymWUUaXh577DEZPHhwyN43khFcAACIUPv37w/3JUQcBucCAABrEFwAAIA1CC4AAMAaBBcAAGANggsAALAGwQUAAFiD4AIAAKxBcAEA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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"np.random.seed(7)\n",
|
||||
"\n",
|
||||
"y = np.random.randint(0, 2, size=20)\n",
|
||||
"\n",
|
||||
"x = np.random.normal(0, 0.08, size=(2, 20)) + np.vstack([y / 2 + 0.25, y / 2 + 0.25])\n",
|
||||
"\n",
|
||||
"plt.xlim(0, 1)\n",
|
||||
"plt.ylim(0, 1)\n",
|
||||
"\n",
|
||||
"plt.scatter(x[0, :][y == 0], x[1, :][y == 0], color=\"red\", label=\"y = 0\")\n",
|
||||
"plt.scatter(x[0, :][y == 1], x[1, :][y == 1], color=\"blue\", label=\"y = 1\")\n",
|
||||
"\n",
|
||||
"plt.legend()\n",
|
||||
"\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8b9e393c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"we want to create a **classifier**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8bb1768a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"first, set a target function\n",
|
||||
"\n",
|
||||
"$$L(w) = \\frac{1}{2}\\sum_{i}^{N}{| f(x_i; w) - y_i|^2}$$\n",
|
||||
"\n",
|
||||
"then how to get $w^* = \\text{argmin} L(w) $: $w$ to get lowest $L(w)$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "18da07bf",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Learning (Optimization)\n",
|
||||
"\n",
|
||||
"$$f(x; w) = w^Tx$$\n",
|
||||
"\n",
|
||||
"$$L(w) = \\frac{1}{2}\\sum{|w^Tx_i - y_i|^2} \\\\=\\frac{1}{2} (w^Tx - y)^2\\\\= \\frac{1}{2}{(w^Tx - y)}^T{(w^Tx - y)}$$\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = x(x^Tw-y)$$\n",
|
||||
"\n",
|
||||
"in order to minimize $L(w)$, \n",
|
||||
"$$\\left.\\frac{dL}{dw}\\right|_{w=w^*} = 0$$\n",
|
||||
"\n",
|
||||
"therefore,\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = $$\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bcb16cc8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Analytic Method\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = 0 \\to$$\n",
|
||||
"\n",
|
||||
"Numerical Method\n",
|
||||
"\n",
|
||||
"* gradient descent\n",
|
||||
"\n",
|
||||
"$$w_{t+1} = w_t - \\eta \\left . \\frac{dL}{dw} \\right |_{w=w_t}$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "71cb6971",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "6577fc8a",
|
||||
"metadata": {},
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "2025-02-AI (3.12.11)",
|
||||
"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.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
from .hello import *
|
||||
File renamed without changes.
+225
@@ -0,0 +1,225 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "70f73980",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"plt.rcParams[\"font.family\"] = \"D2Coding\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e8012b5c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Numerical Optimization\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bea6fa0f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Linear Classifier\n",
|
||||
"\n",
|
||||
"$D = \\set{x_i, y_i }^N_{i=1}$ is given. ($x_i \\in \\R^D,\\, y_i\\in \\set{0, 1}$)\n",
|
||||
"\n",
|
||||
"like"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "3ad846b8",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"np.random.seed(7)\n",
|
||||
"\n",
|
||||
"y = np.random.randint(0, 2, size=20)\n",
|
||||
"\n",
|
||||
"x = np.random.normal(0, 0.08, size=(2, 20)) + np.vstack([y / 2 + 0.25, y / 2 + 0.25])\n",
|
||||
"\n",
|
||||
"plt.xlim(0, 1)\n",
|
||||
"plt.ylim(0, 1)\n",
|
||||
"\n",
|
||||
"plt.scatter(x[0, :][y == 0], x[1, :][y == 0], color=\"red\", label=\"y = 0\")\n",
|
||||
"plt.scatter(x[0, :][y == 1], x[1, :][y == 1], color=\"blue\", label=\"y = 1\")\n",
|
||||
"\n",
|
||||
"plt.legend()\n",
|
||||
"\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8b9e393c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"we want to create a **classifier**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8bb1768a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"first, set a target function\n",
|
||||
"\n",
|
||||
"$$L(w) = \\frac{1}{2}\\sum_{i}^{N}{| f(x_i; w) - y_i|^2}$$\n",
|
||||
"\n",
|
||||
"then how to get $w^* = \\text{argmin} L(w) $: $w$ to get lowest $L(w)$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "18da07bf",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Learning (Optimization)\n",
|
||||
"\n",
|
||||
"$$f(x; w) = w^Tx$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\\begin{align}\n",
|
||||
"L(w) &= \n",
|
||||
"\\end{align}$$\n",
|
||||
"$$L(w) = \\frac{1}{2}\\sum{|w^Tx_i - y_i|^2} \\\\=\\frac{1}{2} (w^Tx - y)^2\\\\= \\frac{1}{2}{(w^Tx - y)}^T{(w^Tx - y)}$$\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = x(x^Tw-y)$$\n",
|
||||
"\n",
|
||||
"in order to minimize $L(w)$, \n",
|
||||
"$$\\left.\\frac{dL}{dw}\\right|_{w=w^*} = 0$$\n",
|
||||
"\n",
|
||||
"therefore,\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = $$\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bcb16cc8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Analytic Method\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = 0 \\to$$\n",
|
||||
"\n",
|
||||
"Numerical Method\n",
|
||||
"\n",
|
||||
"* gradient descent\n",
|
||||
"\n",
|
||||
"$$w_{t+1} = w_t - \\eta \\left . \\frac{dL}{dw} \\right |_{w=w_t}$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "71cb6971",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "4162a28f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"np.random.seed(7)\n",
|
||||
"w = np.random.randn(2)\n",
|
||||
"\n",
|
||||
"# Learning rate\n",
|
||||
"eta = 0.1\n",
|
||||
"\n",
|
||||
"# Number of iterations\n",
|
||||
"num_iters = 10_000\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# Gradient descent loop\n",
|
||||
"for i in range(num_iters):\n",
|
||||
" # Compute predictions\n",
|
||||
" y_pred = np.dot(w, x)\n",
|
||||
" # Compute gradient\n",
|
||||
" grad = np.dot(x, (y_pred - y))\n",
|
||||
" # Update weights\n",
|
||||
" w -= eta * grad / len(y)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# Plot separator\n",
|
||||
"plt.title(\"separator of x using gradient descent\")\n",
|
||||
"plt.xlim(0, 1)\n",
|
||||
"plt.ylim(0, 1)\n",
|
||||
"plt.scatter(x[0, :][y == 0], x[1, :][y == 0], color=\"red\", label=\"y = 0\")\n",
|
||||
"plt.scatter(x[0, :][y == 1], x[1, :][y == 1], color=\"blue\", label=\"y = 1\")\n",
|
||||
"\n",
|
||||
"# Separator line: w0*x + w1*y = 0.5\n",
|
||||
"xx = np.linspace(0, 1, 100)\n",
|
||||
"yy = (0.5 - w[0] * xx) / w[1]\n",
|
||||
"plt.plot(xx, yy, \"k--\", label=\"Separator\")\n",
|
||||
"\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "fbe4845a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Logistic Regression"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "2025-02-AI (3.12.11)",
|
||||
"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.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
+232
@@ -0,0 +1,232 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 37,
|
||||
"id": "cce80b24",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"plt.rcParams[\"font.family\"] = \"D2Coding\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d2df6767",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Geometric Interpretation of LR\n",
|
||||
"\n",
|
||||
"## Definition\n",
|
||||
"$$X, W\\in \\R^D$$\n",
|
||||
"\n",
|
||||
"$$W^TX = \\lVert W \\rVert \\lVert X \\rVert \\cos \\theta$$\n",
|
||||
"\n",
|
||||
"$$\\lVert X-W \\rVert^2 = \\lVert X \\rVert ^2 + \\lVert W \\rVert - 2 W^TX$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$$\\lVert X \\rVert \\cos \\theta = \\frac{W^T X} {\\lVert W \\rVert} $$\n",
|
||||
"it means length of projected vector."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "28627e12",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$\\begin{cases}\n",
|
||||
"W^TX_i \\geq b &\\to y_i = 1\\\\\n",
|
||||
"W_TX_i < b &\\to y_i = 2\n",
|
||||
"\\end{cases}$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "7d9d80da",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$\\sum \\frac{1}{2} \\left\\Vert f(x_i;w) - y_i\\right\\Vert$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d0086883",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "powershell"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Likelihood\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 38,
|
||||
"id": "81be7a4c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAGhCAYAAACtc4RMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJxpJREFUeJzt3X9MXfX9x/H3LUaYWmgH1baANKRrgxZ1Moc4ZW3M/lmy4CqprgYaky3WdAY0YYjR4LKY2qiVus5lMfk2dbXEQVpr5mbWJiX2H/6ZzjVlOof9QSmoUIUWC9X2fvP+XC/C7aVw7z33nvM55/lIrpd77rmXA4d6Xvfz4/0JhcPhsAAAAHjcPLcPAAAAYC4ILQAAwAqEFgAAYAVCCwAAsAKhBQAAWIHQAgAArEBoAQAAViC0AAAAKxBaAACAFQgtAADAn6Fl//79smTJEqmtrZ3T/r29vVJVVSU5OTlSXV0tJ06cSOY4AQBAwCUUWh566CHZsGGDrFq1as6vqaurk7KyMhkcHJSKigrzegAAgLSGlp/+9Kfy0UcfyY9+9KM57a+tKt3d3bJlyxZZsGCBLF++XLq6uqS/vz/hAwUAAMF2RSI719TUJPTmR44ckaKiIlm0aJEJKlu3bpWCggI5fPiwFBYWxn3NxMSEuUVdvHhRTp8+Lfn5+RIKhRL6/gAAwB3hcFjOnDkjS5culXnz5mU+tCQqGjbUpk2bpLW1VV566SWzfSabN2+W3/72t+k8LAAAkCF9fX2mAcPzoUVTVlZWlnR0dMjY2JjU19fLiy++eNnXtLS0yGOPPTb5eGRkRK6//nrzQ+fm5qbzcAEAgENGR0eluLhY5s+f79Rbpje05OXlyalTp6S5uVkOHDhgtmkry8KFC2d8TXZ2trnF0sBCaAEAwC5ODu1wtE6LBpSpVq5cKQMDA7Jx40YpLS2VoaEh02KSyOwjAACAhEPLuXPnzNTls2fPmsGy0a+jY1F0cG17e/vk/itWrJDy8nIZHx+X4eFhaWpqksrKStNcBAAAkLbQ8vrrr5vCci+88IL89a9/NV8///zz5rnFixeb7hudHTTVrl27ZO/evWb0cE9Pj+zcuTOhAwQAAFChsI6W9fhAHh0bowNyGdMCAIAd0nH9Zu0hAABgBUILAACwAqEFAABYgdACAACsQGgBAABWILQAAAArpLWMPwDY5sIFkUOHRAYGRJYsEbnrLpGsLLePCoAitADAN/bsEWloEDl58tttujjttm0ia9e6eWQAFN1DAPBNYKmtnR5YVH9/ZLs+D8BdhBYAgaddQtrCEq8+eHRbY2NkPwDuIbQACDwdwxLbwhIbXPr6IvsBcA+hBUDg6aBbJ/cDkB6EFgCBp7OEnNwPQHoQWgAEnk5r1llCoVD853V7cXFkPwDuIbQACDytw6LTmlVscIk+bmujXgvgNkILAEikDktnp0hh4fTt2gKj26nTAriP4nIA8A0NJjU1VMQFvIrQAgBTaEBZvdrtowAQD91DAADACoQWAABgBUILAACwAqEFAABYgYG4gI/pAn/MhAHgF4QWwKf27ImsXDx1IUCtOaJF1Kg5AsBGdA8BPg0stbWXrlzc3x/Zrs8DgG0ILYAPu4S0hSUcvvS56LbGxsh+AGATQgvgMzqGJbaFJTa49PVF9gMAmxBaAJ/RQbdO7gcAXkFoAXxGZwk5uR8AeAWhBfAZndass4RCofjP6/bi4sh+AGATQgvgM1qHRac1q9jgEn3c1ka9FgD2IbQAPqR1WDo7RQoLp2/XFhjdTp0WADaiuBzgUxpMamqoiAvAPwgtgI9pQFm92u2jAABn0D0EAACsQGgBAABWILQAAAArEFoAAIAVCC0AAMAKhBYAAGAFQgsAALACoQUAAFiB0AIAAKxAaAEAAFYgtAAAACsQWgAAgBUILQAAwAqs8gzAURcuiBw6JDIwILJkichdd0VWmwaAVBFaADhmzx6RhgaRkye/3VZUJLJtm8jatW4eGQA/oHsIgGOBpbZ2emBR/f2R7fo8AKSC0ALAkS4hbWEJhy99LrqtsTGyHwAki9ACIGU6hiW2hSU2uPT1RfYDgGQRWgCkTAfdOrkfAMRDaAGQMp0l5OR+ABAPoQVAynRas84SCoXiP6/bi4sj+wFAsggtAFKmdVh0WrOKDS7Rx21t1GsBkBpCCwBHaB2Wzk6RwsLp27UFRrdTpwVAqiguB8AxGkxqaqiICyA9CC0AHKUBZfVqt48CgB/RPQQAAKxAaAEAAFYgtAAAACsQWgAAgD9DS29vr1RVVUlOTo5UV1fLiRMnZn3NwYMH5aabbpKrrrpKbr75ZvMYAAAgraGlrq5OysrKZHBwUCoqKmTDhg2X3T8cDst9990n999/v3z22Wfy4IMPyr333ivnz59P9FsjYHRF4K4ukfb2yD0rBANAsCUUWrRVpbu7W7Zs2SILFiyQ5cuXS1dXl/T398/4Gg0qevvlL38pV199tfzqV7+Szz///LKvAfbsEVm2TGTNGpH16yP3+li3AwCCKaHQcuTIESkqKpJFixaZ0LF161YpKCiQw4cPz/ga3ffGG2+UHTt2yJdffimvvPKKrFy5Uop1IZI4JiYmZHR0dNoNwaLBpLZW5OTJ6ds15+p2gkvw0OoGIOHQcvr0acnPzzdfb9q0SVpbW6WkpMRsn0koFJLXXntNnnnmGdPS8uSTT8ru3bvliivi17XbvHmz5OXlTd5mCjfwJ70YNTRot+Klz0W3NTZy0QoSWt0AJBVadHxKVlaWdHR0yNjYmNTX18uFWa4eX331lRnT0tzcLF988YUJJevWrZNz587F3b+lpUVGRkYmb319fYkcIiyn5d9jW1hig4v+Seh+8D9a3QAkHVq05ePUqVMmgPzpT38y27SVZeHChTO+RmcKnTlzRp544gnz+kceecS0vrz99ttx98/Ozpbc3NxpNwSHrlfj5H6wF61uAFIKLToWZWBgQDZu3CilpaUyNDRkWkJWrVo1uY+GmqnOnj1rgogGlSid+qzbgVi6wJ6T+8FetLoBSCm0rFixQsrLy2V8fFyGh4elqalJKisrJ8edaNdPYWGhtOtouW/cdtttJsi8/PLLpktp165d8sEHH8jtt9+eyLdGQOiKwEVFOhYq/vO6Xf/cdD/4G61uAFKu06KhY+/evbJ06VLp6emRnTt3Tj63ePFi052jM4qiNND85S9/kT/+8Y9mJpEGGx2I+73vfS/Rb42ArBC8bVvk69jgEn3c1hbZD/5GqxuAWKGwjq71MJ3yrGNhdFAu41uCQwdY6niGqd0D2sKigWXtWjePDJmiY1V0lpAOuo33fykNsdoqd/QoIRYIyvU7/rxjwGUaTGpqIuMVtPlfP01rlxAXp+C1uuksIQ0oU4MLrW5AMBFa4Fl6MVq92u2jgNvhtbPz0lY3bWGh1Q0IHkILAE+j1Q1AFKEFgOfR6gYgqdlDAAAAbiC0AAAAKxBaAACAFQgtAADACoQWAABgBUILAACwAlOeAThefp+aKgDSgdACIK1rRmn1Wi3HT/VaAKmiewiAY4FF1wmaGliULnio2/V5AEgFoQWAI11C2sISbzXm6LbGxsh+AJAsQguAlOkYltgWltjg0tcX2Q8AkkVoAZAyHXTr5H4AEA+hBUDKdJaQk/sBQDyEFgAp02nNOksoFIr/vG4vLo7sBwDJIrQASJnWYdFpzSo2uEQft7VRrwVAaggtgMN0hkxXl0h7e+Q+KDNmtA5LZ6dIYeH07doCo9up0wIgVRSXAxwU9OJq+jPW1FARF0B6hMLheJUVvGN0dFTy8vJkZGREcnNz3T4cYNbiarH/oqLdI7Q2AAiS0TRcv+keAhxAcTUASD9CC+AAiqsBQPoRWgAHUFwNANKP0AI4gOJqAJB+hBbAARRXA4D0I7QADqC4GgCkH6EFcAjF1QAgvSguBziI4moAkD6EFsBhGlBWr3b7KADAf+geAgAAViC0AAAAKxBaAACAFQgtAADACoQWAABgBUILAACwAqEFAABYgdACAACsQGgBAABWILQAAAArEFoAAIAVCC0AAMAKhBYAAGAFVnkGEFgXLogcOiQyMCCyZInIXXdFVukG4E2EFgCBtGePSEODyMmT324rKhLZtk1k7Vo3jwzATOgeAhDIwFJbOz2wqP7+yHZ9HoD3EFoABK5LSFtYwuFLn4tua2yM7AfAWwgtAAJFx7DEtrDEBpe+vsh+ALyF0AIgUHTQrZP7AcgcQguAQNFZQk7uByBzCC0AAkWnNessoVAo/vO6vbg4sh8AbyG0AAgUrcOi05pVbHCJPm5ro14L4EWEFgCBo3VYOjtFCgunb9cWGN1OnRbAmyguByCQNJjU1FARdyoqBMPrCC0AAksvyKtXu30U3kCFYNiA7iEACDgqBMMWhBYACDAqBMMmhBYACDAqBMMmjGkJEAbZAYhFhWDYhNASEAyyAxAPFYJhE7qHAiCdg+y09aarS6S9PXJPvzdgFyoEwyaEFp9L5yA7DTvLlomsWSOyfn3kXh8z0wCwBxWC4evQ0tvbK1VVVZKTkyPV1dVy4sSJWV9z8eJFeeqpp2ThwoWyYMECeeihh5I9XnhkkB1TJAH/oEIwfBta6urqpKysTAYHB6WiokI2bNgw62u2b98ub7/9thw+fFiOHTtm3gP2DrJjiiTgPxpMjh0TOXhQZPfuyP3RowQWWDwQV1tVuru7Zd++fabFZPny5dLW1ib9/f1SGBvRp9i6davs3btXijS2i8idd96Z+pHDtUF2ibTeUG0UsAcVguGrlpYjR46Y4LFo0SITVDSMFBQUmBaUy3UnjY6OyquvvipXXXWVaaV57733Ztx/YmLC7D/1Bm8NsmOKJADA86Hl9OnTkp+fb77etGmTtLa2SklJidk+k48//lg+//xzOXv2rGmpueeee2TdunVmnEs8mzdvlry8vMlbsV5R4alBdkyRBAB4PrSEw2HJysqSjo4OGRsbk/rLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"np.random.seed(7)\n",
|
||||
"\n",
|
||||
"#y = np.random.randint(0, 2, size=20)\n",
|
||||
"\n",
|
||||
"#x = np.random.normal(0, 0.08, size=(2, 20)) + np.vstack([y / 2 + 0.25, y / 2 + 0.25])\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"x = np.random.normal(0.5, 0.2, size=(40, 2), )\n",
|
||||
"plt.xlim(0, 1)\n",
|
||||
"plt.ylim(0, 1)\n",
|
||||
"\n",
|
||||
"plt.scatter(x[:, 0], x[:, 1], color='blue')\n",
|
||||
"#plt.scatter(x[0, :][y == 0], x[1, :][y == 0], color=\"red\", label=\"y = 0\")\n",
|
||||
"#plt.scatter(x[0, :][y == 1], x[1, :][y == 1], color=\"blue\", label=\"y = 1\")\n",
|
||||
"\n",
|
||||
"#plt.legend()\n",
|
||||
"\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "df8f9d0b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Maximize the probability"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "417911ef",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 40,
|
||||
"id": "620ef30c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MLE estimated mu: [0.50995502 0.46521124]\n",
|
||||
"MLE estimated sigma: [0.19530993 0.22297348]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# X가 2차원 데이터이므로 각 차원별로 평균(mu)과 표준편차(sigma)를 추정합니다.\n",
|
||||
"# MLE: mu = sample mean, sigma = sample std (biased=False)\n",
|
||||
"mu_mle = np.mean(x, axis=0)\n",
|
||||
"sigma_mle = np.std(x, axis=0, ddof=0) # ddof=0 for MLE\n",
|
||||
"\n",
|
||||
"print(\"MLE estimated mu:\", mu_mle)\n",
|
||||
"print(\"MLE estimated sigma:\", sigma_mle)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "c51e029e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"to assign high probability to the observed data"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "36b7c733",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Logistic Regression RV\n",
|
||||
"\n",
|
||||
"$y_i \\in \\set{0, 1}$\n",
|
||||
"$x_i \\in \\R^D$\n",
|
||||
"\n",
|
||||
"logistic regression function\n",
|
||||
"$$f(X;W) = \\frac{1}{1+\\exp(-W^TX)}$$\n",
|
||||
"\n",
|
||||
"$$\\text{max}\\; L(w) = \\prod_{i=1}^{N}f(x_i)^{y_i} (1-f(x_i))^{1-y_i}$$\n",
|
||||
"where\n",
|
||||
"* $f(x_i)$: prob of choosing $y_i = 1$\n",
|
||||
"* $1-f(x_i)$: prob of choosing $y_i = 0$\n",
|
||||
"\n",
|
||||
"and then update like\n",
|
||||
"$$w_{t+1} = w_t + \\eta \\left . \\frac{dL}{dw}\\right\\vert_{w=w_t}$$\n",
|
||||
"\n",
|
||||
"how to get:\n",
|
||||
"\n",
|
||||
"$$w^* = \\argmax L(w) = \\argmax \\ln L(w)$$\n",
|
||||
"\n",
|
||||
"because function $\\ln$ is monotonically increasing function\n",
|
||||
"\n",
|
||||
"so $\\ln L(w) = \\sum_{i=1}^{N}{(y_i\\ln f(x_i) + (1-y_i)\\ln(1-f(x_i)) )}$\n",
|
||||
"\n",
|
||||
"미분하면 된다"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "6b19eb64",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "cba17457",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "0b189852",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "2025-02-AI (3.12.11)",
|
||||
"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.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in new issue
Block a user