Classias

A collection of machine-learning algorithms for classification

はじめに

Classiasは分類のための機械学習アルゴリズムの実装です. 現在,以下の分類モデルをサポートしています.

  • L1/L2正則化ロジスティック回帰(最大エントロピー法)
  • L1/L2正則化L1損失線形カーネルサポートベクトルマシン(SVM)
  • 平均化パーセプトロン

分類器を学習するアルゴリズムとして,以下のものを実装しています.

  • Averaged perceptron
  • Limited-memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) [Nocedal80]
  • Orthant-Wise Limited-memory Quasi-Newton (OWL-QN) [Andrew07]
  • Primal Estimated sub-GrAdient SOlver (Pegasos) [Shalev-Shwartz07]
  • Truncated Gradient [Langford09], これはL1正則化に特殊化したFOrward LOoking Subgradient (FOLOS) [Duchi09]としても知られています

Classiasのコア・ライブラリは次のような特徴があります.

  • C++ヘッダによる実装.コア・アルゴリズムはすべてC++のヘッダファイルとして実装されています.したがって,いくつかのヘッダファイルをソースコードにインクルードするだけで,Classiasのライブラリが使えるようになります.
  • シンプルな設計.Classiasのライブラリは構造化されており,再利用しやすい設計になっています.損失関数,事例データ構造,素性生成,オンライン学習アルゴリズム,バッチ学習アルゴリズム,パフォーマンス計測器,パラメータ設定などのコンポーネントを提供しています.これらのコンポーネントに基づいて,新しいアプリケーションを非常に簡単に書けます.具体的な例としては,こちらのドキュメントを参照してください.

Classiasに付属するコマンドライン・ユーティリティは次のような特徴があります.

  • シンプルなデータ・フォーマット.Classiasのデータ・フォーマットは,SVMの既存のツール(LIBSVMやLIBLINEARなど)と上位互換性があります.さらに,Classiasでは文字列による素性名をサポートしており,素性名を整数値に変換する必要がありません.トークンの区切り(デフォルトではスペース)や素性名と素性値の区切り文字(デフォルトではコロン)は,変更可能です.
  • gzip/bzip2/xvで圧縮されたファイルに対応.Classiasはgzip,bzip2,xvで圧縮された学習データを読み込むことができます.
  • パフォーマンス計測.Classiasはテストデータにおける精度,適合率,再現率,F1スコアを計測することができます.さらに,ClassiasはN分割交叉検定を自動的に行えるので,データ分割を手作業で行う必要がありません.
  • 確率推定.Classiasは事例にラベルを付与したときの条件付き確率を計算することができます(これはロジスティック回帰に基づくモデルのみで有効です).

Classiasに関する詳しい説明は,以下のページを参照してください.

ダウンロード

現在のClassiasのバージョンは1.1です.

Classiasは修正BSDライセンスで配布されます.

このソフトウェアを引用する場合は,次のBibTexエントリを利用してください.

@misc{Classias,
	author = {Naoaki Okazaki},
	title = {Classias: a collection of machine-learning algorithms for classification},
	url = {http://www.chokkan.org/software/classias/},
	year = {2009}
}

更新履歴

Classias 1.1 (2009-12-28)
  • [classias-tag] 失敗解析 (-f) を追加.
  • [classias-tag] 予測されたラベルに加えて,与えられたデータに含まれていた正解ラベルを出力する機能 (-r) を追加.
  • [classias-tag] 全てのラベル候補を出力するオプション (-a) を追加.
  • [classias-tag] 特定のデータでクラッシュする問題を修正(Many thanks to 若木裕美さん).
  • [classias-train] 入力ファイルが存在しないときにクラッシュする問題を修正(Thanks to He Tanさん).
  • その他,細かい調整・修正など.
Classias 1.0 (2009-09-27)
  • 最初のリリース.

参考文献

[Andrew07] Galen Andrew and Jianfeng Gao. Scalable training of L1-regularized log-linear models”. Proceedings of the 24th International Conference on Machine Learning (ICML 2007). 33-40. 2007.

[Duchi09] John Duchi and Yoram Singer. Online and Batch Learning using Forward Looking Subgradients”. . (to appear). 2009.

[Langford09] John Langford, Lihong Li, and Tong Zhang. Sparse Online Learning via Truncated Gradient”. Journal of Machine Learning Research. 10. Mar. 777-801. 2009.

[Nocedal80] Jorge Nocedal. “Updating Quasi-Newton Matrices with Limited Storage”. Mathematics of Computation. 35. 151. 773-782. 1980.

[Shalev-Shwartz07] Shai Shalev-Shwartz, Yoram Singer, and Nathan Srebro. Pegasos: Primal Estimated sub-GrAdient SOlver for SVM”. Proceedings of the 24th International Conference on Machine Learning (ICML 2007). 807-814. 2007.