{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Comparison between sklearn's and gensim's implementations of NMF" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext line_profiler\n", "from gensim.models.nmf import Nmf as GensimNmf\n", "from gensim.parsing.preprocessing import preprocess_documents\n", "from gensim import matutils\n", "from sklearn.decomposition.nmf import NMF as SklearnNmf\n", "import sklearn.decomposition.nmf\n", "from sklearn.datasets import fetch_20newsgroups\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "\n", "import logging\n", "logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 20newsgroups" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from gensim.parsing.preprocessing import preprocess_documents\n", "\n", "documents = preprocess_documents(fetch_20newsgroups().data[:1000])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2018-06-13 14:18:46,100 : INFO : adding document #0 to Dictionary(0 unique tokens: [])\n", "2018-06-13 14:18:46,293 : INFO : built Dictionary(17622 unique tokens: ['addit', 'bodi', 'bricklin', 'brought', 'bumper']...) from 1000 documents (total 136081 corpus positions)\n", "2018-06-13 14:18:46,321 : INFO : discarding 14411 tokens: [('bricklin', 2), ('bumper', 4), ('edu', 661), ('funki', 4), ('lerxst', 2), ('line', 989), ('organ', 952), ('rac', 1), ('subject', 1000), ('tellm', 2)]...\n", "2018-06-13 14:18:46,323 : INFO : keeping 3211 tokens which were in no less than 5 and no more than 500 (=50.0%) documents\n", "2018-06-13 14:18:46,330 : INFO : resulting dictionary: Dictionary(3211 unique tokens: ['addit', 'bodi', 'brought', 'call', 'car']...)\n" ] } ], "source": [ "from gensim.corpora import Dictionary\n", "\n", "dictionary = Dictionary(documents)\n", "\n", "dictionary.filter_extremes()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "corpus = [\n", " dictionary.doc2bow(document)\n", " for document\n", " in documents\n", "]\n", "\n", "bow_matrix = matutils.corpus2dense(corpus, len(dictionary), len(documents))\n", "proba_bow_matrix = bow_matrix / bow_matrix.sum(axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sklearn NMF" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.7 s, sys: 890 ms, total: 2.59 s\n", "Wall time: 1.45 s\n" ] } ], "source": [ "%%time\n", "# %%prun\n", "\n", "sklearn_nmf = SklearnNmf(n_components=5, tol=1e-5, max_iter=int(1e9), random_state=42)\n", "\n", "W = sklearn_nmf.fit_transform(proba_bow_matrix)\n", "H = sklearn_nmf.components_" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# %lprun -f sklearn.decomposition.nmf._fit_coordinate_descent sklearn_nmf.fit_transform(bow_matrix)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.419692286693165" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.norm(proba_bow_matrix - W.dot(H), 'fro')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gensim NMF" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2018-06-13 14:18:49,027 : INFO : Loss (no outliers): 593.2289895825425\tLoss (with outliers): 593.2289895825425\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 2.24 s, sys: 2.21 s, total: 4.44 s\n", "Wall time: 1.6 s\n" ] } ], "source": [ "%%time\n", "# %%prun\n", "\n", "PASSES = 2\n", "\n", "np.random.seed(42)\n", "\n", "gensim_nmf = GensimNmf(\n", " corpus,\n", " chunksize=len(corpus),\n", " num_topics=5,\n", " id2word=dictionary,\n", " kappa=1.,\n", " passes=PASSES,\n", " eval_every=10,\n", " normalize=True\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# %lprun -f GensimNmf._solve_w GensimNmf(corpus, chunksize=len(corpus), num_topics=5, id2word=dictionary, lambda_=1., kappa=1.)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "W = gensim_nmf.get_topics().T\n", "H = np.hstack(gensim_nmf[bow] for bow in corpus)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.357256256235999" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.norm(proba_bow_matrix - W.dot(H), 'fro')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0,\n", " '0.101*\"jesu\" + 0.055*\"matthew\" + 0.042*\"peopl\" + 0.039*\"christian\" + 0.026*\"prophet\" + 0.024*\"dai\" + 0.023*\"messiah\" + 0.023*\"said\" + 0.019*\"god\" + 0.018*\"fulfil\"'),\n", " (1,\n", " '0.043*\"armenian\" + 0.028*\"peopl\" + 0.016*\"post\" + 0.016*\"year\" + 0.016*\"com\" + 0.015*\"time\" + 0.015*\"turkish\" + 0.014*\"state\" + 0.013*\"nasa\" + 0.013*\"space\"'),\n", " (2,\n", " '0.359*\"max\" + 0.007*\"umd\" + 0.005*\"hst\" + 0.004*\"armenian\" + 0.003*\"health\" + 0.002*\"father\" + 0.002*\"us\" + 0.002*\"gee\" + 0.002*\"state\" + 0.002*\"public\"'),\n", " (3,\n", " '0.055*\"health\" + 0.049*\"jesu\" + 0.046*\"us\" + 0.034*\"year\" + 0.034*\"like\" + 0.032*\"know\" + 0.029*\"matthew\" + 0.028*\"david\" + 0.027*\"case\" + 0.027*\"diseas\"'),\n", " (4,\n", " '0.099*\"argument\" + 0.060*\"conclus\" + 0.054*\"exampl\" + 0.049*\"true\" + 0.048*\"premis\" + 0.037*\"good\" + 0.031*\"occur\" + 0.030*\"logic\" + 0.029*\"fals\" + 0.027*\"form\"')]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gensim_nmf.show_topics()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the personal experience I can say that the higher number of passes and shuffle of the trainset significantly improves performance.\n", "\n", "Then, of course, you should perform hyperparameter tuning." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Image of stars\n", "### (For the sake of visualization of performance on sparse trainset)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from PIL import Image\n", "img = Image.open('stars_scaled.jpg').convert('L')\n", "img" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(183, 256)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "img_matrix = np.uint8(img.getdata()).reshape(img.size[::-1])\n", "img_matrix.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sklearn NMF" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 209 ms, sys: 180 ms, total: 390 ms\n", "Wall time: 156 ms\n" ] } ], "source": [ "%%time\n", "\n", "sklearn_nmf = SklearnNmf(n_components=10, tol=1e-5, max_iter=int(1e9))\n", "\n", "W = sklearn_nmf.fit_transform(img_matrix)\n", "H = sklearn_nmf.components_" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image.fromarray(np.uint8(W.dot(H)), 'L')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gensim NMF" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", "\n", "img_corpus = matutils.Dense2Corpus(img_matrix[np.random.choice(img_matrix.shape[0], img_matrix.shape[0], replace=False)].T)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2018-06-13 14:26:59,636 : INFO : Loss (no outliers): 4665.057356152667\tLoss (with outliers): 4665.057356152667\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 164 ms, sys: 4.42 ms, total: 169 ms\n", "Wall time: 166 ms\n" ] } ], "source": [ "%%time\n", "\n", "import itertools\n", "\n", "gensim_nmf = GensimNmf(\n", " img_corpus,\n", " chunksize=40,\n", " num_topics=10,\n", " passes=1,\n", " id2word={k: k for k in range(img_matrix.shape[1])},\n", " lambda_=1000,\n", " kappa=1,\n", " normalize=False\n", ")" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "W = gensim_nmf.get_topics().T\n", "H = np.hstack(gensim_nmf[bow] for bow in matutils.Dense2Corpus(img_matrix.T))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reconstructed matrix:" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image.fromarray(np.uint8(W.dot(H).T), 'L')" ] }, { "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }