無料で使えるデータマイニングツール：データの分析と可視化

# はじめに

データマイニング(Data Mining) は、多くのデータの中から、
パターンやルールを見つけ出すための技術です。

これだけだと、何が便利なのかと思うかもしれませんが、
購買履歴、サービス利用履歴、クレーム履歴といった、
個人の行動に関するデータを対象にする場合を想像してみてください。

もし、そこから意味のある、有益なパターンを
見つけられるとしたらどうでしょう？

家電量販店、コンビニエンスストアやスーパーなど、
多くの場所でポイントサービスがあると思いますが、
ポイントサービスというものの本質は、
こうしたデータを蓄積するための道具だったりします。

こうしたデータを分析したり可視化するときに便利で、
しかも無料で使用することができるツールをまとめたみました。

この資料は、以前に私の [note.mu](https://note.mu/whitebeard/n/ne76e84c7a71a) にも上げたものですが、
Qiitaにも少し改版して投稿しました。

# Orange
[Orange](https://orange.biolab.si/) はPython で実装されているオープンソースの
ワークフローベースのデータマイニングツールで、
1996年から活発に開発が進められています。

そのため、データサイエンスに慣れ親しんでいるPythonユーザーは、
すでにOrangeをご存知かもしれません。

![orange_title_scaled.png](https://qiita-image-store.s3.amazonaws.com/0/182364/991f5232-8a53-5834-5195-4b351a5dceaf.png)

Orange には次の機能があります。

●　データの前処理
●　分類
●　モデリング
●　回帰
●　評価
●　機械学習
●　可視化

他にも各種機能のためのマイニングや機械学習のアルゴリズムの
強力なPythonライブラリを持っています。

Orangeにはビジュアルプログラミング環境も付属しています。
これは、ワークベンチにデータをインポートするためのツールと、
ドラッグ＆ドロップしたさまざまなウィジェットを
マウスでつなぎ合わせて、ワークフローを作成します。

ビジュアルプログラミングでは、ヘルプアイコンをクリックするとオンラインチュートリアルと豊富なサンプルや例が表示されます。

直感的で非常に使いやすく、親しみやすいUIとなっています。

![Orange_paint-data.png](https://qiita-image-store.s3.amazonaws.com/0/182364/d9a21ff7-4aeb-0aa0-516b-e7965216c9ae.png)


![Orange_image-viewer.png](https://qiita-image-store.s3.amazonaws.com/0/182364/eb844492-2aa4-db77-c2ec-b809feebedcb.png)

バイオインフォマティックス、テキスト処理、位置情報、時系列データなど、多くのアドオンが提供されていて、
簡単に機能拡張ができるようになっています。

Pythonプログラミングとの統合が簡単なので、
Orangeは初心者や専門家がデータマイニングを行う上で、
最初に使うツールとして最適なものとなります。

# KNIME
[KNIME](https://www.knime.com/) はオープンソースのデータの収集、分析、モデリング、
およびレポート作成のためのプラットフォームです。

<img width="600" alt="KNIME_Logo.png" src="https://qiita-image-store.s3.amazonaws.com/0/182364/d9fdcabc-05b7-5adc-ecb7-6964043495fd.png">

Javaで書かれていて Eclipse 上に実装された、
ワークフローベースのデーターマイニングツールです。

単独のアプリケーションは無料で使用できます。

ユーザは、GUIを使ってワークフローを作成して、
データの前処理、収集、分析、モデリング、
およびレポート作成などを実行します。

![02_knime_workbench.PNG](https://qiita-image-store.s3.amazonaws.com/0/182364/7730cb97-4788-1ff8-ddb6-e57e9008fc49.png)

KNIMEはEclipseの拡張メカニズム機能を利用して、
テキストや画像マイニングなどをプラグインとして追加することで、
必要な機能が得られるようになっています。

KNIMEサーバーが提供する機能を使いたい場合は、
商業ライセンスを購入する必要があります。

このソフトウェアは企業での使用に向いているでしょう。

# Rapidminer
[Rapidminer](https://rapidminer.com/) は無料のオープンソースと、
商業バージョンのデュアルライセンスで提供されている、
ワークフローベースのデータマイニングツールです。

![rapidminer_logo.png](https://qiita-image-store.s3.amazonaws.com/0/182364/52bfe003-fb50-79e0-96b9-66e6c866ef77.png)

RapidMinerは、ユーザーフレンドリーで
豊富なデータサイエンスライブラリを使って、
ビジネスプロセスに予測分析するための手助けとなります。

Rapid Miner Studio では、データの前処理、収集、フィルタリング、分類など
標準的なデータマイニング機能に加えて、
強力な可視化環境、テンプレートとワークフロー、
Python や R といった言語との連携ができるオールインワンの
ビジュアルプログラミング環境になっています。

以下のUIの例は、英語ですが日本語もサポートされています。

<img width="669" alt="welcome-to-rapidminer-titanic.png" src="https://qiita-image-store.s3.amazonaws.com/0/182364/2bcf6900-4e24-ec7c-2de1-10421302ffa8.png">

![rapidminer_open_process.png](https://qiita-image-store.s3.amazonaws.com/0/182364/0d7fbcb1-60f4-990e-b610-3562acffda83.png)

Rapid Minerは、ビジネスでの商業利用、研究、
および教育に適したツールです。

# DataMelt
[DataMelt](https://jwork.org/dmelt/) は、数値計算、数学、統計、記号計算、データ分析、
データ視覚化のためのフリーソフトウェアです。

<img width="450" alt="DataMelt_Logo.png" src="https://qiita-image-store.s3.amazonaws.com/0/182364/9d84e4ab-c55b-a543-535d-497cefc9bee4.png">
![DataMelt_slide00.png](https://qiita-image-store.s3.amazonaws.com/0/182364/3611448d-bc62-fb04-7005-38fb4d4c196e.png)

GUI部分はJavaで実装されていて、Python、Ruby、Groovyなど、
他の言語を呼び出すようなソフトウェア構造になっています。

公式サイトでは、詳細なドキュメントや、コード、描画例が
豊富に公開されています。

DataMelt には次のような機能があります。
●　チャートプロット
●　データ分析
●　2D/3D 可視化
●　データマイニング
●　ベクターグラフィックス
●　ニューラルネットワーク
●　線形/非線形回帰
●　データフィッティング
●　数値計算
●　統計計算
●　線形代数
●　シンボリック演算
●　シンボル認識
●　テキスト処理
●　Python/Jython, BeanShell, Groovy, JRuby, Matlab/Octave の実行

DataMeltは、エンジニアや、学生、科学者に向いているでしょう。

# WEKA

WEKA は、Javaで実装され、GNU GPLライセンスで公開されている、
オープンソースのソフトウェアです。

![Weka_logo.png](https://qiita-image-store.s3.amazonaws.com/0/182364/475d4e42-0d45-2745-6839-e20f22af4c09.png)

[Weka](https://www.cs.waikato.ac.nz/ml/weka/) は、データマイニングや機械学習アルゴリズムを集めたもので、
次のような機能があります。

●　データの前処理
●　モデリング
●　分類
●　回帰
●　関連付けルール
●　可視化

次のインタフェースから構成されています。

●　Weka Knowledge Explorer
●　Experimenter
●　Knowledge Flow
●　コマンドライン(CLI)

Explorer は、マイニングデータを2Dで可視化するための使いやすいGUIです。

このGUIから、様々なファイルフォーマットを指定して、
生データのインポート、フィルタリング、クラスタリング、
モデリングおよび属性選択のような、マイニングアクションを行います。

大規模なデータセットを扱うようなときは、
Explorer がデータセット全体をメインメモリにロードしようとするので、
メモリ消費が少なくてすむ CLI も提供されています。

Wekaは、ラピッドプロトタイピングだけでなく教育や研究目的にも理想的な選択となります。

# MOA
[MOA](https://moa.cms.waikato.ac.nz/) (Massive Online Analysis) は、その名前が示すとおり
データストリームマイニングソフトウェアです。

大量のリアルタイムデータストリームを
高速で処理する必要があるアプリケーションに最適です。

<img width="328" alt="MOA_Logo.png" src="https://qiita-image-store.s3.amazonaws.com/0/182364/9707e159-ecb0-a64a-5308-e016f07e8f0f.png">

![MOA_example.png](https://qiita-image-store.s3.amazonaws.com/0/182364/4af56aa8-c723-65d7-239b-3e379d241975.png)

MOAはGNU GPLライセンスで配布されていて、
コマンドライン、GUI、またはJava APIを介して使用できます。

このソフトウェアは、機械学習アルゴリズムを豊富にまとめていて、
リアルタイムアプリケーションの設計時に最適な選択でしょう。

ストリームマイニングアルゴリズムでは、
より高速な計算を必要としていて、
限られた時間内に処理を終了させる必要があるため、
通常すべてのデータセットをメモリに保存することはしません。

MOAはこうした要件に非常にマッチしています。

WekaとMOAは互いに密接に連携させることができ、
どちらからも、もう一方を呼び出すことができます。 

リアルタイムデータからデータマイニングしようとしている人には、
MOAが最良の選択となります。

# Zeppelin

[Zeppelin](https://zeppelin.apache.org/)  は、SQLやScala,Python, Java など20以上の言語を呼び出せる、WEBベースのノートブックです。

次のようなことが行なえます。

●　データ取り込み
●　データ発見
●　データ分析
●　データの可視化
●　コラボレーション
●　TeX表記での数式表記
●　外部ストレージのサポート 
　　( Git/S3/Azure/Google Cloud/ZeppelinHub/MongoDB/Hadoop)


<img width="400" alt="Zeppelin_Logo.png" src="https://qiita-image-store.s3.amazonaws.com/0/182364/dc71a82a-2d8c-e29e-29e3-7a76e9c6970f.png">

![Zeppelin_display_formula.png](https://qiita-image-store.s3.amazonaws.com/0/182364/7f5e4380-fd44-490f-d779-cd9c107a9549.png)

![Zeppelin_notebook.png](https://qiita-image-store.s3.amazonaws.com/0/182364/290801cb-6fca-58e2-3365-e1a0aa64d686.png)

![Zeppelin_available_interpreters.png](https://qiita-image-store.s3.amazonaws.com/0/182364/c8368444-14a5-3f1f-6aee-89f187737212.png)

# Scilab
[scilab](https://www.scilab.org/) は、
1990年からフランスの国立情報学自動制御研究所
(INRIA: Institut National de Recherche en Informatique et en AutomatiqueとENPCで開発されているオープンソースの数値計算システムです。

<img width="400" alt="Scilab_Logo.png" src="https://qiita-image-store.s3.amazonaws.com/0/182364/904cface-96f7-b679-6f3a-96611872ee28.png">

データマイニングという領域とは少し外れるのですが、
非常に優れたソフトウェアですので取り上げてみました。

Scilab は MATLAB を強く意識して開発されていて、
クローンのようによく似た機能を持っていますが、
MATLABとの互換性はありません。

![scilab601c.png](https://qiita-image-store.s3.amazonaws.com/0/182364/9b63446b-a33b-b5e2-3604-a771e95b64d9.png)

Scilab には次のような機能があります。
●　数値計算機能
●　信号処理
●　行列や多項式の数式処理
●　関数のグラフィック表示

Scilab 5.2以降は日本語を含む多言語に対応しています。

技術計算を多用する場合では数値計算用ソフトウェアが欠かせません

MATLABは商業ソフトで、個人で使用するにはかなり難しいのですが、
Scilabを使うことで同等の計算を行うことができるようになります。

Sciab はエンジニアに向いているでしょう。

# 参考資料

●　Orange 公式サイト
　　https://blog.biolab.si/
●　KNIME 公式サイト
　　https://www.knime.com/
●　Rapidminer 公式サイト
　　https://rapidminer.com/
●　WEKA 公式サイト
　　https://www.cs.waikato.ac.nz/ml/weka/
●　MOA 公式サイト
　　https://moa.cms.waikato.ac.nz/
●　Zeppelin 公式サイト
　　https://zeppelin.apache.org/
●　Scilab 公式サイト
　　https://www.scilab.org/