304 lines
87 KiB
Plaintext
304 lines
87 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Algorytm najszybszego spadku dla regresji wielomianowej. \n",
|
|
"Zakładamy, że dysponujemy zbiorem składającym się z dwóch cech (x i y). Modelujemy zależność y od x za pomocą funkcji wielomianowej. Celem projektu jest implementacja metody najszybszego spadku dla tego problemu. Zakładamy kwadratową funkcję straty. Implementacja powinna umożliwiać podanie stopnia wielomianu, który ma być użyty do modelowania. Implementacja powinna zwracać wektor oszacowanych parametrów oraz pokazywać wizualnie zmiany wartości funkcji straty wraz z postępem uczenia."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Inches for Height and Pound for Weight"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Import i preprocessing danych"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import random\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import numpy as np\n",
|
|
"np.set_printoptions(suppress=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"degree = 2\n",
|
|
"X_plot = np.linspace(0, 1, 1000)\n",
|
|
"initial_theta = np.matrix([0] * (degree + 1)).reshape(degree + 1, 1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"data = pd.read_csv('weight-height.csv')[[\"Height\", \"Weight\"]]\n",
|
|
"data = data.dropna()\n",
|
|
"data_matrix = np.matrix(data)\n",
|
|
"\n",
|
|
"m, n_plus_1 = data_matrix.shape\n",
|
|
"n = n_plus_1 - 1\n",
|
|
"X = (np.ones((m, 1)))\n",
|
|
"\n",
|
|
"for i in range(1, degree + 1):\n",
|
|
" Xn = np.power(data_matrix[:, 0:n], i)\n",
|
|
" Xn /= np.amax(Xn, axis=0)\n",
|
|
" X = np.concatenate((X, Xn), axis=1)\n",
|
|
"\n",
|
|
"X = np.matrix(X).reshape(m, degree * n + 1)\n",
|
|
"Y = np.matrix(data_matrix[:, -1])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Metody do regresji wielomianowej"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def polynomial_regression(theta, x):\n",
|
|
" return sum(theta * np.power(x, i) for i, theta in enumerate(theta.tolist()))\n",
|
|
"\n",
|
|
"def mean_squared_error(theta, X, Y):\n",
|
|
" J = 1.0 / (2.0 * m) * ((X * theta - Y).T * (X * theta - Y))\n",
|
|
" return J.item()\n",
|
|
"\n",
|
|
"def classic_gradient(theta, X, Y):\n",
|
|
" return 1.0 / len(Y) * (X.T * (X * theta - Y)) \n",
|
|
"\n",
|
|
"# Batch gradient descent (BGD)\n",
|
|
"def BGD(X, Y, theta, gradient = classic_gradient, cost_function = mean_squared_error, alpha=0.1, eps=10**-5, max_steps = 10000000000):\n",
|
|
" cost = cost_function(theta, X, Y)\n",
|
|
" logs = [[cost, theta]]\n",
|
|
" \n",
|
|
" for i in range(max_steps):\n",
|
|
" theta = theta - alpha * gradient(theta, X, Y)\n",
|
|
" next_cost = cost_function(theta, X, Y)\n",
|
|
" logs.append([next_cost, theta])\n",
|
|
" if abs(cost - next_cost) <= eps:\n",
|
|
" break\n",
|
|
" cost = next_cost\n",
|
|
" return theta, logs\n",
|
|
"\n",
|
|
"# Mini-batch gradient descent (MBGD)\n",
|
|
"def MBGD(X, Y, theta, gradient = classic_gradient, cost_function = mean_squared_error, alpha=0.1, epochs=5, batch_size=16):\n",
|
|
" cost = cost_function(theta, X, Y)\n",
|
|
" logs = [[cost, theta]]\n",
|
|
" start, end = 0, batch_size\n",
|
|
" \n",
|
|
" steps = m / batch_size\n",
|
|
" for i in range(epochs):\n",
|
|
" zipped_XY = list(zip(X, Y))\n",
|
|
" random.shuffle(zipped_XY)\n",
|
|
" X_shuffled, Y_shuffled = zip(*zipped_XY)\n",
|
|
" X_shuffled = np.concatenate(X_shuffled, axis=0) \n",
|
|
" Y_shuffled = np.concatenate(Y_shuffled, axis=0) \n",
|
|
" for j in range(int(steps)):\n",
|
|
" batch = X_shuffled[start:end,:], Y_shuffled[start:end,:]\n",
|
|
" theta = theta - alpha * gradient(theta, batch[0], batch[1])\n",
|
|
" cost = cost_function(theta, X, Y)\n",
|
|
" logs.append([cost, theta])\n",
|
|
"\n",
|
|
" if start + batch_size < batch_size:\n",
|
|
" start += batch_size\n",
|
|
" else:\n",
|
|
" start = 0\n",
|
|
" end = min(start + batch_size, m)\n",
|
|
" return theta, logs\n",
|
|
"\n",
|
|
"# Stochastic gradient descent (SGD)\n",
|
|
"def SGD(X, Y, theta, gradient = classic_gradient, cost_function = mean_squared_error, alpha=0.1, epochs=5, batch_size=16):\n",
|
|
" return MBGD(X, Y, theta, gradient, cost_function, alpha, epochs, 1)\n",
|
|
"\n",
|
|
"#print(mean_squared_error([1,2,1,1],[1,2,43,1]))\n",
|
|
"#mean_squared_error(polynomial_regression(initial_theta, X), Y)\n",
|
|
"#final_theta, logs_1 = BGD(X, Y, initial_theta)\n",
|
|
"#final_theta, logs_2 = MBGD(X, Y, initial_theta, epochs = 30, batch_size = 16)\n",
|
|
"final_theta, logs_2 = SGD(X, Y, initial_theta, epochs = 30)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {
|
|
"image.png": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA70AAAFDCAYAAAD22mnsAAAgAElEQVR4Aey9i5MV1b33/fwBp97UqefkVl5m9gCHPSC3Y0TfWEblMigMaAheciByDorUaLQgJuflIFFHAoxIEIgKMUclyiUqCnEorAcPRnDAwQHHh0GMAySMWB7HGzMJMpMw7t9bq7tX9+q1e3ev3rt77758qaJm797d6/JZq7vXb/1u/4vwDwRAAARAAARAAARAAARAAARAAAQSSuB/JbRf6BYIgAAIgAAIgAAIgAAIgAAIgAAIEIReTAIQAAEQAAEQAAEQAAEQAAEQAIHEEoDQm9ihRcdAAARAAARAAARAAARAAARAAAQg9GIOgAAIgAAIgAAIgAAIgAAIgAAIJJYAhN7EDi06BgIgAAIgAAIgAAIgAAIgAAIgAKEXcwAEQAAEQAAEQAAEQAAEQAAEQCCxBCD0JnZo0TEQAAEQAAEQAAEQAAEQAAEQAAEIvZgDIAACIAACIAACIAACIAACIAACiSUAoTexQ4uOgQAIgAAIgAAIgAAIgAAIgAAIQOjFHAABEAABEAABEAABEAABEAABEEgsAQi9iR1adAwEQAAEQAAEQAAEQAAEQAAEQABCL+YACIAACIAACIAACIAACIAACIBAYglA6E3s0KJjIAACIAACIAACIAACIAACIAACEHoxB0AABEAABEAABEAABEAABEAABBJLAEJvYocWHQMBEAABEAABEAABEAABEAABEIDQizkAAiAAAiAAAiAAAiAAAiAAAiCQWAIQehM7tOgYCIAACIAACIAACIAACIAACIAAhF7MARAAARAAARAAARAAARAAARAAgcQSgNCb2KFFx0AABEAABEAABEAABEAABEAABCD0Yg6AAAiAAAiAAAiAAAiAAAiAAAgklgCE3sQOLToGAiAAAiAAAiAAAiAAAiAAAiAAoRdzAARAAARAAARKJHBy+700fUwVZYaPpakNy6i5829mid1vbaFfzJtME8ZUUyaTodrvTqWGppfp+JfmKdRz7DV6YsHNVD9hpHXOz5+l1k+tc/AJBEAABEAABECgOAIQeovjhqtAAARAAARAQCNwdvciGlpTR427j1Pb6mma0Fo9Yg7tOPUB7bznaspcNJUWPPEyHen6C31ybBstHn+Bdk7NDRvpxEAvtaycRNnMKJrV9Dy9eeJT6vnz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"
|
|
}
|
|
},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Metoda gradientu prostego\n",
|
|
"![image.png](attachment:image.png)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Metody do wykresów"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 720x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def plot_polynomial_regression(theta):\n",
|
|
" fig = plt.figure(figsize=(10,5))\n",
|
|
" Y_plot = polynomial_regression(theta, X_plot).tolist()\n",
|
|
" chart = fig.add_subplot()\n",
|
|
" chart.plot(X[:,1], Y ,\"go\")\n",
|
|
" chart.plot(X_plot, Y_plot, color=\"red\", lw=2, label=f\"degree {len(theta)}\")\n",
|
|
" plt.show()\n",
|
|
" \n",
|
|
"#plot_polynomial_regression(initial_theta)\n",
|
|
"plot_polynomial_regression(final_theta)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Wyniki za pomocą gotowej biblioteki"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.preprocessing import PolynomialFeatures, StandardScaler\n",
|
|
"from sklearn.pipeline import make_pipeline\n",
|
|
"from sklearn.linear_model import Ridge, LinearRegression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Pipeline(steps=[('polynomialfeatures', PolynomialFeatures()),\n",
|
|
" ('linearregression', LinearRegression())])"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = make_pipeline(PolynomialFeatures(degree=degree, include_bias=True), \n",
|
|
" LinearRegression())\n",
|
|
"model.fit(data[[\"Height\"]],Y)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"2"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 720x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"X_plot_2 = np.linspace(-50, 100, 1000)\n",
|
|
"Y_plot_2 = model.predict([[x] for x in X_plot_2])\n",
|
|
"\n",
|
|
"fig = plt.figure(figsize=(10,5))\n",
|
|
"chart = fig.add_subplot()\n",
|
|
"chart.plot(data[\"Height\"], Y ,\"go\")\n",
|
|
"chart.plot(X_plot_2, Y_plot_2, color=\"red\", lw=2, label=f\"degree {degree}\")\n",
|
|
"degree"
|
|
]
|
|
}
|
|
],
|
|
"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
|
|
}
|