{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from operator import itemgetter\n", "from concurrent.futures import ProcessPoolExecutor \n", "\n", "import os \n", "import gensim\n", "import arxiv\n", "import pandas as pd\n", "\n", "import itertools\n", "\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "import scikitplot\n", "\n", "from nltk.stem import WordNetLemmatizer\n", "\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.preprocessing import OneHotEncoder, MultiLabelBinarizer, LabelEncoder\n", "from sklearn.metrics import accuracy_score, confusion_matrix, classification_report\n", "from sklearn.multiclass import OneVsRestClassifier\n", "from sklearn.model_selection import train_test_split\n", "\n", "from fastFM import sgd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data preprocessing" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "lemmatizer = WordNetLemmatizer()\n", "\n", "\n", "def stem(text):\n", " return lemmatizer.lemmatize(text)\n", "\n", "\n", "def map_parallel(f, iterable, **kwargs):\n", " with ProcessPoolExecutor() as pool:\n", " result = pool.map(f, iterable, **kwargs)\n", " return result\n", "\n", "\n", "def retrieve_articles(start, chunksize=1000):\n", " return arxiv.query(\n", " search_query=search_query,\n", " start=start,\n", " max_results=chunksize\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Actual text mining functions" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def vectorize_text(examples_df):\n", "\n", " vectorizer = CountVectorizer(min_df=2)\n", " features = vectorizer.fit_transform(examples_df['summary'])\n", "\n", " le = LabelEncoder()\n", " ohe = OneHotEncoder()\n", " labels = le.fit_transform(valid_example_categories).reshape(-1, 1)\n", " labels_ohe = ohe.fit_transform(labels).todense()\n", " vectorized_data = {\n", " 'features': features,\n", " 'labels': labels,\n", " 'labels_onehot' : labels_ohe\n", " }\n", " return vectorized_data, (ohe, le)\n", "\n", "\n", "def extract_keywords(text):\n", " \"\"\"\n", " Use gensim's textrank-based approach\n", " \"\"\"\n", " return gensim.summarization.keywords(\n", " text=text,\n", " lemmatize=True,\n", " split=True\n", " )\n", "\n", "\n", "def extract_mz_keywords(text):\n", " \"\"\"\n", " Use gensim's Montemurro-Zanette method implementation\n", " \"\"\"\n", " return gensim.summarization.mz_keywords(\n", " text=stem(text),\n", " blocksize=32,\n", " split=True\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Factorization machine utils" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "class FMClassifier(sgd.FMClassification):\n", " \"\"\"\n", " Wrapper for fastFM estimator that makes it behave like sklearn ones\n", " \"\"\"\n", " \n", " def fit(self, X, y, *args):\n", " y = y.copy()\n", " y[y == 0] = -1\n", " return super(FMClassifier, self).fit(X, y, *args)\n", "\n", " def predict_proba(self, X):\n", " probs = super(FMClassifier, self).predict_proba(X)\n", " return np.tile(probs, 2).reshape(2, probs.shape[0]).T\n", " \n", "\n", "def predict_ovr(model, X):\n", " \"\"\"\n", " predict as multiclass (standard OVR behaves as predicting multilabel)\n", " \"\"\"\n", " return np.argmax(model.predict_proba(X), 1)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def filter_out_small_categories(df, categories, threshold=200):\n", "\n", " class_counts = categories.value_counts()\n", " too_small_classes = class_counts[class_counts < threshold].index\n", " too_small_classes\n", "\n", " valid_example_indices = ~categories.isin(too_small_classes)\n", " valid_examples = df[valid_example_indices]\n", " valid_example_categories = categories[valid_example_indices]\n", " \n", " return valid_examples, valid_example_categories" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting utils" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def report_classification_confusion_matrix(y, y_pred, label_encoder):\n", "\n", " y_test_pred_label_names = label_encoder.inverse_transform(y_pred)\n", " y_test_label_names = label_encoder.inverse_transform(y.reshape(-1))\n", "\n", " print(classification_report(y_test_label_names, y_test_pred_label_names))\n", "\n", " \n", " scikitplot.metrics.plot_confusion_matrix(\n", " y_test_label_names,\n", " y_test_pred_label_names,\n", " hide_zeros=True,\n", " x_tick_rotation=90\n", " )\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load ML articles from arxiv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "%%time\n", "\n", "search_query = 'matrix factorization'\n", "\n", "max_n_articles = 10000\n", "chunksize = 1000\n", "\n", "\n", "# we need to use def since lambdas can't be pickled\n", "def retrieve_chunk(chunk_start):\n", " return arxiv.query(\n", " search_query=search_query,\n", " start=chunk_start,\n", " max_results=chunksize\n", " )\n", "\n", "\n", "result_chunks = list(\n", " map_parallel(\n", " retrieve_chunk,\n", " range(0, max_n_articles, chunksize)\n", " )\n", ")\n", "\n", "results = list(itertools.chain(*result_chunks))\n", "\n", "print('Retrieved {} articles'.format(len(results)))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Retrieved 10000 articles\n" ] } ], "source": [ "%store -r results\n", "print('Retrieved {} articles'.format(len(results)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Display some basic information" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "********************\n", "Approximate Method of Variational Bayesian Matrix\n", " Factorization/Completion with Sparse Prior\n", "********************\n", "Ryota Kawasumi, Koujin Takeda\n", "2018-03-14T13:54:23Z\n", "We derive analytical expression of matrix factorization/completion solution\n", "by variational Bayes method, under the assumption that observed matrix is\n", "originally the product of low-rank dense and sparse matrices with additive\n", "noise. We assume the prior of sparse matrix is Laplace distribution by taking\n", "matrix sparsity into consideration. Then we use several approximations for\n", "derivation of matrix factorization/completion solution. By our solution, we\n", "also numerically evaluate the performance of sparse matrix reconstruction in\n", "matrix factorization, and completion of missing matrix element in matrix\n", "completion.\n", "\n", "********************\n", "A New Method of Matrix Spectral Factorization\n", "********************\n", "Gigla Janashia, Edem Lagvilava, Lasha Ephremidze\n", "2009-09-29T15:08:13Z\n", "A new method of matrix spectral factorization is proposed which reliably\n", "computes an approximate spectral factor of any matrix spectral density that\n", "admits spectral factorization\n", "\n", "********************\n", "Matrix Factorizations via the Inverse Function Theorem\n", "********************\n", "Paul W. Y. Lee\n", "2014-08-12T03:29:00Z\n", "We give proofs of QR factorization, Cholesky's factorization, and LDU\n", "factorization using the inverse function theorem. As a consequence, we obtain\n", "analytic dependence of these matrix factorizations which does not follow\n", "immediately using Gaussian elimination.\n", "\n", "********************\n", "The Reciprocal Pascal Matrix\n", "********************\n", "Thomas M. Richardson\n", "2014-05-24T16:16:58Z\n", "The reciprocal Pascal matrix is the Hadamard inverse of the symmetric Pascal\n", "matrix. We show that the ordinary matrix inverse of the reciprocal Pascal\n", "matrix has integer elements. The proof uses two factorizations of the matrix of\n", "super Catalan numbers.\n", "\n", "********************\n", "Invariance properties of thematic factorizations of matrix functions\n", "********************\n", "R. B. Alexeev, V. V. Peller\n", "2001-01-26T21:54:16Z\n", "We study the problem of invariance of indices of thematic factorizations.\n", "Such factorizations were introduced in [PY1] for studying superoptimal\n", "approximation by bounded analytic matrix functions. As shown in [PY1], the\n", "indices may depend on the choice of a thematic factorization. We introduce the\n", "notion of a monotone thematic factorization. The main result shows that under\n", "natural assumptions a matrix function that admits a thematic factorization also\n", "admits a monotone thematic factorization and the indices of a monotone thematic\n", "factorization are uniquely determined by the matrix function itself. We obtain\n", "similar results for so-called partial thematic factorizations.\n", "\n", "********************\n", "Online Matrix Factorization via Broyden Updates\n", "********************\n", "Ömer Deniz Akyıldız\n", "2015-06-26T07:11:17Z\n", "In this paper, we propose an online algorithm to compute matrix\n", "factorizations. Proposed algorithm updates the dictionary matrix and associated\n", "coefficients using a single observation at each time. The algorithm performs\n", "low-rank updates to dictionary matrix. We derive the algorithm by defining a\n", "simple objective function to minimize whenever an observation is arrived. We\n", "extend the algorithm further for handling missing data. We also provide a\n", "mini-batch extension which enables to compute the matrix factorization on big\n", "datasets. We demonstrate the efficiency of our algorithm on a real dataset and\n", "give comparisons with well-known algorithms such as stochastic gradient matrix\n", "factorization and nonnegative matrix factorization (NMF).\n", "\n", "********************\n", "Matrix factorizations and intertwiners of the fundamental\n", " representations of quantum group U_q (sl_n)\n", "********************\n", "Yasuyoshi Yonezawa\n", "2008-06-30T17:13:00Z\n", "We want to construct a homological link invariant whose Euler characteristic\n", "is MOY polynomial as Khovanov and Rozansky constructed a categorification of\n", "HOMFLY polynomial. The present paper gives the first step to construct a\n", "categorification of MOY polynomial. For the essential colored planar diagrams\n", "with additional data which is a sequence naturally induced by coloring, we\n", "define matrix factorizations, and then we define a matrix factorization for\n", "planar diagram obtained by gluing the essential colored planar diagrams as\n", "tensor product of the matrix factorizations for the essential planar diagrams.\n", "Moreover, we show that some matrix factorizations deribed from tensor product\n", "of the essential matrix factorizations have homotopy equivalences corresponding\n", "to MOY relations.\n", "\n", "********************\n", "Fundamental matrix factorization in the FJRW-theory revisited\n", "********************\n", "Alexander Polishchuk\n", "2017-12-26T21:08:40Z\n", "We present an improved construction of the fundamental matrix factorization\n", "in the FJRW-theory given in arXiv:1105.2903. The revised construction is\n", "coordinate-free and works for a possibly nonabelian finite group of symmetries.\n", "One of the new ingrediants is the category of dg-matrix factorizations over a\n", "dg-scheme.\n", "\n", "********************\n", "Matrix factorizations and double line in $\\mathfrak{sl}_n$ quantum link\n", " invariant\n", "********************\n", "Yasuyoshi Yonezawa\n", "2007-03-28T07:26:02Z\n", "This article gives matrix factorizations for the trivalent diagrams and\n", "double line appearing in $\\mathfrak{sl}_n$ quantum link invariant.\n", " These matrix factorizations reconstruct Khovanov-Rozansky homology. And we\n", "show that the Euler characteristic of the matrix factorization for a double\n", "loop equals the quantum dimension of the representation $\\land^2 V$ of $U_q\n", "(\\mathfrak{sl}_n)$ in Section \\ref{sec3.3}.\n", "\n", "********************\n", "Finiteness of small factor analysis models\n", "********************\n", "Mathias Drton, Han Xiao\n", "2009-08-12T15:42:31Z\n", "We consider small factor analysis models with one or two factors. Fixing the\n", "number of factors, we prove a finiteness result about the covariance matrix\n", "parameter space when the size of the covariance matrix increases. According to\n", "this result, there exists a distinguished matrix size starting at which one can\n", "determine whether a given covariance matrix belongs to the parameter space by\n", "determining whether all principal submatrices of the distinguished size belong\n", "to the corresponding parameter space. We show that the distinguished matrix\n", "size is equal to four in the one-factor model and six with two factors.\n", "\n", "********************\n", "Stochastic Matrix Factorization\n", "********************\n", "Christopher Adams\n", "2016-09-19T15:19:44Z\n", "This paper considers a restriction to non-negative matrix factorization in\n", "which at least one matrix factor is stochastic. That is, the elements of the\n", "matrix factors are non-negative and the columns of one matrix factor sum to 1.\n", "This restriction includes topic models, a popular method for analyzing\n", "unstructured data. It also includes a method for storing and finding pictures.\n", "The paper presents necessary and sufficient conditions on the observed data\n", "such that the factorization is unique. In addition, the paper characterizes\n", "natural bounds on the parameters for any observed data and presents a\n", "consistent least squares estimator. The results are illustrated using a topic\n", "model analysis of PhD abstracts in economics and the problem of storing and\n", "retrieving a set of pictures of faces.\n", "\n", "********************\n", "Simulated Annealing with Levy Distribution for Fast Matrix\n", " Factorization-Based Collaborative Filtering\n", "********************\n", "Mostafa A. Shehata, Mohammad Nassef, Amr A. Badr\n", "2017-08-09T15:14:54Z\n", "Matrix factorization is one of the best approaches for collaborative\n", "filtering, because of its high accuracy in presenting users and items latent\n", "factors. The main disadvantages of matrix factorization are its complexity, and\n", "being very hard to be parallelized, specially with very large matrices. In this\n", "paper, we introduce a new method for collaborative filtering based on Matrix\n", "Factorization by combining simulated annealing with levy distribution. By using\n", "this method, good solutions are achieved in acceptable time with low\n", "computations, compared to other methods like stochastic gradient descent,\n", "alternating least squares, and weighted non-negative matrix factorization.\n", "\n", "********************\n", "Primitive factorizations, Jucys-Murphy elements, and matrix models\n", "********************\n", "Sho Matsumoto, Jonathan Novak\n", "2010-05-02T17:46:10Z\n", "A factorization of a permutation into transpositions is called \"primitive\" if\n", "its factors are weakly ordered. We discuss the problem of enumerating primitive\n", "factorizations of permutations, and its place in the hierarchy of previously\n", "studied factorization problems. Several formulas enumerating minimal primitive\n", "and possibly non-minimal primitive factorizations are presented, and\n", "interesting connections with Jucys-Murphy elements, symmetric group characters,\n", "and matrix models are described.\n", "\n", "********************\n", "Localization of Matrix Factorizations\n", "********************\n", "Ilya Krishtal, Thomas Strohmer, Tim Wertz\n", "2013-05-07T19:55:06Z\n", "Matrices with off-diagonal decay appear in a variety of fields in mathematics\n", "and in numerous applications, such as signal processing, statistics,\n", "communications engineering, condensed matter physics, and quantum chemistry.\n", "Numerical algorithms dealing with such matrices often take advantage\n", "(implicitly or explicitly) of the empirical observation that this off-diagonal\n", "decay property seems to be preserved when computing various useful matrix\n", "factorizations, such as the Cholesky factorization or the QR-factorization.\n", "There is a fairly extensive theory describing when the inverse of a matrix\n", "inherits the localization properties of the original matrix. Yet, except for\n", "the special case of band matrices, surprisingly very little theory exists that\n", "would establish similar results for matrix factorizations. We will derive a\n", "comprehensive framework to rigorously answer the question when and under which\n", "conditions the matrix factors inherit the localization of the original matrix\n", "for such fundamental matrix factorizations as the LU-, QR-, Cholesky, and Polar\n", "factorization.\n", "\n", "********************\n", "Monotone thematic factorizations of matrix functions\n", "********************\n", "Alberto A. Condori\n", "2009-08-28T20:29:13Z\n", "We continue the study of the so-called thematic factorizations of admissible\n", "very badly approximable matrix functions. These factorizations were introduced\n", "by V.V. Peller and N.J. Young for studying superoptimal approximation by\n", "bounded analytic matrix functions. Even though thematic indices associated with\n", "a thematic factorization of an admissible very badly approximable matrix\n", "function are not uniquely determined by the function itself, R.B. Alexeev and\n", "V.V. Peller showed that the thematic indices of any monotone non-increasing\n", "thematic factorization of an admissible very badly approximable matrix function\n", "are uniquely determined. In this paper, we prove the existence of monotone\n", "non-decreasing thematic factorizations for admissible very badly approximable\n", "matrix functions. It is also shown that the thematic indices appearing in a\n", "monotone non-decreasing thematic factorization are not uniquely determined by\n", "the matrix function itself. Furthermore, we show that the monotone\n", "non-increasing thematic factorization gives rise to a great number of other\n", "thematic factorizations.\n", "\n", "********************\n", "Badly approximable matrix functions and canonical factorizations\n", "********************\n", "R. B. Alexeev, V. V. Peller\n", "2001-01-26T22:08:33Z\n", "We continue studying the problem of analytic approximation of matrix\n", "functions. We introduce the notion of a partial canonical factorization of a\n", "badly approximable matrix function $\\Phi$ and the notion of a canonical\n", "factorization of a very badly approximable matrix function $\\Phi$. Such\n", "factorizations are defined in terms of so-called balanced unitary-valued\n", "functions which have many remarkable properties. Unlike the case of thematic\n", "factorizations studied earlier in [PY1], [PY2], [PT], [AP1], the factors in\n", "canonical factorizations (as well as partial canonical factorizations) are\n", "uniquely determined by the matrix function $\\Phi$ up to constant unitary\n", "factors. We study many properties of canonical factorizations. In particular we\n", "show that under certain natural assumptions on a function space $X$ the\n", "condition $\\Phi\\in X$ implies that all factors in a canonical factorization of\n", "$\\Phi$ belong to the same space $X$. In the last section we characterize the\n", "very badly approximable unitary-valued functions $U$ that satisfy the condition\n", "$\\|H_U\\|_{\\text e}<1$.\n", "\n", "********************\n", "Nonnegative Matrix Factorization Requires Irrationality\n", "********************\n", "Dmitry Chistikov, Stefan Kiefer, Ines Marušić, Mahsa Shirmohammadi, James Worrell\n", "2017-03-22T22:03:17Z\n", "Nonnegative matrix factorization (NMF) is the problem of decomposing a given\n", "nonnegative $n \\times m$ matrix $M$ into a product of a nonnegative $n \\times\n", "d$ matrix $W$ and a nonnegative $d \\times m$ matrix $H$. A longstanding open\n", "question, posed by Cohen and Rothblum in 1993, is whether a rational matrix $M$\n", "always has an NMF of minimal inner dimension $d$ whose factors $W$ and $H$ are\n", "also rational. We answer this question negatively, by exhibiting a matrix for\n", "which $W$ and $H$ require irrational entries.\n", "\n", "********************\n", "Spectral Factorization of Rank-Deficient Polynomial Matrix-Functions\n", "********************\n", "Lasha Ephremidze, Edem Lagvilava\n", "2010-08-18T16:04:13Z\n", "A spectral factorization theorem is proved for polynomial rank-deficient\n", "matrix-functions. The theorem is used to construct paraunitary matrix-functions\n", "with first rows given.\n", "\n", "********************\n", "From-Below Approximations in Boolean Matrix Factorization: Geometry and\n", " New Algorithm\n", "********************\n", "Radim Belohlavek, Martin Trnecka\n", "2013-06-20T15:19:22Z\n", "We present new results on Boolean matrix factorization and a new algorithm\n", "based on these results. The results emphasize the significance of\n", "factorizations that provide from-below approximations of the input matrix.\n", "While the previously proposed algorithms do not consider the possibly different\n", "significance of different matrix entries, our results help measure such\n", "significance and suggest where to focus when computing factors. An experimental\n", "evaluation of the new algorithm on both synthetic and real data demonstrates\n", "its good performance in terms of good coverage by the first k factors as well\n", "as a small number of factors needed for exact decomposition and indicates that\n", "the algorithm outperforms the available ones in these terms. We also propose\n", "future research topics.\n", "\n", "********************\n", "Necessary And Sufficient Conditions For Existence of the LU\n", " Factorization of an Arbitrary Matrix\n", "********************\n", "Pavel Okunev, Charles R. Johnson\n", "2005-06-19T23:10:13Z\n", "If $A$ is an n-by-n matrix over a field $F$ ($A\\in M_{n}(F)$), then $A$ is\n", "said to ``have an LU factorization'' if there exists a lower triangular matrix\n", "$L\\in M_{n}(F)$ and an upper triangular matrix $U\\in M_{n}(F)$ such that\n", "$$A=LU.$$ We give necessary and sufficient conditions for LU factorability of a\n", "matrix. Also simple algorithm for computing an LU factorization is given. It is\n", "an extension of the Gaussian elimination algorithm to the case of not\n", "necessarily invertible matrices. We consider possibilities to factors a matrix\n", "that does not have an LU factorization as the product of an ``almost lower\n", "triangular'' matrix and an ``almost upper triangular'' matrix. There are many\n", "ways to formalize what almost means. We consider some of them and derive\n", "necessary and sufficient conditions. Also simple algorithms for computing of an\n", "``almost LU factorization'' are given.\n", "\n" ] } ], "source": [ "n_examples = 20\n", "\n", "for entry in results[:n_examples]:\n", " print(20 * '*')\n", " print(entry['title'])\n", " print(20 * '*')\n", " print(', '.join(entry['authors']))\n", " print(entry['date'])\n", " print(entry['summary'])\n", " print()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "articles_df = pd.DataFrame(results)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "articles_df = pd.read_json('matrix_factorization_arxiv_query_result.json')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['affiliation', 'arxiv_comment', 'arxiv_primary_category', 'arxiv_url',\n", " 'author', 'author_detail', 'authors', 'doi', 'guidislink', 'id',\n", " 'journal_reference', 'links', 'pdf_url', 'published',\n", " 'published_parsed', 'summary', 'summary_detail', 'tags', 'title',\n", " 'title_detail', 'updated', 'updated_parsed'],\n", " dtype='object')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "articles_df.columns" ] }, { "cell_type": "code", "execution_count": 11, "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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
affiliationarxiv_commentarxiv_primary_categoryarxiv_urlauthorauthor_detailauthorsdoiguidislinkid...pdf_urlpublishedpublished_parsedsummarysummary_detailtagstitletitle_detailupdatedupdated_parsed
0None22 pages, 4 figures, part of this work was pre...{'term': 'eess.SP', 'scheme': 'http://arxiv.or...http://arxiv.org/abs/1803.06234v1Koujin Takeda{'name': 'Koujin Takeda'}[Ryota Kawasumi, Koujin Takeda]NoneTruehttp://arxiv.org/abs/1803.06234v1...http://arxiv.org/pdf/1803.06234v12018-03-14T13:54:23Z(2018, 3, 14, 13, 54, 23, 2, 73, 0)We derive analytical expression of matrix fact...{'type': 'text/plain', 'language': None, 'base...[{'term': 'eess.SP', 'scheme': 'http://arxiv.o...Approximate Method of Variational Bayesian Mat...{'type': 'text/plain', 'language': None, 'base...2018-03-14T13:54:23Z(2018, 3, 14, 13, 54, 23, 2, 73, 0)
1None23 pages{'term': 'math.CV', 'scheme': 'http://arxiv.or...http://arxiv.org/abs/0909.5361v1Lasha Ephremidze{'name': 'Lasha Ephremidze'}[Gigla Janashia, Edem Lagvilava, Lasha Ephremi...NoneTruehttp://arxiv.org/abs/0909.5361v1...http://arxiv.org/pdf/0909.5361v12009-09-29T15:08:13Z(2009, 9, 29, 15, 8, 13, 1, 272, 0)A new method of matrix spectral factorization ...{'type': 'text/plain', 'language': None, 'base...[{'term': 'math.CV', 'scheme': 'http://arxiv.o...A New Method of Matrix Spectral Factorization{'type': 'text/plain', 'language': None, 'base...2009-09-29T15:08:13Z(2009, 9, 29, 15, 8, 13, 1, 272, 0)
2None6 pages{'term': 'math.CA', 'scheme': 'http://arxiv.or...http://arxiv.org/abs/1408.2611v1Paul W. Y. Lee{'name': 'Paul W. Y. Lee'}[Paul W. Y. Lee]NoneTruehttp://arxiv.org/abs/1408.2611v1...http://arxiv.org/pdf/1408.2611v12014-08-12T03:29:00Z(2014, 8, 12, 3, 29, 0, 1, 224, 0)We give proofs of QR factorization, Cholesky's...{'type': 'text/plain', 'language': None, 'base...[{'term': 'math.CA', 'scheme': 'http://arxiv.o...Matrix Factorizations via the Inverse Function...{'type': 'text/plain', 'language': None, 'base...2014-08-12T03:29:00Z(2014, 8, 12, 3, 29, 0, 1, 224, 0)
3NoneNone{'term': 'math.CO', 'scheme': 'http://arxiv.or...http://arxiv.org/abs/1405.6315v1Thomas M. Richardson{'name': 'Thomas M. Richardson'}[Thomas M. Richardson]NoneTruehttp://arxiv.org/abs/1405.6315v1...http://arxiv.org/pdf/1405.6315v12014-05-24T16:16:58Z(2014, 5, 24, 16, 16, 58, 5, 144, 0)The reciprocal Pascal matrix is the Hadamard i...{'type': 'text/plain', 'language': None, 'base...[{'term': 'math.CO', 'scheme': 'http://arxiv.o...The Reciprocal Pascal Matrix{'type': 'text/plain', 'language': None, 'base...2014-05-24T16:16:58Z(2014, 5, 24, 16, 16, 58, 5, 144, 0)
4None20 pages{'term': 'math.FA', 'scheme': 'http://arxiv.or...http://arxiv.org/abs/math/0101182v2V. V. Peller{'name': 'V. V. Peller'}[R. B. Alexeev, V. V. Peller]NoneTruehttp://arxiv.org/abs/math/0101182v2...http://arxiv.org/pdf/math/0101182v22001-01-22T23:32:55Z(2001, 1, 22, 23, 32, 55, 0, 22, 0)We study the problem of invariance of indices ...{'type': 'text/plain', 'language': None, 'base...[{'term': 'math.FA', 'scheme': 'http://arxiv.o...Invariance properties of thematic factorizatio...{'type': 'text/plain', 'language': None, 'base...2001-01-26T21:54:16Z(2001, 1, 26, 21, 54, 16, 4, 26, 0)
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " affiliation arxiv_comment \\\n", "0 None 22 pages, 4 figures, part of this work was pre... \n", "1 None 23 pages \n", "2 None 6 pages \n", "3 None None \n", "4 None 20 pages \n", "\n", " arxiv_primary_category \\\n", "0 {'term': 'eess.SP', 'scheme': 'http://arxiv.or... \n", "1 {'term': 'math.CV', 'scheme': 'http://arxiv.or... \n", "2 {'term': 'math.CA', 'scheme': 'http://arxiv.or... \n", "3 {'term': 'math.CO', 'scheme': 'http://arxiv.or... \n", "4 {'term': 'math.FA', 'scheme': 'http://arxiv.or... \n", "\n", " arxiv_url author \\\n", "0 http://arxiv.org/abs/1803.06234v1 Koujin Takeda \n", "1 http://arxiv.org/abs/0909.5361v1 Lasha Ephremidze \n", "2 http://arxiv.org/abs/1408.2611v1 Paul W. Y. Lee \n", "3 http://arxiv.org/abs/1405.6315v1 Thomas M. Richardson \n", "4 http://arxiv.org/abs/math/0101182v2 V. V. Peller \n", "\n", " author_detail \\\n", "0 {'name': 'Koujin Takeda'} \n", "1 {'name': 'Lasha Ephremidze'} \n", "2 {'name': 'Paul W. Y. Lee'} \n", "3 {'name': 'Thomas M. Richardson'} \n", "4 {'name': 'V. V. Peller'} \n", "\n", " authors doi guidislink \\\n", "0 [Ryota Kawasumi, Koujin Takeda] None True \n", "1 [Gigla Janashia, Edem Lagvilava, Lasha Ephremi... None True \n", "2 [Paul W. Y. Lee] None True \n", "3 [Thomas M. Richardson] None True \n", "4 [R. B. Alexeev, V. V. Peller] None True \n", "\n", " id ... \\\n", "0 http://arxiv.org/abs/1803.06234v1 ... \n", "1 http://arxiv.org/abs/0909.5361v1 ... \n", "2 http://arxiv.org/abs/1408.2611v1 ... \n", "3 http://arxiv.org/abs/1405.6315v1 ... \n", "4 http://arxiv.org/abs/math/0101182v2 ... \n", "\n", " pdf_url published \\\n", "0 http://arxiv.org/pdf/1803.06234v1 2018-03-14T13:54:23Z \n", "1 http://arxiv.org/pdf/0909.5361v1 2009-09-29T15:08:13Z \n", "2 http://arxiv.org/pdf/1408.2611v1 2014-08-12T03:29:00Z \n", "3 http://arxiv.org/pdf/1405.6315v1 2014-05-24T16:16:58Z \n", "4 http://arxiv.org/pdf/math/0101182v2 2001-01-22T23:32:55Z \n", "\n", " published_parsed \\\n", "0 (2018, 3, 14, 13, 54, 23, 2, 73, 0) \n", "1 (2009, 9, 29, 15, 8, 13, 1, 272, 0) \n", "2 (2014, 8, 12, 3, 29, 0, 1, 224, 0) \n", "3 (2014, 5, 24, 16, 16, 58, 5, 144, 0) \n", "4 (2001, 1, 22, 23, 32, 55, 0, 22, 0) \n", "\n", " summary \\\n", "0 We derive analytical expression of matrix fact... \n", "1 A new method of matrix spectral factorization ... \n", "2 We give proofs of QR factorization, Cholesky's... \n", "3 The reciprocal Pascal matrix is the Hadamard i... \n", "4 We study the problem of invariance of indices ... \n", "\n", " summary_detail \\\n", "0 {'type': 'text/plain', 'language': None, 'base... \n", "1 {'type': 'text/plain', 'language': None, 'base... \n", "2 {'type': 'text/plain', 'language': None, 'base... \n", "3 {'type': 'text/plain', 'language': None, 'base... \n", "4 {'type': 'text/plain', 'language': None, 'base... \n", "\n", " tags \\\n", "0 [{'term': 'eess.SP', 'scheme': 'http://arxiv.o... \n", "1 [{'term': 'math.CV', 'scheme': 'http://arxiv.o... \n", "2 [{'term': 'math.CA', 'scheme': 'http://arxiv.o... \n", "3 [{'term': 'math.CO', 'scheme': 'http://arxiv.o... \n", "4 [{'term': 'math.FA', 'scheme': 'http://arxiv.o... \n", "\n", " title \\\n", "0 Approximate Method of Variational Bayesian Mat... \n", "1 A New Method of Matrix Spectral Factorization \n", "2 Matrix Factorizations via the Inverse Function... \n", "3 The Reciprocal Pascal Matrix \n", "4 Invariance properties of thematic factorizatio... \n", "\n", " title_detail updated \\\n", "0 {'type': 'text/plain', 'language': None, 'base... 2018-03-14T13:54:23Z \n", "1 {'type': 'text/plain', 'language': None, 'base... 2009-09-29T15:08:13Z \n", "2 {'type': 'text/plain', 'language': None, 'base... 2014-08-12T03:29:00Z \n", "3 {'type': 'text/plain', 'language': None, 'base... 2014-05-24T16:16:58Z \n", "4 {'type': 'text/plain', 'language': None, 'base... 2001-01-26T21:54:16Z \n", "\n", " updated_parsed \n", "0 (2018, 3, 14, 13, 54, 23, 2, 73, 0) \n", "1 (2009, 9, 29, 15, 8, 13, 1, 272, 0) \n", "2 (2014, 8, 12, 3, 29, 0, 1, 224, 0) \n", "3 (2014, 5, 24, 16, 16, 58, 5, 144, 0) \n", "4 (2001, 1, 26, 21, 54, 16, 4, 26, 0) \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "articles_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## arXiv categories" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "categories = articles_df['arxiv_primary_category'].apply(itemgetter('term'))\n", "\n", "main_categories = categories.apply(lambda s: s.split('.')[0].split('-')[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Toplevel categories" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "main_categories_counts = main_categories.value_counts(ascending=True)\n", "main_categories_counts.plot.barh()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Toplevel categories with more than 200 papers" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "main_categories_counts[main_categories_counts > 200].plot.barh()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "categories.value_counts(ascending=True)[-10:].plot.barh()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract keywords from summaries" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.37 s, sys: 611 ms, total: 5.99 s\n", "Wall time: 1min 40s\n" ] } ], "source": [ "%%time\n", "\n", "articles_df['summary_keywords'] = list(\n", " map_parallel(extract_keywords, articles_df['summary'])\n", ")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "********************\n", "Approximate Method of Variational Bayesian Matrix\n", " Factorization/Completion with Sparse Prior\n", "********************\n", "keywords: ['matrix', 'analytical', 'bayes', 'completion']\n", "\n", "********************\n", "A New Method of Matrix Spectral Factorization\n", "********************\n", "keywords: ['spectral', 'method']\n", "\n", "********************\n", "Matrix Factorizations via the Inverse Function Theorem\n", "********************\n", "keywords: ['factorizations', 'function']\n", "\n", "********************\n", "The Reciprocal Pascal Matrix\n", "********************\n", "keywords: ['pascal matrix']\n", "\n", "********************\n", "Invariance properties of thematic factorizations of matrix functions\n", "********************\n", "keywords: ['thematic', 'results', 'superoptimal', 'matrix']\n", "\n", "********************\n", "Online Matrix Factorization via Broyden Updates\n", "********************\n", "keywords: ['matrix', 'algorithms', 'missing', 'objective', 'dataset']\n", "\n", "********************\n", "Matrix factorizations and intertwiners of the fundamental\n", " representations of quantum group U_q (sl_n)\n", "********************\n", "keywords: ['matrix', 'equivalences', 'link', 'paper', 'naturally', 'planar']\n", "\n", "********************\n", "Fundamental matrix factorization in the FJRW-theory revisited\n", "********************\n", "keywords: ['construction', 'matrix']\n", "\n", "********************\n", "Matrix factorizations and double line in $\\mathfrak{sl}_n$ quantum link\n", " invariant\n", "********************\n", "keywords: ['ref', 'quantum link', 'line', 'loop']\n", "\n", "********************\n", "Finiteness of small factor analysis models\n", "********************\n", "keywords: ['matrix parameter', 'factors', 'size']\n", "\n", "********************\n", "Stochastic Matrix Factorization\n", "********************\n", "keywords: ['paper', 'unstructured', 'data', 'factors', 'model']\n", "\n", "********************\n", "Simulated Annealing with Levy Distribution for Fast Matrix\n", " Factorization-Based Collaborative Filtering\n", "********************\n", "keywords: ['methods', 'computations', 'simulated', 'filtering', 'non', 'latent', 'descent', 'good']\n", "\n", "********************\n", "Primitive factorizations, Jucys-Murphy elements, and matrix models\n", "********************\n", "keywords: ['primitive', 'factorizations', 'enumerating', 'minimal']\n", "\n", "********************\n", "Localization of Matrix Factorizations\n", "********************\n", "keywords: ['matrix', 'factors', 'decay', 'extensive theory', 'numerical', 'similar', 'matrices', 'properties']\n", "\n", "********************\n", "Monotone thematic factorizations of matrix functions\n", "********************\n", "keywords: ['thematic', 'matrix', 'approximation', 'indices', 'non']\n", "\n", "********************\n", "Badly approximable matrix functions and canonical factorizations\n", "********************\n", "keywords: ['unitary', 'factors', 'approximable', 'function', 'study']\n", "\n", "********************\n", "Nonnegative Matrix Factorization Requires Irrationality\n", "********************\n", "keywords: ['question', 'matrix', 'irrational']\n", "\n", "********************\n", "Spectral Factorization of Rank-Deficient Polynomial Matrix-Functions\n", "********************\n", "keywords: ['matrix', 'factorization']\n", "\n", "********************\n", "From-Below Approximations in Boolean Matrix Factorization: Geometry and\n", " New Algorithm\n", "********************\n", "keywords: ['matrix', 'algorithms', 'different', 'factors', 'new results', 'propose']\n", "\n", "********************\n", "Necessary And Sufficient Conditions For Existence of the LU\n", " Factorization of an Arbitrary Matrix\n", "********************\n", "keywords: ['triangular', 'invertible', 'elimination']\n", "\n" ] } ], "source": [ "for __, row in itertools.islice(articles_df.iterrows(), n_examples):\n", " print(20 * '*')\n", " print(row['title'])\n", " print(20 * '*')\n", " print('keywords:', row['summary_keywords'])\n", " print()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "article_keyword_lengths = articles_df['summary_keywords'].apply(len)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "article_keyword_lengths.plot.hist(bins=article_keyword_lengths.max(), title='Number of summary keywords')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Try to predict tags given summaries" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9403, 23)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_examples, valid_example_categories = filter_out_small_categories(articles_df, main_categories)\n", "valid_examples.shape" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "vectorized_data, (ohe, le) = vectorize_text(valid_examples)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll use [Factorization Machine](https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf) model. FMs are well suited for such high-dimensional sparse data. This model comes from [FastFM](https://github.com/ibayer/fastFM) library.\n", "\n", "Note `OneVsRestClassifier`. We have to use it here because FastFM doesn't support multiclass classification." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "fm = FMClassifier(\n", " rank=50,\n", " n_iter=10000,\n", " step_size=0.0001,\n", " l2_reg_w=0.01,\n", " l2_reg_V=0.01\n", ")\n", "fm_multiclass = OneVsRestClassifier(fm)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "x_train, x_test, y_train, y_test, y_train_labels, y_test_labels = train_test_split(\n", " vectorized_data['features'],\n", " vectorized_data['labels_onehot'],\n", " vectorized_data['labels'],\n", " stratify=vectorized_data['labels'],\n", " test_size=0.2,\n", " random_state=0\n", ")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 14 s, sys: 171 ms, total: 14.1 s\n", "Wall time: 12.5 s\n" ] }, { "data": { "text/plain": [ "OneVsRestClassifier(estimator=FMClassifier(init_stdev=0.1, l2_reg=None, l2_reg_V=0.01, l2_reg_w=0.01,\n", " n_iter=10000, random_state=123, rank=50, step_size=0.0001),\n", " n_jobs=1)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "\n", "fm_multiclass.fit(x_train, y_train)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "y_test_pred = predict_ovr(fm_multiclass, x_test)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train score: 0.719090667376 \n", "test score: 0.658692185008\n" ] } ], "source": [ "print(\n", " 'train score:', accuracy_score(y_train_labels, predict_ovr(fm_multiclass, x_train)), '\\n'\n", " 'test score: ', accuracy_score(y_test_labels, y_test_pred)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confusion matrix" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " cond 0.52 0.61 0.56 176\n", " cs 0.53 0.60 0.56 309\n", " hep 0.82 0.86 0.84 579\n", " math 0.63 0.77 0.69 542\n", " nucl 0.62 0.30 0.41 50\n", " physics 0.33 0.02 0.03 57\n", " quant 0.53 0.16 0.25 62\n", " stat 0.54 0.07 0.12 106\n", "\n", "avg / total 0.64 0.66 0.63 1881\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "report_classification_confusion_matrix(y_test_labels, y_test_pred, le)" ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "nnets", "language": "python", "name": "nnets" }, "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 }