LoginSignup
5
6

More than 3 years have passed since last update.

PHPで使える機械学習ライブラリ「PHP-ML」を試してみた

Last updated at Posted at 2019-11-25

機械学習とかちょっと興味あるけどPythonの学習から始めなきゃいけないのか…と思っていたら、
PHPでもPHP-MLという機械学習用のライブラリが用意されていたので試してみました。

導入手順

composerのインストール

まず、公式サイトよりcomposerをインストールします。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

PHP-MLのインストール

php composer.phar require php-ai/php-ml

k近傍法を試してみる

「ケイきんぼうほう」って読みます。
機械学習アルゴリズムの中でも簡単なアルゴリズムと言われておりパターン認識でよくつかわれているようです。
似たような名前でk平均法というのがありますが、k平均法は教師なし学習k近傍法は教師あり学習という違いがあります。

ちなみに、現状機械学習と言ったら教師あり学習の方を指す事が多いようです。教師あり学習では、人間があらかじめ付けた正解のラベルに基づき、機械が学習を行います。
参考:教師あり学習と教師なし学習

さらに、教師あり学習にも分類回帰の2パターンあるようです。
違いは、目標変数が離散値であるか連続値であるかという事のようです。
参考:回帰と分類の違い

サンプル

k近傍法のサンプル
<?php
require_once 'vendor/autoload.php';

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

echo $classifier->predict([3, 2]);

// [1, 3], [1, 4], [2, 4]にaというラベル、
// [3, 1], [4, 1], [4, 2]にはbというラベルを付けておき、
// [3, 2]というデータがあった場合にどちらのラベルが付くか?というのを分析している。
// この場合はbというラベルが付く。

機械学習で使われるその他アルゴリズム

機械学習でよく使われているアルゴリズムについては以下の記事が分かりやすくまとめられていました。
機械学習に知るべき10のアルゴリズム

感想

PHP-MLのライブラリをインストールするだけなら5分で終わります。
だけどドキュメントに出てくる用語は知らない言葉ばかりで、検索して調べたらまた知らない用語が出てくるという感じでなので、慣れるにはだいぶ時間がかかりそうです。
とはいえ、手軽に機械学習の学習環境が整うので、まずはPHP-MLで機械学習の全体像をつかんでから、Pythonを学習するのもありかと思いました。

5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6