タグ

nmfに関するteddy-gのブックマーク (8)

  • 非負値行列因子分解(NMF)によるレコメンドのちょっとした例 - About connecting the dots.

    最近線形代数についていろいろ読みなおしたりしてるのですが(線形代数チートシートを前の記事でまとめてあります),その一環でレコメンドアルゴリズムについていくつか試してみたので,それを解説します.順序としては,基の協調フィルタリング(ユーザベースド,アイテムベースド)→特異値分解(SVD)→非負値行列因子分解(NMF)になります. 基的な考え方 ここで取り扱うのは,すべて以下のようなユーザ×商品のマトリックスをベースとしたレコメンドになります*1.ここでは映画レンタルサービスを例にして考えます.6人のユーザが,4つの映画*2のうちレンタル視聴したものについては,1-5点の5段階評価を行いました.0になっているものは「みていない」ということになります. まずはざっと評価の状況をみると,「千と千尋の神隠し」が最もよく視聴されていて,6人中4人がみています.次にみられているのは「となりのトトロ」

    teddy-g
    teddy-g 2016/03/01
    アイテムベース、ユーザベースのレコメンドの基本手法から、SVD&NMF使う方法まで簡潔に説明。アイテムの類似性×ユーザプロファイルでレコメンドする際に、SVD或いはNMFでプロファイルを再構築する感じ。
  • NMF

    NMF# class sklearn.decomposition.NMF(n_components='warn', *, init=None, solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, random_state=None, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, verbose=0, shuffle=False)[source]# Non-Negative Matrix Factorization (NMF). Find two non-negative matrices, i.e. matrices with all non-negative elements, (W, H) whose product approximates the non-negative

    teddy-g
    teddy-g 2016/02/27
    Scikit-LearnのNMFの使い方説明公式ページ。Initial処理にランダム以外にNNDSVDも指定できる。fit_transformで次元削減した行列が得られて、components_に削減したFeatureが格納される。便利。
  • NMF for Topic Modeling | Derek Greene's Home

    Topic modeling is a key tool for the discovery of hidden structure in large collections of documents. Probabilistic methods, such as Latent Dirichlet allocationTopic modeling is a key tool for the discovery of hidden structure in large collections of documents. Probabilistic methods, such as Latent Dirichlet allocation (LDA), are often employed by using tools such as the Java MALLET library. Howev

    NMF for Topic Modeling | Derek Greene's Home
    teddy-g
    teddy-g 2016/02/25
    Scikit LearnでBBCのニュース(テキスト)をNMFで分析する話、の解説記事のほう。ふむふむなるほど。
  • Jupyter Notebook Viewer

    teddy-g
    teddy-g 2016/02/25
    Scikit LearnでBBCのニュース(テキスト)をNMFで分析する話。この通りにipythonで走らせたらちゃんと結果が出てくる。なるほど。
  • 非負値行列因子分解 - sonoshouのまじめなブログ

    このエントリーは、集合知プログラミング第8章を参照にしています。 非負値行列因子分解は、データマイニングの手法の一つである。 データの重要な特徴を抽出するために用いられる。 非負値行列因子分解は、non-negative matrix factorizationの日語訳であり、 よくNMFと省略されるので、こちらの省略形も覚えておきたい。 非負値行列因子分解の基的なアイディア非負値行列因子分解は、その名の通り、行列を正の数(非負値)で因子分解することで、 特徴の抽出を行う。 因子分解とは、掛け合わせることで再び分解前の行列を構築できるような 2つの小さな行列を探し出すということである。 非負値行列因子分解の例以下、具体例を交えながら解説する。 文書の記事と記事内に存在する単語との対応付けがあるとき、 これらに対してNMFで特徴を抽出する。 対応付けの表は以下のようになっているとする。

    非負値行列因子分解 - sonoshouのまじめなブログ
    teddy-g
    teddy-g 2016/02/25
    Collective IntelligenceのNMFの説明そのままといってよい。備忘。
  • PythonのnimfaでNMFを試す - About connecting the dots.

    PythonでNMFやるには,nimfaというパッケージを使えばよいらしいです.とりあえず使うだけなら,適当なnumpy行列vecを用意して,以下のように関数に投げてあげます. factor = nimfa.mf(vec, seed='random_vcol', method='nmf', rank='5', max_iter=10) res = nimfa.mf_run(factor).basis() とりあえずシードはランダムで,手法はベーシックなnmf.何次元に削減するかをrankで指定して,イテレーション回数を決めればOKです. nmfは関連手法が山ほどあって,ざっと以下のようになります.説明文は基的に意訳です.正直意訳があってるかも自信はないので,こちらから元論文を読みましょう*1. 手法 概要 BD ギブスサンプラーを使ったベイジアンNMF BM バイナリのMF ICM It

    PythonのnimfaでNMFを試す - About connecting the dots.
    teddy-g
    teddy-g 2016/02/25
    nimfaっていうパッケージでNMFできるらしい。が、Scikit-Learnにもあるし使うかどうかは微妙。
  • non-Negative Matrix Factorization (NMF) - naoyaのはてなダイアリー

    以前に Latent Semantic Indexing (LSI) や HITS 絡みで SVD や主成分分析について少し書きました。 http://d.hatena.ne.jp/naoya/20090212/latent_semantic_indexing http://d.hatena.ne.jp/naoya/20090301/hits LSI では SVD を使って単語文書行列を分解し、低階数近似を行います。これにより、似たような次元をまとめたりといった効果が得られるのでした。自分の考察では HITS も同様のことを行っているという認識でした。 さて、集合知プログラミングを読んでいたら、第10章で "non-Negative Matrix Factorization" (非負値行列因子分解, 以下NMF) という手法が出てきました。NMF も SVD や主成分分析に同じく行列を分解

    non-Negative Matrix Factorization (NMF) - naoyaのはてなダイアリー
    teddy-g
    teddy-g 2016/02/24
    NMFのアルゴリズムの簡易な説明。というかCollective Intelligenceに書いてある内容の概略。
  • すべてがMFになる - Fire and Motion

    すべてがFになる,映像化するみたいですね.犀川創平も西之園萌絵も配役がイメージと違って一部で話題になっていました.さて,最近テンソル分解を使った論文をよく見かけるのですが,いまだにきちんと整理できずにいます.テンソルかわいいよ,テンソル. そこで,まずは行列分解(matrix factorization, matrix decomposition)を整理してみようと思います.行列の分解手法というと線形代数的な観点からは簡単に思いつくだけでも 固有値分解 LU分解 コレスキー分解 などがありますが,これらは分解前の行列と分解後の行列が一致する(たとえばA=LU)方法です.一方で,機械学習やデータマイニング界隈(特にレコメンデーション等)で出てくる行列分解というのは,大規模データや関係性データの中から低ランクの構造を抽出することや次元圧縮を目的としています.なので,正確に言うならば,行列分解と

    すべてがMFになる - Fire and Motion
    teddy-g
    teddy-g 2016/02/24
    SVD、PCA、CUR分解、NMFの違いと類似性を図を使って説明してる。直感的に理解するのによい。
  • 1