
こんにちは、AI研究所パートナー研究員の光本(みつもと)です。
AIを導入するにあたって最も労力がかかるのは、学習のために投入するデータの収集とデータのクリーニングや加工作業です。
Pythonでプログラミングしてデータ加工しても良いのですが、もっと楽に、早くできないかということで、その可能性を感じたRapidMiner社のソフトウエアRapidMiner Studio(無料版)を試してみました。
Rapid Minerとは?
Rapid Minerは、プログラミングすることなく、データの前処理加工から機械学習の手法の適用、学習と評価を一通り行なうことができるGUIのデータ分析ソフトウエアです。
データの読み込み、そして、データの分割や欠損値の補完などの前処理加工、k近傍法や決定木などの適用といった機能が、それぞれの箱(ブロック)で表現され、それらを配置して線で繋いでいくことで簡単に処理機能を組む込むことができるようになっています。
今回は、お馴染みの「Iris_Flowerデータセット(※)」を使って、RapidMinerの機械学習(決定木)で分類問題を解いてみたいと思います。
(※)説明変数をがくの長さ、がくの幅、花びらの長さ、花びらの幅として、目的変数をあやめの花の種類とするデータセット
入力データを読み込む
まず、CSVデータ読み込みのブロック(Read CSV)を配置して、読み込むCSVファイルを指定します。
区切り文字(今回はカンマ)を選択して、各列が正しく表示されていることを確認して次へ進みます。
まず、読み込みたい列を選択します。
今回はすべての列をチェック。また、各列の型を指定してどの列がラベル(目的変数:あやめの種類)」なのかを指定します。
ウィザードを完了させると読み込まれたデータが表示され、ラベル(あやめの種類)に色がついています。
なかなか良いと思ったのは、欠損値があるかどうかをチェックしてくれ、各列の数値の分布などがグラフで視覚的に分かるところです。
学習が上手くいかなった場合などに入力データの傾向を確認しながら原因追及にも役立ちそうです。
入力データのクリーニング機能
今回は、よく整備されたデータセットを使ったので欠損値もなく、除外すべきレコードもなかったのですが、下記のような種類のブロックも用意されており、一連の流れの中でデータ加工も行えるようになっていました。
決定木(Decision Tree)を使ってみる
それでは学習をさせる前に一旦、Read CSVの後ろに決定木(Decision Tree)ブロックを配置し、実行ボタンを押してみます。
結果がツリー表示され、データのどの列をみて、どのような判定基準(ルール)で分類されていったのかが決定木(Decision Tree)として表現されています。
学習を実行する
「教師あり学習(※)」でよく使われる交差検証法(Cross Validation)で学習をさせてみます。
交差検証法では、学習データをランダムに分割して、訓練データとテストデータを作成します。
今回は10個に分割して、9個を訓練データ、1個をテストデータとして使用し、10回検証して精度の平均をとることにします。
(※)正解データ(目的変数という)を含むデータセットを入力として使用し、正解データを除く残りのデータ(説明変数という)から得られる出力結果の値ができるだけ正解データに近くなるようにモデルを作成する学習方法
訓練エリアの決定木で学習したモデルをテストエリアに適用してテストデータで評価してみます。
評価結果は以下のようになりました。モデルの精度は、91.67%という結果でした。
評価を実行する
最後に別に用意されていた評価データセットを読み込んで、モデルの評価を行なってみます。
評価データセットを読み込むRead CSVオペレータをもう一つ追加して、評価を実行します。
評価に使ったデータ数が少ないものの、精度100%で分類できました。
評価データにモデルを適用した結果の一覧も確認できました。Predictionが出力結果で、Confidence(0)とConfidence(1)がそう判断した信頼度になっているようです。
今後、実際に収集したデータが不完全で欠損値を埋めたり、クリーニングをしなければならないときにはデータ加工作業の中で使ってみたいと思います。