
Javaで使える機械学習のライブラリにはどんなのがあるの?どうやってJava言語でプログラミングするの?WekaでGUIの使い方は分かったけどプログラムに組み込んでみたい!といった疑問や要望に対してお答えしていきたいと思います
私が使ったことのある機械学習3つについて簡単に紹介します
- Weka
- Java-ML
- DeepLearning 4j
本記事の読者として、Javaを開発する環境は整っていることを想定とします
Java言語を勉強する(プログラミング)環境を整えていない方は ProEngineer さんのサイトでとても分かりやすく説明されていましたので下のリンクから見てください↓
https://proengineer.internous.co.jp/content/columnfeature/785
他のサイトでたくさん紹介されていて、Javaでプログラミングしたいから来ていただいたと思いますが簡単に機械学習について復習します
機械学習の復習
そもそも、機械学習とは何か?
機械がデータから知識や規則を自動的に発見し、それを使って推論、識別、予測を行うこと
機械学習にはいくつか種類がある
- 教師あり学習
- 教師なし学習
- 中間的手法(半教師あり学習、強化学習、深層学習)
こういった機械学習がこれから紹介するWekaとJavaMLでできます
機械学習についてさらに気になる方はこちらを見てみてください↓
Weka
wekaとはWaikato Environment for Knowledge Analysisの略でニュージーランドのワイカト大学で開発された機械学習用のソフトウェアです
特徴としては、コマンドだけでなく、GUIで機械学習を試すことができるという点です
簡単に言うと、プログラミングしなくても、マウスでポチポチするだけで機械学習を試すことができるという点です
そのため、システムを作る前などに予め、機械学習で性能を簡単に試してから導入することができます
GUIで使うやり方はこちらの記事が分かりやすく載せてありました↓
https://qiita.com/_minami/items/83db2d3ee79dcc04d364
他のメリット
- Weka の説明をしてくれている日本語の紹介サイトが多い
- 機械学習の種類が豊富
- GUIでグラフを表示させることができ、視覚的にもわかりやすい
- 機械学習に必要なパラメータ設定が細かくできる
などが挙げられます
もちろん、JavaでimportすることでWekaをシステムの中で導入することができます
Java-ML
Java-ML とはJava Machine Learning Library の略で、Thomas Abeel さんによって作られた機械学習ライブラリです
メリットとして
- 公式にコードのサンプルがある(簡単に探せる)
- パラメータを設定する項目が少なく、設定をあまり気にする必要がない
- wekaの機械学習が使える
http://java-ml.sourceforge.net/
簡単に言うとKotlinという言語のようにシンプルに実装したいと人にお勧めです
機械学習をとりあえず簡単に実装してみたい人にはお勧めかもしれません
より精度を上げたいときなどはハイパーパラメータの設定等の必要があるため、他のライブラリーの方が良いかもしれません
DeepLearning 4j
DeepLearning 4j とはSkyMind社によって開発されたライブラリで、Java言語だけでなく、Scala言語にも対応しているオープンソースソフトウェアです
このライブラリのメリット
- 研究者でなくてもすぐに試作できるように、「最先端のプラグ&プレイ」と「設定よりも規約」を重視している点
- 規模に合わせたカスタマイズが可能
- DeepLearning(深層学習)系に強い
があります
主にディープラーニングやニューラルネットワーク系のプログラミングをしたい方はこちらがおすすめです
その他
他にJavaで機械学習をやるためには
- MOA(Massive Online Analysis )
- MALLET
- ELKI
などを使うとできるらしいです
私も機会があればやってみたいと思います
他にも英語になってしまいますが、この方のブログが参考になると思います↓