この本書は2017年4月1日にTeradata Japanのブログに掲載された内容を、再掲載したものです。
掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
著者 山本 泰史 (やまもと やすし)
顧客分析の手順
第4回: 単一の表の作り方
顧客に関するデータを分析していく上で、データ間の関係が有している複雑さは、データ全体の見晴らしを悪くしてしまいます。前回記述した通り、データ管理上、そしてさまざまな目的に利用するために、汎用性の高い形式でデータが保持されていることについて触れました。これによってさまざまな形式に変換することが可能となり、本来はすごく便利なのですが、特定の目的に沿って分析する場合には一見複雑にも見えます。
分析データセット
このため、顧客分析を実施するという目的において、以下のような前提でデータを準備してみませんか?というのが今回の提案です。それは「各顧客を行に、それぞれの顧客に関する事実を列に配置した、単一の表を前提として顧客分析を実施する」ということです。これをデータマイニングの世界では、「分析データセット:Analytical Data Set」と呼んでいます。
図6 を参照ください。各行には顧客(番号)が配置され、そして各列にはそれぞれの顧客に関する、性別や年齢、売上金額が並んでいます。実施したい分析の対象は顧客なのですから、最初にこのような行、そして列を考え、これを前提に分析を実施したら、分かりやすくなるのではないでしょうか。列に配置しているのは顧客に関するさまざまな事実です。それは属性であったり、指標値であったりします。データマイニングの世界ではこの行を「サンプル」、そして列を各サンプルに関する「変数」と呼びますが、これと同じ方法で、分析対象となるデータを考えることとします。
そしてこの表の列には、幾つも必要な属性や指標値を追加できると考えます。物理的にこのような表を用意して、列を追加しても構いませんし、仮想的にこのような列を考えても構いません。このような形式で常にデータを想定することにより、データそのものをイメージし易くします。余談ですが Teradata のテーブルでこのような表を作成する場合、列数の制限が 2,048 のため、約2,000列毎に表を用意します。つまり、行数 = 自社の顧客数、列数 = 2,000 のテーブルが N個作成され、分析対象として用意されることを意味します。いずれにしても、このようなデータを前提に分析を実施することによって、それぞれの顧客を横並びで比較できるようになります。
変数の作り方
続いて、この列に変数(顧客属性や指標)を流し込むかを考えます。例えば性別であれば、そのままで良いかもしれません。次に年齢。単純化した方が良い場合には年齢層に集約し、より詳細な年齢で理解したい場合には、そのまま利用します。
定量的な指標値の場合、集計の仕方がデータの意味付けを変えていきます。例えば「ある商品A の買上金額」を考えた場合、以下のような変換例が考えられます。
1.商品A 買上金額(500円お買上、変換無し)
2.商品A 買上金額構成比(全商品の買上金額のうち、商品A の買上金額の割合)
3.商品A 買上有無(買上が有ったか、無かったか)
4.買上成長率(任意の連続する 2期間における買上増減率)
5.商品A 買上リフト(全顧客における買上金額平均を分母として、当該顧客の買上金額を把握)
6.2月度買上金額(特定期間に区切った場合の買上金額)
7.セール期間中における買上金額(同上)
8.オンライン買上金額(特定チャネルに区切った場合の買上金額)
9.…
このような例は、理解したい特徴の数だけ存在します。従って、必要な列数は膨大になり得ますし、分析を実施していく中で、さまざまな変数が新たに必要になり、新規に変数を作成しなければならなくなってきます。たとえば、前述した性別と商品A の買上金額を考えた場合、性別と商品A の関連性が気になるかもしれません。その場合、以下の変数を作り変えた方が良いかも…と思われるかもしれません。
商品A 買上リフト(全顧客における買上金額平均を分母として、当該顧客の買上金額を把握)
「例えば男性にしては商品A をよく買う、女性にしては商品A を買わない」という顧客毎の特徴を理解したいのであれば、上記変数を以下のように作り変えます。
商品A 買上リフト(性別毎の買上金額平均を分母として、当該顧客の買上金額を把握)
こういった試行錯誤を分析しながらも実施する場合、最初からこのような形式でデータウェアハウスに保持することが難しいことも、正規形で保持しなければならない理由も分かってきます。それは発生した素のデータをそのまま、重複なく、関連性を維持した形式で管理することにより、このような要求にも柔軟に対処するためです。
このような単一の表をベースにした考え方を実現していくにあたって、元のデータ、そして作られた変数の性質について把握しておく必要があります。このため、次回の連載では、変数の性質について整理することにします。