{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 復習 (混合ガウス分布)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "import numpy as np\n", "\n", "from scipy.stats import multivariate_normal\n", "from scipy.stats import multinomial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## (例)混合ガウス分布(混合数3)の生成過程" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ガウス分布の番号: [1] 位置: [1.68965966 0.05432921]\n" ] } ], "source": [ "def generator():\n", " z= multinomial.rvs(1,[0.2,0.4,0.4])\n", " z=np.where(z==1)[0]# サイコロを振る\n", " # サイコロの目に対応するガウス分布からサンプルを得る\n", " if z==0:\n", " x = multivariate_normal.rvs([1,2],[[0.5,0],[0,0.5]])\n", " if z==1:\n", " x = multivariate_normal.rvs([3,0],[[1,0],[0,1]])\n", " if z==2:\n", " x = multivariate_normal.rvs([-2,1],[[1,0.5],[0.5,1]])\n", " return (z,x)\n", "# こんな書き方したら笑われちゃいますが・・・。\n", "\n", "out=generator()\n", "print('ガウス分布の番号:',out[0],'位置:',out[1])" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n+D9xsSrgwSuyTQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "samples=[generator() for i in range(500)]\n", "for index in range(3):\n", " plt.plot([i[1][0] for i in samples if i[0]==index],[i[1][1] for i in samples if i[0]==index],'x')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "xだけが観測できるとき、混合ガウスから生成されると仮定、\n", " - $\\alpha$(どのサイコロの目が出るかの確率)\n", " - $\\mu_i$(ガウス分布の平均)\n", " - $\\Sigma_i$(ガウス分布の分散)\n", " \n", " を推定するのがGaussian Mixture Modelingの問題設定。 \n", " \n", "対数尤度 $log p(x|\\Theta)$を最大化する$\\Theta=[\\alpha, \\mu, \\Sigma]$を求める (EMアルゴリズムで)。\n", "また、副次的に$p(z_i|x_i)$(それぞれのx_iに対するz_iの事後確率)も求められる。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 統計的機械学習のテンプレ\n", " - データ生成の過程、言い換えるならデータがどのように生成されるかの仮説 (線形回帰ならy=ax+bにガウシアンノイズが加わる)\n", " - 生成過程におけるパラメータのどれが観測され、どれが未知なのか (線形回帰ならaとbが未知)\n", " - 潜在パラメータの何が求めたいのか。尤もらしいパラメータか、パラメータの分布か(線形回帰なら普通は尤もらしいパラメータ)\n", " - どうやって解くのか (普通の回帰なら普通に解ける。lassoは勾配法。)\n", " \n", " とりあえず上2つさえ押さえておけば使える。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Latent Dirichlet Allocation\n", "## 何ができるのか\n", " - 大雑把に言うと、ドキュメントのクラスタリング\n", " - 『ある文章とある文章は似た分野のドキュメントだ』\n", " - 『このクラスタに特徴的な単語はこれだ』\n", " - 『この文章はこのトピックとこのトピックが混じっている』\n", " \n", "みたいなことがわかる。\n", "\n", "## 実装\n", " - LightLDA\n", " - gemsim.lda\n", " \n", "## 言語処理の話\n", " - Bag-of-words 順序を考慮しない特徴量 (文章理解、要約系のタスクだと順序はいらないことが多い)\n", " - もちろん順序が重要な特徴となるタスクもある(たとえばmachine translationならLSTMなどを使ったり)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }