1.Orangeの紹介
本日は、手軽にデータ分析を始めたい!と思っている方々のために、データマイニングツールをご紹介したいと思います。現在、世間では、データ分析のツールとしては、R言語やPython言語が広く使われています。しかし、そうなると分析業務がプログラミングがメインで、統計知識がある方々の参入が難しい状況でもあります。
その課題を解決するために、登場したのがData Mining Toolというものです。この分野では、Alteryx, KNIME,そしてOrangeなどが有名です。ここでは、OSSであって、Anacondaにも採用されているOrangeを紹介したいと思います。
Orangeのダウンロードは、こちらのリンクを参考にしてください。
2.データセットの紹介
ここでは、有名なIrisのデータセットを用います。Orangeを利用して、IrisのSepalとPetalのLength, Widthで、品種を三つに分類する分析を行うことにします。
Irisのデータセットは、Orangeで基本提供されています。iris.tabを入力してください。
3.分析設計
分析は、下記の流れで行います。
- データセットの読み込み
- データの確認(特徴量、欠損値、グラフ)
- 目的変数、説明変数の指定
- 訓練データとテストデータの分離
- 訓練データで、分類モデルをで学習。分類モデルは、決定木とランダムフォレストを利用
- テストデータで、学習されたモデルを利用して、分類予測。各モデルの分析精度を比較
- 寄与度分析、確認
4.Orangeのworkflows
下記の図に全体のWorkflowsを示します。基本的に分析設計の流れに合わせて、作成されたものです。
よく活用して頂きたい機能が、Feature Statisticsです。データセットの各項目の分布、基本統計資料、欠損値の割合を表示してくれます。
次は、Distributionで、密度グラフが確認できます。こちらの画像はPNGとしても保存ができるため、PPTなどにも簡単に活用できます。
こちらは、Select Columnsといい、説明変数(Features)と目的変数(Target Variable)を指定する部分です。そして、分析に使わない項目に関しては、Meta Attributesに指定すればいいです。
そして、訓練データとテストデータに準備する部分がData Samplerです。単純に80:20の比率で分ける方法、交差検証法、Bootstrappingなどに対応しています。ここでは、単純に80:20の比率に分ける方法を採用します。
まず、訓練データを用いたTest&Score機能の設定です。
分析モデルは、決定木(Tree),ランダムフォレスト(Random Forest)を使いました。Evaluation ResultsのCAは、Classification Accuracyを意味します。決定木のCAが0.991でることに対し、Random ForestのCAは1.00です。恐ろしいRandom Forest
次は、テストデータを用い予測する部分の設定です。
5.分析結果
こちらは、訓練データの学習結果のROC曲線です。複数モデルの同時プロットが可能で、モデル間の分析性能が簡単にできるようになっています。
そして、テストデータによる分析結果のConfusion Matrixを出力します。
Rankという機能があって、Random Forestの場合、説明変数の寄与度の順位が出力されます。この結果だと、品種を分けるために、①Petal Width ②Petal Length ③Sepal Lengthの順に寄与度が変わることがわかります。
ここで、Petal Length(X軸) Petal Width(Y軸)でデータセットをプロットしてみました。青、赤、緑の色はそれぞれIrisの品種を表します。一部に重なる領域があるものの、Petal Length, Petal Widthである程度の品種分類が可能であることがわかります。
6.結論
Irisデータセットを利用して、簡単な分析をOrangeでやってみました。Workflowsの作成、結果がでるまで5分もかからないことが確認できました。Rで同様なことをスクラッチからしようとすると、約4時間ほどかかるでしょうか。データマイニングツールの目的が、この分析業務効率化であることを理解していただければと思います。
皆さんが分析を試せるように、この記事に使われたOrangeファイルをアップロードしました。
Iris_Classification_Orange_file Download