読者です 読者をやめる 読者になる 読者になる

ゆるふわめも

in Kyoto or Tokyo

推薦システムに関する資料集とメモ

  • 推薦システム
    • 定義
    • 評価指標
    • 講義・解説スライドなど
  • 推薦システムの分類
    • 個人化による分類
    • アルゴリズムにて用いるデータによる分類
    • アルゴリズムによる分類
      • 類似度
      • 行列分解
      • ベイズ推定
      • バンディット
      • Deep Learning
      • xxx2vec
  • Web上における推薦システム
    • データの前処理
    • ユーザーの行動パターンの発見
  • 時間情報を考慮した推薦
  • 参考文献

個人用のメモです, 推薦システムを勉強したことがなかったので, おさらい. 後で目次含め中身丸ごと書き換え予定.

推薦システム

定義

以下に挙げることを行ってくれるようなシステム. 一言でいうと, ユーザの興味に合わせておすすめのコンテンツを勧める・お勧めでないコンテンツを除外するシステム.

  • 推薦:ユーザーの目的に合致するコンテンツを幾つか選択して提示する
  • 予測:コンテンツへのユーザーの評価を予測する
  • フィルタリング:ユーザーにとって迷惑なコンテンツ(スパムなど)を選択して除外する

評価指標

  • 精度
  • 適合率・再現率
  • セレンディピティ
  • ユーザーへのアンケート評価
  • 顧客生涯価値[5]

どの評価指標が適切かは、後に書く推薦システムの分類(運用目的での手法の分類など)でどの種類になるかによって変わってくる. なので「精度が高かったからok!」と言えるかどうかはシステムの目的に応じて判断しないといけない.

講義・解説スライドなど

続きを読む

Ubuntu14.04にてtesseractとLeptonicaのインストール

環境は Ubuntu14.04. Google Clowd APIを使いたくないのでインストール.

TesseractのバージョンによってLeptonicaのバージョンも変更する必要があります. 詳しくはドキュメントをみてください.

Leptonicaのインストール

$ wget http://www.leptonica.com/source/leptonica-1.74.1.tar.gz
$ tar -zxvf leptonica-1.74.1.tar.gz 
$ cd leptonica-1.74.1
$ ./configure
$ make
$ sudo make install

tesseractのインストール

autoconf-archive

$ sudo apt-get install autoconf-archive

にしたがって autoconf-archive をインストール. 実際にここでつまりました.

その他の依存関係のインストール

本家のドキュメントに記述されているので、そちらを参照します.

tesseract本体のインストール

$ git clone https://github.com/tesseract-ocr/tesseract.git
$ cd tesseract
$ export LD_LIBRARY_PATH=/usr/local/lib
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

訓練済みモデルのダウンロード

TesseractError: (1, b'Error opening data file /usr/local/share/jpn.traineddata\nPlease make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.\nFailed loading language \'jpn\'\nTesseract couldn\'t load any languages!\nCould not initialize tesseract.\n')

のエラーが出る場合は TESSDATA_PREFIX の指定が間違っているか、そもそもモデルをダウンルードしてきていない.

からOCRの対象となる言語のモデルをダウンロードして TESSDATA_PREFIX に指定した箇所に保存する. 例えば

export TESSDATA_PREFIX="/usr/local/share/tessdata/"

など.

画像に含まれる色をクラスタリングして自動的に抽出する

  • できたもの
    • 実装内容
      • 仕組み
      • 改善点
      • おまけ
    • 今後の課題
      • クラスタリング数を動的に変更する
      • ワンポイントの色の抽出
  • クラスタリングについてのメモ
    • クラスタリングするアルゴリズムの分類
      • 階層的なクラスタリング手法
      • 繰り返し割り当てを変えていく手法
        • その他
      • データの分布密度からクラスタを決める手法
      • モデルベースの手法
  • 参考文献

クラスタリングの基礎を身につける練習です. はじめに実装したもの, 後半にクラスタリングについてのメモを少しだけ.

できたもの

こちらのページです.

paper-web.sakura.ne.jp

f:id:misos:20170509034833p:plain

Amazonの画像から自動的に色を抽出するようにしました. アニメキャラの色に基づいてパワーポイントやキーノートのテーマを作る時にだけ使えるかもしれません.

実装内容

仕組み

Amazonの画像からRGBデータを取得、12クラスにクラスタリング、クラスタリングのまとまりをデータ数とクラスタごとの平均色の類似度(つまり、クラスタのセントロイドの距離)に基づいて重み付け、最後に重みが大きい上位8クラスを選んで表示しています.

改善点

f:id:misos:20170509035243p:plain

初音ミクのリボンの色など、小さいけれどもキャラを表している色を抽出するのに失敗してしまいます. そのため, 色の類似度を計算して類似度が離れているほど重要度を増やすような処理を加えて抽出します.

初音ミクの場合は「青色っぽい色ばかり抽出される」→「データ数は少ないけれど赤色もワンポイントになってそう」としています, 失敗していますが…。今後の課題. k-means minus minus を使って外れ値っぽいものをワンポイントの色として抽出してみた方がよかったかもしれません.

おまけ

f:id:misos:20170509035715p:plain

文字と背景の組み合わせチェックも見れるようにしました. 需要なさそうですが, スライドなどを作る時に個人的に使いたいので作りました.

今後の課題

クラスタリング数を動的に変更する

有名な論文ですが

Pelleg, Dan, and Andrew W. Moore. “X-means: Extending K-means with Efficient Estimation of the Number of Clusters.” ICML. Vol. 1. 2000.

にて提案された X-means 法にてクラスタ数を自動で決定するように変更したい. ベイズ情報量規準で分割を止める最適なクラスタ数を求める手法.

ワンポイントの色の抽出

今回は適当に (R, G, B) の値の絶対距離を用いて色の離れ具合を計算しているのでちゃんとした距離を定義して抽出をうまくいくようにしたい.

続きを読む

さくらレンタルサーバーでのpython環境のセットアップ

djangoを使ったウェブアプリケーションの開発をする必要になっ(てしまっ)たため. レンタルサーバーでpythonを使えるところは思いつく限りでは少ないように思う.

python インストール

python2.7

デフォルトで入っています.

python3.4

こちらのやり方でできました.

外部ライブラリのインストール

root権限がないので, pip install … ではnumpy, scipyが使えない。

numpy

X.XX.XXには適当なバージョンを入れる.

$ wget http://sourceforge.net/projects/numpy/files/NumPy/X.XX.X/numpy-X.XX.X.tar.gz --no-check-certificate
$ tar xzf numpy-X.XX.X.tar.gz
$ cd numpy-X.XX.X
$ python setup.py build
$ python setup.py install

pip

pipを入れるために easy_install を入れる.

$ cd ~/tmp
$ wget https://pypi.python.org/packages/source/s/setuptools/setuptools-3.4.1.tar.gz --no-check-certificate
$ tar xzf setuptools-3.4.1.tar.gz
$ cd setuptools-3.4.1
$ python ez_setup.py
$ cd $HOME
$ easy_install pip

pyenv

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

追記:丁寧な説明があるこちらを参照するべき↓

さくらのレンタルサーバでpyenvとDjangoを動かす « chibiegg日誌

pandas

csvなどのデータをまとめて扱う時に使う. numpyをinstallしたあとならば、pip install pandasでインストール可能.

エラーなど

ImportError

ImportError: Error importing numpy: you should not try to import XXX from its source directory; please exit the XXX source tree, and relaunch your python intepreter from there.

などのエラーが出る時は、大概今いるディレクトリにライブラリと同じディレクトリがあるとき.

BootStrapform

ImportError: No module named 'bootstrapform'

となる時があるので,

$ pip install django-bootstrap-form

とすればok.

エラー解決:DjangoにてDisallowedHost at.., Invalid HTTP_HOST header

エラー内容

DisallowedHost at /
Invalid HTTP_HOST header: '10.22....:8001'. You may need to add '10.22....' to ALLOWED_HOSTS

解決法

djangoプロジェクト以下のyour_sitename/setting.pyにてALLOWED_HOSTSにIPアドレスを追加する.

ALLOWED_HOSTS = [ '10.22....:8001' ]

ドキュメント

settingに関するドキュメントより.