本書は2017年4月1日にTeradata Japanのブログに掲載された内容を、再掲載したものです。
掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
著者 山本 泰史 (やまもと やすし)
データの定義
データマイニングにおいては主にその分析手法がクローズアップされがちですが、それ以上に重要になのは「データ」です。適切なデータがなければ良いモデルは得られず、結果データマイニングを実施する意義も半減します。ここで、データマイニングに利用されるデータの種類、適用可能なデータの形式、そして一方で通常データウェアハウスに格納されているデータの形式について説明を加えます。
■データの種類
まず、データマイニングで利用されるデータは主に、以下の4つに分類されます。
比例尺度
いわゆる定量的なデータを指します。金額、グラム、メートル、数量等の単位で表されるデータはこれにあたります。この変数は比率比較が可能なデータです。例えば支出額1万円の顧客と、支出額2万円の顧客には、2倍の差があることを理解できます。
間隔尺度
データ間の間隔に意味はあっても、比率比較は不可能な変数を指します。例えば順位、温度(摂氏、華氏のような)のようなデータがこれにあたります。
順序尺度
特にアンケートデータに見られるような、順序の意味あいを理解できる変数がこれにあたります。好き/それほどでもない/嫌い、大/中/小、高/中/低等々のデータは、順番や順序を考慮する価値がありますが、好きと嫌いの間の距離感を理解することは出来ません。
名義尺度
データ間の関係から読み取れるのは「異なる、違う」という事実のみの変数を指します。代表的なデータは男女の別、反応/無反応のような2値しかとらないようなオン/オフのデータです。もちろん2値に限る必要はなく、最も購入している洋服の色(赤、白、黒)、最も購入している洋服のブランド(ブランドA、ブランドB、...)のように値は何個になっても構いません。赤白黒の3色の間には序列や順序は存在せず、そこにあるのは単に「違う」という事実のみです。
分析手法によっては、利用可能なデータに制限がある場合があります。例えばアソシエーション分析という分析手法に利用可能なデータは、名義尺度のデータに限定されます。
■データマイニングが「欲しい」
データ形式
データマイニングに利用するデータは一般に、分析データセット(Analytic Data Set)、データセット、または変数表と呼ばれ、データベースから導き出された、データマイニングの実施対象となるデータの集合を意味します。多くのデータマイニングに利用されるデータは、このような単一の表形式に表されたデータであることを前提としています。また、マーケティング分野でデータマイニングを活用する多くの場合において、この表の一番左側に提示されるのが「顧客(を意味する識別子 - 顧客番号、顧客の電話番号や口座番号等)」です(図1参照)。また、場合によっては世帯や契約等の単位で顧客を分析の対象とすることもあるでしょう。一般に、表の横軸に置かれたデータのくくりを「列(カラム)」と呼び、一方で縦軸に置かれたくくりを「行(レコード、ロー)」と呼びます。また、縦軸と横軸で指定されたそれぞれのデータは値、もしくは(データ・)グリッドと呼ばれます。データマイニングにおいて横軸、つまり列に置かれたデータは「変数」と呼ばれ、一方で行に置かれたデータは「(データ・)サンプル」と呼びます。
そして、例えばこのデータを用いて支出額の予測をするとき、予測の対象となる変数(支出額)は、一般にyで示されます。このときyは、予測の対象となるため、被説明変数、または従属変数(xnに説明される、またはxnに従属する形で導き出されるため)と呼ばれます。これに対して、予測に用いられる各変数は一般に、xnで示されます。xnは説明変数(yを説明する変数であるため)、または独立変数と呼ばれます。後に詳しく触れることになりますが、モデル、つまり数式やルールを作成するときには、これらのデータを用いて作成することになります。例えば線形回帰分析と呼ばれる分析手法では、「y = a x1 + b x2 + c」といった形でyの値を推測することになりますし、決定木と呼ばれる分析手法では、「IF x1 >= 30 THEN the Data is “class1 ...” (もし年齢が30歳以上であれば、顧客を”class1”に分類する...)」というルールで説明されることになります。データマイニングにおけるデータの準備とは、このデータセットを作成するプロセスを意味します。
![1.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2768546%2F6fd29803-f574-fe27-0035-db6f0e9ee1e8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=09f12c6503a8f0a1a486c12c47a25d6d)
■データの持ち方
データマイニングにおいて、データセットは単一の表であることが求められる一方、通常データウェアハウスに存在しているデータ形式の多くは、これとは全く対照的な正規化されたデータベースであるはずです。このため、単一の表を作成するためには、テーブルとテーブルの結合、縦に並んだデータの横への並び替え、必要に応じた集約、算出処理を施したデータへの派生などを実施する必要があります。「そんな面倒くさいことをするのであれば、元からデータセットの形式で持てばいいのでは?」と思われるかもしれません。でもそうすると、欲しいデータセットに対するニーズが変わったときにはどうしようもありません。そして往々にして、ニーズは変わるものです。特にデータからさらに大きな価値を得たいと考えるとき、この変化の方向は「進化」であり、その多くは「複雑化」でもあります。そしてこれに対処するためには、これ以上分解できない素粒子レベルのデータ(アトミックレベルのデータ)形式で保持し、それを必要に応じて様々に加工するのが最も効率的な使い方です。データベースの正規化とは、アトミックレベルのデータを最も重複が少ない形で、つまり効率的に格納する方法です。
次のような例を考えて見ましょう。あるモデルに必要な変数として、顧客毎の年間、もしくは月間の支出額を必要としているとします。ではその値は継続的に算出して、データベースに保持するべきでしょうか。それともその場で算出して利用するべきでしょうか。さらには元々の取引明細データは保持するべきでしょうか、それとも計算が終わったら捨ててしまうべきでしょうか。これらの問いには様々な答えがあってしかるべきですが、結論としては、年間、もしくは月間支出額が継続的に利用されるのであれば夜間などに計算してデータベースに集約データとして保持すべきです。しかしながら元々の取引明細データを捨てて良いという訳ではありません。例えば曜日毎の支出傾向を把握したい、商品もしくは商品カテゴリー毎の支出傾向を把握したい、ブランド毎の支出傾向を把握したいとなったときに、月間支出額しか残っていなかったら何も出来ません。ここで重要となるのは、あくまでも発生したデータを捨てずに、明細レベルで保持するということ、そしてその必要頻度に応じて集約データを合わせて保持するということです。例えば頻度が高く、変化の度合いが緩やかなデータセットに関してはバッチスケジュールの中にその作成を組み込み、ルーティン化しても良いでしょう。この2つの原理をデータウェアハウスに適用することによって、今現在は想定できない将来のニーズにも対応することが可能となり、合わせてあらかじめ想定しているニーズに対しても迅速に対応することが可能となります。
もちろん前者のようなアプローチのみを採用するときには、その弱点も存在します。そのときのニーズに合わせてデータセットを作成する、そしてそれを比較的短い時間で完遂させたいのであれば、大きなコンピューターパワーを必要とするという点です。しかしながら、力技でこのような課題を乗り越えられるのであれば、それは大きな解決策であり、最も手間のかからない解決策でもあります。