EverYours Japan

あなたの友でありつづけるコンテンツ

Javaによる機械学習プログラミング

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

などを使うとできるらしいです

私も機会があればやってみたいと思います

他にも英語になってしまいますが、この方のブログが参考になると思います↓