297 lines
70 KiB
Plaintext
297 lines
70 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
|
|
"from sklearn.preprocessing import PolynomialFeatures\n",
|
|
"from sklearn.model_selection import train_test_split\n",
|
|
"from sklearn.pipeline import make_pipeline\n",
|
|
"from sklearn.utils import resample\n",
|
|
"from sklearn.model_selection import KFold\n",
|
|
"from sklearn.model_selection import cross_val_score#,metrics.explained_variance_score\n",
|
|
"import sklearn.linear_model as skl\n",
|
|
"import scipy.linalg as scl\n",
|
|
"from sklearn.pipeline import Pipeline\n",
|
|
"from sklearn import model_selection"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def true_fun(X):\n",
|
|
" return np.cos(1.5 * np.pi * X)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Bias-Variance using bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#initiate stuff\n",
|
|
"np.random.seed(2018)\n",
|
|
"err = []\n",
|
|
"bi=[]\n",
|
|
"vari=[]\n",
|
|
"\n",
|
|
"n = 1000\n",
|
|
"n_boostraps = 1000\n",
|
|
"\n",
|
|
"noise=0.1\n",
|
|
"x = np.sort(np.random.uniform(0,1,n)).reshape(-1,1)\n",
|
|
"y = true_fun(x).reshape(-1,1) + np.random.randn(len(x)).reshape(-1,1) * noise\n",
|
|
"y_no_noise= true_fun(x)\n",
|
|
"\n",
|
|
"degrees = np.arange(1,16)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"for degree in degrees:\n",
|
|
" x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
|
|
"\n",
|
|
" model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n",
|
|
" y_pred = np.empty((y_test.shape[0], n_boostraps))\n",
|
|
" for i in range(n_boostraps):\n",
|
|
" x_, y_ = resample(x_train, y_train)\n",
|
|
" # Evaluate the new model on the same test data each time.\n",
|
|
" y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel()\n",
|
|
" error = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) )\n",
|
|
" bias = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 )\n",
|
|
" variance = np.mean( np.var(y_pred, axis=1, keepdims=True) )\n",
|
|
" err.append(error)\n",
|
|
" bi.append(bias)\n",
|
|
" vari.append(variance)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"plt.plot(y)\n",
|
|
"plt.plot(y_no_noise)\n",
|
|
"plt.xlabel('x')\n",
|
|
"plt.ylabel('Franke-value')\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"max_pd = 12 #max polynomial degree to plot to\n",
|
|
"plt.figure()\n",
|
|
"plt.plot(degrees[:max_pd],err[:max_pd],'k',label='MSE')\n",
|
|
"plt.plot(degrees[:max_pd],bi[:max_pd],'b',label='Bias^2')\n",
|
|
"plt.plot(degrees[:max_pd],vari[:max_pd],'y',label='Var')\n",
|
|
"summ=np.zeros(len(vari))\n",
|
|
"for i in range(len(err)):\n",
|
|
" summ[i]=vari[i]+bi[i]\n",
|
|
"plt.plot(degrees[:max_pd],summ[:max_pd],'ro',label='sum')\n",
|
|
"\n",
|
|
"plt.xlabel('Polynomial degree')\n",
|
|
"plt.ylabel('MSE')\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Bias-Variance using kFold CV"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#initiate stuff again in case data was changed earlier\n",
|
|
"np.random.seed(2018)\n",
|
|
"\n",
|
|
"noise=0.1\n",
|
|
"N=1000\n",
|
|
"k=5\n",
|
|
"x = np.sort(np.random.uniform(0,1,N)).reshape(-1,1)\n",
|
|
"y = true_fun(x).reshape(-1,1) + np.random.randn(len(x)).reshape(-1,1) * noise\n",
|
|
"y_no_noise= true_fun(x)\n",
|
|
"\n",
|
|
"degrees = np.arange(1,16)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"kfold = KFold(n_splits = k,shuffle=True,random_state=5)\n",
|
|
"\n",
|
|
"#Two clumsy lines to get the size of y_pred array right\n",
|
|
"X_trainz, X_testz, y_trainz, y_testz = train_test_split(x,y,test_size=1./k)\n",
|
|
"array_size_thingy=len(y_testz)\n",
|
|
"\n",
|
|
"\n",
|
|
"err = []\n",
|
|
"bi=[]\n",
|
|
"vari=[]\n",
|
|
"for deg in degrees:\n",
|
|
" y_pred = np.empty((array_size_thingy, k))\n",
|
|
" j=0\n",
|
|
" model = make_pipeline(PolynomialFeatures(degree=deg),LinearRegression(fit_intercept=False))\n",
|
|
" for train_inds,test_inds in kfold.split(x):\n",
|
|
" xtrain = x[train_inds]\n",
|
|
" ytrain= y[train_inds]\n",
|
|
" xtest = x[test_inds]\n",
|
|
" ytest = y[test_inds]\n",
|
|
" y_pred[:,j] = model.fit(xtrain,ytrain).predict(xtest).ravel()\n",
|
|
" j+=1\n",
|
|
" error = np.mean( np.mean((ytest - y_pred)**2, axis=1, keepdims=True) )\n",
|
|
" bias = np.mean( (ytest - np.mean(y_pred, axis=1, keepdims=True))**2 )\n",
|
|
" variance = np.mean( np.var(y_pred, axis=1, keepdims=True) )\n",
|
|
" err.append(error)\n",
|
|
" bi.append(bias)\n",
|
|
" vari.append(variance)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"max_pd = 12 #max polynomial degree to plot to\n",
|
|
"plt.figure()\n",
|
|
"plt.plot(degrees[:max_pd],err[:max_pd],'k',label='MSE')\n",
|
|
"plt.plot(degrees[:max_pd],bi[:max_pd],'b',label='Bias^2')\n",
|
|
"plt.plot(degrees[:max_pd],vari[:max_pd],'y',label='Var')\n",
|
|
"summ=np.zeros(len(vari))\n",
|
|
"for i in range(len(err)):\n",
|
|
" summ[i]=vari[i]+bi[i]\n",
|
|
"plt.plot(degrees[:max_pd],summ[:max_pd],'ro',label='sum')\n",
|
|
"\n",
|
|
"plt.xlabel('Polynomial degree')\n",
|
|
"plt.ylabel('MSE')\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# ISSUE SOLVED, HOORAY!\n",
|
|
"\n",
|
|
"I went over the math and program again and found the issue.\n",
|
|
"I was calculating means of bias mse and var inside each fold, but what we actually take the expectation values of in the Bias-Variance tradeoff is the exp.val over different datasets!\n",
|
|
"\n",
|
|
"Finally done with this!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"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.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|