Pythonにおける機械学習ライブラリ「scikit-learn(サイキット・ラーン)」とは

はじめに

Pythonは少ないコードで処理を記述することが可能な言語です。そのため機械学習においても用いられることが多く、様々なオープンソースライブラリとそれらの活用が行われています。今回はその機械学習において使用されるオープンソースライブラリ「scikit-learn(サイキット・ラーン)」について簡単に解説していきましょう。

scikit-learn(サイキット・ラーン)とは

scikit-learnはPythonの機械学習用オープンソースライブラリです。そのため個人、商用かを問わず、誰でも無料で利用することができます。現在も開発も活発に行われており、多くの機械学習アルゴリズムが実装されましたが、基本的にどのアルゴリズムにおいても同じコード記述で利用することができます。またscikit-learnには、サンプルのデータセットが付属しているので、インストール後すぐ機械学習に用いることができます。

小話「機械学習とはなんぞや」

機械学習は「コンピューターにデータを読み込ませ、アルゴリズムに基づいて分析させる」手法のことを指します。具体的には、データを反復的に学習させることで、データの特徴とパターン等を発見させて、発見した特徴を新規データに適用させることでデータの分析や予測を行うことを可能にします。

一見、人工知能(AI)と非常に似通った性質を持ちますが、「学習、推論、判断といった人間の知能のもつ機能を備えたコンピューターシステム」という定義(大辞林より抜粋)がされています。ただし、その定義は複数に及ぶため、現状では明確な定義というものは存在していません。というのも人工知能自体には漠然とした「人間のように考える機械」という定義付けしかなかったためです。現在でも人工知能の研究は行われていますが、その延長線上に機械学習と深層学習(ディープラーニング)※があります。

※人間の脳を模したニューラルネットワークの隠れ層を複数に増やしてデータの「特徴量」といわれる差異をコンピューターが判断する手法のこと。なおニューラルネットワークは入力層、出力層、隠れ層から構成される。

scikit-learnで何ができるか

scikit-learnは自分が行いたい機械学習(分類、回帰、クラスタリングなど)に対して、適切なモデルを選択する際の手助けとなるアルゴリズムチートシートと呼ばれるものがあります。まずはそれを参照してみましょう。

1.分類(classification)

与えられたデータに対してどのクラスに属するかを判別するのが分類です。教師あり学習の分類問題を解くアルゴリズムと表現されます。主にSGD(stochastic gradient descent)、カーネル近似、Linear SVC、k近傍法、ナイーブベイズとよばれる種類のアルゴリズムがあり、それぞれデータ量、線形か非線形かによって適したものがあります。

2.回帰(regression)

与えられたデータを元にして、目的とする値を予測するのが回帰です。教師あり学習の回帰問題を解くアルゴリズムと表現されます。主にSGD(stochastic gradient descent)、LASSO、ElasticNet、Ridge、Liner SVR、SVR(ガウスカーネル)、Ensembleと呼ばれる種類のアルゴリズムがあり、こちらもデータ量、線形か非線形かによって適したものがあります。

3.クラスタリング(clustering)

与えられたデータを定義した規則によって分けるものです。教師なし学習のクラスタリング問題を解くアルゴリズムと表現されます。主にKMeans、スペクトラルクラスタリング、GMM、MeanShift、VBGMMと呼ばれる種類のアルゴリズムがあり、こちらもデータ量、線形か非線形かによって適したものがあります。

これら以外にも次元削減やハイパーパラメータの最適化とよばれる機能がありますが、今回は主に使う機能に絞るため詳細は割愛させていただきます。

scikit-learnを利用するには

scikit-learnを利用するには、開発環境のパッケージを使うのが簡単とされています。その中でもAnacondaは、データ分析、グラフ描画などでPythonでもよく利用されるライブラリを含んだ開発環境です。Anacondaにインストールされているかはメニュー画面の「Environments」から、「Installed」を選択し、検索BOXに「scikit-learn」と入力することで確認を行うことが可能です。

当然ですが開発環境を利用しない状態でscikit-learnをインストールすることも可能ですが、インストール前に特定のライブラリをインストールする必要があるなど、経験者でないと難しい部分があります。

まとめ

・scikit-learnはPythonの機械学習用オープンソースライブラリ

・scikit-learnには、サンプルのデータセットが付属しているので、インストール後すぐ機械学習に用いることが可能

・scikit-learnは分類、回帰、クラスタリング等の機械学習モデルの中から選択して最適なものを活用する。

前の記事

Chainer(チェイナー)について

次の記事

AI技術とJava