リフト値とは
偶然から予測される値と比べて、どれほど高い頻度で相関(アソシエーション)が発生して(共起して)いるかを表す指標。
主にマーケットバスケット分析で使用することが多く、「Aを購入するならBを購入する」といった場合、Aの購入がどれだけBの購入を促進しているかを把握することができる。
つまり「リフト値が高い」という場合、「Aを購入するときBを買いやすい」ということを示している。
※共起とは、主に自然言語処理で使用する用語。ある文章中に、文字列Aと文字列Bが同時に出現する時、「文字列Aと文字列Bが共起している」と言う。
マーケットバスケット分析とは
- POSデータなどの膨大なトランザクションデータの中から「Aを購入するならBを購入する」といった関連性(アソシエーションルール)を分析するためのアソシエーション分析手法の一つ。
- 最も有名な例は「おむつを買った人はビールを買う傾向がある」という米国におけるマーケットバスケット分析の事例。
- 支持度・確信度・リフト値といった指標を使用して分析する。
- 「Aを購入するならBを購入する」という相関ルールの場合、Aの部分を「条件部」、Bの部分を「結論部」という。
支持度(support)
支持度 =
{P(A \cap B)} =
\frac
{条件部Aと結論部Bを含むデータサイズ}
{全データサイズ}
- トランザクションデータ全体に対する商品A・Bが併売されたバスケット数の割合。
- 支持度が低い(そのルールの出現パターンが少ない)場合は、全体へのインパクトが低いため、そのルールの有用性も低い
- 通常、「支持度がN%以上のルールだけを抽出する」のように足切りを行う
確信度(confidence)
{確信度} =
{P(B|A)} =
\frac{条件部Aと条件部Bを含むデータサイズ}{条件部Aを含むデータサイズ}
- 条件部Aをベースに商品A・Bの併売がどれだけ発生するかの割合。
- 確信度が高いと、条件部Aが発生した時に結論部Bも発生しやすいと解釈できる。
- ただし、そもそも結論部Bの発生率が高い場合は、そのルールに特別有用性が認められないこともある。そのため、後述のリフト値も確認する必要がある。
リフト値(lift)
{リフト値} =
\frac{確信度}{Bの支持度}
{※Bの支持度} =
{\frac{結論部Bを含むデータサイズ}{全データサイズ}}
条件部Aが発生して結論部Bが発生する(商品Aを購入した時商品Bを同時に購入する)割合が、結論部Bが単体で発生する割合に比べてどの程度高いかを表す指標。
リフトが1より大きい場合は、Aが発生するとBが発生しやすくなると解釈することができる。
また、下記計算式でも可能で、
条件部Aと結論部Bが独立して同時に発生する確率を分母として、実際に条件部Aと結論部Bが同時に発生した確率を分子として計算している。
{リフト値} =
\frac{P(A \cap B)}{P(A)・P(B)}
その他での活用例を検討(途中)
以上のように、リフト値とは「条件部Aの発生によって、どれだけ結論部Bの発生頻度を引き上げたか」と解釈できる。
そのため、マーケットバスケット分析以外でも以下のような用途でも利用できるのではないかと考えたためやってみた。
CV貢献度の高いコンテンツの評価(Webマーケティング)
ページXの閲覧が、どれだけCVに貢献しているか(つまり、ページXの閲覧がCV数を引き上げているか)を分析したい。
そこでリフト値を使用して、ページXの閲覧がCV数をどれだけ引き上げたかを分析できるか検討してみた。
具体例
ページ | PV数 | セッション数 | CV数 | CV率 |
---|---|---|---|---|
X | 5,000 | 4,000 | 120 | 3.0% |
全体 | 100,000 | 60,000 | 1,500 | 2.5% |
上記例の場合、条件部A=ページXのセッション数、結論部B=ページX閲覧後CV数とする。
※条件部がPV数でないのは、結論部のCV数がセッション単位であり、単位を合わせる必要があるため。
※上表はXと全体を並列にしているが、XのCV数は「ページXの閲覧後のCV数」を意味し、全体のCV数は「サイトへのアクセス(流入)後のCV数」を意味している。
{確信度} =
\frac{ページX閲覧後のCV数}{ページXのセッション数}
= \frac{120}{4,000}
= 0.03
{Bの支持度}
= \frac{サイト全体のCV数}{サイト全体のセッション数}
= \frac{1,500}{60,000}
= 0.025
{リフト値}
= \frac{確信度}{Bの支持度}
= \frac{0.03}{0.025}
= 1.2
計算すると上記となり、リフト値=1.2より、条件部X(ページXの閲覧)はCV数を少しだけ引き上げていると解釈できる。
なお、計算してみて気づいたが、上記計算は結局のところ下記計算式と同じ結果になる。
{リフト値}
= \frac{ページX閲覧後のCV率}{サイト全体のCV率}
= \frac{0.03}{0.025}
= 1.2
このようにリフト値は簡単に算出でき、リフト値を用いた方がベース(サイト全体や特定のカテゴリ全体など)との比で説明できるため見やすくなる。
また例えばCVポイントが複数ある場合に、ページXの閲覧後のCV_AとCV_Bにおいて、どちらへの貢献度の方が高いかを見る場合も、CV率で見るよりもリフト値の方がわかりやすい。
商品A・Bの併売パターンのカウント方法
DB内のトランザクションデータから直接SQLで併売回数をカウントする場合は、self-joinを使えば一発で抽出可能。
補足
リフト値の他の用途については別途追記予定。