{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Blog Post Clustering\n", "\n", "*by Dominic Reichl (@domreichl)*\n", "\n", "October 2018\n", "\n", "## Introduction\n", "\n", "My blog (https://www.mindcoolness.com) currently has 322 blog posts, which I have categorized into four broad topics:\n", "- Psychology & Cognitive Science\n", "- Willpower & Self-Improvement\n", "- Philosophy & Spirituality\n", "- Morality & Ethics\n", "\n", "Recently, I experienced a curious desire to find out how unsupervised NLP models would cluster my writings, so I've created this notebook.\n", "\n", "## Overview\n", "1. Modules & Data\n", "2. Word Vectorization\n", "3. Word Frequency\n", "4. Clustering (KMeans)\n", "5. Cluster Visualization (MDS, TSNE)\n", "6. Cluster Exploration\n", "7. Predictive Evaluation\n", "8. More Models (NMF, LSA, LDA)\n", "9. Qualitative Evaluation\n", "10. Autoencoder\n", "11. Quantitative Evaluation\n", "12. Conclusion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Modules & Data\n", "\n", "This notebook requires the libraries Pandas, Beautiful Soup 4, Matplotlib, Mpld3, Scikit-learn, and TensorFlow.\n", "\n", "With the blog post data already exported from my MySQL sever in CSV format, all we have to do here is load the CSV file into a Pandas DataFrame, filter the data, and convert the HTML code into text via BeautifulSoup." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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", " \n", "
post_titlepost_content
317how the brain makes emotionshere's the latest state of the art in the cogn...
318is willpower a cognitive strength?\\nwillpower is the ability to pursue long-term...
3196 reasons why people use moral language\\nwhy do we use moral language?\\nhello, i'm do...
320the bayesian brain: placebo effects explained\\n\\nin my article on predictive processing, i ...
321great minds discuss ideas, great men also disc...\\non great minds and great men\\ngreat minds di...
\n", "
" ], "text/plain": [ " post_title \\\n", "317 how the brain makes emotions \n", "318 is willpower a cognitive strength? \n", "319 6 reasons why people use moral language \n", "320 the bayesian brain: placebo effects explained \n", "321 great minds discuss ideas, great men also disc... \n", "\n", " post_content \n", "317 here's the latest state of the art in the cogn... \n", "318 \\nwillpower is the ability to pursue long-term... \n", "319 \\nwhy do we use moral language?\\nhello, i'm do... \n", "320 \\n\\nin my article on predictive processing, i ... \n", "321 \\non great minds and great men\\ngreat minds di... " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from bs4 import BeautifulSoup\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer\n", "from sklearn.cluster import KMeans\n", "from sklearn.metrics.pairwise import cosine_similarity\n", "from sklearn.manifold import MDS, TSNE\n", "import mpld3\n", "from sklearn.decomposition import NMF, TruncatedSVD, LatentDirichletAllocation\n", "import tensorflow as tf\n", "from sklearn.metrics import silhouette_score, calinski_harabaz_score\n", "\n", "# load data\n", "data = pd.read_csv('wp_posts.csv', sep=';')\n", "\n", "# filter data (exclude pages, drafts, revisions, etc.), then keep only title & content\n", "data = data[(data['post_type'] == 'post') & (data['post_status'] == 'publish')]\n", "data = data[['post_title', 'post_content']].reset_index(drop=True)\n", "\n", "# convert html code into text, then lowercase all words\n", "for i in data.index:\n", " soup = BeautifulSoup(data['post_content'].loc[i], 'html.parser')\n", " data['post_content'].loc[i] = soup.get_text().lower()\n", " data['post_title'].loc[i] = data['post_title'].loc[i].lower()\n", "\n", "# display the last five blog posts\n", "data.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Word Vectorization\n", "\n", "Natural language processing requires all words to be represented as numbers. For our purposes, the best way to achieve this is with Scikit-learn's TfidVectorizer. This tool not only transforms words into vectors, but also ensures that the terms defining a cluster provide enough differentiation.\n", "\n", "How does is work?\n", "\n", "Consider first that the frequency of words like 'the', 'a', 'is', and 'and' is likely to be high in any English corpus, which means that they're of little value for document clustering. Moreover, basically every AI-related document would have the same topic if 'network', 'model', and 'algorithm' were cluster-defining terms.\n", "\n", "A clustering algorithm will produce much better results if the term frequency (tf = how often a word appears in a document) is multiplied by the inverse document frequency (idf = a measure of how much information the word provides). This is precisely what the TfidVectorizer does when it penalizes high-frequency terms for lacking informational value.\n", "\n", "The CountVectorizer, by contrast, uses a simple bag-of-words approach where each term is transformed into a vector based on its count/frequency. This is useful for plotting the top 20 words in our data, and it's also needed for Latent Dirichlet Allocation (LDA), a structured probabilistic model.\n", "\n", "Lastly, we should set a lower bound on document frequency (min_df), which sets a cut-off threshold (0.05) to ignore the rarest words in our vocabulary. This will also prove useful for the autoencoder later because it speeds up the neural network training quite a lot." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((322, 995), (322, 995))" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# tf-idf (term frequency-inverse document frequency)\n", "tfidf_vectorizer = TfidfVectorizer(stop_words='english', min_df = 0.05)\n", "tfidf_matrix = tfidf_vectorizer.fit_transform(data['post_content'])\n", "tfidf_words = tfidf_vectorizer.get_feature_names()\n", "\n", "# bag of words (term frequency)\n", "tf_vectorizer = CountVectorizer(stop_words='english', min_df = 0.05)\n", "tf_matrix = tf_vectorizer.fit_transform(data['post_content'])\n", "tf_words = tf_vectorizer.get_feature_names()\n", "\n", "tfidf_matrix.shape, tf_matrix.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's 322 documents (blog posts) and a vocabulary with 955 vectorized words." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Word Frequency\n", "\n", "To visualize the frequency of words in our data set, we must first retrieve each term and its count (as the sum of its vector) from the vocabulary, sort all terms by count, and then build a list with the 20 most frequent words as well as a list with their counts. With that, we can plot the lists in a bar chart. (Note that the most common English words were already filtered out as stop words by the vectorizer.)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# get word frequencies from the bag of words and sort them by count in descending order\n", "term_frequency = [(term, tf_matrix.sum(axis=0)[0, i]) for term, i in tf_vectorizer.vocabulary_.items()]\n", "term_frequency = sorted(term_frequency, key = lambda x: x[1], reverse=True)\n", "terms = [i[0] for i in term_frequency[:20]] # get top 20 words\n", "count = [i[1] for i in term_frequency[:20]] # get counts of top 20 words\n", "\n", "# plot the 20 most frequent words in a bar chart\n", "fig, ax = plt.subplots(figsize=(16,8))\n", "ax.bar(range(len(terms)), count)\n", "ax.set_xticks(range(len(terms)))\n", "ax.set_xticklabels(terms)\n", "ax.set_title('Top 20 Most Frequent Words')\n", "ax.set_xlabel('Term')\n", "ax.set_ylabel('Count')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. Clustering (KMeans)\n", "\n", "Our main algorithm for clustering will be k-means, which randomly initializes cluster centers, assigns all data points to their closest centroid (measured as least squared Euclidean distance), and then gradually and heuristically moves the centroids until convergence, i.e., until each centroid has become the actual center of its assigned data points (although reaching an optimum is not guaranteed). Note that Scikit-learn's KMeans uses an improved initialization algorithm—k-means++—by default.\n", "\n", "In my blog, I manually grouped my posts into four broad topic categories, so we will tell the model to find 4 clusters. After fitting the model with the matrix of vectorized words and storing the centroids, we can peek into the clustering results by printing out the top 3 defining words of each cluster." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Cluster 0: moral, meaning, values\n", "Cluster 1: willpower, self, control\n", "Cluster 2: pride, ego, humility\n", "Cluster 3: mind, emotions, life\n" ] } ], "source": [ "k = 4 # number of clusters\n", "\n", "# build and fit model, then store centroids\n", "km = KMeans(k)\n", "km_matrix = km.fit_transform(tfidf_matrix)\n", "km_centroids = km.cluster_centers_.argsort()[:, ::-1]\n", "\n", "# create a dictionary with the top three words for each cluster\n", "top_words = {}\n", "for i in range(4):\n", " top_words[i] = \"\"\n", " for c in km_centroids[i, :3]:\n", " if top_words[i] == \"\":\n", " top_words[i] = tfidf_words[c]\n", " else:\n", " top_words[i] = top_words[i] + \", \" + tfidf_words[c]\n", " print('Cluster %s:' %i, top_words[i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The clusters already make sense, but we shall wait until #9 for an in-depth qualitative evaluation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5. Cluster Visualization (MDS, TSNE)\n", "\n", "To visualize our clusters in a two-dimensional plot, we can use manifold learning models such as\n", "1. MDS (multi-dimensional scaling), which models dissimilarity data by computing geometric distances, and\n", "2. T-SNE (t-distributed Stochastic Neighbor Embedding), which converts pairwise affinities of data points to probabilities (see van der Maaten & Hinton, 2008).\n", "\n", "Let's fit both models with and without cosine distance.\n", "\n", "Using cosine distance is generally recommended for text data, but as we shall see, the plots look better without it. To build the plots, we create a data frame with x and y coordinates, post titles, and cluster labels before we group it by the latter. For the fun of it, let's also store the figure as a PNG image." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA60AAAK7CAYAAAAZXWntAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xt8VNW5//HPk8lAEFQsAgqGAi2XEBLDVS5NUBFFaxFRigoK5XhrS1FbtXp6tNZTrT2lSlFbtV7wilQUpEp/UFREFMREohgSBNJouIa7ggZnJuv3x0xiyHWSzCST8H2/XrzI7L32Xs+eXJ5Ze629ljnnEBEREREREYlFcU0dgIiIiIiIiEh11GgVERERERGRmKVGq4iIiIiIiMQsNVpFREREREQkZqnRKiIiIiIiIjFLjVYRERERERGJWWq0ilTBzOaZ2fgo11FgZueEvv5vM3s8nLJNqS4xxxIza21meWbWsaljERGR6IpmDjezdDPbGI1zV1HXCjO7OvT1ZDNb1hj1RoKZrTWz5KaOQ1oONVolJoUaR9+Y2ckVtq8zM2dm3UOv54bKfRn694mZ/cHMTix3TCsz+7OZbTWzQ6Fzz66h7lTgdODV6FxdZc65e51zVzdWfZEQbszlk25Tcc4dAZ4EbmvKOEREjgUtOYc7595xzvWJxrlrqfd559y5tZULvae/b4yYajELuLupg5CWQ41WiWX/AS4vfWFmKcBxVZT7P+fc8UBH4CfAMOBdM2sb2n87MBgYChwPnAl8WEO91wHPO+dcQy9AYsoLwFQza93UgYiIHAOUw49ti4GzzOyUpg5EWgY1WiWWPQtcVe71VOCZ6go754qdcx8A44AOBJMfwBBgoXNuuwsqcM5Vex7gfODt8hvMbLqZ5ZrZfjNbambfDW3vHrprHF+u7FE9i2Z2TejYL81sg5kNrFihmd1lZs+Ve32lmX1mZnvN7DcVysaZ2W1mtiW0/x9m9p1y+18ys51mdtDMVpYfnhO6A/uwmb0eiud9M/tedW9ELXGUxWxmCWb2XKjcATP7wMw6m9k9QDrwUOgO+UOh8n8xs0Iz+8LMsswsvcJ5/2Fmz4RizDGzweX2J5rZK2a2O1TfQ7V9nwCcc1uB/QQ/EImISHTFUg6vMg+bWVIoZx8I5Zpx5Y65IFT2SzPbZmY3h7afaWZby5UrMLObzezjUN6db2YJ5fZfaGbZoTreC/UEV8nMxljwUZaDodxm5fZNM7NVoa/NzB4ws6JQHl1vZv3N7FpgMnBrKOf+M1S+9DND6fVfXPG8ZjYrlDv/Y2bnl9v/HTN7ysy2h/YvCufanHPFQBZwXg3fK5GwqdEqsWwNcEIoqXiAy4DnajkG59yXwL8JNpZKz/NLM/uZmaWYmVV3rAXv7PYANpbbdhHw38AEgneC3wHmhXMBZjYRuItg4j6BYDLeW8sx/YC/AVcCXQgm79PKFfkFMB4YFdq/H3i43P5/Ab2ATgTvRj9foYrLgN8BJwGbgXvqGUd5U4ETgcRQueuBr51zvyH4fs1wzrVzzs0Ilf8ASAO+Q7AH9KXySZ7g+/Qi0J7g3drSxq4HeA34DOgOdA2VC/f7lEtw2JiIiERXrOTwKvOwmXmBfwLLCObLXwDPm1np0N8ngOtCvcD9gTdrCPvHwNhQ3anAtFDdAwg+mnIdwdz4KLDYqhjxY8Gh1K8A/wOcDGwBRlZT37lABtCbYO79MbDXOfcYwZz/f6Gc+6NQ+S0E388TCeb/58zs1HLnOyP0np0M/B/wRLn3+VmCPeTJoffpgTpcm3KuRIwarRLrSu/UjiH4x29bmMdtJ9ggAvgD8EeCdx8zgW1mNrWa49qH/v+y3LbrgT8453Kdc37gXiCtfC9eDa4mmDw+CN0h3uyc+6yWYy4FXnPOrQw9i3kHUFIhnt8457aG9t8FXGqh3l7n3JPOuS/L7Tvdyj0fRPCO9drQtTxPsPFYnzjK8xFMWt93zgWcc1nOuS+qu0Dn3HPOub3OOb9z7s9Aa6D8M0KrnHNLnHMBgj8DpUlvKMEG9C3OucOhO/Oryr0vtX2fvuTb77GIiERXLOTw6vLwMKAdcJ9z7hvn3JsEb4qWDmn2Af3M7ATn3H7nXE1DkueEeoL3EWwIl+bVa4FHnXPvh3Lj08ARqh7xcwGQ45xb4JzzAbOBndXU5yM4VLovYKG8t6O64JxzL4XiK3HOzQc2EcynpT5zzv09lHOfBk4FOocatucD14feA59zrrQXO5xrU86ViFGjVWLds8AVBO9a1jQcqKKuwD6A0B/Th51zIwn+8bwHeNLMkqo47kDo/+PLbfsu8JfQ8JcDofNaqI7aJBK8w1kXXYDC0hfOucMc3Tv7XWBhuXhygQDBBOMxs/tCw4C+AApCx5SfDKN8EvyKYNKuTxzlPQssBV4MDSH6v9Bd7CqFhlLlhoZAHSB497emGBNCjfJEgsnVX8Vpw/k+Hc+332MREYmuWMjh1eXhLkChc678zdjP+DZnXEKwIfmZmb1tZsNriLe6vPpd4FeleSmUmxJDdVcZT+mL0DO5hVWUI9TAfojgKKsiM3vMzE6oLjgzu6rcMN4DBHuOq8y5zrmvQl+2C8W6zzm3v4rThnNtyrkSMWq0SkwL3Q39D8HE8Uo4x5hZO+AcgsNDK57va+fcwwSH1ParYv9hgsmtd7nNhQSHCLUv96+Nc+494HCoTPnJJU6pcGy1z4xWYwfBP/yl13McwV7M8uc8v0I8Cc65bQQ/HFxE8PpPJDiEFso9FxPBOMqE7r7+zjnXDxgBXMi3zzIdNRmGBZ9fvZXgcKaTnHPtgYNhxlgIdLNyzxBX2Ffd96lUEvBRGPWIiEgDxVAOryoPbwcSzaz8Z+FuhHqDQz2zFxEcErsI+Ec48VdQCNxTIS8d55yr6hGjijnXyr+uyDk3xzk3iOD70Bu4pXRX+XKh0UZ/B2YAHUI59xPCz7nfMbOqekvDuTblXIkYNVqlOfgv4OxQMqqWBdfiHEQwuewHngptv9GCEye0MbP40LCi44F11ZxqCcHnRUs9AtxuoQmNzOzE0DMyOOd2E0xwU0K9nNM5Ojk+DtxsZoMs6PthDCteAFxoZj8ws1YEp4wv/7v6CHCPfTsZVMfQ85yErusIwR7R4wgOka2v2uIoY2ZnhZ418gBfEBy6VHr3ehfQs1zx4wE/sBuIN7M7CT5nFI61BBP7fWbW1oITQJU+81Pt9yn0uivB4WZrwqxLREQarqlzeHV5+H2CvaK3mpnXzM4EfkRwxFArC66LemJoqO4XVP94TE3+DlxvZmeE6m5rZj80s+OrKPs6kGxmE0I3Zmdy9E3wMmY2JHROL8Gb58VUn3PbEmzI7g4d+xOCPa21Cg05/hfwVzM7KfQ+ZYRzbRacp2IQweeTRRpMjVaJec65Lc65zBqK3GpmXxJsqD1DcLa6EeUS5FfAnwkOf9kD/By4xDmXX835HgMmh+5y4pxbSPB5mhdDQ24/IfiMR6lrCN7h3EtwooKynj3n3EsEhzK9QPDZjkV8+5xOddebE4rxBYINtP3A1nJF/kJwcqJloeteQ3ASBULX/xnBhvQGGtBACyOO8k4h2Mj9guBw5bcJDgsrjfdSC846OIfgMOL/B3wairWYaoZAVRFTgOCHiu8Dn4fimRTaV9v36Qrg6dDzuSIi0ghiIIdXmYedc98QzCfnh877V+Aq51xe6DxXAgWhfHI9wWdq63rtmQQ/IzxEMIduJjRJUxVl9wATgftC70Uv4N1qTn0CwUbjfoJ5dC/wp9C+Jwg+i3vAzBY55zYQfP9WE2zQptRw3qpcSfBGdB5QBNwY5rX9CFjhnNteh7pEqmVOy1iJVGJmLwD/cM4tqrWwxDwLzmb4EZDhnCtq6nhERCR6lMObnpm9D/yXc+6Tpo5FWgY1WkVERERERCRmaXiwiIiIiIiIxCw1WkVERERERCRmqdEqIiIiIiIiMauqtQ5jwsknn+y6d+/e1GGIiEgLkZWVtcc517Gp42jOlJtFRCSSws3NMdto7d69O5mZNc2QLiIiEj4z+6ypY2julJtFRCSSws3NGh4sIiIiIiIiMUuNVhEREREREYlZarSKiIiIiIhIzIrZZ1pFpOXy+Xxs3bqV4uLipg5FWqCEhAROO+00vF5vU4ciItJsKDdLNDU0N6vRKiKNbuvWrRx//PF0794dM2vqcKQFcc6xd+9etm7dSo8ePZo6HBGRZkO5WaIlErlZw4NFpNEVFxfToUMHJUWJODOjQ4cO6ikQEakj5WaJlkjk5oj0tJrZWOAvgAd43Dl3X4X904A/AdtCmx5yzj0eibqr45yjcNsB3l6dT96mIny+AF6vh6RencgY0ZPELu31SynShML5/XPOsW5PIY9+8g5vFuZRHPCR4PEyOrEv1/XPIO3k0/R7LJXoZ0JEYlWsfz5VbpZoaejPRIMbrWbmAR4GxgBbgQ/MbLFzbkOFovOdczMaWl84AoES5i/KJmfjLvz+AM4Ft/t8Adbn7iB3UxHJfTozaXwaHo86m0Vika8kwI0r/8Gywg0c8fspIfiL/HXAx5KCT3hjax7nJvZjdsaP8cZ5mjhaERGRmrWEz6fKzdJUIvEbMRTY7JzLd859A7wIXBSB89aLcy70B2EnPt+3fxC+3R/845CTt5P5i7JxFQuISJNzznHjyn+w9PMNfO33lSXFUiU4vvb7WPr5Bm5c+Y+Y/T0uKCigf//+TR1GJVdffTUbNlS8r9j4unfvzp49e5o6DBGRqGsJn09bQm5WXq5ZLOflSDRauwKF5V5vDW2r6BIz+9jMFphZYlUnMrNrzSzTzDJ3795dr2AKtx0gZ+MufL6SGsv5/CXkbNxF4fYD9apHRKJn3Z5ClhVuoDjgq7FcccDHssINZO/Z2kiRVeb3+5us7vp6/PHH6devX1OHISJyzGgJn0+bS25WXm6ZGmvswT+B7s65VODfwNNVFXLOPeacG+ycG9yxY8d6VbRydT5+fyCssn5/gJWr8+tVj4hEz2OfvMORMJPOEb+fxz55p07nLygooG/fvkybNo3evXszefJkli9fzsiRI+nVqxdr164FYN++fYwfP57U1FSGDRvGxx9/DMBdd93FlVdeyciRI7nyyispKCggPT2dgQMHMnDgQN57772Ix3L48GGmT5/O0KFDGTBgAK+++mrZ8VXVvWLFCs4880wuvfRS+vbty+TJk8vuep955plkZmYC0K5dO37zm99w+umnM2zYMHbt2gXAli1bGDZsGCkpKfzP//wP7dq1q/E6HnnkEW655Zay13PnzmXGjOATIePHj2fQoEEkJyfz2GOPVfkelL/zPWvWLO66666yOMaOHcugQYNIT08nLy8PgJdeeon+/ftz+umnk5GREfb7LSLSFFrC59No5mblZeXl2kSi0boNKN9zehrfTrgEgHNur3PuSOjl48CgCNRbpdxNRZWGXFTHOcj9tChaoYhIPb1RmFdp2FF1SnAs35pb5zo2b97Mr371K/Ly8sjLy+OFF15g1apVzJo1i3vvvReA3/72twwYMICPP/6Ye++9l6uuuqrs+A0bNrB8+XLmzZtHp06d+Pe//82HH37I/PnzmTlzZsRjueeeezj77LNZu3Ytb731FrfccguHDx+use5169Yxe/ZsNmzYQH5+Pu+++26lug8fPsywYcP46KOPyMjI4O9//zsAN9xwAzfccAPr16/ntNNOq/UaLrnkEhYuXFj2ev78+Vx22WUAPPnkk2RlZZGZmcmcOXPYu3dv2O/Ntddey4MPPkhWVhazZs3iZz/7GQB33303S5cu5aOPPmLx4sVhn09EpCm0hM+n0c7NystBystVi8TswR8AvcysB8HG6mXAFeULmNmpzrkdoZfjgLp/wgyTzxfeXaxS4d71EpHGU9vQo0rl6zEUqEePHqSkpACQnJzM6NGjMTNSUlIoKCgAYNWqVbz88ssAnH322ezdu5cvvvgCgHHjxtGmTRsg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Ci68sG4LpzemuXPnMmPGjKic+4ILLuDAgQMAtGvXDoDt27dz6aWXApCdnc2SJdWumiIiIs1QrORm5eXKjoW8rJ5WEalSUy7tU7jtADkbd+HzVT88GcDnLyFn4y4Ktx+gW9eTIh5HIBDg7rvvjvh5m7uqEl+XLl1YsGABEEyOmZmZXHDBBY0dmoiIREks5Gbl5aodC3lZPa0iEnNWrs4Pe/1Xvz/AytX5dTp/QUEBffv2ZfLkySQlJXHppZfy1VdfAdC9e3d+/etfM3DgQF566SWmTZtW9kf///2//0ffvn0ZOHAgr7zyStn5Dh8+zPTp0xk6dCgDBgzg1VdfrTWG5557jqFDh5KWlsZ1111HIBC83ieeeILevXszdOhQrrnmmrK7sgUFBZx99tmkpqYyevRoPv/881rr2L59O2PHjqVXr17ceuutZdtL78ICLFiwoGyJgGnTpvHTn/6UYcOG0bNnT1asWMH06dNJSko6ahmB7t27s2fPnkrvaf/+/fnmm2+48847mT9/PmlpacyfP59evXqxe/duAEpKSvj+979f9lpERJqHaOZm5WXl5dqo0SoiMSd3U1FYS+5AcDhS7qdFda5j48aN/OxnPyM3N5cTTjiBv/71r2X7OnTowIcffshll11Wtq24uJhrrrmGf/7zn2RlZbFz586yfffccw9nn302a9eu5a233uKWW27h8OHD1V9fbi7z58/n3XffJTs7G4/Hw/PPP8/27dv53//9X9asWcO7775LXl5e2TG/+MUvmDp1Kh9//DGTJ09m5syZtV5jdnY28+fPZ/369cyfP5/CwsJaj9m/fz+rV6/mgQceYNy4cdx0003k5OSwfv16srOzaz2+VatW3H333UyaNIns7GwmTZrElClTeP755wFYvnw5p59+Oh07dqz1XCIiEjuinZuVl6umvBykRquIxByfL7w7uaXCvfNbXmJiIiNHjgRgypQprFq1qmzfpEmTKpXPy8ujR48e9OrVCzNjypQpZfuWLVvGfffdR1paGmeeeSbFxcU13nF94403yMrKYsiQIaSlpfHGG2+Qn5/P2rVrGTVqFN/5znfwer1MnDix7JjVq1dzxRVXAHDllVceFW91Ro8ezYknnkhCQgL9+vXjs88+q/WYH/3oR5gZKSkpdO7cmZSUFOLi4khOTqagoKDW46syffp0nnnmGQCefPJJ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# fit two non-linear dimensionality reduction models\n", "mds = MDS().fit_transform(km_matrix)\n", "tsne = TSNE().fit_transform(km_matrix)\n", "\n", "# fit models with cosine distance\n", "cos_dist = 1 - cosine_similarity(km_matrix)\n", "mds_cos = MDS(dissimilarity=\"precomputed\").fit_transform(cos_dist)\n", "tsne_cos = TSNE(metric=\"cosine\").fit_transform(cos_dist)\n", "\n", "# create data frame with coordinates, cluster labels, and post titles, grouped by clusters\n", "df = pd.DataFrame(dict(x1=mds[:,0], y1=mds[:,1], x2=mds_cos[:,0], y2=mds_cos[:,1],\n", " x3=tsne[:,0], y3=tsne[:,1], x4=tsne_cos[:,0], y4=tsne_cos[:,1],\n", " label=km.labels_.tolist(), title=data['post_title']))\n", "groups = df.groupby('label')\n", "\n", "# set a color and get the top three words for each cluster\n", "clusters = {0: ('#1b9e77', top_words[0]),\n", " 1: ('#d98f02', top_words[1]),\n", " 2: ('#7580b3', top_words[2]),\n", " 3: ('#e7196a', top_words[3]), }\n", "\n", "# build two plots for the manifold learning models\n", "fig, ax = plt.subplots(2,2, figsize=(16,12)) # 2x2 subplots\n", "ax[0,0].set_title('MDS (euclidean distance)'); ax[0,1].set_title('MDS (cosine distance)') # titles for first row\n", "ax[1,0].set_title('T-SNE (euclidean distance)'); ax[1,1].set_title('T-SNE (cosine distance)') # titles for second row\n", "for i,g in groups: # iterate over clusters\n", " ax[0,0].plot(g.x1, g.y1, marker='o', linestyle='', ms=12, color=clusters[i][0], label=clusters[i][1])\n", " ax[0,1].plot(g.x2, g.y2, marker='o', linestyle='', ms=12, color=clusters[i][0], label=clusters[i][1])\n", " ax[1,0].plot(g.x3, g.y3, marker='o', linestyle='', ms=12, color=clusters[i][0], label=clusters[i][1])\n", " ax[1,1].plot(g.x4, g.y4, marker='o', linestyle='', ms=12, color=clusters[i][0], label=clusters[i][1])\n", "ax[0,0].legend(); ax[0,1].legend(); ax[1,0].legend(); ax[1,1].legend() # add legends\n", "\n", "# save the figure as png and display it\n", "plt.savefig('clusters.png', dpi=200)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 6. Cluster Exploration\n", "\n", "With the mpld3 library, we can use JavaScript and CSS code to create an interactive map that displays a tooltip with the blog title for each data point when the mouse hovers over it. This is great for exploring how my blog posts were clustered! I must give credit here to Brandon Rose (http://brandonrose.org) for this sweet piece of code—thank you." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#define custom toolbar location\n", "class TopToolbar(mpld3.plugins.PluginBase):\n", " \"\"\"Plugin for moving toolbar to top of figure\"\"\"\n", "\n", " JAVASCRIPT = \"\"\"\n", " mpld3.register_plugin(\"toptoolbar\", TopToolbar);\n", " TopToolbar.prototype = Object.create(mpld3.Plugin.prototype);\n", " TopToolbar.prototype.constructor = TopToolbar;\n", " function TopToolbar(fig, props){\n", " mpld3.Plugin.call(this, fig, props);\n", " };\n", "\n", " TopToolbar.prototype.draw = function(){\n", " this.fig.toolbar.draw();\n", " this.fig.toolbar.toolbar.attr(\"x\", 150);\n", " this.fig.toolbar.toolbar.attr(\"y\", 400);\n", " this.fig.toolbar.draw = function() {}\n", " }\n", " \"\"\"\n", " def __init__(self):\n", " self.dict_ = {\"type\": \"toptoolbar\"}\n", "\n", "\n", "# define custom css to format the font and to remove the axis labeling\n", "css = \"\"\"\n", "text.mpld3-text, div.mpld3-tooltip {\n", " font-family:Arial, Helvetica, sans-serif;\n", " font-size:14px;\n", " font-weight: bold;\n", " color: White;\n", " background-color: DodgerBlue;\n", "}\n", "\n", "g.mpld3-xaxis, g.mpld3-yaxis {\n", "display: none; }\n", "\n", "svg.mpld3-figure {\n", "margin-left: -75px;}\n", "\"\"\"\n", "\n", "# create plot\n", "fig, ax = plt.subplots(figsize=(14,6))\n", "for i,g in groups: # layer the plot by iterating through cluster labels\n", " points = ax.plot(g.x3, g.y3, marker='o', linestyle='', ms=14, color=clusters[i][0], label=clusters[i][1])\n", " labels = [i.title() for i in g.title] # get the blog posts titles in title case\n", " tooltip = mpld3.plugins.PointHTMLTooltip(points[0], labels, voffset=10, hoffset=10, css=css) # set tooltip\n", " mpld3.plugins.connect(fig, tooltip, TopToolbar()) # connect tooltip to fig\n", "ax.legend(edgecolor='white') # add \n", "\n", "# save as html file and show plot\n", "html = mpld3.fig_to_html(fig)\n", "with open(\"clusters.html\", \"w\") as file: file.write(html)\n", "mpld3.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Being deeply familiar with every data point (as it represents a blog post I have written), I can learn a lot from this interactive plot. But you, too, if you just briefly look at some of the titles and their relative distances, will quickly be able to confirm that the clustering has been very successful: the patterns make sense!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 7. Predictive Evaluation\n", "\n", "To find out the degree to which blog titles and contents belong to the same clusters, we can let the k-means model predict in which cluster each title and content fits best and then compute the overlap of these predictions.\n", "\n", "In addition, we can see how the four pairs of topic categories I use on my blog map to the four clusters generated by the model. 100% would mean that the model has categorized my blog posts very similarly to how I have categorized them." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Title/content match: 76.7%\n", "Category similarity: 75.0%\n" ] } ], "source": [ "# use model to predict the cluster for each title and content\n", "title_predictions = []\n", "content_predictions = []\n", "for i in range(len(data['post_content'])):\n", " titles = tfidf_vectorizer.transform([data['post_title'][i]])\n", " title_predictions.append(km.predict(titles))\n", " contents = tfidf_vectorizer.transform([data['post_content'][i]])\n", " content_predictions.append(km.predict(contents))\n", "\n", "# check how often a post's title and content are predicted to belong to the same cluster\n", "match = []\n", "for i in range(len(title_predictions)):\n", " if title_predictions[i] == content_predictions[i]:\n", " match.append(1)\n", " else:\n", " match.append(0)\n", "print('Title/content match: ' + str(round(sum(match)/len(match)*100, 1)) + '%')\n", "\n", "# test to what extent each manually defined topic category falls into its own cluster\n", "category_predictions = []\n", "for topic in ('psychology cognitive science', 'willpower self improvement',\n", " 'philosophy spirituality', 'morality ethics'):\n", " Category = tfidf_vectorizer.transform([topic])\n", " category_predictions.append(km.predict(Category)[0]) \n", "print('Category similarity: ' + str(len(set(category_predictions))/k*100) + '%')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 8. More Models (NMF, LSA, LDA)\n", "\n", "Now let's look at three additional models, and let's also combine them with k-means:\n", "1. NMF for non-negative matrix factorization (see Kim & Park, 2008)\n", "2. TruncatedSVD for Latent Semantic Analysis (LSA)\n", "3. LatentDirichletAllocation for Latent Dirichlet Allocation (LDA)\n", "4. NMF→KMeans for NMF-based k-means\n", "5. TruncatedSVD→Kmeans for LSA-based k-means\n", "6. LatentDirichletAllocation→KMeans for LDA-based k-means (see Guan, 2016 and Bui et. al, 2017)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "nmf = NMF(k)\n", "nmf_matrix = nmf.fit_transform(tfidf_matrix)\n", "\n", "lsa = TruncatedSVD(k)\n", "lsa_matrix = lsa.fit_transform(tfidf_matrix)\n", "\n", "lda = LatentDirichletAllocation(k, learning_method='batch')\n", "lda_matrix = lda.fit_transform(tf_matrix)\n", "\n", "km_nmf = KMeans(k).fit(nmf_matrix) # NMF-based k-means\n", "km_lsa = KMeans(k).fit(lsa_matrix) # LSA-based k-means\n", "km_lda = KMeans(k).fit(lda_matrix) # LDA-based k-means" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 9. Qualitative Evaluation\n", "\n", "For qualitative evaluation, we can look at the three words that were most defining for each cluster produced by a model. If the word combinations make sense, if all top words of a cluster belong to a distinct category, and if there's little topical overlap between clusters, we may judge the model as good." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ---NMF---\n", "Cluster 0: meditation mindfulness life\n", "Cluster 1: moral values meaning\n", "Cluster 2: pride humility ego\n", "Cluster 3: willpower emotions control\n", "\n", " ---LSA---\n", "Cluster 0: pride self true\n", "Cluster 1: moral values meaning\n", "Cluster 2: pride emotion emotions\n", "Cluster 3: emotions willpower control\n", "\n", " ---LDA---\n", "Cluster 0: emotions pride self\n", "Cluster 1: people human values\n", "Cluster 2: true life want\n", "Cluster 3: willpower self control\n", "\n", " ---K-M---\n", "Cluster 0: moral meaning values\n", "Cluster 1: willpower self control\n", "Cluster 2: pride ego humility\n", "Cluster 3: mind emotions life\n", "\n", " ---NMF-KM---\n", "Cluster 0: life mind meditation\n", "Cluster 1: moral values meaning\n", "Cluster 2: willpower emotions control\n", "Cluster 3: pride humility true\n", "\n", " ---LSA-KM---\n", "Cluster 0: willpower control emotions\n", "Cluster 1: moral values meaning\n", "Cluster 2: pride humility true\n", "Cluster 3: life meditation mindfulness\n", "\n" ] } ], "source": [ "def top_words_decomp(model_name, model, terms):\n", " ''' prints the top 3 words of each cluster\n", " from the components of decomposition models '''\n", " print(model_name)\n", " for i, topic in enumerate(model.components_):\n", " print(\"Cluster %d: \" % (i), end=\"\")\n", " print(\" \".join([terms[t] for t in topic.argsort()[:-4:-1]]))\n", " print()\n", "\n", "top_words_decomp(\" ---NMF---\", nmf, tfidf_words)\n", "top_words_decomp(\" ---LSA---\", lsa, tfidf_words)\n", "top_words_decomp(\" ---LDA---\", lda, tf_words)\n", " \n", "def top_words_cluster(model_name, centers):\n", " ''' prints the top 3 words of each cluster\n", " from the centroids of the k-means models '''\n", " print(model_name)\n", " for i in range(k):\n", " print(\"Cluster %d: \" % i, end=\"\")\n", " print(\" \".join([tfidf_words[c] for c in centers[i, :3]]))\n", " print()\n", "\n", "top_words_cluster(\" ---K-M---\", km_centroids)\n", "top_words_cluster(\" ---NMF-KM---\", nmf.inverse_transform(km_nmf.cluster_centers_).argsort()[:, ::-1])\n", "top_words_cluster(\" ---LSA-KM---\", lsa.inverse_transform(km_lsa.cluster_centers_).argsort()[:, ::-1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From what I know about the data, consisting of my own blog posts (hence easy for me to interpret), the NMF clusters are certainly the best. Their top three words neatly outline the very topics I have written about the most on my blog:\n", "- \"meditation mindfulness life\" ⇨ Philosophy & Spirituality (especially the latter)\n", "- \"moral values meaning\" ⇨ Morality & Ethics (quite obviously)\n", "- \"pride humility ego\" ⇨ Psychology & Cognitive Science (especially psychology of pride)\n", "- \"willpower emotions control\" ⇨ Willpower & Self-Improvement\n", "\n", "Here's the full model ranking:\n", "1. NMF is the winner: clear and distinct clusters that match my manually chosen topic categories.\n", "2. NMF-based KMeans and LSA-based KMeans share the second place: they produced almost identical clusters, with only 'mind' vs. 'mindfulness' differing, and even the \"pride humility true\" cluster makes sense, given that I have written several posts on the notion of 'true pride' (or 'authentic pride' as it's called in psychology and behavioral economics).\n", "3. KMeans takes the third place: it has the same ethics/morality and pride/humility clusters as NMF and a cluster with 'willpower' and 'self-control', but the \"mind emotions life\" cluster could be more distinct.\n", "4. LDA performed worse than all the KMeans variations: \"people human values\" is an ethics cluster, but not particularly expressive; 'self' occurs twice among the top three words; \"true life want\" could be related to my posts on the True Will, a life philosophy topic.\n", "5. LSA is the loser here: 'self' shouldn't be a top word for the psychology of pride cluster because the 'self' as in 'self-control' and 'self-discipline' is associated with a somewhat different topic; 'pride' shouldn't occur twice and certainly not as the top word of two different clusters; and, of course, we shouldn't have three occurrences of 'emotion(s)'.\n", "\n", "Had we used better tokenization and stemmed our tokens, LSA would have performed better. Still, it is worth noting that all other algorithms did quite well even without any stemming prior to the word vectorization." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 10. Autoencoder\n", "\n", "Ready for something more complex?\n", "\n", "Autoencoders!\n", "\n", "What's that?\n", "\n", "Autoencoders are neural networks used for unsupervised learning. They are a powerful tool for dealing with the curse of dimensionality.\n", "\n", "Every autoencoder consists of two parts: (1) an encoder with multiple layers to reduce dimensionality and (2) a decoder with multiple layers to reconstruct the input from the dimensionally-reduced data. By reconstructing its inputs, the network detects the most important features in the data as it learns the identity function under the constraint of reduced dimensionality (or added noise). Since clustering is a form of dimensionality reduction, autoencoders should be useful for categorizing my blog posts into four broad topics.\n", "\n", "In the code below, we use TensorFlow to build an autoencoder with two hidden layers. First, we set two hyperparameters (learning rate and number of epochs) as well as the network parameters (numbers of nodes for all three layers). Then, after defining the graph input (X) and all weights and biases, initialized with normally-distributed random numbers, we build an encoder and a decoder function, both with sigmoid activation functions for each layer. Then we construct the model and define the functions for loss and optimization: minimize squared error with adaptive moment estimation (Adam). Finally, we initialize the variables and launch the graph before we run the session and training cycles. In the last two lines, we get the results and end the training session." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 000 cost = 0.076162167\n", "Epoch: 100 cost = 0.020960618\n", "Epoch: 200 cost = 0.007014040\n", "Epoch: 300 cost = 0.001955998\n", "Epoch: 400 cost = 0.000939283\n", "Epoch: 500 cost = 0.000937003\n" ] } ], "source": [ "learning_rate = 0.001\n", "training_epochs = 501\n", "\n", "n_input = tfidf_matrix.shape[1]\n", "n_hidden_1 = tfidf_matrix.shape[1] // 4\n", "n_hidden_2 = 4\n", "\n", "X = tf.placeholder(\"float\", [None, n_input])\n", "\n", "weights = {\n", " 'encoder_h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),\n", " 'encoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),\n", " 'decoder_h1': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_1])),\n", " 'decoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_input])),\n", "}\n", "\n", "biases = {\n", " 'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),\n", " 'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),\n", " 'decoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),\n", " 'decoder_b2': tf.Variable(tf.random_normal([n_input])),\n", "}\n", "\n", "\n", "def encoder(x):\n", " layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['encoder_h1']), biases['encoder_b1']))\n", " layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2']))\n", " return layer_2\n", "\n", "def decoder(x):\n", " layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']),biases['decoder_b1']))\n", " layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['decoder_h2']), biases['decoder_b2']))\n", " return layer_2\n", "\n", "enc = encoder(X)\n", "dec = decoder(enc)\n", "\n", "cost = tf.reduce_mean(tf.pow(X - dec, 2))\n", "optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)\n", "\n", "init = tf.global_variables_initializer()\n", "sess = tf.InteractiveSession() # interactive for jupyter notebook\n", "sess.run(init)\n", "\n", "for epoch in range(training_epochs):\n", " for i in range(len(data)): # one batch per blog post\n", " _, c = sess.run([optimizer, cost], feed_dict={X: tfidf_matrix[i].toarray()})\n", " if epoch % 100 == 0: # display every hundredth epoch\n", " print(\"Epoch:\", '%03d' % epoch, \"cost =\", \"{:.9f}\".format(c))\n", "\n", "autoenc_results = dec.eval(feed_dict={X: tfidf_matrix.toarray()}) \n", "sess.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The loss decreased well enough, certainly better than for all the many other architectures and parameters I tried before.\n", "\n", "Now, let's feed the output of our NN into a k-means model and plot the results." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "km_autoenc = KMeans(k).fit(autoenc_results) # autoencoder-based k-means\n", "\n", "# fit T-SNE with cosine distance of autoencoder and autoencoder-based k-means results\n", "cos_dist_autoenc = 1 - cosine_similarity(autoenc_results)\n", "tsne_autoenc = TSNE(metric=\"cosine\").fit_transform(cos_dist_autoenc)\n", "cos_dist_km_autoenc = 1 - cosine_similarity(KMeans(k).fit_transform(autoenc_results))\n", "tsne_km_autoenc = TSNE(metric=\"cosine\").fit_transform(cos_dist_km_autoenc)\n", "\n", "# plot T-SNE results\n", "fig, ax = plt.subplots(1,2, figsize=(16,8))\n", "ax[0].set_title('Autoencoder')\n", "ax[0].scatter(tsne_autoenc[:,0], tsne_autoenc[:,1])\n", "ax[1].set_title('Autoencoder-based KMeans')\n", "ax[1].scatter(tsne_km_autoenc[:,0], tsne_km_autoenc[:,1])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 11. Quantitative Evaluation\n", "\n", "For quantitative evaluation, we will use three metrics that don't require ground truth labels:\n", "1. *Silhouette* is a coefficient that measures consistency within clusters; it should be non-negative and the closer to 1 the better.\n", "2. *WCSS* or *inertia* means within-cluster sum-of-squares, which measures cluster compactness; the smaller the better.\n", "3. *Calinski-Harabasz* is an index calculated as the ratio of between-clusters dispertion and within-cluster dispersion, thus measuring both denseness and separateness of clusters; the larger the better.\n", "\n", "In this final step, we create an evaluation table with the scores for all our k-means models on these three metrics." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ModelSilhouetteWCSSCalinski-Harabasz
0km0.023253276.335.97
1km_nmf0.0235092.376.35
2km_lsa0.0240748.686.32
3km_lda-0.00982923.090.54
4km_autoenc0.0123560.091.92
\n", "
" ], "text/plain": [ " Model Silhouette WCSS Calinski-Harabasz\n", "0 km 0.023253 276.33 5.97\n", "1 km_nmf 0.023509 2.37 6.35\n", "2 km_lsa 0.024074 8.68 6.32\n", "3 km_lda -0.009829 23.09 0.54\n", "4 km_autoenc 0.012356 0.09 1.92" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create evaluation table\n", "evaluation = pd.DataFrame({'Model': ['km', 'km_nmf', 'km_lsa', 'km_lda', 'km_autoenc']})\n", "sc, wcss, chi = [], [], []\n", "\n", "# calculate scores\n", "for model in (km, km_nmf, km_lsa, km_lda, km_autoenc):\n", " sc.append(silhouette_score(tfidf_matrix.toarray(), model.labels_))\n", " wcss.append(round(model.inertia_, 2))\n", " chi.append(round(calinski_harabaz_score(tfidf_matrix.toarray(), model.labels_), 2))\n", "\n", "# use term frequency matrix for LDA\n", "sc[-2] = silhouette_score(tf_matrix.toarray(), km_lda.labels_)\n", "chi[-2] = round(calinski_harabaz_score(tf_matrix.toarray(), model.labels_), 2)\n", "\n", "# fill and display evaluation table\n", "evaluation['Silhouette'] = sc\n", "evaluation['WCSS'] = wcss\n", "evaluation['Calinski-Harabasz'] = chi\n", "evaluation.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 12. Conclusion\n", "\n", "Although these stats aren't particularly impressive (e.g., all silhouette coefficients are almost zero), their relative values are diagnostic nonetheless:\n", "1. NMF-based KMeans and LSA-based KMeans are the best models: relatively high SC, low WCSS, and high CHI.\n", "2. KMeans alone is not quite as good: worse on all three metrics.\n", "3. Autoencoder-based KMeans takes third place.\n", "4. LDA-based KMeans is the loser with a negative silhouette score and the lowest Calinski-Harabasz index.\n", "\n", "This confirms the above quantitative analysis.\n", "\n", "In conclusion, it appears that sticking to NMF-based KMeans, LSA-based KMeans, or even just NMF alone is the best choice for this data set and our word vectorization method." ] } ], "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.6" } }, "nbformat": 4, "nbformat_minor": 2 }