{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**
Feature engineering is all you need**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial, I will talk about various ways to prepare data. I believe that this is one of the important parts of the whole field of machine learning. And not the easiest! First of all, I want to note that there is no absolutely uniform and correct data preparation. Feature engineering is an art ! I just show the different ways to convert data. And you just have to try different methods for your own task.\n", "Let's start!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1. Standardization**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result of standardization (or Z-score normalization) is that the features will be rescaled so \n", "that they’ll have the properties of a standard normal distribution with mean m = 0, and standart deviation d = 0.\n", "Standard scores (also called z scores) of the samples are calculated as follows:\n", "**z=(x−m)/d**\n", "Standardizing the features so that they are centered around 0 with a standard deviation of 1 is not only important \n", "if we are comparing measurements that have different units, but it is also a general requirement for many machine learning \n", "algorithms. Intuitively, we can think of gradient descent as a prominent example (an optimization algorithm often used in\n", "logistic regression, SVMs, perceptrons, neural networks etc.); with features being on different scales, certain weights \n", "may update faster than others since the feature values xj play a role in the weight updates.\n", "Other intuitive examples include K-Nearest Neighbor algorithms and clustering algorithms that use, for example, Euclidean distance measures – in fact, tree-based classifier are probably the only classifiers where feature scaling doesn’t make a difference.\n", "\n", "In fact, the only family of algorithms that I could think of being scale-invariant are tree-based methods. Let’s take the general CART decision tree algorithm. Without going into much depth regarding information gain and impurity measures, we can think of the decision as “is feature x_i >= some_val?” Intuitively, we can see that it really doesn’t matter on which scale this feature is (centimeters, Fahrenheit, a standardized scale – it really doesn’t matter).\n", "\n", "Some examples of algorithms where feature scaling matters are:\n", "\n", "-k-nearest neighbors with an Euclidean distance measure if want all features to contribute equally\n", "\n", "-k-means (see k-nearest neighbors)\n", "\n", "-logistic regression, SVMs, perceptrons, neural networks etc. if you are using gradient descent/ascent-based optimization, otherwise some weights will update much faster than others\n", "\n", "-linear discriminant analysis, principal component analysis, kernel principal component analysis since you want to find directions of maximizing the variance (under the constraints that those directions/eigenvectors/principal components are orthogonal); you want to have features on the same scale since you’d emphasize variables on “larger measurement scales” more. There are many more cases than I can possibly list here … I always recommend you to think about the algorithm and what it’s doing, and then it typically becomes obvious whether we want to scale your features or not.\n", "\n", "In addition, we’d also want to think about whether we want to “standardize” or “normalize” (here: scaling to [0, 1] range) our data. Some algorithms assume that our data is centered at 0. For example, if we initialize the weights of a small multi-layer perceptron with tanh activation units to 0 or small random values centered around zero, we want to update the model weights “equally.” As a rule of thumb I’d say: When in doubt, just standardize the data, it shouldn’t hurt." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2. Min-Max scaling**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An alternative approach to Z-score normalization (or standardization) is the so-called Min-Max scaling (often also simply called “normalization” - a common cause for ambiguities).\n", "In this approach, the data is scaled to a fixed range - usually 0 to 1.\n", "The cost of having this bounded range - in contrast to standardization - is that we will end up with smaller standard deviations, which can suppress the effect of outliers.\n", "\n", "A Min-Max scaling is typically done via the following equation:\n", "\n", "**Xnorm=(X−Xmin)/(Xmax−Xmin)**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "“Standardization or Min-Max scaling?” - There is no obvious answer to this question: it really depends on the application.\n", "\n", "For example, in clustering analyses, standardization may be especially crucial in order to compare similarities between features based on certain distance measures. Another prominent example is the Principal Component Analysis, where we usually prefer standardization over Min-Max scaling, since we are interested in the components that maximize the variance.\n", "\n", "However, this doesn’t mean that Min-Max scaling is not useful at all! A popular application is image processing, where pixel intensities have to be normalized to fit within a certain range (i.e., 0 to 255 for the RGB color range). Also, typical neural network algorithm require data that on a 0-1 scale." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look, how we can do standardization or Min-Max scaling. \n", "Of course, we could make use of NumPy’s vectorization capabilities to calculate the z-scores for standardization and to normalize the data using the equations that were mentioned in the previous sections. However, there is an even more convenient approach using the preprocessing module from one of Python’s open-source machine learning library scikit-learn.\n", "\n", "For the following examples and discussion, we will have a look at the free “Wine” Dataset that is deposited on the UCI machine learning repository\n", "(http://archive.ics.uci.edu/ml/datasets/Wine).\n", "The Wine dataset consists of 3 different classes where each row correspond to a particular wine sample.\n", "\n", "The class labels (1, 2, 3) are listed in the first column, and the columns 2-14 correspond to 13 different attributes (features)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Class labelAlcoholMalic acid
0114.231.71
1113.201.78
2113.162.36
3114.371.95
4113.242.59
\n", "
" ], "text/plain": [ " Class label Alcohol Malic acid\n", "0 1 14.23 1.71\n", "1 1 13.20 1.78\n", "2 1 13.16 2.36\n", "3 1 14.37 1.95\n", "4 1 13.24 2.59" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "df = pd.io.parsers.read_csv(\n", " 'https://raw.githubusercontent.com/rasbt/pattern_classification/master/data/wine_data.csv',\n", " header=None,\n", " usecols=[0,1,2]\n", " )\n", "\n", "df.columns=['Class label', 'Alcohol', 'Malic acid']\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see in the table above, the features Alcohol (percent/volumne) and Malic acid (g/l) are measured on different scales,\n", "so that Feature Scaling is necessary important prior to any comparison or combination of these data." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean after standardization:\n", "Alcohol=-0.00, Malic acid=-0.00\n", "\n", "Standard deviation after standardization:\n", "Alcohol=1.00, Malic acid=1.00\n" ] } ], "source": [ "from sklearn import preprocessing\n", "\n", "std_scale = preprocessing.StandardScaler().fit(df[['Alcohol', 'Malic acid']])\n", "df_std = std_scale.transform(df[['Alcohol', 'Malic acid']])\n", "\n", "minmax_scale = preprocessing.MinMaxScaler().fit(df[['Alcohol', 'Malic acid']])\n", "df_minmax = minmax_scale.transform(df[['Alcohol', 'Malic acid']])\n", "print('Mean after standardization:\\nAlcohol={:.2f}, Malic acid={:.2f}'\n", " .format(df_std[:,0].mean(), df_std[:,1].mean()))\n", "print('\\nStandard deviation after standardization:\\nAlcohol={:.2f}, Malic acid={:.2f}'\n", " .format(df_std[:,0].std(), df_std[:,1].std()))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Min-value after min-max scaling:\n", "Alcohol=0.00, Malic acid=0.00\n", "\n", "Max-value after min-max scaling:\n", "Alcohol=1.00, Malic acid=1.00\n" ] } ], "source": [ "print('Min-value after min-max scaling:\\nAlcohol={:.2f}, Malic acid={:.2f}'\n", " .format(df_minmax[:,0].min(), df_minmax[:,1].min()))\n", "print('\\nMax-value after min-max scaling:\\nAlcohol={:.2f}, Malic acid={:.2f}'\n", " .format(df_minmax[:,0].max(), df_minmax[:,1].max()))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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Vq5cyX333edyfPr06fzjH//g5ptvDlDNhBC+VFBSwMoDKym0FpKakEpueq4sGNgBvaoHp6gIVq+Gqipjz82qKuP+yZOd31vp2LFjpKenc/fddzNmzBjmzp3LunXruPLKKxk+fLhj2X/nXot58+bx4IMPcsUVV3DJJZc4thBoad68eTzwwAPk5ORwySWXsGHDBubPn8+oUaNc9rp64IEHmDx5MhkZGTz99NOAsZ3DyJEjHXshffe73+X3v/99q2s8/vjjjlWY7YHFmTNn+Pa3v824ceMYN24cn3/+OQC33norkyZNIiMjw+OmnX/+85+ZMmUK48eP57777nOsX/PHP/6RESNGMHPmTD777DOv2jYvL4+77rqL66+/nrS0NFauXMmjjz7K2LFjueGGG6ivrwcgOzvb0ZMRGxvLE088wbhx45g6dSqnT5/26lr//Oc/ue666+jbty9JSUlcd911fPTRR20+Jzs7m4cffpgZM2YwatQotm/fTm5uLsOHD+fJJ590nOeu3Y4fP87w4cM5e/YsTU1NTJ8+nbVr13pV11GjRrndI0wIEToKSgpYvHkxlmoLKfEpWKotLN68mIKSjm+P01v1qgBn+3ZITDT22gwLM24TE2HXLlP7T27D4cOHeeihhygoKODAgQO8/fbbfPrppyxevJif//znbp9TXFzMp59+yvvvv8/jjz/usWyLxcInn3zCSy+9xC233MLDDz/M3r17+eqrr9i9ezcAzz//PDt27KCgoIANGzZQUFBAQkICr776KvPmzWP58uVYLBbuuecel7LPnz/PqlWr2Lt3LwUFBY4v5UcffZSZM2fy5ZdfsmvXLscWAkuXLmXnzp3s2LGDV155hXPnzrmUt3//fv7617/y2WefsXv3bkwmE8uWLaO4uJinn36azz77jI8//rhDw0nffPMNH3zwAatXr+aOO+4gJyeHr776iujoaD744INW51dWVjJ16lS+/PJLZsyY4Qjqli1b5tiKwvnntttuA+DkyZNcdNFFjnJSUlI4efJku/WLjIxk48aN3H///cyZM4f/+Z//Yc+ePbzxxhuO9nHXbhdffDGPPfYY999/P7/+9a8ZPXq0Y2f06dOnu63runXrvG43IURwW3lgJUnmJJKikwhTYSRFJ5FkTmLlgZWBrlrQ6FVDVKWlRs+Ns9hYOHasa+UOGzaMsWPHApCR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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "\n", "def plot():\n", " plt.figure(figsize=(8,6))\n", "\n", " plt.scatter(df['Alcohol'], df['Malic acid'],\n", " color='green', label='input scale', alpha=0.5)\n", "\n", " plt.scatter(df_std[:,0], df_std[:,1], color='red',\n", " label='Standardized [N (m=0, ; d=1)]', alpha=0.3)\n", "\n", " plt.scatter(df_minmax[:,0], df_minmax[:,1],\n", " color='blue', label='min-max scaled [min=0, max=1]', alpha=0.3)\n", "\n", " plt.title('Alcohol and Malic Acid content of the wine dataset')\n", " plt.xlabel('Alcohol')\n", " plt.ylabel('Malic Acid')\n", " plt.legend(loc='upper left')\n", " plt.grid()\n", "\n", " plt.tight_layout()\n", "\n", "plot()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, we can also code the equations for standardization and 0-1 Min-Max scaling “manually”. However, the scikit-learn methods are still useful if you are working with test and training data sets and want to scale them equally.\n", "\n", "E.g.,\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "# std_scale = preprocessing.StandardScaler().fit(X_train)\n", "# X_train = std_scale.transform(X_train)\n", "# X_test = std_scale.transform(X_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3. Non-linear transformation. Mapping to a Uniform distribution**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Like scalers, QuantileTransformer puts all features into the same, known range or distribution. However, by performing a rank transformation, it smooths out unusual distributions and is less influenced by outliers than scaling methods. It does, however, distort correlations and distances within and across features.\n", "\n", "QuantileTransformer and quantile_transform provide a non-parametric transformation based on the quantile function to map the data to a uniform distribution with values between 0 and 1:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.3, 5.1, 5.8, 6.5, 7.9])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn.model_selection import train_test_split\n", "iris = load_iris()\n", "X, y = iris.data, iris.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n", "quantile_transformer = preprocessing.QuantileTransformer(random_state=0)\n", "X_train_trans = quantile_transformer.fit_transform(X_train)\n", "X_test_trans = quantile_transformer.transform(X_test)\n", "np.percentile(X_train[:, 0], [0, 25, 50, 75, 100]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This feature corresponds to the sepal length in cm.\n", "Once the quantile transformation applied, those landmarks approach closely the percentiles previously defined:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([9.99999998e-08, 2.38738739e-01, 5.09009009e-01, 7.43243243e-01,\n", " 9.99999900e-01])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(X_train_trans[:, 0], [0, 25, 50, 75, 100])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can be confirmed on a independent testing set with similar remarks:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.4 , 5.125, 5.75 , 6.175, 7.3 ])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(X_test[:, 0], [0, 25, 50, 75, 100])" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.01351351, 0.25012513, 0.47972973, 0.6021021 , 0.94144144])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(X_test_trans[:, 0], [0, 25, 50, 75, 100])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4. Non-linear transformation. Mapping to a Gaussian distribution**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In many modeling scenarios, normality of the features in a dataset is desirable. Power transforms are a family of parametric, monotonic transformations that aim to map data from any distribution to as close to a Gaussian distribution as possible in order to stabilize variance and minimize skewness.\n", "\n", "PowerTransformer currently provides two such power transformations, the Yeo-Johnson transform and the Box-Cox transform." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn.preprocessing import PowerTransformer\n", "from sklearn.preprocessing import QuantileTransformer\n", "from sklearn.model_selection import train_test_split\n", "\n", "\n", "\n", "\n", "N_SAMPLES = 1000\n", "FONT_SIZE = 16\n", "BINS = 30\n", "\n", "\n", "rng = np.random.RandomState(304)\n", "bc = PowerTransformer(method='box-cox')\n", "yj = PowerTransformer(method='yeo-johnson')\n", "qt = QuantileTransformer(output_distribution='normal', random_state=rng)\n", "size = (N_SAMPLES, 1)\n", "\n", "\n", "# lognormal distribution\n", "X_lognormal = rng.lognormal(size=size)\n", "\n", "# create plots\n", "distributions = [\n", " ('Lognormal', X_lognormal)]\n", "\n", "colors = ['firebrick']\n", "\n", "fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(18,20))\n", "axes = axes.flatten()\n", "axes_idxs = [(0, 1, 2, 3)]\n", " \n", "axes_list = [(axes[i], axes[j], axes[k], axes[l])\n", " for (i, j, k, l) in axes_idxs]\n", "\n", "\n", "for distribution, color, axes in zip(distributions, colors, axes_list):\n", " name, X = distribution\n", " X_train, X_test = train_test_split(X, test_size=.5)\n", "\n", " # perform power transforms and quantile transform\n", " X_trans_bc = bc.fit(X_train).transform(X_test)\n", " lmbda_bc = round(bc.lambdas_[0], 2)\n", " X_trans_yj = yj.fit(X_train).transform(X_test)\n", " lmbda_yj = round(yj.lambdas_[0], 2)\n", " X_trans_qt = qt.fit(X_train).transform(X_test)\n", "\n", " ax_original, ax_bc, ax_yj, ax_qt = axes\n", "\n", " ax_original.hist(X_train, color=color, bins=BINS)\n", " ax_original.set_title(name, fontsize=FONT_SIZE)\n", " ax_original.tick_params(axis='both', which='major', labelsize=FONT_SIZE)\n", "\n", " for ax, X_trans, meth_name, lmbda in zip(\n", " (ax_bc, ax_yj, ax_qt),\n", " (X_trans_bc, X_trans_yj, X_trans_qt),\n", " ('Box-Cox', 'Yeo-Johnson', 'Quantile transform'),\n", " (lmbda_bc, lmbda_yj, None)):\n", " ax.hist(X_trans, color=color, bins=BINS)\n", " title = 'After {}'.format(meth_name)\n", " if lmbda is not None:\n", " title += '\\n$\\lambda$ = {}'.format(lmbda)\n", " ax.set_title(title, fontsize=FONT_SIZE)\n", " ax.tick_params(axis='both', which='major', labelsize=FONT_SIZE)\n", " ax.set_xlim([-3.5, 3.5])\n", "\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also note that even though Box-Cox seems to perform better than Yeo-Johnson for lognormal and chi-squared distributions, keep in mind that Box-Cox does not support inputs with negative values.\n", "You can also try experimenting and apply the transform to other distributions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " **5. Encoding categorical features**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In many practical Data Science activities, the data set will contain categorical variables. Categorical variables are variables that contain label values rather than numeric values. For example a person could have features *[\"male\", \"female\"], [\"from Europe\", \"from US\", \"from Asia\"]*\n", "\n", "Some algorithms can work with categorical data directly.\n", "\n", "For example, a decision tree can be learned directly from categorical data with no data transform required (this depends on the specific implementation).\n", "Many machine learning algorithms cannot operate on label data directly. They require all input variables and output variables to be numeric.\n", "In general, this is mostly a constraint of the efficient implementation of machine learning algorithms rather than hard limitations on the algorithms themselves.\n", "This means that categorical data must be converted to a numerical form. If the categorical variable is an output variable, you may also want to convert predictions by the model back into a categorical form in order to present them or use them in some application.\n", "We can convert categorical features in two way:\n", "-label encoding\n", "-One-Hot Encoding\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 2, 1], dtype=int64)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import preprocessing\n", "le = preprocessing.LabelEncoder()\n", "le.fit([\"paris\", \"paris\", \"tokyo\", \"amsterdam\"])\n", "\n", "list(le.classes_)\n", "['amsterdam', 'paris', 'tokyo']\n", "le.transform([\"tokyo\", \"tokyo\", \"paris\"]) \n", "\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['tokyo', 'tokyo', 'paris']" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(le.inverse_transform([2, 2, 1]))\n", "['tokyo', 'tokyo', 'paris']" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "OneHotEncoder(categorical_features=None, categories=None,\n", " dtype=, handle_unknown='error',\n", " n_values=None, sparse=True)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enc = preprocessing.OneHotEncoder()\n", "X = [['male', 'from US', 'uses Safari'], ['female', 'from Europe', 'uses Firefox']]\n", "enc.fit(X) " ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 0., 0., 1., 0., 1.],\n", " [0., 1., 1., 0., 0., 1.]])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enc.transform([['female', 'from US', 'uses Safari'],['male', 'from Europe', 'uses Safari']]).toarray()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**6. Generating polynomial features**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Often it’s useful to add complexity to the model by considering nonlinear features of the input data. A simple and common method to use is polynomial features, which can get features’ high-order and interaction terms. It is implemented in PolynomialFeatures:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1],\n", " [2, 3],\n", " [4, 5]])" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from sklearn.preprocessing import PolynomialFeatures\n", "X = np.arange(6).reshape(3, 2)\n", "X" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1., 0., 1., 0., 0., 1.],\n", " [ 1., 2., 3., 4., 6., 9.],\n", " [ 1., 4., 5., 16., 20., 25.]])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poly = PolynomialFeatures(2) #2 is degree of new feature\n", "poly.fit_transform(X) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**7. Date and Time feature**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " date-time contains a lot of information that can be difficult for a model to take advantage of in it’s native form, such as ISO 8601 (i.e. 2014-09-20T20:45:40Z).\n", "\n", "If you suspect there are relationships between times and other attributes, you can decompose a date-time into constituent parts that may allow models to discover and exploit these relationships.\n", "\n", "For example, you may suspect that there is a relationship between the time of day and other attributes.\n", "\n", "You could create a new numerical feature called *Hour_of_Day* for the hour that might help a regression model.\n", "\n", "You could create a new ordinal feature called *Part_Of_Day* with 4 values *Morning, Midday, Afternoon, Night* with whatever hour boundaries you think are relevant. This might be useful for a decision tree.\n", "\n", "You can use similar approaches to pick out time of week relationships, time of month relationships and various structures of seasonality across a year.\n", "\n", "Date-times are rich in structure and if you suspect there is time dependence in your data, take your time and tease them out." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Time
02018-08-01 00:00:00
12018-08-01 01:00:00
22018-08-01 02:00:00
32018-08-01 03:00:00
42018-08-01 04:00:00
\n", "
" ], "text/plain": [ " Time\n", "0 2018-08-01 00:00:00\n", "1 2018-08-01 01:00:00\n", "2 2018-08-01 02:00:00\n", "3 2018-08-01 03:00:00\n", "4 2018-08-01 04:00:00" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "time_range = pd.date_range('8/1/2018', periods=744, freq='H')\n", "df = pd.DataFrame(index=time_range)\n", "df['Time'] = df.index\n", "df = df.reset_index(drop=True)\n", "df.head()\n", "\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Timehourdayofweekquartermonthyeardayofyeardayofmonthweekofyear
02018-08-01 00:00:000.02382018213131
12018-08-01 01:00:001.02382018213131
22018-08-01 02:00:002.02382018213131
32018-08-01 03:00:003.02382018213131
42018-08-01 04:00:004.02382018213131
\n", "
" ], "text/plain": [ " Time hour dayofweek quarter month year dayofyear \\\n", "0 2018-08-01 00:00:00 0.0 2 3 8 2018 213 \n", "1 2018-08-01 01:00:00 1.0 2 3 8 2018 213 \n", "2 2018-08-01 02:00:00 2.0 2 3 8 2018 213 \n", "3 2018-08-01 03:00:00 3.0 2 3 8 2018 213 \n", "4 2018-08-01 04:00:00 4.0 2 3 8 2018 213 \n", "\n", " dayofmonth weekofyear \n", "0 1 31 \n", "1 1 31 \n", "2 1 31 \n", "3 1 31 \n", "4 1 31 " ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['hour'] = df['Time'].dt.hour.astype(float)\n", "df['dayofweek'] = df['Time'].dt.dayofweek.astype(str)\n", "df['quarter'] = df['Time'].dt.quarter.astype(str)\n", "df['month'] = df['Time'].dt.month.astype(str)\n", "df['year'] = df['Time'].dt.year.astype(str)\n", "df['dayofyear'] = df['Time'].dt.dayofyear.astype(str)\n", "df['dayofmonth'] = df['Time'].dt.day.astype(str)\n", "df['weekofyear'] = df['Time'].dt.weekofyear.astype(str)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Timehourdayofweekquartermonthyeardayofyeardayofmonthweekofyearhour_sinhour_cos
02018-08-01 00:00:000.023820182131310.0000001.000000
12018-08-01 01:00:001.023820182131310.2588190.965926
22018-08-01 02:00:002.023820182131310.5000000.866025
32018-08-01 03:00:003.023820182131310.7071070.707107
42018-08-01 04:00:004.023820182131310.8660250.500000
\n", "
" ], "text/plain": [ " Time hour dayofweek quarter month year dayofyear \\\n", "0 2018-08-01 00:00:00 0.0 2 3 8 2018 213 \n", "1 2018-08-01 01:00:00 1.0 2 3 8 2018 213 \n", "2 2018-08-01 02:00:00 2.0 2 3 8 2018 213 \n", "3 2018-08-01 03:00:00 3.0 2 3 8 2018 213 \n", "4 2018-08-01 04:00:00 4.0 2 3 8 2018 213 \n", "\n", " dayofmonth weekofyear hour_sin hour_cos \n", "0 1 31 0.000000 1.000000 \n", "1 1 31 0.258819 0.965926 \n", "2 1 31 0.500000 0.866025 \n", "3 1 31 0.707107 0.707107 \n", "4 1 31 0.866025 0.500000 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['hour_sin'] = df['hour'].apply(lambda x: np.sin(2 * np.pi * x / 24.))\n", "df['hour_cos'] = df['hour'].apply(lambda x: np.cos(2 * np.pi * x / 24.))\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**7. Feature engineering fo text data.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There can be multiple ways of cleaning and pre-processing textual data. In the following points, we highlight some of the most important ones which are used heavily in Natural Language Processing (NLP) pipelines.\n", "\n", "**Removing tags**: Our text often contains unnecessary content like HTML tags, which do not add much value when analyzing text. The BeautifulSoup library does an excellent job in providing necessary functions for this.\n", "\n", "**Removing accented characters**: In any text corpus, especially if you are dealing with the English language, often you might be dealing with accented characters\\letters. Hence we need to make sure that these characters are converted and standardized into ASCII characters. A simple example would be converting é to e.\n", "\n", "**Expanding contractions**: In the English language, contractions are basically shortened versions of words or syllables. These shortened versions of existing words or phrases are created by removing specific letters and sounds. Examples would be, do not to don’t and I would to I’d. Converting each contraction to its expanded, original form often helps with text standardization.\n", "\n", "**Removing special characters**: Special characters and symbols which are usually non alphanumeric characters often add to the extra noise in unstructured text. More than often, simple regular expressions (regexes) can be used to achieve this.\n", "\n", "**Stemming and lemmatization**: Word stems are usually the base form of possible words that can be created by attaching affixes like prefixes and suffixes to the stem to create new words. This is known as inflection. The reverse process of obtaining the base form of a word is known as stemming. A simple example are the words WATCHES, WATCHING, and WATCHED. They have the word root stem WATCH as the base form. Lemmatization is very similar to stemming, where we remove word affixes to get to the base form of a word. However the base form in this case is known as the root word but not the root stem. The difference being that the root word is always a lexicographically correct word (present in the dictionary) but the root stem may not be so.\n", "Removing stopwords: Words which have little or no significance especially when constructing meaningful features from text are known as stopwords or stop words. These are usually words that end up having the maximum frequency if you do a simple term or word frequency in a corpus. Words like a, an, the, and so on are considered to be stopwords. There is no universal stopword list but we use a standard English language stopwords list from nltk. You can also add your own domain specific stopwords as needed." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "import re\n", "import spacy\n", "import unicodedata\n", "\n", "nlp = spacy.load('en', parse = False, tag=False, entity=False)\n", "\n", "def remove_accented_chars(text):\n", " text = unicodedata.normalize('NFKD', text).encode('ascii', 'ignore').decode('utf-8', 'ignore')\n", " return text\n", "\n", "def remove_special_characters(text):\n", " text = re.sub('[^a-zA-z0-9\\s]', '', text)\n", " return text\n", "\n", "def lemmatize_text(text):\n", " text = nlp(text)\n", " text = ' '.join([word.lemma_ if word.lemma_ != '-PRON-' else word.text for word in text])\n", " return text" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'\"Héllo! Héllo! can you hear me! I just heard a$$$%%##bout It\\'s an amazing language which can be used for Scripting,\\n Web development\\n Information Retrie@$#$#val, Natural Language Processing, Machine Learning & Artificial Intelligence!\\n What are you waiting for##%$? Go and get start%%ed. He\\'s learning, she\\'s learning, they\\'ve already\\n got a headstart!'" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "doc = \"\"\"\"Héllo! Héllo! can you hear me! I just heard a$$$%%##bout It's an amazing language which can be used for Scripting,\n", " Web development\n", " Information Retrie@$#$#val, Natural Language Processing, Machine Learning & Artificial Intelligence!\n", " What are you waiting for##%$? Go and get start%%ed. He's learning, she's learning, they've already\n", " got a headstart!\"\"\"\"\"\n", " \n", "doc" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'\"Hello! Hello! can you hear me! I just heard a$$$%%##bout It\\'s an amazing language which can be used for Scripting,\\n Web development\\n Information Retrie@$#$#val, Natural Language Processing, Machine Learning & Artificial Intelligence!\\n What are you waiting for##%$? Go and get start%%ed. He\\'s learning, she\\'s learning, they\\'ve already\\n got a headstart!'" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "doc = remove_accented_chars(doc)\n", "doc" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Hello can you hear me I just heard about Its an amazing language which can be used for Scripting\\n Web development\\n Information Retrieval Natural Language Processing Machine Learning Artificial Intelligence\\n What are you waiting for Go and get started Hes learning shes learning theyve already\\n got a headstart'" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "doc = remove_special_characters(doc)\n", "doc" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Hello can you hear me I just heard about Its an amazing language which can be used for Scripting Web development Information Retrieval Natural Language Processing Machine Learning Artificial Intelligence What are you waiting for Go and get started Hes learning shes learning theyve already got a headstart'" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "doc = re.sub(r'[\\r|\\n|\\r\\n]+', ' ',doc)\n", "doc" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Hello can you hear me I just heard about Its an amazing language which can be used for Scripting Web development Information Retrieval Natural Language Processing Machine Learning Artificial Intelligence What are you waiting for Go and get started Hes learning shes learning theyve already got a headstart'" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# remove extra whitespace\n", "doc = re.sub(' +', ' ', doc)\n", "doc" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'hello hello can you hear me i just heard about its an amazing language which can be used for scripting web development information retrieval natural language processing machine learning artificial intelligence what are you waiting for go and get started hes learning shes learning theyve already got a headstart'" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "doc = doc.lower()\n", "doc" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'hello hello can you hear me i just hear about its an amazing language which can be use for scripting web development information retrieval natural language processing machine learn artificial intelligence what be you wait for go and get start he s learn she s learn they have already get a headstart'" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "doc = lemmatize_text(doc)\n", "doc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**8. Feature transformations with ensembles of trees**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Transform your features into a higher dimensional, sparse space. Then train a linear model on these features.\n", "\n", "First fit an ensemble of trees (totally random trees, a random forest, or gradient boosted trees) on the training set. Then each leaf of each tree in the ensemble is assigned a fixed arbitrary feature index in a new feature space. These leaf indices are then encoded in a one-hot fashion.\n", "\n", "Each sample goes through the decisions of each tree of the ensemble and ends up in one leaf per tree. The sample is encoded by setting feature values for these leaves to 1 and the other feature values to 0.\n", "\n", "The resulting transformer has then learned a supervised, sparse, high-dimensional categorical embedding of the data." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "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": [ "import numpy as np\n", "np.random.seed(10)\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn.datasets import make_classification\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.ensemble import (RandomTreesEmbedding, RandomForestClassifier,\n", " GradientBoostingClassifier)\n", "from sklearn.preprocessing import OneHotEncoder\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import roc_curve\n", "from sklearn.pipeline import make_pipeline\n", "\n", "n_estimator = 10\n", "X, y = make_classification(n_samples=80000)\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)\n", "\n", "# It is important to train the ensemble of trees on a different subset\n", "# of the training data than the linear regression model to avoid\n", "# overfitting, in particular if the total number of leaves is\n", "# similar to the number of training samples\n", "X_train, X_train_lr, y_train, y_train_lr = train_test_split(\n", " X_train, y_train, test_size=0.5)\n", "\n", "# Unsupervised transformation based on totally random trees\n", "rt = RandomTreesEmbedding(max_depth=3, n_estimators=n_estimator,\n", " random_state=0)\n", "\n", "rt_lm = LogisticRegression(solver='lbfgs', max_iter=1000)\n", "pipeline = make_pipeline(rt, rt_lm)\n", "pipeline.fit(X_train, y_train)\n", "y_pred_rt = pipeline.predict_proba(X_test)[:, 1]\n", "fpr_rt_lm, tpr_rt_lm, _ = roc_curve(y_test, y_pred_rt)\n", "\n", "# Supervised transformation based on random forests\n", "rf = RandomForestClassifier(max_depth=3, n_estimators=n_estimator)\n", "rf_enc = OneHotEncoder(categories='auto')\n", "rf_lm = LogisticRegression(solver='lbfgs', max_iter=1000)\n", "rf.fit(X_train, y_train)\n", "rf_enc.fit(rf.apply(X_train))\n", "rf_lm.fit(rf_enc.transform(rf.apply(X_train_lr)), y_train_lr)\n", "\n", "y_pred_rf_lm = rf_lm.predict_proba(rf_enc.transform(rf.apply(X_test)))[:, 1]\n", "fpr_rf_lm, tpr_rf_lm, _ = roc_curve(y_test, y_pred_rf_lm)\n", "\n", "# Supervised transformation based on gradient boosted trees\n", "grd = GradientBoostingClassifier(n_estimators=n_estimator)\n", "grd_enc = OneHotEncoder(categories='auto')\n", "grd_lm = LogisticRegression(solver='lbfgs', max_iter=1000)\n", "grd.fit(X_train, y_train)\n", "grd_enc.fit(grd.apply(X_train)[:, :, 0])\n", "grd_lm.fit(grd_enc.transform(grd.apply(X_train_lr)[:, :, 0]), y_train_lr)\n", "\n", "y_pred_grd_lm = grd_lm.predict_proba(\n", " grd_enc.transform(grd.apply(X_test)[:, :, 0]))[:, 1]\n", "fpr_grd_lm, tpr_grd_lm, _ = roc_curve(y_test, y_pred_grd_lm)\n", "\n", "# The gradient boosted model by itself\n", "y_pred_grd = grd.predict_proba(X_test)[:, 1]\n", "fpr_grd, tpr_grd, _ = roc_curve(y_test, y_pred_grd)\n", "\n", "# The random forest model by itself\n", "y_pred_rf = rf.predict_proba(X_test)[:, 1]\n", "fpr_rf, tpr_rf, _ = roc_curve(y_test, y_pred_rf)\n", "\n", "plt.figure(1)\n", "plt.plot([0, 1], [0, 1], 'k--')\n", "plt.plot(fpr_rt_lm, tpr_rt_lm, label='RT + LR')\n", "plt.plot(fpr_rf, tpr_rf, label='RF')\n", "plt.plot(fpr_rf_lm, tpr_rf_lm, label='RF + LR')\n", "plt.plot(fpr_grd, tpr_grd, label='GBT')\n", "plt.plot(fpr_grd_lm, tpr_grd_lm, label='GBT + LR')\n", "plt.xlabel('False positive rate')\n", "plt.ylabel('True positive rate')\n", "plt.title('ROC curve')\n", "plt.legend(loc='best')\n", "plt.show()\n", "\n", "plt.figure(2)\n", "plt.xlim(0, 0.2)\n", "plt.ylim(0.8, 1)\n", "plt.plot([0, 1], [0, 1], 'k--')\n", "plt.plot(fpr_rt_lm, tpr_rt_lm, label='RT + LR')\n", "plt.plot(fpr_rf, tpr_rf, label='RF')\n", "plt.plot(fpr_rf_lm, tpr_rf_lm, label='RF + LR')\n", "plt.plot(fpr_grd, tpr_grd, label='GBT')\n", "plt.plot(fpr_grd_lm, tpr_grd_lm, label='GBT + LR')\n", "plt.xlabel('False positive rate')\n", "plt.ylabel('True positive rate')\n", "plt.title('ROC curve (zoomed in at top left)')\n", "plt.legend(loc='best')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**11. Reframe Numerical Quantities**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Your data is very likely to contain quantities, which can be reframed to better expose relevant structures. This may be a transform into a new unit or the decomposition of a rate into time and amount components.\n", "\n", "You may have a quantity like a weight, distance or timing. A linear transform may be useful to regression and other scale dependent methods.\n", "\n", "For example, you may have Item_Weight in grams, with a value like 6289. You could create a new feature with this quantity in kilograms as 6.289 or rounded kilograms like 6. If the domain is shipping data, perhaps kilograms is sufficient or more useful (less noisy) a precision for Item_Weight.\n", "\n", "The Item_Weight could be split into two features: Item_Weight_Kilograms and Item_Weight_Remainder_Grams, with example values of 6 and 289 respectively.\n", "\n", "There may be domain knowledge that items with a weight above 4 incur a higher taxation rate. That magic domain number could be used to create a new binary feature Item_Above_4kg with a value of “1” for our example of 6289 grams.\n", "\n", "You may also have a quantity stored as a rate or an aggregate quantity for an interval. For example, Num_Customer_Purchases aggregated over a year.\n", "\n", "In this case you may want to go back to the data collection step and create new features in addition to this aggregate and try to expose more temporal structure in the purchases, like perhaps seasonality. For example, the following new binary features could be created: Purchases_Summer, Purchases_Fall, Purchases_Winter and Purchases_Spring." ] }, { "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.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }