RapidMiner
Hadley Wickhamの「Tidy Data」をRapidMinerでやってみる(パート1)
If you would like to read this post in English, it’s here.
データ分析における最も重要で時間のかかるプロセスは、データクリーニング、つまり、データの準備です。RStudioチーフサイエンティストであり、オークランド大学、スタンフォード大学、ライス大学などの統計学非常勤講師を務めるハドリー・ウィッカムは、データクリーニングに関するリサーチがほとんど存在しないことに気付き、「整理されたデータ」という論文を2014年に発表しました(リンクは論文原文)。
その論文の中で、ウィッカムは整理されていないデータと整理されているデータの違いを論じ、整理されているデータとは以下の3つの特徴を持つものであるとまとめています。
1. 各変数が一つの列を形成していること 2. 各観測が一つの行を形成していること 3. 各観測単位の型が一つのテーブルを形成していること
このように「整理された」フォーマットでデータを保持することで標準的な方法でデータが扱えるようになり、分析プロセスの効率がよくなるとウィッカムは言います。それでは逆に整理されていないデータとはどのようなデータなのでしょうか。ウィッカム曰く「整理されているデータは必ず3つの特徴を満たすが、整理されていないデータはそれぞれの方法でグチャグチャである」だそうです。アンナ・カレーニナの冒頭文みたいでかっこいいですね。とは言いながら一方でよく見かける「整理されていない」データの例として以下の5つをあげています。
1. 列名が変数名でなく値である 2. 複数の変数が一つの列に保存されている 3. 変数が行列の両方に保存されている 4. 複数の異なる型の観測単位が同じテーブルに保存されている 5. 一つの観測単位の型が複数のテーブルに保存されている
今回は1つ目のよくある「整理されていない」データに注目し、RapidMinerを使ってどのようにそれを解決できるかを考えてみたいと思います。
[問題1] 列名が変数名でなく値である
このようなデータはプレゼンテーション用に作られたもので見かけることが多いと思います。変数が行列の両方を形成しており、列名が変数名ではなく値になっているというケースです。データ分析や機械学習を効率よく進めるためには整理された形式に変換する必要があります。簡単な例を以下に示します。
もう少し具体的な例として、有名なタイタニックのデータで「整理されていない」データと「整理された」データを見てみましょう(リンクは論文原文)。(これらはオリジナルのタイタニックデータから著者が意図的に作ったものです。)
「整理されていない」データ(上)は、チケット代と乗船クラスという2つの軸で乗船者の人数をカウントしたテーブルです。一方で「整理された」データ(下)は、”チケット代”という列があり、整理されていないデータでは列名として扱われていた値がテーブルの値として保存されています。また、行列に分散していた人数のカウントが一つの列に保存されています。
RapidMinerでこの「整理されていない」データから「整理された」データへの変換をするためにはDe-Pivotオペレータを使用します。
De-Pivotオペレータは4つのパラメータを持っていますが、ここではそのうちの3つを使用します。
・attribute name(列名) ・index attribute(インデックスとなる列) ・create nominal index(名目インデックスを作る)
“Edit List”ボタンを押下して”attribute name”を編集します。”Edit List”ボタンを押下すると別ウインドウ(下)が表示されますので、”attribute name”に新しく作成する列の名前、”attribute”に整理の対象として選択する列を捕捉するための正規表現を入力します。
正しい正規表現を入力するための補助を得るためには、右端にあるボタン(紙と虫眼鏡のマーク)を押下します。そうすると正規表現を編集するためのウインドウ(下)が立ち上がります。
正しい正規表現を入力するにあたってこのウインドウはとても役に立ちます。入力した正規表現がちゃんと対象の列名を捕捉しているかを確認するためにテキストボックス(オレンジ枠)に任意の値を入力することができます。もし正規表現がテキストボックスに入力された値を捕捉するのであれば黄色くハイライトされます。下三角ボタン(赤枠)を押下すると、入力内容から推定される有用な正規表現のリコメンデーションを見ることもできます。
ざっとですが、よく見かける「整理されていない」データの1つ目のパターンの具体例とその解決方法を紹介しました。De-Pivotオペレータと正規表現は少し込み入っているので、次の投稿でもう少し詳しく解説したいと思います。
それではまた。