"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part I Market Basket Analysis\n",
"\n",
"#### Market Basket analysis and the A priori algorithm\n",
"\n",
"Market basket analysis works by grouping together items that are frequently purchased together. Download the following two grocery datasets from \n",
"\n",
"- The [github of Jose Zuniga](https://github.com/jzuniga123/SPS/blob/master/DATA%20624/GroceryDataSet.csv). \n",
"- [Kaggle's Basketballoptimisation page](https://www.kaggle.com/shwetabh123/basketballoptimisation)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"image credit: [www.hybridexcellence.com](http://www.hybridexcellence.com/super-market-rack.aspx) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Association rule analysis is powerful approach that is used to mine commercial databases. The idea is to find product that are often purchased simultaneously. If the customers are represented by a vector $\\boldsymbol X\\in \\mathbb{N}^D$ (for ex. dummy encoding), where $D$ is the number of products that can be purchased, we then look for those entries in $X$ that often take the value $1$ simultaneously. \n",
"\n",
"For the two dataset above, we can represent the basket of each customer through a one hot encoding where we set the $(i,j)$ entry to $1$ is customer $i$ purchased any quantity of item $j$ (note that we could be more accurate and use additional binary variables to encode the exact quantity of each item that is being purchased). From this, the whole idea of Market Basket Analysis is to find subsets $\\mathcal{K}$ of the indices $1, \\ldots, num_items$ that maximize the probability\n",
"\n",
"$$P\\left[\\bigcap_{k\\in \\mathcal{K}} (X_k = 1)\\right] = P\\left[\\prod_{k\\in \\mathcal{K}} X_k = 1\\right]$$\n",
"\n",
"Given our encoding, we can replace the probability by its empirical version and try to find a subset $\\mathcal{K}$ that maximizes the quantity\n",
"\n",
"$$P_{emp} = \\frac{1}{N_{cust}} \\sum_{i\\in cust} \\prod_{k\\in \\mathcal{K}} X_{i,k}$$\n",
"\n",
"where $X_{i,k}$ is the binary variable associated to customer $i$ and item $k$.\n",
"\n",
"__Exercise II.1.1__ Represent each of the datasets above using an appropriate one hot encoding. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"# put your code here\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Exercise II.1.1 The A priori algorithm__\n",
"\n",
"Running through all possible item sets ($2^{\\text{num items}}$) can be intractable on large datasets. It is however possible to use efficient algorithms that lead to a substantial reduction reagrding the number of passes over the data they require. This is the case of the A priori algorithm. The algorithm proceeds as follows\n",
"\n",
"- The first pass over the data computes the supports of all size 1 itemsets\n",
"- The second step computes the support of all size 2 itemsets that can be formed from pairs of the single itemsets that survived the first step.\n",
"- At the $k$ step (size $k$ itemsets), we only consider those size $k$ itemsets that are formed by an item set which appeared at the previous step together with a single item that as retained by step 1. \n",
"- The itemsets with support less than the threshold are discarded. \n",
"\n",
"The key idea here is that we can focus our attention only on those itemsets of size $K$ for which all of the size $K-1$ subitemsets appeared at the previous step. That reduces the number of itemsets we need to consider and leads to a significant reduction in the computational cost.\n",
"\n",
"In pseudo code, we have \n",
"\n",
"- Build all size one itemsets and store them in $S_1$\n",
"\n",
"- for k=1,...desired size\n",
"\n",
" Go over all possible size K-1 itemsets $S_{k-1}$ and build the size K sets $S_k$ from $S_{k-1}$ and any elements from the size $S_1$ that are not alread in $S_{k-1}$ and such that all size $k-1$ subitemsets $S\\subset S_k$ are in $S_{k-1}$\n",
"\n",
"- Count the support and discard the itemset if the prevalence (i.e the empirical probability defined above) is lower than some threshold $t$. \n",
"\n",
"__Code the 'A priori algorithm' and apply it to the grocery datasets that you loaded above__. You can downsample those datasets if it makes it easier. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# put the code here\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once all the itemsets have been computed, they can be used to define association rules. For any two subsets, $A$ and $B$ of the item set $\\mathcal{K}$, $A\\cup B = \\mathcal{K}$, one can define the total $T(A\\Rightarrow B)$ to be the probability of observing the item set. and use $C(A\\Rightarrow B)$ to encode an estimate of the posterior \n",
"\n",
"$$C(A\\Rightarrow B) = P(A\\Rightarrow B) = \\frac{T(A\\Rightarrow B)}{T(A)}$$\n",
"\n",
"where $T(A)$ is the empirical probability of observing the item set $A$.\n",
"\n",
"Together those two quantitities can be used to predict the items $B$ that a customer might want to purchase given that he bought the items in $A$. Or conversely, the items $A$ that are usually bought by customer that buy the items B. I.e. If we set thresholds $t$ on both $C(A\\Rightarrow B)>t$ and $T(A\\Rightarrow B)$ we could look for all transactions that have some proudct as consequent and for which the probability estimates $C(A\\Rightarrow B)$ and $T(A\\Rightarrow B)$ are sufficiently large. \n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"### Part II: Clustering\n",
"\n",
"\n",
"##### Exercise 1.1. General K means\n",
"\n",
"Consider the dataset given below. Implement the K means algorithm and run it on top of this dataset. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"