paint-brush
Use Beta Distribution and Thompson Sampling to Beat The Multi-armed Bandit at the Casinoby@ryan-yu
2,404 reads
2,404 reads

Use Beta Distribution and Thompson Sampling to Beat The Multi-armed Bandit at the Casino

by Ryan YuFebruary 29th, 2020
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Beta distribution is a family of continuous probability distributions defined on the interval [0, 1] parametrized by two positive shape parameters, denoted by α and β, that appear as exponents of the random variable and control the shape of the distribution. We use Beta distribution to model the simplest form of the multi-armed bandit problem, which is the binary outcome/reward. In the casino example, each machine will pay a reward of $1 when the outcome is success, and $0 when it is fail. Our goal is to identify the machine with the highest probability of success.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Use Beta Distribution and Thompson Sampling to Beat The Multi-armed Bandit at the Casino
Ryan Yu HackerNoon profile picture

As a logical person at the casino. you want to put your money on the machine with the maximum expected return. This is the origin of the multi-armed bandit problem. We will cover the two most basic concept here: Beta distribution and Thompson sampling.

Beta Distribution

We use Beta distribution to model the simplest form of the multi-armed bandit problem, which is the binary outcome/reward. In the casino example, each machine will pay a reward of $1 when the outcome is success, and $0 when the outcome is fail.

Our goal is to identify the machine with the highest probability of success. Beta distribution is a family of continuous probability distributions defined on the interval [0, 1] parametrized by two positive shape parameters, denoted by α and β, that appear as exponents of the random variable and control the shape of the distribution.

More information can be found here.

We use Beta distribution for the following two important properties:
1. Beta distribution is defined between 0 and 1, which correlates to the range of our estimators.
2. The posterior probability is Beta with updated parameters.


Use baseball as an example. Batting average (BA) is a metric to evaluate a player, and we want to estimate BA for a new player whose true BA is 30%. Since the new player does not have any batting history, we can assume the distribution of estimated BA follows Beta(1,1), i.e. our estimate is equally distributed between 0 and 1.

With progress of games, we can collect more data and produce a better estimate of the player’s BA. Using the property of Beta, we observe that the estimated BA is ~10% after 10 AB(At Bats), but is very close to the true value 30% after 1000 AB (code).

Thompson Sampling

Continuing the discussion we use 3 slot machines with Beta distribution to explain how Thompson Sampling works. The true success probability of slot 0, 1, and 2 is 0.7, 0.8, and 0.9 respectively, nevertheless the probability is unknown to us.

Our goal is to identify the machine with highest success probability.

Again since we have no information, we assume all 3 machines have the same prior distribution Beta(1,1), i.e. the 3 machines are equally likely to be selected for experiment.

At starting time t = 0, we run 1000 experiments and observe that machine 0, 1, and 2 are being selected 324, 345, and 331 experiments respectively. We then use the experiment results to update α and β of the three machines’ Beta distribution, and then use the updated Beta as the new prior probability at time t = 1 for the next 1000 experiments.

We continue the process until t = 1000 and the results are shown below:

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Untitled0.ipynb",
      "provenance": [],
      "authorship_tag": "ABX9TyOpA2LaWRSAI9kAR4SILrfF",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/colawhite/abtesting/blob/master/BernThompson_basic.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gzCI9Bmgvkd3",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# https://arxiv.org/pdf/1707.02038.pdf\n",
        "from scipy.stats import beta\n",
        "import matplotlib.pyplot as plt\n",
        "import matplotlib as mpl\n",
        "import seaborn as sns\n",
        "import numpy as np\n",
        "from operator import add "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UHBzEqo-SaZ8",
        "colab_type": "code",
        "outputId": "8f0bf3f5-57e0-476a-81d6-b5550af777a7",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        }
      },
      "source": [
        "action1 = beta.rvs(a=600, b=400, size=1000)\n",
        "action2 = beta.rvs(a=400, b=600, size=1000)\n",
        "action3 = beta.rvs(a=4, b=6, size=10)\n",
        "sns.distplot(action1,hist=False,color='blue')\n",
        "sns.distplot(action2,hist=False,color='green')\n",
        "sns.distplot(action3,hist=False,color='red')"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fad1ed79358>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 2
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xtdGWuqfScrM",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "simloops = 1000\n",
        "periods = 1000\n",
        "probs= [0.7,0.8,0.9]\n",
        "pct = {}\n",
        "pct[0] = [0]*periods\n",
        "pct[1] = [0]*periods\n",
        "pct[2] = [0]*periods"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yq2fHxjc5UPG",
        "colab_type": "code",
        "outputId": "a2aa6e48-9340-47b1-c25b-4cc45316eac4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 185
        }
      },
      "source": [
        "for sim in range(simloops):\n",
        "    a = [1,1,1]\n",
        "    b = [1,1,1]\n",
        "    for t in range(periods):\n",
        "        posterior_prob = np.random.beta(a,b)\n",
        "        action = np.random.choice(np.where(posterior_prob == posterior_prob.max())[0])\n",
        "        reward = np.random.binomial(1, probs[action])\n",
        "        pct[action][t] += 1\n",
        "        a[action] += reward\n",
        "        b[action] += 1-reward\n",
        "    if sim%100 == 1:\n",
        "        print (\"{} out of {} simulations have been completed\".format(sim,simloops))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "1 out of 1000 simulations have been completed\n",
            "101 out of 1000 simulations have been completed\n",
            "201 out of 1000 simulations have been completed\n",
            "301 out of 1000 simulations have been completed\n",
            "401 out of 1000 simulations have been completed\n",
            "501 out of 1000 simulations have been completed\n",
            "601 out of 1000 simulations have been completed\n",
            "701 out of 1000 simulations have been completed\n",
            "801 out of 1000 simulations have been completed\n",
            "901 out of 1000 simulations have been completed\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_5YVrLeC-gLP",
        "colab_type": "code",
        "outputId": "d42564ce-2d84-4552-d7b9-6c754c4c82df",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 67
        }
      },
      "source": [
        "for i in range(3):\n",
        "    print (i,pct[i][:5])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0 [324, 287, 284, 312, 292]\n",
            "1 [345, 330, 340, 325, 322]\n",
            "2 [331, 383, 376, 363, 386]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "B0jSQfqe6Dot",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "for i in range(3):\n",
        "    pct[i] = [x/simloops for x in pct[i]]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QqNGF4VZ-xt8",
        "colab_type": "code",
        "outputId": "8404928a-80ef-43de-8c4f-ff6286334cea",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 67
        }
      },
      "source": [
        "# check the first 5 records - 3 actions have similar probability\n",
        "for i in range(3):\n",
        "    print (i,pct[i][:5])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0 [0.324, 0.287, 0.284, 0.312, 0.292]\n",
            "1 [0.345, 0.33, 0.34, 0.325, 0.322]\n",
            "2 [0.331, 0.383, 0.376, 0.363, 0.386]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tVZ-9nMG6Dro",
        "colab_type": "code",
        "outputId": "8fb21c8c-544f-4b1c-c5a2-814816909d03",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 378
        }
      },
      "source": [
        "t = [x for x in range(periods)]\n",
        "mpl.style.use('seaborn')\n",
        "plt.plot(t,pct[0],color='red',label='action_0')\n",
        "plt.plot(t,pct[1],color='blue',label='action_1')\n",
        "plt.plot(t,pct[2],color='green',label='action_2')\n",
        "plt.legend()\n",
        "plt.xlabel('t')\n",
        "plt.ylabel('action probability')"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'action probability')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 10
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nqZbMA7dhSE4AAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 576x396 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QJxz4YGP9532",
        "colab_type": "code",
        "outputId": "38c2c8e6-bb1d-4c6a-e484-5d91ac0e0160",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 67
        }
      },
      "source": [
        "# check the last 5 records - 3 actions have very different probability\n",
        "for i in range(3):\n",
        "    print (i,pct[i][-5:])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0 [0.004, 0.008, 0.002, 0.001, 0.003]\n",
            "1 [0.026, 0.016, 0.016, 0.018, 0.015]\n",
            "2 [0.97, 0.976, 0.982, 0.981, 0.982]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QBGsGPYmDV85",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}

Thompson Sampling allows us to identify the true best machine (machine #2).

This example is also known as Beta-Bernoulli Bandit.


Reference

1. https://arxiv.org/pdf/1707.02038.pdf

2. https://en.wikipedia.org/wiki/Beta_distribution