洋食の日記

洋食のことではなく、技術メモを書きます。たまにどうでも良いことも書きます。

機械学習

rb-libsvmとlibsvmloaderを使ったRubyでのカーネル非線形SVMによる分類

はじめに RubyのLIBSVMバインドであるrb-libsvmと、libsvm形式のデータセットを読み書きするlibsvmloaderで、カーネル非線形SVMで分類する例です。カーネル非線形と明記するのは、libsvmの姉妹品であるliblinearが線形SVMなため。 準備 まずLIBSVMそのものを…

RandSVDを使った主成分分析によるMNISTデータセットの可視化

RandSVDを作ったので、特異値分解(固有値分解)をベースにした機械学習アルゴリズムを実装していこうと思っている。 まずは、主成分分析によるMNISTデータセットの可視化を行った。 ※特異値分解と主成分分析の関係は、そのまま「主成分分析 特異値分解」で…

乱択アルゴリズムな打ち切り特異値分解のgemを公開した

※Truncated SVD (Singular Value Decomposition) って和訳ありますか?勝手に打ち切り特異値分解としました。 はじめに 機械学習アルゴリズムで特異値分解(もしくは固有値分解)をするときは、だいたい、大きい(もしくは小さい)方からk個だけ特異値/特異…

LIBSVM/SVMLight形式のデータの読み込み/書き込みをするgemを公開した

はじめに LIBSVM形式のデータセットファイルを読み込み、データとラベルをNMatrixで返すライブラリが欲しかったので、作成してgemパッケージを公開した。 libsvmloader | RubyGems.org | your community gem host Pythonのsvmlight-loaderにお世話になってい…

Liblinear-Rubyによる線形SVMを試すついでにカーネル近似も試した

はじめに Liblinearは、線形SVMの実装として有名なライブラリ/ツールである。 これをRubyから叩くライブラリとして、Liblinear-Rubyがある。 Rubyの配列で表現された、特徴ベクトルとラベルをわたすだけで、線形SVMの訓練・テストが行える。 これで線形SVMに…

PyCallを使えばRubyでもKerasでDeep Learningができる

mrknさんが開発しているPyCallを使うと、RubyからPythonオブジェクトを操作できる。 Rubyから、Pythonの機械学習・統計分析のツールを利用することを目的としており、 ネット上にもnumpyやscikit-learnを実行する例があがっている。 Rubyist Magazine - PyCa…