マーケターのためのデータマイニング・ヒッチハイクガイド - ロジスティック回帰分析

:::note
本書は2017年4月1日にTeradata Japanのブログに掲載された内容を、再掲載したものです。
掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::


著者 山本 泰史 （やまもと やすし）

# ロジスティック回帰分析  
線形回帰分析が量的変数を予測するのに対して、ロジスティック回帰分析は発生確率を予測する手法です。基本的な考え方は線形回帰分析と同じなのですが、予測結果が0から1の間を取るように、数式やその前提に改良が加えられています。0から1の間ということは、例えば0.4のような確率で予測を行うということになります。そしてそのために従属変数(被説明変数)に2値の質的変数を用いています。例えばある商品の購入有無(Yes or No)のように、2値しかとりえない値を従属変数の実績値として用い、説明変数を用いてその発生確率を説明するという構造になっています。
マーケティングにおける利用可能性としてもっとも大きなものは、顧客がある特定のキャンペーンに対して反応を示すか(Yes)、否か(No)というテーマを他の変数を利用して予測するものです。このときYes/Noという値で得られている変数は1もしくは0という2値のいずれかで示され、この1もしくは0という値を、他の説明変数が決定付けている、もしくは影響を与えているとみなして分析を行ない、数式を構築します。そして得られた予測結果は、0から1の間の確率で与えられます。つまり、独立変数の値を式に代入することによって｢顧客#105は確率0.8で反応するであろう(=確率0.2で反応しないであろう)｣という結果を得ることになります。

# ■利用するデータ
ここではある総合量販店における、子供服のキャンペーンをテーマに取りあげます。この企業では会員カードを発行しており、過去の購買履歴データを用いることにします。変数として｢おもちゃ｣カテゴリーの商品を購入した顧客に1を、購入していない顧客に0を付与した変数｢おもちゃ購入｣を利用します。また同様に、HBCカテゴリーで｢紙オムツ｣を購入した顧客を1、購入していない顧客を0として、この変数を｢紙オムツ購入｣とします。そして予測する変数(従属変数)として、本来販売したい｢子供服購入｣の変数を用意しました(図10)。通常総合量販店において、これらの商品はそれぞれ異なるフロアに陳列されています。一方でこれらの商品を購入する顧客群は、｢小さなお子さんがいらっしゃる｣セグメントとして捉えられ、ある同一の生活ステージに含まれるセグメントとして認識することが可能です。従って、おもちゃの購入、そして紙オムツの購入により、子供服の購入を説明させることは合理的であるように感じます。また、これらに合致する顧客群に対して、子供服のキャンペーン案内をすれば、相対的に高い反応率を得られることも想定できます。
ここで作成されたデータは、元々のレシート明細データから考えた場合、幾つかの処理を経ることによって利用可能となります。おもちゃ、紙オムツ、そして子供服のそれぞれの商品がレシート明細に含まれているか否かを見極め、購入されている場合は1を、そうでない場合は0を付与しています。また、それぞれの世帯のお子さんが既に大きくなっていては意味がありません。例えば過去1年等のデータに絞り込むことが前提となります。他にも考え方としては、それぞれのカテゴリーに対する支出額や来店購入頻度等、反応率の説明に利用可能な変数は幾つか想定可能ですが、ここでは分析手法のイメージを理解いただくことが目的のため、シンプルな例にとどめます。


<img width="600" alt="10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2768546/86be8ec4-cbca-0ea3-b494-7903ba5d53bc.png">



# ■ロジスティック回帰分析の考え方
ロジスティック回帰分析は線形回帰分析同様、説明変数をax + bのような形にします(この例では2変数を用いるためa1x1 +a2x2 + bとなります)。しかしながら分析結果、つまり予測変数として欲しいのは0から1の範囲内に収まる確率値であり、これをy = ax + bで結んだ場合には、このような制限を加えることが出来ません。なぜならy、つまりax + bはいずれの値をもとりうることになるからです。このため、yではなく、yに細工をした形でモデルを構築することになります。マヨネーズのチューブ口にキャップがしてあり、大量にマヨネーズが飛び出ないように工夫がしてありますが、同様のイメージをy = ax + bの左辺に施すと考えていただけると分かりやすいでしょうか。キャップを着けることによって、出てくるマヨネーズは確率の形、つまり0から1の間の値に限定されます。
ロジスティック回帰分析を行うために着けるキャップは、loge{y/(1-y)} = ax + bです。yは購入する確率を意味し、1-yは購入しない確率を意味します。分母に非発生確率、そして分子に発生確率をおいて算出したものを｢オッズ｣と呼び、発生確率が非発生確率の何倍あるかを意味している指標です。そしてloge{}で示される部分の意味合いは｢対数をとる｣、または｢ロジット変換を行なう｣ということになります*7。何故このような仕掛けを施すかは省略しますが、ここではこれによって得られる効果を見ていくことにします。図11をご覧ください。横軸は対数をとった値、つまりloge{y/(1-y)}であり、ax + bです。これに対して縦軸はy、つまり購入確率を意味します。
これは当初の意図通り、ax + bがいかなる値もとり、かつそのときに必ず、yは0から1の間に収束することを表しています。またこの曲線は縦軸が0のとき、横軸は0.5となり、横軸がマイナスから0に近づくにつれてyの値が急激に増加し、xが0からプラスの値へと増加していくにつれてyの値が1に向けて収束していく形になっており、その増加｢率｣は低下します。このような、S字を崩したようなデータの形は例えば細菌の発生から繁殖による隆盛、そして安定に至るプロセスで数多く見られる現象であり、また、人間の学習曲線(例えばテストの点数に見るような)においてもその説明に用いられます。人口の増加と安定もこのような曲線を重ねて導かれています(背後に第1次産業、第2次産業の勃興があったときに、充分な食料と生活レベル向上が実現して安定し、結果繁殖増がもたらされましたが、最終的には増加が頭打ちになる傾向が見られています)。
マーケティングキャンペーンの反応率や、ある商品の普及率などを考える際にも、このような曲線は回帰の対象としてふさわしいものです。例えば何の工夫もない、3%の反応率を持つキャンペーンに手を加えることによって得られるキャンペーン反応率の上昇は、大きなものが期待できます。仮にこのキャンペーン反応率の改善結果が13%であるとします。一方でありとあらゆる手を尽くしてクリエイティブや絞り込み条件を精査し、入念な準備の上に実施された、反応率70%のキャンペーンに、さらに工夫を重ねたとして、どの程度の改善が見込めるでしょうか。同様の10%改善(=80%)が見込めるでしょうか。また、仮に同じ10%の改善が見られたとして、それに伴う努力の幅は同じで済むものでしょうか。商品、例えば電話回線のようなサービスが普及するとき、最初の段階では微増ですが、その後クリティカル・マスを経て加速度的に増加し、続いて一定の普及ボリュームへと収束することになります。このように、多くの発生事象はその勃興時に｢産みの苦しみ｣に直面し、それらを乗り越えることによって繁栄局面へと展開し、ある一定レベルまで成長を遂げると限界に近づきます。このため最終局面における伸びしろ、つまり成長の余地は極めて限定されます。ロジスティック回帰分析は、このようなロジット変換が表す曲線に回帰させることを目的とした分析手法なのです。

<img width="600" alt="11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2768546/3a076552-9782-9154-5b9d-177b559abb97.png">



# ■最も尤もらしい値の導出
最初に明示した数式loge{y/(1-y)} = ax + bを、yについて解くと、y = 1/(1+e-(ax +b))という式になります(証明は冗長になるので省略します)。実測値に最もフィットするようなaとbの組み合わせ(この例ではa1とa2、そしてbの組み合わせ)を求めることになります。線形回帰分析同様、このような組み合わせは無数に存在します。このような作業はコンピューターに任せて行なわれます。得られた結果は、図12のようなa1とa2、そしてbの組み合わせになります。
まず、尤度関数、そして対数尤度関数と呼ばれる値が、もっともらしさ(尤もらしさ)を説明している指標です。これを説明すると、ロジスティック回帰分析の細かい部分まで説明することになるため割愛しますが、対数尤度関数が最大になるようコンピューターは反復解法を繰り返すことになります。そして結果として得られたのがa1、a2、そしてbです。a1とa2の関係を見ると、a1の方(おもちゃ購入)が、最終的な予測値に大きな影響を与えていることが分かります。
そしてこの値を用いて、予測スコアが算出されています。通常、0.78...のような｢いかにも確率らしい｣値が算出されることになりますが、ここではデータサンプルが少なく、また利用しているデータも特殊であるため、0、0.5、1のいずれかとなっています*8。これは直感的理解とも一致するものです。まず、おもちゃと紙オムツの両方を購入していない顧客は1人しかおらず(#101)、この顧客は子供服を購入していません。従って予測確率が0となるのは納得がいくものです。一方、顧客#102と#104は、共に両方を購入しており、そして共に子供服を購入しています。このデータの中では両方購入した顧客は必ず子供服を購入することになり、確率1.0、つまり100%の確率で子供服を購入すると予測するのは納得できるものです。そして最後に、顧客#103と#105です。どちらも同様におもちゃを未購入、紙オムツを購入というデータになっていますが、子供服の購入に関しては結果が分かれています。2人いて、1人は購入、もう1人は未購入ですから、確率0.5(=50%)という結果も納得のいくものです。尚、ここでは作成したモデルを再度#101から#105の顧客に適用し、予測値を得ましたが、実際には作成したモデルを、これ以外の顧客に適用し、予測値を得ることになります。
また、マーケティングの観点からはこのように解釈することも可能です。｢小さなお子さんがいらっしゃる｣セグメントを考えた場合、紙オムツは日常必需品の象徴であり、おもちゃは選択/嗜好型商品の象徴です。子供服はその真ん中に位置すると考えられ、日常必需品の側面と、贅沢品の側面の両方を持ち合わせています。そう考えると、紙オムツの購入だけよりも、紙オムツ+おもちゃ購入の方が強い反応を示すことも、紙オムツのみの購入顧客が子供服をどう捉えるかによって反応が分かれることも合理的に思えます。逆に考えれば、案内するタイミングとクリエイティブメッセージをそれぞれ分けて案内すれば、良い結果を得られるかもしれません。例えば筆者であれば、贅沢品と考えてそれでも来店する、両方購入の顧客層に対しては、新商品や思わずお子さんに着せたくなるようなイメージを訴求して、お子さんを｢可愛らしく着飾らせたい｣という欲求に訴えかけます。一方で日常必需品としての子供服に対して反応する顧客層には、不可欠性の高い衣類をリーズナブルな価格で案内する、ボリュームディスカウントをオファーすることを考えます。もしかしたらこの2つのセグメントは年齢層が異なり、前者はお子さん目線の祖父母にあたり、後者はお子さん目線で父母に相当する顧客群かもしれません。このような類推はデータから得られた知識のみでは得られず、合わせて実務上の知識が不可欠となりますが、少なくともこのようなスコア結果を理解することにより、よりシンプルな形で知識を得られることになり、日常業務のアイデアにつなげることが可能となります。


<img width="９00" alt="12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2768546/2ee8c49a-e529-b196-c57b-4b478643114f.png">



# ■誤判別率
最後に、図12内に記述した誤判別率について説明を加えます。誤判別率はその名の通り、誤った判別をした予測件数が、全予測件数のうちどの程度あったかを表します。算出方法としては分母に全データサンプルの件数(行数)、分子に誤判別したデータサンプルの件数をおいて算出します。そして誤判別の基準としては、確率≧0.5を｢反応する｣、確率＜0.5を｢反応しない｣とみなします。つまり四捨五入を行い、確率で示された予測結果を、2値に振り分けるのです。これに対して実測値が存在するため、予測値と実測値が合致すれば｢正しい判別｣、予測値と実測値が合致しなければ｢誤った判別｣とみなし、この値を合計します。もちろんもっと厳しい基準とる場合も考え方は同じです。上述の例では全データサンプル数が5であり、そのうち、誤判別が1件(#103)存在するため、1/5=0.2(20%)となります。結果的にこの誤判別が0になれば素晴らしいのですが、少なくともこのデータにおいてそれは有り得ません。顧客#105は説明変数において#103と同じデータになっているにもかかわらず、子供服を購入しているからです。現実は常にほろ苦く、データマイニングに利用されるデータにはこのようなケースは数多く存在します。このため誤判別が0になることはまず有り得ないのですが、それでもこの誤判別を最小化できるようにするのが、ロジスティック回帰分析の目的です。

*7: 対数は指数に対する概念です。指数では｢2の3乗は8になる(23 = 8)｣と考えますが、対数においては｢2の何乗が8になるか?｣と考えます。このとき、その答えである3を3 = log28と表します。そしてこのとき3は、｢2を底とする8の対数｣と表現されます。loge{}におけるeは2.71...を意味する定数であり、{}内に含まれる値の、eを底とする対数をを意味します。

また、logeXに用いられる底eは、自然対数の底とも呼ばれ、lnとも表記されます。

*8: ロジット変換された曲線において、正確には確率が0もしくは1の値になることはありません。図11の両端がどこまで続くかと言えば、それは際限なく続きます。逆に確率0もしくは1であるときの横軸の値を考えると、それは-∞(マイナスの無限大)と+∞(プラスの無限大)に発散することになります。上述の計算においても実際には0ではなく、例えば小数点以下の奥深くで0.00000000000000000000000012...のような値が得られますが、その値を表記しても余り意味をなさないため、0としています。





#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)