{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bagging\n",
    "\n",
    "<p>Bagging is a procedure that let's use bootstrapping to reduce the variance, and ultimately performance, of a prediction. The procedure can be defined as follows:<br><br>\n",
    "We have data $D=[(X_1, Y_1),(X_2, Y_2),...,(X_N, Y_N)]$ and we want to learn:$\\:\\: E[Y|X]=\\hat{f}(X)$. Define a bootstrap sample $D^b$ as $N$ samples from $D$, sampled with replacement. Let $E^b[Y|X]=\\hat{f}^b(X)$ be the function learned from training set $D^b$.\n",
    "Our bagged prediction is then the mean of all estimates of $f^b(X)$. I.e.,\n",
    "<br><br>\n",
    "<center>$\\hat{f}_{bag}(X) = \\frac{1}{B}\\sum\\limits_{b=1}^B \\:\\hat{f}^b(X)$</center>\n",
    "<br>\n",
    "This is a relatively straightforward procedure to implement, which we can show on a simulated example.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import os\n",
    "# os.chdir(\"C:/Users/kevin/Documents/GitHub/DS_course/ipython/\")\n",
    "os.chdir(\"../\")\n",
    "import course_utils as bd\n",
    "import imp\n",
    "imp.reload(bd)\n",
    "\n",
    "#Generate Y, and X, where E[Y|X] is a 3rd order polynomial\n",
    "betas = [0, 2, -2.5, 1]\n",
    "n=200\n",
    "sig=0.2\n",
    "sp=20\n",
    "\n",
    "x_init = np.random.uniform(0, 1, n)\n",
    "e_init = np.random.normal(0, sig, n)\n",
    "\n",
    "dat = bd.genY(x_init, e_init, betas)\n",
    "dat = bd.makePolyFeat(dat, 6)\n",
    "\n",
    "#Plot the data vs. the real curve\n",
    "plt.plot(dat['x'], dat['y'], 'b.')\n",
    "plt.plot(dat['x'], dat[['x','x2','x3']].dot(np.array(betas[1:])), 'r.')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Now let's do bagged prediction using linear regression\n",
    "from sklearn import linear_model\n",
    "\n",
    "n_boots = 100\n",
    "\n",
    "boot_est = dict()\n",
    "x_grid = np.arange(0, 1, 0.01)\n",
    "d_grid = pd.DataFrame(x_grid, columns=['x'])\n",
    "d_grid = bd.makePolyFeat(d_grid, 6)\n",
    "\n",
    "\n",
    "fig = plt.figure()\n",
    "\n",
    "#Generate and plot each bootstrap model\n",
    "for i in range(n_boots):\n",
    "    D_b = dat.iloc[np.random.randint(0, dat.shape[0], size=dat.shape[0])]\n",
    "    regr = linear_model.LinearRegression(fit_intercept=True)\n",
    "    regr.fit(D_b.drop('y', 1), D_b['y'])\n",
    "    boot_est[i] = regr.predict(d_grid)\n",
    "    plt.plot(x_grid, boot_est[i], color='0.75')\n",
    "\n",
    "#Now aggregate the bootstrapped models for a single prediction\n",
    "bag_est = pd.DataFrame(boot_est).mean(axis=1)\n",
    "\n",
    "#For comparison, we'll also see what a single fit on the original data looks like\n",
    "regr = linear_model.LinearRegression(fit_intercept=True)\n",
    "regr.fit(dat.drop('y', 1), dat['y'])\n",
    "non_bag = regr.predict(d_grid)\n",
    "\n",
    "#Truth\n",
    "truth = d_grid[['x','x2','x3']].dot(np.array(betas[1:]))\n",
    "\n",
    "#Now Get MSE of estimates\n",
    "mse_bag = round(np.sqrt(((truth-bag_est)**2).sum()), 3)\n",
    "mse_non = round(np.sqrt(((truth-non_bag)**2).sum()), 3)\n",
    "\n",
    "\n",
    "plt.plot(x_grid, non_bag,'k-', label='Non Bagged Estimate, MSE={}'.format(mse_non))\n",
    "plt.plot(x_grid, bag_est,'r-', label='Bagged Estimate, MSE={}'.format(mse_bag))\n",
    "plt.plot(d_grid['x'], d_grid[['x','x2','x3']].dot(np.array(betas[1:])), 'b--', label='Truth')\n",
    "\n",
    "\n",
    "plt.title('Bagging Example')\n",
    "plt.legend(loc=4)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>We can see in the above example that variance of the bootstrapped predictions is very high, especially around the extreme values of $X$, where there is less data. The goal of Bagging is to reduce the variance of the prediction (and thus improve accuracy). The lever that controls the amount of variance reduction is the number of bootstrap samples used.\n",
    "<br><br> \n",
    "<b>When to use Bagging</b><br><br>\n",
    "According to the original <a href=\"http://statistics.berkeley.edu/sites/default/files/tech-reports/421.pdf\">Bagging paper</a> by Leo Breiman, bagging will produce a much better reduction in training error when the underlying classifier or regression model is unstable, and sensitive to minor variations of the data $D$. The above example was meant to show Bagging at work. We used a linear regression on polynomial features, and even though the underlying model was misspecified (we used degree 6 where the truth is degree 3), the bagged estimate isn't too far from the estimate without bagging. One must be careful when choosing to use bagging, because it can actually hurt performance if the underlying model is fairly stable (if you rerun the above regression example with different data sets or different bootstrapping iterations, you might find that the bagged MSE is worse).\n",
    "</p>\n",
    "\n",
    "## Random Forests\n",
    "### The Basic Algorithm\n",
    "<p>The Random Forest algorithm is probably the most well known and utilized implementation of the Bagging technique. A RF is an ensemble of Decision Trees, where both bagging and random feature selection are used to reduce the variance of the forest. The basic algorithm goes as follows:<br><br>\n",
    "Assume we have a data matrix $D=[X,Y]$ with $N$ records and $M$ features.<br><br>\n",
    "\n",
    "<i><u>Train</u></i><br>\n",
    "For each $b$ of $B$ iterations:\n",
    "<ul>\n",
    "    <li>Draw a bootstrap sample $D^b$ of size $N$ from $D$.</li>\n",
    "    <li>Sample $p$ features from $X$, where $p<<M$.</li>\n",
    "    <li>Grow a Decision Tree $T_b(X)$ on this data</li>\n",
    "</ul>\n",
    "<br>\n",
    "<i><u>Score</u></i><br>\n",
    "Take the average of all of the tree predictions, i.e.<br>\n",
    "$RF(x)=\\frac{1}{B}\\sum\\limits_{b=1}^B \\: T_b(x)$\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>We'll start by building a forest using <a href=\"http://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble\">SKlearn.ensemble</a>. Check out <a href=\"http://scikit-learn.org/stable/modules/ensemble.html\">here</a> for a brief overview of Ensemble methods in Python. We'll also compare this to a single tree. This test is close to an off-the-shelf test, in the sense that we are not doing any intelligent hyper-parameter optimization. However, we do use a few well reasoned starting parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "import pandas as pd\n",
    "import course_utils as bd\n",
    "imp.reload(bd)\n",
    "\n",
    "\n",
    "# f = 'C:/Users/kevin/Documents/GitHub/DS_course/datasets/Cell2Cell_data.csv'\n",
    "f = 'data/Cell2Cell_data.csv'\n",
    "dat=pd.read_csv(f, header=0, sep=',')\n",
    "train, test = bd.trainTest(dat, 0.8)\n",
    "lab = 'churndep'\n",
    "\n",
    "\n",
    "#We'll build a RF and compare to a DT\n",
    "clf_def = DecisionTreeClassifier(criterion='entropy', min_samples_leaf = 20)\n",
    "clf_def = clf_def.fit(train.drop(lab, 1), train[lab])\n",
    "dt_pred = clf_def.predict_proba(test.drop(lab,1))\n",
    "\n",
    "rf_def = RandomForestClassifier(criterion='entropy', n_estimators=100)\n",
    "rf_def = rf_def.fit(train.drop(lab, 1), train[lab])\n",
    "rf_pred = rf_def.predict_proba(test.drop(lab,1))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>Now compare the forest to the tree using AUC</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_curve, auc, roc_auc_score\n",
    "import course_utils as bd\n",
    "imp.reload(bd)\n",
    "\n",
    "\n",
    "bd.plotAUC(test[lab], dt_pred[:,1], 'DT')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DEYD327Mm24a2qHbHUMC8tptXL16lV9++YUff/xRQkIIE7Gzs8PX15c2bdowePBgrly5AkBCQgJOTk74+voW/GRnZ//t+eHh4UyaNOmm+4YOHUqnTp1uuu+xxx5j+fLlN91XufJflzKOjY1lwIABtGjRAg8PDx588EHOnTt3X+8tJSWF3r1707JlS3r37s3ly5eLHHflyhVGjhxJ69at8fDwYNeuXcU+PzIykscee+y+arsbZT4oMrOv8/W63zmUEMfQDt3oXsx007Zt25g1axYA7u7uxMbGMmzYMHOVKkS55OTkREREBFFRUdSoUYP58+cXPPbAAw8QERFR8ONQxImwb775JjNmzCi4feXKFQ4cOMCVK1eIj48vUQ1ZWVkMHDiQp556iri4OGJiYnjqqae4cOHCfb23efPmERISwrFjxwgJCWHevHlFjnvmmWfo168fR44c4eDBgwWXQ77d8729vUlOTiYxMfG+6iupMj31dDrlIovW/05K6lVGdA6mi6dPkeNSU1N56aWX+OSTT2jWrBkvvfQStWrVkiZ+olz5dddmTl+6vy/GW9WvWZthnXqUeHynTp04dOhQicenpqZy6NAhfHz++mz//PPPDB48mDp16rBs2TJmz559x9f5/vvv6dSpE4MHDy64Lzg4uMR13E5oaCibN28G4NFHH6VHjx689dZbN425du0aW7duZdGiRQA4ODgUBGJxzx88eDDLli3jhRdeuO8676RMblEYjUa2RB7g/dClZOfmMHXgyNuGxJ9//omXlxeffvopzz77LJGRkdLETwgLMBgMbNiwgSFDhhTcd/z48YJpp2nTpv3tOWFhYbRp0+am+5YuXcrDDz/Mww8/zNKlS0u07KioKPz97zwlnZqaetNUWOGf6Ojov40/d+4c9erVA6BevXqcP3/+b2NOnDhB7dq1efzxx/Hz82PSpEmkp6ff8fkBAQFs27atRO/vfpW5P5mvpqfxzcZVxJ87jVfj5owKCrntNa5TU1MZP348bm5u7Ny5k44dO5q5WiGsx9385V+aMjMz8fX1JSEhAX9/f3r37l3w2I2pp9s5c+YMtWvXLrh97tw54uLiCAoKQimFvb09UVFRtGnTpsijge72CCFXV9di67kXubm5HDhwgI8++ogOHTrwzDPPMG/ePObOnVvs89zc3Dh9+nSp1nI7ZWqLItdg4Ov1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bd.plotAUC(test[lab], rf_pred[:,1], 'RF')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>We can see that with little optimization involved, the RF is already a bit better. Let's see how much better we can do with a grid search on both the DT and the RF. We have already covered DT optimization in a different module, so here we'll focus on the input parameters of the RandomForestClassifier object that let us tune the forest.<br><br>\n",
    "\n",
    "The following two are forest specific:\n",
    "<ul>\n",
    "    <li>n_estimators - the number of trees (and bootstrapped samples) to be used</li>\n",
    "    <li>max_features - the number of features that will be randomly sampled for each tree.</li>\n",
    "</ul>\n",
    "The default in RandomForestClassifier is max_features=sqrt(total_features), which is generally a good suggestion. The default for n_estimators is 10, which is probably too low. The other design parameters are specific to the individual decision trees, which are covered in the decision tree module.\n",
    "</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Out-of-Bag Error\n",
    "<p>Usually we would want to use cross-validation for performance tuning. For Random Forests, this becomes problematic, as cross-validation with RF's can be painfully slow. That's because each cross-validation step requires building k*n_estimators trees. One advantage of a random forest is that it performs what is called an \"out-of-bag\" error calculation. Remember that each tree is built from a bootstrap sample of the data, so that for each tree, some portion of the data is not used for that tree. The RF method computes an out-of-bag prediction for each record $[x_i, y_i]$ by averaging the prediction $f^b(x_i,y_i)$ on record $i$ for the bootstrap iterations in which record $i$ was not chosen in the bootstrap. The out-of-bag prediction can then be used to compute out-of-sample error for model selection and validation. This method should be equivalent to $N$-fold cross-validation. \n",
    "\n",
    "<br><br>\n",
    "We'll start by building a tree of oob predictions enabled and then compare the performance to a true hold out set.\n",
    "\n",
    "</p>"
   ]
  },
  {
   "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": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rf_def = RandomForestClassifier(criterion='entropy', n_estimators=100, oob_score=True)\n",
    "rf_def = rf_def.fit(train.drop(lab, 1), train[lab])\n",
    "rf_pred_test = rf_def.predict_proba(test.drop(lab,1))\n",
    "rf_pred_train = rf_def.predict_proba(train.drop(lab,1))\n",
    "\n",
    "bd.plotAUC(test[lab], rf_pred_test[:,1], 'Test')\n",
    "bd.plotAUC(train[lab], rf_pred_train[:,1], 'Train')\n",
    "bd.plotAUC(train[lab], rf_def.oob_decision_function_[:,1], 'OOB')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>We can see two very important things here. \n",
    "<ul>\n",
    "    <li>The training AUC is 1.00. This means that the RF perfectly predicts the training set!</li>\n",
    "    <li>The OOB AUC is exactly equal to the test AUC up to 2 digits of precision.</li>\n",
    "</ul>\n",
    "Now we'll use OOB error to do model selection."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_est = [50, 100, 200, 500, 1000]\n",
    "m_feat = [1, 3, 6, 11]\n",
    "\n",
    "aucs_oob = {}\n",
    "aucs_test = {}\n",
    "\n",
    "for m in m_feat:\n",
    "    aucs_oob[m] = []\n",
    "    aucs_test[m] = []\n",
    "    for n in n_est:\n",
    "        rf_oob = RandomForestClassifier(criterion='entropy', n_estimators=n, max_features=m, oob_score=True)\n",
    "        rf_oob = rf_oob.fit(train.drop(lab, 1), train[lab])\n",
    "        aucs_oob[m].append(roc_auc_score(train[lab], rf_oob.oob_decision_function_[:,1]))\n",
    "        aucs_test[m].append(roc_auc_score(test[lab], rf_oob.predict_proba(test.drop(lab,1))[:,1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#We'll plot in this block\n",
    "\n",
    "x = np.log2(np.array(n_est))\n",
    "for m in m_feat:\n",
    "    plt.plot(x, aucs_oob[m], label='max_feat={}'.format(m))\n",
    "    \n",
    "plt.title('OOB AUC by Max Feat and N-Estimators')\n",
    "plt.xlabel('Log2(N-Estimators)')\n",
    "plt.ylabel('OOB-AUC')\n",
    "plt.legend(loc=4, ncol=2, prop={'size':10})\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>We can see in the plot above that the forest gets better with more trees, but we see that this effect tapers off asymptotically. We also see somewhat of a Golidlocks phenomenon with respect to the optimal number of features. Having too few features is suboptimal (i.e., max_feat=1), probably due to high bias in the trees. Conversely, having too many features (max_feat=11) is also bad, and this is because the individual trees are too correlated with each other, which prevents the Bagging approach from reducing the overall variance (see the analysis below to understand the math behind this statement). The right number of features is in the middle. We see that choosing $3$ or $6$ perform relatively the same. $3$ happens to be closer to the good heuristic default, which is max_feat=sqrt(total feats). \n",
    "<br><br>\n",
    "Next, for the purpose of educating ourselves, we'll also look at the Test set AUC's on each of the design options above.\n",
    "</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.log2(np.array(n_est))\n",
    "for m in m_feat:\n",
    "    plt.plot(x, aucs_test[m], label='max_feat={}'.format(m))\n",
    "    \n",
    "plt.title('Test AUC by Max Feat and N-Estimators')\n",
    "plt.xlabel('Log2(N-Estimators)')\n",
    "plt.ylabel('Test-AUC')\n",
    "plt.legend(loc=4, ncol=2, prop={'size':10})\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>We can see similar patterns in the true holdout evaluation as we did in the OOB evaluation. We also tend to see a few more things. For one thing, having more trees actually hurts the performance for some levels of max_feat. We also see that the best choice for max_feat was indeed $3$.\n",
    "\n",
    "\n",
    "</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Feature Importance\n",
    "<p>Much like with Decision Trees, the Random Forest Classifier has a built in mechanism for evaluating feature importance. Quoting the sklearn documentation:<br><br> \n",
    "\n",
    "<i>Features used at the top of the tree contribute to the final prediction of a larger fraction of the input samples. The <b>expected fraction of the samples</b> they contribute to can thus be used as an estimate of the <b>relative importance of the features</b>.</i>\n",
    "<br><br>\n",
    "The above computation is made for each feature in each tree and then averaged over all trees in the forest. The Random Forest Classifier returns an attribute with an importance score for each feature, and these scores sum to $1$ across all features.\n",
    "<br><br>\n",
    "We'll train a RF on the best options found above and then look at the feature importances.\n",
    "\n",
    "</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "rf_best = RandomForestClassifier(criterion='entropy', n_estimators=500)\n",
    "rf_best = rf_best.fit(train.drop(lab, 1), train[lab])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a2e0ffe80>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "cols = train.drop(lab, 1).columns.values\n",
    "rf_fi = rf_best.feature_importances_\n",
    "dt_fi = clf_def.feature_importances_\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "width=0.35\n",
    "\n",
    "ax.bar(np.arange(len(cols)), rf_fi, width, color='r', label='RF')\n",
    "ax.bar(np.arange(len(cols))+width, dt_fi, width, color='b', label='DT')\n",
    "\n",
    "ax.set_xticks(np.arange(len(cols)))\n",
    "ax.set_xticklabels(cols, rotation=45)\n",
    "plt.title('Feature Importance from DT and RF')\n",
    "ax.set_ylabel('Normalized Gini Importance')\n",
    "plt.legend(loc=1)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Why do Random Forests work?\n",
    "<p>We can show with a little algebra why Random Forests lead to generally better estimation performance.<br><br> Let's say that the variance of a single tree of size $N$ and $p$ features is: $Var(T_b(X))=\\sigma^2$. Similarly the variance of the Random Forest is the variance of the sum of such trees, i.e., $Var(RF(X))=Var(\\frac{1}{B}\\sum\\limits_{b=1}^B \\: T_b(X)).$ Because the invidual trees are trained with overlapping records and features, the individual tree estimates are correlated. Thus, the variance does not factor completely cleanly into a sum of individual tree variances. We'll solve this by using the following relation:<br><br>\n",
    "\n",
    "<center>$Var(\\frac{1}{B}\\sum\\limits_{b=1}^B \\: T_b(X))=\\frac{1}{B^2}\\sum\\limits_{i=1}^B\\sum\\limits_{j=1}^B\\:Cov(T_i(X), T_j(X))$</center>\n",
    "\n",
    "<center>$=\\frac{1}{B^2}\\sum\\limits_{i=1}^B (\\sum\\limits_{i \\neq j}\\:Cov(T_i(X), T_j(X))+Var(T_i(X))$</center><br><br>\n",
    "If $\\rho$ is the correlationb etween $T_i(X)$ and $T_j(X)$, then $Cov(T_i(X), T_j(X))=\\rho\\sigma^2$. So then:<br><br>\n",
    "\n",
    "<center>$Var(\\frac{1}{B}\\sum\\limits_{b=1}^B \\: T_b(X))=\\frac{1}{B^2}\\sum\\limits_{i=1}^B ((B-1)\\rho\\sigma^2+\\sigma^2)=\\frac{1}{B}((B-1)\\rho\\sigma^2+\\sigma^2)=\\rho\\sigma^2+\\frac{1}{B}(1-\\rho)\\sigma^2$</center><br><br>\n",
    "This last quantity shows the two factors that reduce the variance of the Random Forest. 1). The term $\\rho\\sigma^2$ shrinks to $0$ as the correlation between trees reduces to $0$, which is achieved by randomly downsampling the features. 2). The right-hand term shinks asymptotically to $0$ as $B$ increases.\n",
    "\n",
    "</p>"
   ]
  },
  {
   "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}