OpenMLを軽く確認してみる

参考

メモ

概要

OpenML公式ドキュメント によると、以下の定義。

An open, collaborative, frictionless, automated machine learning environment.

OpenML公式ウェブサイト によると、

  • Dataset
  • Task
    • データセットと機械学習としての達成すべきこと
  • Flow
    • 各種フレームワークに則った処理パイプライン
  • Run
    • あるFlowについてハイパーパラメータを指定し、あるTaskに対して実行したもの

のレポジトリが提供されている。 これらはウェブサイトから探索可能。

Dataset

Datasetが登録されると機械的にアノテーションされたり、分析されたりする。 パット見でデータの品質がわかるようになっている。

Task

データセットに対する目標(と言ってよいのか。つまり識別、回帰など)、学習用、テスト用のデータのスプリット、 どのカラムを目的変数とするか、などが セットになったコンテナである。

機械的に読めるようになっている。

Flow

処理パイプラインはFlowとして登録され、再利用可能になる。 特定のTaskに紐づく処理として定義される。

フレームワークにひもづく。

Run

OpenML APIを用いて実行ごとに自動登録される。

scikit-learnで試す

Pythonガイド を参考に試してみる。 一通り、Pandas、scikit-learn、openml、pylzmaをインストールする。 なお、あらかじめliblzma-devをインストールしておくこと。 詳しくは以下の「lzmaがインポートできない」節を参照。

実行に用いたpipenvの環境ファイル に用いたライブラリが載っている。

Pythonガイド を眺めながら進めようと思ったが、 https://openml.github.io/openml-python/develop/examples/introduction_tutorial.html のリンクが切れていた。 何となく見るとgithub.ioだったので探索してみたら、 github.ioのPythonガイド が見つかった。

こっちを参考にしてみる。

FlowとRunのチュートリアル を元に、チュートリアルを実施。 また特に、 公式Examples あたりを参考にした。 詳しくは、 dobachi openml_sklearn_example 内のnotebookを参照。

トラブルシュート

lzmaがインポートできない

以下の内容のエラーが生じた。

1
2
/home/dobachi/.local/share/virtualenvs/openml_sklearn_example-YW762zpK/lib/python3.7/site-packages/pandas/compat/__init__.py:85: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.
warnings.warn(msg)

lzma関連のlibをインストールしておいてから、Python環境を構築すること。 つまりpyenvとpipenvで環境構築する前にliblzma-devをインストールしておく。

1
$ sudo apt install liblzma-dev

参考: lzmaライブラリをインポートできません。

所感

歴史があり、情報が集まっている。 ドキュメントが中途半端なせいで、初見ではとっつきづらいかもしれないが、ライブラリひとつでデータ発掘・共有に始まり、処理パイプラインの機械化まで対応しているのは有益。

共有