{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Семинар 6. Теория вероятности.\n", "\n", "### Что было на лекции\n", "\n", "Вероятность — функция P, определенная на событиях. Значение функции отражает представление о том, с какой вероятностью данное событие случается: 0 - не случается вовсе, 1 - случается всегда.\n", "\n", "### Дискретные случайные величины\n", "\n", "Распределение Бернулли:\n", "\n", "$\\xi = 1$ — успех (выпадение орла/правильный ответ на вопрос и пр.)\n", "\n", "$\\xi \\sim Ber(p)$\n", "\n", "$P(\\xi = 1) = p$" ] }, { "cell_type": "code", "execution_count": 134, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import scipy as sp\n", "\n", "import pylab as plt\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 135, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_hist(sample, title, xlabel='value', ylabel='freq', bins=10):\n", " plt.hist(sample, bins, normed=True, facecolor='green', alpha=0.75)\n", "\n", " plt.xlabel(xlabel)\n", " plt.ylabel(ylabel)\n", " plt.title(title)\n", " plt.grid(True)\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 136, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from scipy.stats import bernoulli" ] }, { "cell_type": "code", "execution_count": 137, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nX2V7R0RcXNEeq9JNFndLujcitkvabvsqSc9RmofPJN1kcYykf5akiPi57TskLZV0QyU7rJcpd2dV\no57rJT3L9hLbe0l6k6TxP7gXSzpN2vmO320Rsbmi/VVpl1nYXizpa5JOjYif92CPVdllFhFxSPt0\nsNKc/x0zsPSl7n5GviXpRbZn2Z6j9Iu8mfi+mG6yGJZ0nCS159mHSvpFpbusljXxs90pd2clj/hj\ngjdy2T4jfTnOi4jv2H617Q2SRpVGHDNON1lIOkfSkyV9uv1Id0dEPL93uy5Hl1n83k0q32RFuvwZ\nWW/7u5JukfSYpPMi4vYebrsUXX5ffFjS+bZvVirE90bE/b3bdXlsf1HSoKSn2N6o9IqmvTSN7uQN\nXADQMPzpRQBoGIofABqG4geAhqH4AaBhKH4AaBiKHwAahuIHJmD7N73eA1AGih+YGG9ywYxE8aMx\nbH/Y9jvGHK+2/QHb37d9Q/sP37z2CW73Uttrxxyfa7vzFvmjbA+1Py3z0hn6UeKYYSh+NMlXJL1x\nzPEbJV2g9LHPz1P61MuPTXDbP3j0b3tA0rmSToqIoyWdL+lDRW4YKAMfy4zGiIiW7f1tL5L0VEn3\nK/1Bj0/YfrGkxyUdYPupEdHNH315tqQ/VvpIYCs9kPplSdsHCkPxo2kulPQGSYuUngG8VdJTJD03\nIh5vf7zv7HG3eVS//+y483VLui0ijil3y0CxGPWgab6q9DG/Jyn9IzBf0pZ26R+r9HdeOzofg3un\npMNs72l7P0kvb1/+U0n7tz8KV7YHbB9Wxf8EMB084kejRMTttudJujsiNtv+gqS17Y/3vUG///n2\n0b7N3ba/Kuk2SXdIurF9+Q7bfynpXNvzJc1S+othM+6jkjGz8LHMANAwjHoAoGEofgBoGIofABqG\n4geAhqH4AaBhKH4AaBiKHwAahuIHgIb5fyk/LR2iCRqkAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = 0.3\n", "sample = bernoulli.rvs(p, size=1000)\n", "plot_hist(sample, 'Bernoulli')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Биномиальное распределение\n", "\n", "$\\xi_i \\sim Ber(p)$\n", "\n", "$\\eta = \\sum_{i=1}^n\\xi_i \\sim Bin(n, p)$\n", "\n", "$P(\\eta = k) = C^n_kp^k(1-p)^{n-k}$" ] }, { "cell_type": "code", "execution_count": 138, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEZCAYAAACEkhK6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHEpJREFUeJzt3X/wXXV95/HnK0T8AUKgFlKDSRQYjOy28UeQgSqx1EnA\nGcLWbpVaaXDXYbvGOrZ0ZOnO4G5n26WjFCHdBRRZw9qCMitCi4b640unskujEBfLF40Tk0uiCUWD\nKWFrfr33j3u+4fLN935zzjffc+857/t6zGTmnnPPj887n3u+73Pen3PPVURgZmZ2JHOG3QAzM2sH\nJwwzMyvFCcPMzEpxwjAzs1KcMMzMrBQnDDMzK8UJw2wKkv67pD9s8n4lfV3S++puk9mEucNugNmw\nSNoCnALsB/YBDwH/LiK2R8TvDKNNw9qvWRm+wrBRFsA7IuIE4BeAp4Cbhtsks+ZywrBRJ4CI2Avc\nDbwOQNLtkv5z8foCSU9K+j1JOyVtl7T60AakEyStk/SUpB/0lpQk/bakv5N0vaRdkjZJOk/Sakkd\nSTskXd6zfO9+50m6r9juj4vXCwbyv2I2BScMM0DSy4B3Af+7zyLzgZcDrwT+LfDnkk4s3ltbvLcY\nWA5cLumKnnXPATYCJwN3AncBbwROB94LrC32P9kc4NPAq4CFwHPFvsyGwgnDRt09kn4CPAP8KvCx\nPsvtBf4oIg5ExJeAZ4GzJM2hm2iujojnImIr8HG6iWDCDyJiXXQf3HYX3aTznyJiX0T8TbHtMybv\nMCJ+EhFfiIifRcQe4E+At85K1GYz4IRho25VRJwMvBj4IPC3kk6ZYrkfR8TBnunngOOBV9C9eaTT\n895WoLd0tLPn9f8DiIinJ807fvIOJb1U0i2Stkh6BngQmCdJpaMzm0VOGDbqJsYwIiK+ABwAfrnC\n+k/TvcNqUc+8RcD2WWjbVcCZwLKImMfzVxdOGDYUThhmBUmrgHnAeNl1iquOzwP/RdLxkhYBHwbu\nmG5XJTd/PN2rj92STgY+WrZdZnVwwrBRd5+k3ZJ+CvwRcHlElEkYvT8k80G6JarNwN8C/zMibi+5\n7lTTE24AXkb3KuYh4P6S65nVQnX/gJKklXQ/+HOA2yLiuknvnwXcDrwBuCYiri+7rpmZDU6tCaO4\ng+R7wIXAD4ENwLsj4omeZV5Bt+Z7KbBrImGUWdfMzAan7pLUOcCmiNgaEfvo3oO+qneBiHg6Ir5F\n9/EMldY1M7PBqTthLACe7JnexgtvN6xrXTMzm2Ue9DYzs1LqflrtdrqPNJhwGuXvTy+9riTfLWJm\nVlFEVPpOT91XGBuAMyQtknQs8G7g3mmW7218pXUjIuW/a6+9duhtcHyOz/Hl+zcTtV5hRMQBSWuA\nB3j+1thxSVd2345bJZ0KfJPuw9sOSvoQ8LqIeHaqdetsbxNt2bJl2E2oleNrN8c3Wmr/AaWI+DJw\n1qR5t/S83kn3aZyl1jUzs+HwoHfDrV69ethNqJXjazfHN1pq/6b3IEiKDHGYmQ2KJKJhg952lMbG\nxobdhFo5vnZzfKPFCcPMzEpxScrMbAS5JGVmZrVxwmi47DVUx9dujm+0OGGYmVkpHsMwMxtBHsMw\nM7PaOGE0XPYaquNrN8c3WpwwzMysFI9hmJmNoJmMYdT+tFqzYVhx6Qo62zsD29/CBQtZf8/6ge3P\nbBicMBpubGyM5cuXD7sZtakrvs72DvPXzJ/17fbd39qpk5P7r92yx1eVxzDMzKwUj2FYSkuWLRno\nFcaOtTsY3zByPwhpLebvYZiZWW2cMBou+33gjq/dHN9occIwM7NSPIZhKXkMw2x6HsMwM7PaOGE0\nXPYaquNrN8c3WpwwzMysFI9hWEoewzCbnscwzMysNk4YDZe9hur42s3xjRYnDDMzK8VjGJaSxzDM\npucxDDMzq40TRsNlr6E6vnZzfKPFCcPMzErxGIal5DEMs+l5DMPMzGrjhNFw2Wuojq/dHN9occIw\nM7NSah/DkLQSuIFucrotIq6bYpkbgYuAPcDqiNhYzP8PwG8BB4DHgCsiYu8U63sMw17AYxhm02vc\nGIakOcBaYAVwNnCZpNdOWuYi4PSIOBO4Eri5mL8IeD/w+oj4RWAu8O4622tmZv3VXZI6B9gUEVsj\nYh9wJ7Bq0jKrgHUAEfEwcKKkU4HdwF7gOElzgZcBP6y5vY2TvYbq+NrN8Y2WuhPGAuDJnultxbzp\nltkOLIiIXcDHgU4x75mI+EqNbTUzs2nMHXYD+pH0GuDDwCLgp8Ddkn4zIv5iquVXr17N4sWLAZg3\nbx5Lly5l+fLlwPNnCW2cXr58eaPa05b49uzew4Rd47sAOGnJSbVN9+7P/ZdnOlN8E6+3bNnCTNU6\n6C3pXOCjEbGymL4aiN6Bb0k3A1+PiLuK6SeAC4p/b4+I9xfz3wu8OSLWTLEfD3rbC3jQ22x6jRv0\nBjYAZ0haJOlYuoPW905a5l7gcjiUYJ6JiJ3Ad4FzJb1EkoALgZE7InvPDjJyfO3m+EZLrSWpiDgg\naQ3wAM/fVjsu6cru23FrRNwv6WJJ36d7W+0VxbrflrQO+Bbd22ofBW6ts71mZtafnyVlKbkkZTa9\nJpakzMwsCSeMhsteQ3V87eb4RosThpmZleIxDEsp+xjGiktX0NneGdj+Fi5YyPp71g9sf1a/mYxh\nNPaLe2bWX2d7Z6AJsbN2cMnJmssJo+HGxsYOfWMzoyzxdTodlixbctj8Pbv3cNwJx83+/rZ1mM/g\nEkY/Wfqvn+zxVeWEYTYL9h/cP+UZ/67xXYceITKbNl+1eda3aXYkHvRuuOxnN9njqyNZNEn2/sse\nX1VOGGZmVooTRsNlvw88e3wTT7bNKnv/ZY+vKicMMzMrxQmj4bLXULPH5zGMdsseX1VOGGZmVooT\nRsNlr6Fmj89jGO2WPb6qnDDMzKwUJ4yGy15DzR6fxzDaLXt8VTlhmJlZKU4YDZe9hpo9Po9htFv2\n+KpywjAzs1KcMBouew01e3wew2i37PFV5YRhZmalOGE0XPYaavb4PIbRbtnjq8oJw8zMSnHCaLjs\nNdTs8XkMo92yx1eVE4aZmZXihNFw2Wuo2ePzGEa7ZY+vKicMMzMrxQmj4bLXULPH5zGMdsseX1VO\nGGZmVooTRsNlr6Fmj89jGO2WPb6qnDDMzKwUJ4yGy15DzR6fxzDaLXt8VTlhmJlZKU4YDZe9hpo9\nPo9htFv2+KpywjAzs1JqTxiSVkp6QtL3JH2kzzI3StokaaOkpT3zT5T0eUnjkv5B0pvrbm/TZK+h\nZo/PYxjtlj2+qmpNGJLmAGuBFcDZwGWSXjtpmYuA0yPiTOBK4Oaetz8B3B8RS4BfAsbrbK+ZmfVX\n9xXGOcCmiNgaEfuAO4FVk5ZZBawDiIiHgRMlnSrpBOAtEXF78d7+iNhdc3sbJ3sNNXt8HsNot+zx\nVVV3wlgAPNkzva2YN90y24t5rwaelnS7pEck3SrppbW21szM+mryoPdc4A3An0fEG4DngKuH26TB\ny15DzR6fxzDaLXt8Vc2tefvbgYU906cV8yYv86o+yzwZEd8sXt8NTDloDrB69WoWL14MwLx581i6\ndOmhzp64rPT06Ezv2b2HCRNloYk/3nVMH9x7MPX+ev8/m9C/nq4+PfF6y5YtzJQiYsYrH3Hj0jHA\nd4ELgR8Bfw9cFhHjPctcDHwgIt4h6Vzghog4t3jvQeD9EfE9SdcCL4uIw5KGpKgzjmEaGxtLfZZT\nV3xLli1h/pr5s77dfh666iHO+9h5h83fNb6rlquMfvury461OxjfcPg9J/58tpckIkJV1qn1CiMi\nDkhaAzxAt/x1W0SMS7qy+3bcGhH3S7pY0veBPcAVPZv4XeCzkl4EbJ70npmZDVDdJSki4svAWZPm\n3TJpek2fdb8NLKuvdc2X9exmQvb4PIbRbtnjq6rJg95mZtYgThgN1ztglVH2+Pw9jHbLHl9VThhm\nZlaKE0bDZa+hZo/PYxjtlj2+qpwwzMysFCeMhsteQ80en8cw2i17fFU5YZiZWSlOGA2XvYaaPT6P\nYbRb9viqcsIwM7NSnDAaLnsNNXt8HsNot+zxVeWEYWZmpRzxWVKSfm269yPif81ec2yy7DXU7PF5\nDKPdssdXVZmHD/4b4Dzga8X024CHgH8EAnDCMDMbAWVKUi8CXhcR74yIdwJnAy+KiCsi4n31Ns+y\n11Czx+cxjHbLHl9VZRLGqyLiRz3TO3nhr+iZmdkIKFOS+qqk9cBfFtPvAr5SX5OsV/Yaavb4PIbR\nbtnjq+qICSMi1kj6V8Bbi1m3RsQX6m2WmZk1Tdnbah8B/joiPgysl/TyGttkPbLXULPH5zGMdsse\nX1VHTBiS3g/cDUz8rOoC4J46G2VmZs1T5grjA8D5wG6AiNgEnFJno+x52Wuo2ePzGEa7ZY+vqjIJ\n42cRsXdiQtJcut+/MDOzEVImYTwo6RrgpZLeDnweuK/eZtmE7DXU7PF5DKPdssdXVZmEcTXdb3U/\nBlwJ3A/8xzobZWZmzTPtbbWSjgHWRcR7gE8OpknWK3sNNXt8HsNot+zxVTVtwoiIA5IWSTq2dxzD\nbCZWXLqCzvbOQPbV2dZhPvMHsi+zUVHmm96bgW9IuhfYMzEzIq6vrVV2yNjYWJqznM72DvPXvPCP\n+K7xXbWchW++avOsb3Mm6oqvKTJ9PqeSPb6q+o5hSLqjeHkJ8FfFsi/v+WdmZiNkuiuMN0p6JdAB\nbhpQe2yS7Gc3mc++IX982T+f2eOrarqEcTPwVeDVwDd75ovu9zBeU2O7zMysYfqWpCLixohYAtwe\nEa/p+ffqiHCyGJDs94Fn/55C9viyfz6zx1fVEb+HERG/M4iGmJlZs5V9Wq0NSfYaavYaf/b4sn8+\ns8dXlROGmZmV4oTRcNlrqNlr/Nnjy/75zB5fVU4YZmZWihNGw2WvoWav8WePL/vnM3t8VdWeMCSt\nlPSEpO9J+kifZW6UtEnSRklLJ703R9IjxaNJzMxsSGpNGJLmAGuBFcDZwGWSXjtpmYuA0yPiTLqP\nT7950mY+BDxeZzubLHsNNXuNP3t82T+f2eOrqu4rjHOATRGxNSL2AXcCqyYtswpYBxARDwMnSjoV\nQNJpwMXAp2pup5mZHUHdCWMB8GTP9LZi3nTLbO9Z5s+AP2CEfxI2ew01e40/e3zZP5/Z46uqsYPe\nkt4B7IyIjXSfX6UhN8nMbKSV+T2Mo7EdWNgzfVoxb/Iyr5pimV8HLpF0MfBS4OWS1kXE5VPtaPXq\n1SxevBiAefPmsXTp0kNnBxN1yDZO99ZQm9Ceo5meMFHXP2nJSS+o8U+cjfe+P9Ppg3sPTrm/uqb7\n7S9LfHt2H/opnLSfz1E4/sbGxtiyZQszpYj6qj3FT7x+F7gQ+BHw98BlETHes8zFwAci4h2SzgVu\niIhzJ23nAuD3I+KSPvuJOuMYpkw/4LJk2ZKB/YDSQ1c9xHkfO2/Wt1t1f1ni27F2B+Mbxg+bn+nz\nOZXM8UkiIipVbmq9wih+4nUN8ADd8tdtETEu6cru23FrRNwv6WJJ36f7i35X1Nmmtsn6YZ2Qvcaf\nPb7sn8/s8VVVd0mKiPgycNakebdMml5zhG08CDw4+60zM7OyGjvobV3Z7wPP/j2F7PFl/3xmj68q\nJwwzMyvFCaPhstdQs9f4s8eX/fOZPb6qnDDMzKyU2ge97ejUeVvfiktX0NneqWXbU+ls6zCfwdxW\n2xTZ48t82ynkj68qJ4wR1tneOex7EXXafNXmge3LzGafS1INl/3sJvPZN+SPL/vnM3t8VTlhmJlZ\nKU4YDZf9PvDs31PIHl/2z2f2+KryGIaZHVGn02HJsiWHzd+zew/HnXDcrO9v4YKFrL9n/axv146O\nE0bDZa+hZq/xZ4lv/8H9A71BorN2cHfvTSf78VeVS1JmZlaKE0bDZa+hZq/xO752y378VeWEYWZm\npThhNFz2GmqWGn8/jq/dsh9/VTlhmJlZKU4YDZe9hpq9Bu742i378VeVE4aZmZXihNFw2Wuo2Wvg\njq/dsh9/VTlhmJlZKU4YDZe9hpq9Bu742i378VeVE4aZmZXihNFw2Wuo2Wvgjq/dsh9/VTlhmJlZ\nKU4YDZe9hpq9Bu742i378VeVE4aZmZXihNFw2Wuo2Wvgjq/dsh9/VTlhmJlZKU4YDZe9hpq9Bu74\n2i378VeVE4aZmZXihNFw2Wuo2Wvgjq/dsh9/VTlhmJlZKU4YDZe9hpq9Bu742i378VeVE4aZmZXi\nhNFw2Wuo2Wvgjq/dsh9/VTlhmJlZKXPr3oGklcANdJPTbRFx3RTL3AhcBOwBVkfERkmnAeuAU4GD\nwCcj4sa629s0Y2Njqc9ydo3vSn2W6vhmptPpsGTZklnfbj8LFyxk/T3rD5uf/firqtaEIWkOsBa4\nEPghsEHSFyPiiZ5lLgJOj4gzJb0ZuBk4F9gP/F6RPI4HviXpgd51zSyn/Qf3M3/N/IHtr7O2M7B9\ntVndJalzgE0RsTUi9gF3AqsmLbOK7pUEEfEwcKKkUyNiR0RsLOY/C4wDC2pub+NkP7vJfPYNjq/t\nsh9/VdWdMBYAT/ZMb+PwP/qTl9k+eRlJi4GlwMOz3kIzMyul9jGMo1WUo+4GPlRcaUxp9erVLF68\nGIB58+axdOnSQ2cHE/dSt3G69z7w2d7+hIl76SfOFuuanmp/ve/N5v4O7j040Pj67c/xtSO+Pbv3\nHNrfoI6/QU9PvN6yZQszpYiY8cpH3Lh0LvDRiFhZTF8NRO/At6Sbga9HxF3F9BPABRGxU9Jc4K+A\nL0XEJ6bZT9QZxzDVOei2ZNmSgdaJH7rqIc772HkvmFfXoOlU+6pTv/05vtndX112rN3B+Ibxw+Zn\nHvSWRESoyjp1l6Q2AGdIWiTpWODdwL2TlrkXuBwOJZhnImJn8d6ngcenSxbZZf2wTsheA3d87Zb9\n+Kuq1pJURByQtAZ4gOdvqx2XdGX37bg1Iu6XdLGk71PcVgsg6XzgPcBjkh4FArgmIr5cZ5vNzGxq\ntY9hFH/gz5o075ZJ02umWO8bwDH1tq75Ml8Sg7+n0HbZ48t+/FXlb3qbmVkpThgNl/3sJvPZKTi+\ntst+/FXlhGFmZqU4YTRc9ufxZ/89BcfXbtmPv6qcMMzMrBQnjIbLXkPNXgN3fO2W/firygnDzMxK\nccJouOw11Ow1cMfXbtmPv6qcMMzMrBQnjIbLXkPNXgN3fO2W/firygnDzMxKccJouOw11Ow1cMfX\nbtmPv6qcMMzMrBQnjIbLXkPNXgN3fO2W/firygnDzMxKccJouOw11Ow1cMfXbtmPv6qcMMzMrBQn\njIbLXkPNXgN3fO2W/firygnDzMxKccJouOw11Ow1cMfXbtmPv6qcMMzMrBQnjIbLXkPNXgN3fO2W\n/firygnDzMxKmTvsBtj0xsbGUp/l7Brflfos1fG1Q6fTYcmyJYfN37N7D8edcNys72/hgoWsv2f9\nrG+3bk4YZjby9h/cz/w18w+bX1dC7KztzPo2B8ElqYbLfHUB+Wvgjq/dssdXla8wGmTFpSvobB/c\nmUdnW4f5HH5WZWY2FSeMBuls7xx2WVxnjXjzVZtr2W4VWWrg/Ti+dsseX1UuSZmZWSlOGA2X/ezG\n8bWb4xstThhmZlaKE0bDZX9Wj+NrN8c3WpwwzMysFN8l1ccdn72D62+5fmD7e8mxL2Hvvr2Hzc9e\nQ3V87eb4RosTRh+bt25m3y/t4+R/efJA9vfTL/+UAzsODGRfZmYzUXtJStJKSU9I+p6kj/RZ5kZJ\nmyRtlLS0yrp10lxxzIuPGci/OXOm7orsNVTH126Ob7TUmjAkzQHWAiuAs4HLJL120jIXAadHxJnA\nlcDNZdcdBc92nh12E2rl+NrN8Y2Wuq8wzgE2RcTWiNgH3AmsmrTMKmAdQEQ8DJwo6dSS66a3/7n9\nw25CrRxfuzm+0VJ3wlgAPNkzva2YV2aZMuuamdmANHHQW8NuAMCxLzqWvd/ZyzPbnhnI/n721M+m\njPyfn/7ngex/WBxfuzm+0aKIqG/j0rnARyNiZTF9NRARcV3PMjcDX4+Iu4rpJ4ALgFcfad2ebdQX\nhJlZUhFR6QS97iuMDcAZkhYBPwLeDVw2aZl7gQ8AdxUJ5pmI2Cnp6RLrAtWDNjOz6mpNGBFxQNIa\n4AG64yW3RcS4pCu7b8etEXG/pIslfR/YA1wx3bp1ttfMzPqrtSRlZmZ5tOpZUpJuk7RT0v/tmXet\npG2SHin+rRxmG4+GpNMkfU3SP0h6TNLvFvNPkvSApO9KWi/pxGG3dSamiO+DxfzW96GkF0t6WNKj\nRXx/XMzP0nf94mt93/WSNKeI495iOkX/waHYHu2JrXLfteoKQ9IvA88C6yLiF4t51wL/FBGDe/BT\nTSTNB+ZHxEZJxwPfovvdkyuAH0fEnxbfeD8pIq4eZltnYpr43kWCPpT0soh4TtIxwDeA3wcuIUHf\nQd/4fpUEfTdB0oeBNwInRMQlkq4jT/9Njq3y385WXWFExN8BU31XP8Wgd0TsiIiNxetngXHgNLp/\nVD9TLPYZ4NLhtPDo9Ilv4rs1re/DiHiuePliusfWLpL0HfSNDxL0HXSvgIGLgU/1zE7Rf31ig4p9\n16qEMY01xXOoPtXmS8ZekhYDS4H/A5waETuh+0cXOGV4LZsdPfE9XMxqfR9OXPIDO4CxiHicRH3X\nJz5I0HeFPwP+AOgtu2Tpv6lig4p9lyFh/DfgNRGxlO4HufWXxkW55m7gQ8WZ+ORObk8dcQpTxJei\nDyPiYES8nu5V4VskLSdR302K762SLiBJ30l6B7CzuAKe7qy7df03TWyV+671CSMi/jGeH4j5JLBs\nmO05WpLm0v1jekdEfLGYvbN4vtbEOMBTw2rf0Zoqvmx9GBG7gfuBN5Go7yYU8f018KZEfXc+cImk\nzcBfAr8i6Q5gR4L+myq2dTPpuzYmDNGTJYtOnPBrwHcG3qLZ9Wng8Yj4RM+8e4HVxevfBr44eaUW\nOSy+DH0o6RUTl/SSXgq8HXiUJH3XJ76NGfoOICKuiYiFEfEaul8S/lpEvBe4j5b3X5/YLp9J3zXx\nWVJ9SfoLYDnwc5I6wLXA29T9DY2DwBa6j0hvJUnnA+8BHitqxQFcA1wHfE7S+4CtwG8Mr5UzN018\nv5mgD38B+Iwk0T0RuyMivlrE2fq+o3986xL03XT+Kzn6byp/WrXvWnVbrZmZDU8bS1JmZjYEThhm\nZlaKE4aZmZXihGFmZqU4YZiZWSlOGGZmVooThllNJP3TsNtgNpucMMzq4y85WSpOGGYlSfoTSf++\nZ/paSX8o6SuSvinp25IumWK9CyTd1zN9k6TLi9dvkDQmaYOkL008t8isiZwwzMq7ixc+GuI3gP8B\nXBoRbwJ+Bfh4n3UPu9ooHsR4E/DOiFgG3A788Ww22Gw2tepZUmbDVPxS4M8XD207BfgJ3cdCf0LS\nW+g+k+eVkk6JiDJPNT0L+BfA3/Q8o+mHNTXf7Kg5YZhV83ngXwPz6V5x/Bbwc8DrI+KgpB8AL5m0\nzn5eeDU/8b6A70TE+fU22Wx2uCRlVs3n6D4i+p10k8eJwFNFsngbsKhn2YnH8G8FXifpRZLmARcW\n878L/Lykc6FbopL0ukEEYTYTvsIwqyAiHpf0cmBbROyU9FngPknfBr5J93fKDy1erLNN0ufo/t7A\nD4BHivn7JP06cFPxWxPHADcAj2PWQH68uZmZleKSlJmZleKEYWZmpThhmJlZKU4YZmZWihOGmZmV\n4oRhZmalOGGYmVkpThhmZlbK/wdz/S2IEXKduQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n, p = 100, .3\n", "sample = np.random.binomial(n, p, 1000)\n", "plot_hist(sample, 'Binomial')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Распределение Пуассона\n", "\n", "$\\xi_i$ — количество раз некоторого редкого события (встретить слово в тексте)\n", "\n", "$P(\\xi_i = k) = \\frac{\\lambda^k e^{-\\lambda}}{k!}, \\lambda > 0$" ] }, { "cell_type": "code", "execution_count": 139, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sample = np.random.poisson(0.1, 1000)\n", "plot_hist(sample, 'Poison, $\\lambda$ = 0.1')" ] }, { "cell_type": "code", "execution_count": 140, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sample = np.random.poisson(1, 1000)\n", "plot_hist(sample, 'Poison, $\\lambda$ = 1')" ] }, { "cell_type": "code", "execution_count": 141, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sample = np.random.poisson(10, 1000)\n", "plot_hist(sample, 'Poison, $\\lambda$ = 10')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Независимые события**\n", "\n", "События A и B называются независимыми, если выполнено соотношение:\n", "\n", "$P(AB) = P(A)P(B)$\n", "\n", "где P(AB) — вероятность что произошло и A и B.\n", "\n", "Определение продолжается очевидным образом: n событий $A_1,...,A_n$ называются независимыми, если выполнено\n", "\n", "$P(A_1,...,A_n) = P(A_1) \\cdots P(A_n)$\n", "\n", "**Условная вероятность**\n", "\n", "Допустим есть два события: A и B. Если известно, что B произошло, то вероятность A можно вычислить по формуле:\n", "\n", "$P(A|B) = \\dfrac{P(AB)}{P(B)}$\n", "\n", "Отсюда получаем что \n", "\n", "$P(AB) = P(A|B)P(B)$ или $P(AB) = P(B|A)P(A)$\n", "\n", "Отсюда получаем **формулу Байеса**\n", "\n", "$P(A|B) = \\dfrac{P(B|A)P(A)}{P(B)}$\n", "\n", "*Как из этого построить классификатор?*\n", "\n", "Пусть у нас есть некоторая обучающая выборка: $X^l = (x_i, y_i)_{i=1}^l$\n", "\n", "Будем считать что событие A — \"объект принадлежит классу $\\dot{y}$\", а событие B — \"объект описывается набором признаков $(x^1, \\cdots, x^n)$\". Тогда можно переписать формулу в следующем виде:\n", "\n", "$P(\\dot{y}~|~(x^1, \\cdots, x^n)) = \\dfrac{P((x^1, \\cdots, x^n)~|~\\dot{y})P(\\dot{y})}{P((x^1, \\cdots, x^n))}$\n", "\n", "А теперь сделаем \"наивное\" предположение: пусть все признаки независимы. Тогда:\n", "\n", "$P(\\dot{y}~|~(x^1, \\cdots, x^n)) = \\dfrac{\\prod_j{P(x^j~|~\\dot{y}})P(\\dot{y})}{P(x^1, \\cdots, x^n)}$\n", "\n", "Откуда получаем сам классификатор:\n", "\n", "$a(x) = \\arg\\max_{\\dot{y}} P(\\dot{y}~|~(x^1, \\cdots, x^n)) = \\arg\\max_{\\dot{y}} \\prod_j{P(x^j~|~\\dot{y}})P(\\dot{y}) $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Байесовский классификатор\n", "\n", "$a(x) = \\arg\\max_{y \\in Y} P(y) \\prod_j P(x^j|y)$\n", "\n", "**Небольшой спам фильтр своими руками**\n", "\n", "Разберем работу наивного байесовского классификатора на примере. В качестве данных взяли набор sms-сообщений, нужно определить, является ли данное сообщение спамом.\n", "\n", "Объекты — сообщения\n", "\n", "Признаки — слова сообщения\n", "\n", "Целевая метка — спам/не спам" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labeltext
0hamGo until jurong point, crazy.. Available only ...
1hamOk lar... Joking wif u oni...
2spamFree entry in 2 a wkly comp to win FA Cup fina...
3hamU dun say so early hor... U c already then say...
4hamNah I don't think he goes to usf, he lives aro...
\n", "
" ], "text/plain": [ " label text\n", "0 ham Go until jurong point, crazy.. Available only ...\n", "1 ham Ok lar... Joking wif u oni...\n", "2 spam Free entry in 2 a wkly comp to win FA Cup fina...\n", "3 ham U dun say so early hor... U c already then say...\n", "4 ham Nah I don't think he goes to usf, he lives aro..." ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%matplotlib inline\n", "import pandas as pd\n", "import numpy as np\n", "from __future__ import division\n", "\n", "data = pd.read_csv('sms_data.txt', sep='\\t', names=('label', 'text'))\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Разобъем выборку на 2: обучающую и тестовую" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data = data.reindex(np.random.permutation(data.index))\n", "\n", "data_train = data[:4000]\n", "data_test = data[4000:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишем вспомогательные функции:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['go',\n", " 'until',\n", " 'jurong',\n", " 'point',\n", " 'crazy',\n", " 'available',\n", " 'only',\n", " 'in',\n", " 'bugis',\n", " 'n',\n", " 'great',\n", " 'world',\n", " 'la',\n", " 'e',\n", " 'buffet',\n", " 'cine',\n", " 'there',\n", " 'got',\n", " 'amore',\n", " 'wat']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import re\n", "\n", "def split_message(message):\n", " return re.sub(\"[^a-zA-Z]\", \" \", message.lower()).split()\n", "\n", "split_message(data.text[0])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python2.7/site-packages/pandas/core/indexing.py:499: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " self.obj[item_labels[indexer[info_axis]]] = value\n" ] }, { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labeltext
3229spam[six, chances, to, win, cash, from, to, pounds...
2301ham[nothin, comes, to, my, mind, help, me, buy, h...
378ham[well, there, s, not, a, lot, of, things, happ...
5298ham[i, ll, hand, her, my, phone, to, chat, wit, u]
639ham[what, will, we, do, in, the, shower, baby]
\n", "
" ], "text/plain": [ " label text\n", "3229 spam [six, chances, to, win, cash, from, to, pounds...\n", "2301 ham [nothin, comes, to, my, mind, help, me, buy, h...\n", "378 ham [well, there, s, not, a, lot, of, things, happ...\n", "5298 ham [i, ll, hand, her, my, phone, to, chat, wit, u]\n", "639 ham [what, will, we, do, in, the, shower, baby]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_messages = data_train.apply(lambda row: split_message(row['text']), axis=1)\n", "data_train.iloc[:, 1] = train_messages\n", "test_messages = data_test.apply(lambda row: split_message(row['text']), axis=1)\n", "data_test.iloc[:, 1] = test_messages\n", "\n", "data_train.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь есть две задачи:\n", "1. Оценить по выборке $P(y)$ — вероятность класса (спам/не спам)\n", "2. Оценить по выборке $P(x^j|y)$ — вероятность признака для данного класса (вероятность встретить некоторое слово в сообщении типа спам/не спам)\n", "\n", "Обратите внимание, что все оценки будут вычисляться только по обучающей выборке!" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.12925 0.87075\n" ] } ], "source": [ "n = data_train.shape[0]\n", "n_spam = data_train[data_train['label'] == 'spam'].shape[0]\n", "n_ham = data_train[data_train['label'] == 'ham'].shape[0]\n", "\n", "p_spam = n_spam / n\n", "p_ham = n_ham / n\n", "\n", "print p_spam, p_ham" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Как будем оценивать вероятности слов? \n", "\n", "1. Найдем все уникальные слова.\n", "2. Для каждого слова посчитаем в скольки spam/ham-сообщениях оно встречалось\n", "3. Посчитаем для каждого класса: $P(x^j~|~y) = \\dfrac{count(x^j, x^j \\in y)}{count(y)}$\n", "\n", "Однако вычисление вероятности по нижней формуле плохо, так как если слово не встречалось в каком-либо из классов, соответствующая его вероятность будет равна 0, отсюда все выражение $P(y) \\prod_j P(x^j|y)$ будет равно 0. Поэтому немного изменим нашу формулу:\n", "\n", "$P(x^j~|~y) = \\dfrac{count(x^j, x^j \\in y) + \\alpha}{count(y) + |V|\\alpha}$\n", "\n", "где $|V|$ — количество уникальных слов" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from collections import defaultdict\n", "\n", "def find_counts(data):\n", " spam_counts, ham_counts = defaultdict(int), defaultdict(int)\n", " for _, (label, message) in data.iterrows():\n", " if label == 'spam':\n", " for word in message:\n", " spam_counts[word] += 1\n", " else:\n", " for word in message:\n", " ham_counts[word] += 1\n", " return spam_counts, ham_counts" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "spam_counts, ham_counts = find_counts(data_train)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def find_probs(spam_counts, ham_counts, alpha=0.1):\n", " spam_probs, ham_probs = defaultdict(lambda: 1 / n_words), defaultdict(lambda: 1 / n_words)\n", " unique_words = np.unique(spam_counts.keys() + ham_counts.keys())\n", " n_words = unique_words.shape[0]\n", " spam_div = np.sum(spam_counts[w] for w in spam_counts) + alpha * n_words\n", " ham_div = np.sum(ham_counts[w] for w in ham_counts) + alpha * n_words\n", " for word in unique_words:\n", " spam_probs[word] = (spam_counts[word] + alpha) / spam_div\n", " ham_probs[word] = (ham_counts[word] + alpha) / ham_div\n", " return spam_probs, ham_probs" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "spam_probs, ham_probs = find_probs(spam_counts, ham_counts, alpha=0.1)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def classify(p_spam, p_ham, spam_probs, ham_probs, message):\n", " spam_score = p_spam * np.prod([spam_probs[word] for word in message])\n", " ham_score = p_ham * np.prod([ham_probs[word] for word in message])\n", " if spam_score > ham_score:\n", " return 'spam'\n", " return 'ham'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Итак, посчитаем качество нашего классификатора:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.98409669211195927" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "make_classify = lambda m: classify(p_spam, p_ham, spam_probs, ham_probs, m)\n", "(data_test.label == data_test.text.apply(make_classify)).mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Как часто спам оказывается помечен как обычное сообщение?" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.069565217391304349" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(((data_test.label == 'spam') & (data_test.text.apply(make_classify) == 'ham')).mean() / \n", " (data_test.label == 'spam').mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Что интересного можно посмотреть? Например, найдем топ10 слов, наиболее вероятных для каждого класса." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[('to', 0.03798017099506282),\n", " ('a', 0.02152289969092442),\n", " ('call', 0.020398988479910087),\n", " ('you', 0.01678641673022117),\n", " ('your', 0.014137197447115963),\n", " ('the', 0.011889375025087303),\n", " ('now', 0.011889375025087303),\n", " ('free', 0.011889375025087303),\n", " ('for', 0.011407698791795448),\n", " ('or', 0.0110063019307189),\n", " ('p', 0.010123228836350499),\n", " ('txt', 0.01004294946413519),\n", " ('u', 0.01004294946413519),\n", " ('is', 0.008597920764259623),\n", " ('have', 0.0074740095532452935),\n", " ('ur', 0.007393730181029984),\n", " ('on', 0.007313450808814675),\n", " ('from', 0.007152892064384056),\n", " ('stop', 0.006992333319953438),\n", " ('text', 0.006912053947738128)]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(spam_probs.iteritems(), key=lambda x: x[1], reverse=True)[:20]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[('i', 0.04134996559177304),\n", " ('you', 0.027547904975138843),\n", " ('to', 0.02231397749411183),\n", " ('the', 0.01543233210239113),\n", " ('a', 0.015180328186637978),\n", " ('u', 0.014346776772992934),\n", " ('and', 0.012001201864828977),\n", " ('in', 0.011322729783955106),\n", " ('me', 0.010954416368623574),\n", " ('my', 0.010799337035852404),\n", " ('is', 0.010644257703081233),\n", " ('it', 0.009810706289436191),\n", " ('that', 0.007872214629796556),\n", " ('of', 0.00758144088085061),\n", " ('for', 0.007058048132747909),\n", " ('s', 0.00641834588506683),\n", " ('have', 0.006243881635699263),\n", " ('can', 0.006108187219524488),\n", " ('not', 0.00599187771994611),\n", " ('but', 0.00599187771994611)]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(ham_probs.iteritems(), key=lambda x: x[1], reverse=True)[:20]" ] } ], "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.10" } }, "nbformat": 4, "nbformat_minor": 0 }