summaryrefslogtreecommitdiff
path: root/notebooks/plot_otda_mapping.ipynb
blob: f25eb110e3ea5bc973fd86cf23bae4b13d88c538 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# OT mapping estimation for domain adaptation\n",
    "\n",
    "\n",
    "This example presents how to use MappingTransport to estimate at the same\n",
    "time both the coupling transport and approximate the transport map with either\n",
    "a linear or a kernelized mapping as introduced in [8].\n",
    "\n",
    "[8] M. Perrot, N. Courty, R. Flamary, A. Habrard,\n",
    "    \"Mapping estimation for discrete optimal transport\",\n",
    "    Neural Information Processing Systems (NIPS), 2016.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Authors: Remi Flamary <remi.flamary@unice.fr>\n",
    "#          Stanislas Chambon <stan.chambon@gmail.com>\n",
    "#\n",
    "# License: MIT License\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pylab as pl\n",
    "import ot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Generate data\n",
    "-------------\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "n_source_samples = 100\n",
    "n_target_samples = 100\n",
    "theta = 2 * np.pi / 20\n",
    "noise_level = 0.1\n",
    "\n",
    "Xs, ys = ot.datasets.get_data_classif(\n",
    "    'gaussrot', n_source_samples, nz=noise_level)\n",
    "Xs_new, _ = ot.datasets.get_data_classif(\n",
    "    'gaussrot', n_source_samples, nz=noise_level)\n",
    "Xt, yt = ot.datasets.get_data_classif(\n",
    "    'gaussrot', n_target_samples, theta=theta, nz=noise_level)\n",
    "\n",
    "# one of the target mode changes its variance (no linear mapping)\n",
    "Xt[yt == 2] *= 3\n",
    "Xt = Xt + 4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot data\n",
    "---------\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7fb0178b1208>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb019d04d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pl.figure(1, (10, 5))\n",
    "pl.clf()\n",
    "pl.scatter(Xs[:, 0], Xs[:, 1], c=ys, marker='+', label='Source samples')\n",
    "pl.scatter(Xt[:, 0], Xt[:, 1], c=yt, marker='o', label='Target samples')\n",
    "pl.legend(loc=0)\n",
    "pl.title('Source and target distributions')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Instantiate the different transport algorithms and fit them\n",
    "-----------------------------------------------------------\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "It.  |Loss        |Delta loss\n",
      "--------------------------------\n",
      "    0|4.210546e+03|0.000000e+00\n",
      "    1|4.194392e+03|-3.836611e-03\n",
      "    2|4.194053e+03|-8.094371e-05\n",
      "    3|4.193924e+03|-3.056965e-05\n",
      "    4|4.193849e+03|-1.797118e-05\n",
      "    5|4.193801e+03|-1.140070e-05\n",
      "    6|4.193776e+03|-5.930168e-06\n",
      "It.  |Loss        |Delta loss\n",
      "--------------------------------\n",
      "    0|4.245881e+02|0.000000e+00\n",
      "    1|4.181680e+02|-1.512078e-02\n",
      "    2|4.178974e+02|-6.472597e-04\n",
      "    3|4.177550e+02|-3.406786e-04\n",
      "    4|4.176586e+02|-2.307406e-04\n",
      "    5|4.175879e+02|-1.692203e-04\n",
      "    6|4.175338e+02|-1.295518e-04\n",
      "    7|4.174909e+02|-1.028089e-04\n",
      "    8|4.174570e+02|-8.123852e-05\n",
      "    9|4.174309e+02|-6.257777e-05\n",
      "   10|4.174083e+02|-5.401101e-05\n"
     ]
    }
   ],
   "source": [
    "# MappingTransport with linear kernel\n",
    "ot_mapping_linear = ot.da.MappingTransport(\n",
    "    kernel=\"linear\", mu=1e0, eta=1e-8, bias=True,\n",
    "    max_iter=20, verbose=True)\n",
    "\n",
    "ot_mapping_linear.fit(Xs=Xs, Xt=Xt)\n",
    "\n",
    "# for original source samples, transform applies barycentric mapping\n",
    "transp_Xs_linear = ot_mapping_linear.transform(Xs=Xs)\n",
    "\n",
    "# for out of source samples, transform applies the linear mapping\n",
    "transp_Xs_linear_new = ot_mapping_linear.transform(Xs=Xs_new)\n",
    "\n",
    "\n",
    "# MappingTransport with gaussian kernel\n",
    "ot_mapping_gaussian = ot.da.MappingTransport(\n",
    "    kernel=\"gaussian\", eta=1e-5, mu=1e-1, bias=True, sigma=1,\n",
    "    max_iter=10, verbose=True)\n",
    "ot_mapping_gaussian.fit(Xs=Xs, Xt=Xt)\n",
    "\n",
    "# for original source samples, transform applies barycentric mapping\n",
    "transp_Xs_gaussian = ot_mapping_gaussian.transform(Xs=Xs)\n",
    "\n",
    "# for out of source samples, transform applies the gaussian mapping\n",
    "transp_Xs_gaussian_new = ot_mapping_gaussian.transform(Xs=Xs_new)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot transported samples\n",
    "------------------------\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nXlWd3x+33uvXa7o7vbxO7vfz6U/3q+XWfdV16tx77ln8Daag4aBi4hO7yrQTOScNDX1RUFOAjFwc\nbIu2dUBELhCRF0TkhT179gxW/waVgoIC1qxZQ0tLCwCPP/44U6Z0+Sr7JZkBu0OByXqRgzim7k3P\no7yMGVZQAcEmjEdfANpkZlLB7sHrV+wQk70irI4SX/pIbNHAawDtG/vNYM8ytIg7DryDQOvNc6v1\nUQLXroHnqi1o4qWoCnYbBDvQ5EvGE3DQyDXeg9rS6eLN4IwfxOt0ZNDcmFT1LlU9QlWPSBUD3Fc+\n9pO/8bGf/G1Q2kpx4okn8thjjwGwevVqzjzzzPS+f/zjHyxfvpxly5bxnve8h7feegswI/pTTz2V\nFStWcPDBB3PttdcCZgY0b948Vq1axfz58/nwhz9Mc7MZubz44oscd9xxHH744Xzwgx+koqIivX3J\nkiUsWbKEO+64o9s+VlRUcOyxx7J06VIWLlzIX/7yl3R/Fy1axMKFC7niiivSxxcWtqdJ+fWvf805\n55wDwDnnnMNFF13Eu971Li6//HIaGxs599xzWbRoEYsXL+aRRx4BTIqk5cuXc9hhh/GRj3yExsau\nD/Ztt93GoYceyuLFi/n4xz++1/t12mmncfzxxzNz5kxuv/12br75ZpYtW8by5UdTXV0NwMr3r+Ky\nL32HZUd8hEVL/41/PP9al+vu2bOHM844gyOPPJIjjzySv/71rwA89dRTLF26lKVLl7Js2bIuaaXE\nHYtTfj8icZzYfCRnORI/AokdhTil3d73YWCvg73RMNCzDD0iEqVDWo7ED0fi78bxZnRvlfC3AyES\n5c0zz3dsUE3mIoJ4c02ey7DWOGwEleCMHdq1XFXt9QdYDvwx4/OVwJW9nXP44YdrZ954440u2/bG\nR+98Vj9657P9Pq8nCgoK9JVXXtEzzjhDW1padMmSJfrEE0/oSSedpKqqdXV1mkwmVVX18ccf19NP\nP11VVe+9916dOHGiVlZWanNzsy5YsECff/553bhxowL6zDPPqKrqueeeq9///vc1kUjo8uXLdffu\n3aqq+tBDD+m5556rqqqLFi3Sp556SlVVv/KVr+iCBQu69POmm27S6667TlVVfd/X+vp63b59u06b\nNk13796tyWRSV65cqY8++mj6e6X41a9+pWeffbaqqp599tl60kknqe/7qqp6+eWX62WXXZY+trq6\nWvfs2aPHHHOMNjY2qqrqjTfeqNdee22XPk2aNElbW1tVVbWmpmav9+uggw7S+vp63b17txYXF+uP\nf/xjVVW97LJL9eabv6Nh0KzHHXeMfuYz52iYWKdP/t99umDBwenzP/e5z6mq6plnnql/+ctfVFV1\n8+bNOm/ePFVVPfnkk9P3vaGhId2PFAN53noCeEH3Iid9+QE+jHEySn3+JHB7T8d3J0cWS2eC1uc0\naPunhonXOvwELU9pGAaDeq0wbNUguU2D5HoNg6p+tT8QOeqLm9XzwMEiMgvYDnwc+MSgaslOpGZN\nf99Y3eHzwxcu3+e2Fy9ezKZNm1i9enW6jlKKuro6zj77bNatW4eIkEwm0/uOP/54ysvNSOH000/n\nmWee4bTTTmPatGnppKxnnXUWt912G//6r//KmjVrOP744wFTkXfSpEnU1tZSW1vLscceC5is5qka\nTJkceeSRfPrTnyaZTHLaaaexdOlS/vznP7NixYp0qfpVq1bx9NNPpwsn9sRHPvKRdDXgP/3pTzz0\n0EPpfWVlZfz+97/njTfeSH+HRCLB8uVd7/PixYtZtWoVp512Wvqavd2vlStXUlRURFFRESUlJZxy\nyikALFq0mFdffYlUotkzP/4RQDn2mCOor2+MStO386c//Yk33ngj/bm+vp7GxkaOPvpovvSlL7Fq\n1SpOP/10pk7dd++lYWA7kLmIMDXaZrEMHMkFEmQ6JZng+TiDXSpDJAfxhm9ZZK8KSlV9Efk88EeM\nm/l/qurrezktq/nQhz7EV77yFZ588kmqqqrS26+++mpWrlzJo48+yqZNm1ixYkV6X0+lLLrbrqos\nWLCAv/2to3my88u3J4499liefvppHnvsMc455xy+9KUvUVLSsxtnZh9SSWxTFBT0nppEVTn++ONZ\nvXp1r8c99thjPP300/zud7/j+uuv57XXXuv1fqVKgkDHEiGu62KWwxxAEYk8+iQH6Lp2FYYhzz33\nHLm5HVP+f+1rX+Okk07iD3/4A0cffTR//OMfmTdvXq/fIQsY9sGe5QDAnQrJV1AnZtISaQBhHXiH\nDIvH31DSpzUoVf2Dqh6iqgep6vVD3amHL1zOwxcu512zxvCuWWPSnweLT3/601xzzTUsWrSow/a6\nurq008R9993XYd/jjz9OdXU1LS0t/Pa3v03POLZs2ZJWRA8++CDvfe97mTt3Lnv27ElvTyaTvP76\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb0177ef7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pl.figure(2)\n",
    "pl.clf()\n",
    "pl.subplot(2, 2, 1)\n",
    "pl.scatter(Xt[:, 0], Xt[:, 1], c=yt, marker='o',\n",
    "           label='Target samples', alpha=.2)\n",
    "pl.scatter(transp_Xs_linear[:, 0], transp_Xs_linear[:, 1], c=ys, marker='+',\n",
    "           label='Mapped source samples')\n",
    "pl.title(\"Bary. mapping (linear)\")\n",
    "pl.legend(loc=0)\n",
    "\n",
    "pl.subplot(2, 2, 2)\n",
    "pl.scatter(Xt[:, 0], Xt[:, 1], c=yt, marker='o',\n",
    "           label='Target samples', alpha=.2)\n",
    "pl.scatter(transp_Xs_linear_new[:, 0], transp_Xs_linear_new[:, 1],\n",
    "           c=ys, marker='+', label='Learned mapping')\n",
    "pl.title(\"Estim. mapping (linear)\")\n",
    "\n",
    "pl.subplot(2, 2, 3)\n",
    "pl.scatter(Xt[:, 0], Xt[:, 1], c=yt, marker='o',\n",
    "           label='Target samples', alpha=.2)\n",
    "pl.scatter(transp_Xs_gaussian[:, 0], transp_Xs_gaussian[:, 1], c=ys,\n",
    "           marker='+', label='barycentric mapping')\n",
    "pl.title(\"Bary. mapping (kernel)\")\n",
    "\n",
    "pl.subplot(2, 2, 4)\n",
    "pl.scatter(Xt[:, 0], Xt[:, 1], c=yt, marker='o',\n",
    "           label='Target samples', alpha=.2)\n",
    "pl.scatter(transp_Xs_gaussian_new[:, 0], transp_Xs_gaussian_new[:, 1], c=ys,\n",
    "           marker='+', label='Learned mapping')\n",
    "pl.title(\"Estim. mapping (kernel)\")\n",
    "pl.tight_layout()\n",
    "\n",
    "pl.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}