Skip to content

Instantly share code, notes, and snippets.

@taku-y
Created February 9, 2020 10:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taku-y/471b7eae5ef85badb1ddcfb389982bd6 to your computer and use it in GitHub Desktop.
Save taku-y/471b7eae5ef85badb1ddcfb389982bd6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 分位点回帰 (Quantile regression)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from typing import List, Tuple\n",
"\n",
"import torch\n",
"from torch import optim\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Quantile regressionの本格的な説明は[こちら](http://www.econ.uiuc.edu/~roger/courses/LSE/lectures/L1.pdf)にあります。\n",
"\n",
"次のデータはboston housing datasetの適当な入力変数をx軸、家の価格をy軸に取ったプロットです。散布図と共に、ビンの幅を1とした時のboxplotを示します。"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(506, 1) (506, 1)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x504 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn.datasets import load_boston\n",
"\n",
"def get_boston_data_10() -> Tuple[np.ndarray, np.ndarray]:\n",
" x, y = load_boston(return_X_y=True)\n",
" x = x[:, 10]\n",
" y = (y - (np.mean(y))) / np.std(y)\n",
"\n",
" # `Network`(後述)のインターフェースに合わせるため、後ろに次元を加えます。\n",
" data_x = x[:, np.newaxis]\n",
" data_y = y[:, np.newaxis]\n",
" print(data_x.shape, data_y.shape)\n",
" \n",
" return data_x, data_y\n",
"\n",
"def plot(data_x: np.ndarray, data_y: np.ndarray, net=None):\n",
" plt.figure(figsize=(10, 7))\n",
"\n",
" # 散布図\n",
" plt.subplot(2, 1, 1)\n",
" plt.scatter(data_x, data_y, s=5)\n",
" plt.xlim(11, 23)\n",
" \n",
" if net is not None:\n",
" x = np.arange(12, 22.5, 0.5)[:, np.newaxis]\n",
" z = net(torch.Tensor(x)).detach().numpy()\n",
" plt.plot(x, z)\n",
"\n",
" # 箱ひげ図\n",
" bs = np.arange(12, 23)\n",
" db = 1.0\n",
" plt.subplot(2, 1, 2)\n",
" plt.boxplot([[y for x, y in zip(data_x, data_y) if (b <= x < b + db)] for b in bs], \n",
" positions=bs + db / 2)\n",
" plt.xlim(11, 23)\n",
"\n",
"data_x, data_y = get_boston_data_10()\n",
"plot(data_x, data_y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"xを決めた時のyの条件付き分布を求める最も簡単な方法は最小二乗法です。これは条件付き分布が正規分布であるという仮定の下で最尤推定で、予測モデルは与えられたxに対して、条件付き分布の平均値(の推定値)を出力します。しかし、この方法では条件付き分布の広がりや偏りに関する情報はモデルからは得られません。また、boxplotから分かるように、今回のデータは各xでy軸方向について非対称で、正規分布の当てはめは無理があるように見えます。\n",
"\n",
"このノートブックでは、データに対して分位点回帰 (quantile regression) を実行するコードを示します。分位点とは累積確率が $\\tau (\\in[0, 1])$ の点です。いくつかの $\\tau$ の値について対応するyを知ることができれば、条件付き分布に関するより多くの情報を得られます。また、分位点回帰は条件付き分布の形に仮定を置かないので、より広範なデータについて適用できると考えられます。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## クラス・関数\n",
"\n",
"このノートブックで使用するクラスと関数を定義します。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ニューラルネットワーク\n",
"\n",
"ここでは回帰モデルをニューラルネットで表現します。入力は説明変数、出力は分位点の値です。\n",
"\n",
"ニューラルネットはPytorchの `torch.nn.Module` クラスとして実装します。ネットワークの各層のユニット数は`n_unitss`で与えます。層数は可変で、その管理のために`torch.nn.ModuleList`クラスを使用します。これにより、モデルパラメータを自動的に取得できます。`cumsum=True`とすると、分位点を最終層の値の累積和で表現します。これにより分位点が昇順になることが保証されます。"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# nn.Moduleについてはこちらを参照してください:\n",
"# https://pytorch.org/tutorials/beginner/examples_nn/two_layer_net_module.html\n",
"#\n",
"class NeuralNetwork(nn.Module):\n",
" def __init__(self, n_inputs: int, n_quants: int, n_unitss: List[int]=[4], cumsum=True):\n",
" \"\"\"\n",
" Args:\n",
" n_inputs (int): 入力次元\n",
" n_quants (int): 出力の分位点の数\n",
" \"\"\"\n",
" super(NeuralNetwork, self).__init__()\n",
" \n",
" self.n_inputs = n_inputs\n",
" self.n_quants = n_quants\n",
" self.cumsum = cumsum\n",
" \n",
" # モデルパラメータの準備\n",
" # 複数の層をまとめて管理するためtorch.nn.ModuleListを使用します:\n",
" # https://pytorch.org/docs/stable/nn.html?highlight=modulelist#torch.nn.ModuleList\n",
" self.layers = nn.ModuleList([])\n",
" \n",
" # 各層のユニット数のリスト\n",
" # 最終層のユニット数は分位点の数に一致します。\n",
" n_unitss = n_unitss + [n_quants]\n",
" self.n_layers = len(n_unitss)\n",
"\n",
" # 入力サイズ\n",
" n0 = n_inputs\n",
"\n",
" for n_units in n_unitss:\n",
" # 出力サイズ\n",
" n1 = n_units\n",
"\n",
" # 層の追加・次の層の入力サイズ\n",
" self.layers.append(nn.Linear(n0, n1))\n",
" n0 = n1\n",
"\n",
" def forward(self, x: torch.Tensor):\n",
" # 最終層以外にsigmoid活性化関数を適用します。\n",
" for l in self.layers[:-1]:\n",
" x = F.sigmoid(l(x))\n",
"\n",
" if self.cumsum:\n",
" # 出力層は累積和とします。\n",
" x = self.layers[-1](x)\n",
" x = torch.cat([x[:, 0].unsqueeze(-1), x[:, 1:].exp()], dim=1)\n",
" return torch.cumsum(x, dim=1)\n",
" else:\n",
" # 出力層は線形とします。\n",
" return self.layers[-1](x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 損失関数\n",
"\n",
"分位点回帰の目的関数は冒頭のリンク先で説明されています。ただし、ここで実際に実装しているのは[この論文](https://arxiv.org/abs/1710.10044)で提案されているquantile Huber lossです。Huber lossは[こちら](https://github.com/senya-ashukha/quantile-regression-dqn-pytorch)のコードを引用しました。Pytorchの不等号の指標関数の出力の型はuint8なので、floatにキャストします。"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def huber(x, k=0.1):\n",
" return torch.where(x.abs() < k, 0.5 * x.pow(2), k * (x.abs() - 0.5 * k))\n",
"\n",
"def quantile_huber_loss(z: np.ndarray, theta: torch.Tensor, tau: np.ndarray) -> torch.Tensor:\n",
" \"\"\"\n",
" Args:\n",
" z : 観測値, shape=(n_samples_in_batch, 1)\n",
" theta: 分位点の予測値, shape=(n_samples_in_batch, n_quants)\n",
" tau : 分位点の累積確率, shape=(n_quants,)\n",
" \"\"\"\n",
" u = z - theta\n",
" s = tau - (u < torch.Tensor([0])).float()\n",
" return torch.mean(s.abs() * huber(u))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 訓練\n",
"\n",
"ニューラルネットを訓練する関数を定義します。(一般的な)ランダムサンプリングによるミニバッチをサポートします。ただし、ミニバッチは不安定だったので、以下のデモではバッチサイズに全データ数を指定します。"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def train_net(n_train: int, n_samples_in_batch: int, data_x: np.ndarray, data_y: np.ndarray, net: NeuralNetwork):\n",
" tau = torch.Tensor(np.arange(1.0 / (net.n_quants + 1), 0.9999, 1.0 / (net.n_quants + 1)))\n",
" opt = optim.Adam(net.parameters(), lr=1e-2, amsgrad=True)\n",
" \n",
" print(\"\\nQuantiles\")\n",
" for t in tau:\n",
" print(\"{:.3f}\".format(t))\n",
" print(\"\")\n",
"\n",
" print(\"Training start\")\n",
" for i in range(n_train):\n",
" ix = np.random.permutation(len(data_x))[:n_samples_in_batch]\n",
" batch_x = torch.Tensor(data_x[ix, :])\n",
" batch_y = torch.Tensor(data_y[ix, :])\n",
" \n",
" theta = net(batch_x)\n",
" loss = quantile_huber_loss(batch_y, theta, tau)\n",
" \n",
" if (i + 1) % 2000 == 0:\n",
" print(\"{:06d}: {:.6f}\".format(i + 1, loss))\n",
" \n",
" opt.zero_grad()\n",
" loss.backward()\n",
" opt.step()\n",
" print(\"Finished\\n\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 実行"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 線形モデル\n",
"\n",
"`n_unitss=[]`, `cumsum=False`とすることで線形モデルによる分位点回帰を実行します。"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Quantiles\n",
"0.250\n",
"0.500\n",
"0.750\n",
"\n",
"Training start\n",
"002000: 0.026642\n",
"004000: 0.025807\n",
"006000: 0.025477\n",
"008000: 0.025354\n",
"010000: 0.025301\n",
"Finished\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x504 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"net = NeuralNetwork(n_inputs=1, n_quants=3, n_unitss=[], cumsum=False)\n",
"train_net(10000, 506, data_x, data_y, net)\n",
"plot(data_x, data_y, net)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 非線形モデル\n",
"\n",
"中間層の数を1、ユニット数を8とした非線形ニューラルネットによる分位点回帰を実行します。図より$x=13, 14$辺りのyの条件付き分布の上側への偏りを表現できていることが分かります。ただし、モデルパラメータの初期化のランダム性により、推定結果はばらつきます。"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Quantiles\n",
"0.250\n",
"0.500\n",
"0.750\n",
"\n",
"Training start\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/taku-y/git/github/laboroai/pjt_obayashi_amd/venv/lib/python3.7/site-packages/torch/nn/functional.py:1332: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\n",
" warnings.warn(\"nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\")\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"002000: 0.025244\n",
"004000: 0.025227\n",
"006000: 0.025210\n",
"008000: 0.025184\n",
"010000: 0.025093\n",
"012000: 0.024851\n",
"014000: 0.024502\n",
"016000: 0.024359\n",
"018000: 0.024101\n",
"020000: 0.024075\n",
"022000: 0.024065\n",
"024000: 0.024056\n",
"026000: 0.024049\n",
"028000: 0.024042\n",
"030000: 0.024034\n",
"032000: 0.024026\n",
"034000: 0.024017\n",
"036000: 0.024009\n",
"038000: 0.023999\n",
"040000: 0.023989\n",
"042000: 0.023980\n",
"044000: 0.023967\n",
"046000: 0.023953\n",
"048000: 0.023937\n",
"050000: 0.023926\n",
"052000: 0.023902\n",
"054000: 0.023886\n",
"056000: 0.023866\n",
"058000: 0.023848\n",
"060000: 0.023828\n",
"062000: 0.023809\n",
"064000: 0.023790\n",
"066000: 0.023771\n",
"068000: 0.023754\n",
"070000: 0.023737\n",
"072000: 0.023718\n",
"074000: 0.023704\n",
"076000: 0.023685\n",
"078000: 0.023668\n",
"080000: 0.023651\n",
"082000: 0.023633\n",
"084000: 0.023616\n",
"086000: 0.023602\n",
"088000: 0.023589\n",
"090000: 0.023577\n",
"092000: 0.023574\n",
"094000: 0.023551\n",
"096000: 0.023546\n",
"098000: 0.023536\n",
"100000: 0.023523\n",
"Finished\n",
"\n"
]
},
{
"data": {
"image/png": "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SkRERCRBatoTERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEEKZESERERSZASKREREZEE5fjxpuXl5W727Nl+vLWIiIjIiGzcuPGIc25yrG2+JFKzZ89mw4YNfry1iIiIyIiY2c5429S0JyIiIpIgJVIiIiIiCRp1ImVmBWb2gpm9Ymavm9m3khGYiIiISNAlo0aqA7jGOXcJcClwvZm9LwnHFRHxXX19PQUFBZgZBQUF1NfX+x2SBFhVVRVm1v+oqqryOyRJsVEnUs5zKrKYG3m40R5XRMRv9fX1rFmzhjvvvJO2tjbuvPNO1qxZo2RKYqqqqmL37t0sWbKEffv2sWTJEnbv3q1kKsOZc6PPecwsG9gIzAN+6Jz7aox9VgIrAaqqqhbv3Bm3A7yISCAUFBRw55138td//df96+666y6+8Y1v0N7e7mNkEkRmxpIlS1i3bl3/uqVLl7J+/XqSca0V/5jZRudcbcxtyfzjmtlE4CGg3jm3Od5+tbW1TsMfhI+Zjfg1QfnwCHPs4h8zo62tjfHjx/evO336NIWFhTo/5Cxmxr59+5g2bVr/uv379zN9+nSdLyE3VCKV1Lv2nHPHgSbg+mQeV4LBORfzca5tQRDm2MU/+fn5rFmzZtC6NWvWkJ+f71NEEnR/+Id/OOSyZJ5k3LU3OVIThZmNA64D3hjtcUVE/LZixQq++tWvctddd3H69GnuuusuvvrVr7JixQq/Q5MAqqysZP369SxdupT9+/f3N+tVVlb6HZqk0Kib9szsYuA+IBsvMfu5c+4fhnqNmvYyi5mFtgYnzLFLetTX1/Ov//qvdHR0kJ+fz4oVK1i9erXfYUlA9XU471NZWcmuXbt8jEiSIW19pIZLiVTwlZWV0dLSkpJjl5aWcuzYsZQce6SUSImIyLkMlUj5MteeBF9LS0vKEoxEOn6LiIgEkRIpEZEBdIeniIyEEikRkQHiJUVqBhaRWDRpsYiIiEiClEiJiIiIJEiJlIiIiEiClEiJiIiIJEiJlIiIiEiClEiJiIiIJEiJlIiIiEiClEiJiIiIJEiJlIiIiEiClEiJiIiIJEiJ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\n",
"text/plain": [
"<Figure size 720x504 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"net = NeuralNetwork(n_inputs=1, n_quants=3, n_unitss=[8])\n",
"train_net(100000, 506, data_x, data_y, net)\n",
"plot(data_x, data_y, net)"
]
},
{
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment