Comments
Description
Transcript
サイト内広告戦略最適化 - 上智大学 情報理工学部 情報理工学科
サイト内広告戦略最適化 上智大学理工学部情報理工学科4年 チーム いの上2011 井上 綾香 2012/3/26 井上 綾香 1 目次 ■データ概要 ■提案手法 -商品推薦スコア算出法 -SimRankによる類似度算出 -商品に対する評価値算出 ■実データを用いて検証 -計算時間の観点からの工夫 -決定すべきものを推定 -全員を対象に解析 -単純な手法との比較 ■商品推薦スコア利用例 ■ここまでのまとめ・感想・課題 2012/3/26 井上 綾香 2 データ概要 ■ゴルフ・ポータルサイトにおける会員の 「ログ」「購買」「会員情報」データ (2010年7月1日~2011年6月末までの1年分) – ログデータ UserID,セッションID,アクセス日… – 会員データ UserID,性別,生年, ハンディキャップ… – 受注データ UserID,受注日,商品ID… 2012/3/26 井上 綾香 3 GDOショップサイト 「私がGDOさんだったら,どうやって 利益の向上を目指すだろうか?」 会員登録 ↓ 「井上綾香」としてログイン ↓ ショップページ開く・・・ ↓ 顧客ごとの差別化なし ⇒私に合った商品が オススメされていない →もっと私が興味を引く商品の広告を出すべき! →各々の会員に合ったオススメ商品を見つけたい! 2012/3/26 井上 綾香 4 今回の私のメインテーマは「広告戦略最適化」 そのために・・・ 顧客一人一人に合った商品を データから推測する! (⇒結果をサイト内広告に活かしたい) ではどのように? 2012/3/26 井上 綾香 5 提案手法 ■顧客1人1人それぞれに合わせた 商品推薦スコア(商品のオススメ度)を算出する. ①顧客同士の類似度を求める. (類似度としてSimRankを用いる.) ②算出した類似度を用いて,商品推薦スコアを 求める. (計算法は商品推薦スコア算出法を用いる.) 2012/3/26 井上 綾香 6 商品推薦スコア算出法 ■いわゆる協調フィルタリング ⇒顧客ごと商品ごとの嗜好と顧客間の類似度を基に, ある特定の顧客と商品の相性を類推 オレンジ あなたには ○○色が オススメ 青がいい ピンクよ 紫がいい 時代は緑 やっぱ赤 2012/3/26 井上 綾香 7 私 果物屋さんにて・・・ 嗜好がとても似ている 安藤 A 嗜好が似ている 嗜好が似ていない 伊藤 上野 評価 評価 評価 バナナ 6.0 バナナ 2.0 バナナ 1.0 リンゴ 5.0 リンゴ 5.0 リンゴ 2.0 オレンジ 評価なし オレンジ 2.0 オレンジ 3.0 評価の合計 バナナ 6.0 + 2.0 + 1.0 リンゴ 5.0 + 5.0 + 2.0 2.0 + 3.0 オレンジ 参考[1] Toby segaran(當山仁健・鴨澤眞夫訳): 『集合知プログラミング』. オライリー,東京,2008. 2012/3/26 井上 綾香 8 私 果物屋さんにて・・・ 嗜好がとても似ている 安藤 =0.9 A 嗜好が似ている =0.5 伊藤 評価 嗜好が似ていない =0.1 上野 評価 評価 バナナ 6.0×0.9 バナナ 2.0×0.5 バナナ 1.0×0.1 リンゴ 5.0×0.9 リンゴ 5.0×0.5 リンゴ 2.0×0.1 オレンジ 評価なし オレンジ 2.0×0.5 オレンジ 3.0×0.1 評価の合計 バナナ (6.0×0.9 + 2.0×0.5 + 1.0×0.1)÷1.5 リンゴ (5.0×0.9 + 5.0×0.5 + 2.0×0.1)÷1.5 参考[1] Toby segaran(當山仁健・鴨澤眞夫訳): 『集合知プログラミング』. オライリー,東京,2008. オレンジ 2012/3/26 ( 井上 綾香 2.0×0.5 + 3.0×0.1)÷0.6 9 私 果物屋さんにて・・・ 嗜好がとても似ている 安藤 =0.9 A 嗜好が似ている =0.5 伊藤 評価 嗜好が似ていない =0.1 上野 評価 評価 バナナ 2.0×0.5 バナナ 1.0×0.1 6.0×0.9 まず,顧客同士の類似度を求める. リンゴ 5.0×0.5 リンゴ 2.0×0.1 リンゴ 5.0×0.9 ⇒相関係数? オレンジ 2.0×0.5 オレンジ 3.0×0.1 オレンジ 4.0×0.9 ⇒ユークリッド距離? 評価の合計 …多品種少量購入では難しい!! 4.33 バナナ ⇒SimRankを利用 4.80 リンゴ バナナ 参考[1] Toby segaran(當山仁健・鴨澤眞夫訳): 『集合知プログラミング』. オライリー,東京,2008. 3.27 オレンジ 2012/3/26 井上 綾香 1 10 10 0 SimRank ■SimRank:グラフ理論ベースのSimilarity measure 「直接隣接していないノード同士も,その他のノード との関係性から類似していると見なせる」 という概念 安藤 タルト 伊藤 牛肉 上野 パフェ 2012/3/26 二部グラフを基に 類似度を算出 参考[2] Glen Jeh and Jennifer Widom: SimRank: A Measure of Structual-Context Similarity. ACM KDD2002, pp. 538-543. 井上 綾香 1 11 11 1 SimRank タルト 安藤 類似度 ( 安 , 伊 ) 類似度 ( 安 , 上 ) 類似度 ( 伊 , 上 ) 牛肉 伊藤 上野 パフェ 左集合 2012/3/26 類似度 ( タ , 牛 ) 類似度 ( タ , パ ) 類似度 ( 牛 , パ ) 右集合 井上 綾香 1 12 12 2 SimRank 安藤 タルト 伊藤 牛肉 パフェ 上野 左集合 右集合 定義式 ☆S ( A, B ) : AとBのSimRank 𝐶1 𝑆 𝑨, 𝑩 = � |𝑁(𝐴)||𝑁(𝐵)| � 𝑆(𝑖, 𝑗) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) 𝐶1 𝑆 𝑨, 𝑩 = � |𝑁(𝐴)||𝑁(𝐵)| � 𝑆(𝑖, 𝑗) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) C1 , C2 : (0,1] : 減衰定数 N ( A) : Aの隣接頂点 ■再帰的な定義式である 実践的な計算法:べき乗法⇒比較的少ない繰り返し計算 2012/3/26 井上 綾香 1 13 13 3 提案するSimRank:枝重み追加 既存の定義では… 安藤 2本 タルト 安藤 タルト 2本 伊藤 上野 牛肉 伊藤 パフェ 上野 牛肉 パフェ ⇒タルトも牛肉も全体に与える影響力は同じになってしまう…… 2012/3/26 井上 綾香 1 14 14 4 提案するSimRank:枝重み追加 枝重みの値:「ノードの与える影響の強さ」 1 2 1 安藤 伊藤 上野 1 1 2 安藤 タルト 牛肉 ≒ 伊藤 上野 パフェ タルト 牛肉 パフェ ⇒ノードが2個に増加したのと同じような感覚で全体に影響 ⇒枝重みの導入により,ノードの影響力を考慮することが可能に 2012/3/26 井上 綾香 1 15 15 5 SimRank新定義:枝重み追加 安藤 2 2 1 伊藤 1 1 式を・・・ 牛肉 左集合 𝑆 𝐴, 𝐵 = 𝑆 𝐴, 𝐵 = 𝑆 𝑨, 𝑩 = 右集合 𝐶1 ∑𝑖∈𝑁(𝐴) ∑𝑗∈𝑁(𝐵) 𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 𝐶2 ∑𝑖∈𝑁(𝐴) ∑𝑗∈𝑁(𝐵) 𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 枝重みが全て1 = 従来のSimRank 2012/3/26 𝑆 𝑨, 𝑩 = パフェ 1 上野 枝重みを追加 タルト 𝐶1 � |𝑁(𝐴)||𝑁(𝐵)| 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) 𝐶1 � |𝑁(𝐴)||𝑁(𝐵)| � 𝑆(𝑖, 𝑗) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) ↓ � � 𝑆(𝑖, 𝑗) ∙ (𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 ) � � 𝑆(𝑖, 𝑗) ∙ (𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 ) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) ※𝑒𝑖𝑖 : 枝{i,A}の重み 井上 綾香 � 𝑆(𝑖, 𝑗) に拡張!! 1 16 16 6 私 果物屋さんにて・・・ 嗜好がとても似ている 安藤 =0.9 A 嗜好が似ている =0.5 伊藤 済 評価 嗜好が似ていない =0.1 上野 評価 評価 バナナ 6.0×0.9 バナナ 2.0×0.5 バナナ 1.0×0.1 リンゴ 5.0×0.9 リンゴ 5.0×0.5 リンゴ 2.0×0.1 オレンジ 4.0×0.9 オレンジ 2.0×0.5 オレンジ 3.0×0.1 評価の合計 4.33 バナナ 各顧客の各商品に対する評価値を求める. 4.80 リンゴ 参考[1] Toby segaran(當山仁健・鴨澤眞夫訳): 『集合知プログラミング』. オライリー,東京,2008. 3.27 オレンジ 2012/3/26 井上 綾香 1 17 17 7 y:評価値 顧客の1商品に対する評価値算出 同じ物購入 ⇑ こだわり? y = x2 購入した 個数に比例 y=x 同じ物購入 ⇑ 惰性…? y = x1/2 x: 購入個数(個) 2012/3/26 井上 綾香 1 18 18 8 実データによる検証 ※計算プログラムは全て自ら実装 使用言語:Python マシン:iMac(CPU: 3.4GHz Intel Corei7,Mermory:16GByte,OS:MacOS 10.7.3) つまりちょっといい程度のパソコン 2012/3/26 井上 綾香 1 19 19 9 決定すべきもの(1)(2):ノードと枝重み ? (1)顧客 ? 【例】 「購入履歴」 「性別」 … (2)顧客の特徴 … 何回アクセス した顧客? ? 特に!【顧客の特徴】ノードをいかに上手く決めるかで, 顧客同士の類似度が適切な値になるかどうかが決まる!! 2012/3/26 井上 綾香 2 20 20 0 決定すべきもの(3):減衰定数C1,C2 𝑆 𝐴, 𝐵 = 𝑆 𝐴, 𝐵 = 𝑪𝟏 ∑𝑖∈𝑁(𝐴) ∑𝑗∈𝑁(𝐵) 𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 𝑪𝟐 ∑𝑖∈𝑁(𝐴) ∑𝑗∈𝑁(𝐵) 𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 � � 𝑆(𝑖, 𝑗) ∙ (𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 ) � � 𝑆(𝑖, 𝑗) ∙ (𝑒𝑖𝑖 ∙ 𝑒𝑗𝑗 ) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) 𝑖∈𝑁(𝐴) 𝑗∈𝑁(𝐵) ※𝑒𝑖𝑖 : 枝{i,A}の重み C1,C2に0.8もしくは1.0を代入 (どちらのノード集合に重みをもたせる?) 2012/3/26 井上 綾香 2 21 21 1 y:評価値 決定すべきもの(4):評価値算出式 同じ物購入 ⇑ こだわり? y = x2 購入した 個数に比例 y=x 同じ物購入 ⇑ 惰性…? y = x1/2 3つの内どれにする……?? 2012/3/26 井上 綾香 x: 購入個数(個) 2 22 22 2 決定するものの採用基準 ■SimRank計算のために決めなければいけないもの (1)ノード(左集合) (2)ノード(右集合) (3)減衰定数 ■商品評価算出のために決めなければいけないもの (4)多項式(こだわり,惰性,それとも・・・) ⇛推薦スコアと実績の一致度の高い組合せを採用 (一致度:推薦スコアと購入個数の相関係数) 2012/3/26 井上 綾香 2 23 23 3 一致度の測定 ①推薦スコア ⇦ 前半6ヶ月分のデータ ②商品購入実績 ⇦ 後半6ヶ月分のデータ 商品:(中分類×メーカ)の組合せ ⇒相関係数を調べる 2012/3/26 井上 綾香 2 24 24 4 計算の結果最も良かった組合せ 0時 割合×10 … ①顧客 ノード 23時 0 自身のハンデ:0.4 自身のハンデ±1:0.2 自身のハンデ±2:0.1 … 1回以上 サイトに アクセス した会員 55 購入数×2 クラブ× フィラ … 1 ウェア× ナイキ 1 井上 綾香 中分類 × メーカ ②会員特徴 ノード 年代 70以上 男 2012/3/26 ハンデ 10代 … ③減衰定数C1, C2 ⇒0.8,1.0 ④評価値算出式 ⇒y = x アクセス 時間帯 女 性別 2 25 25 5 計算時間に関わる工夫 ■SimRankの計算時間 (理論: O(ノード数2) ,現実:5時間) ⇛ランダム抽出で代用? 多 人数 少 ⇛何人抽出するか? 多 計算時間 少 高 精度 ⇛丁度よい人数で実験を行うべき ■GDOさんになったつもりで考える ①推薦値計算 ⇛一瞬でできるので,都度計算 ②SimRank計算 ⇛一日に一回夜中にやる? ③決定すべきもの ⇛1年に1回程度? ⇛良い組合せ推定は上記の繰り返し (もっと時間がかかる) ⇛ランダム抽出採用 2012/3/26 井上 綾香 低 ユーザに対するリコメンド計算 3日 4日 2日 1日 365日 2 26 26 6 全員分のデータで推薦スコア計算 推薦度30位の中に 購入商品が全て入っている! とある会員の推薦スコアと販売実績 商品購入個数 【結果】 ■計算時間 ⇒ 約4.8時間 ■相関係数 ⇒ 0.2163 商品推薦スコア 2012/3/26 井上 綾香 2 27 27 7 商品推薦スコア利用例 商品ストックにも利用!! 一番おすすめ の商品広告 三番目 二番目におすすめ の商品広告 適した商品の広告記載が可能!! 2012/3/26 井上 綾香 2 28 28 8 メーカー別の検証,中分類別の検証 ■計算時間 ⇒約3.5時間 ■相関係数 ⇒0.2563 ■計算時間 ⇒約3.5時間 ■相関係数 ⇒0.4333 商品購入個数 中分類別 商品購入個数 メーカ別 グラフ入れる 商品推薦スコア 商品推薦スコア 2012/3/26 井上 綾香 2 29 29 9 メーカ&中分類別スコア利用例 二番目に 広告費が 以下がショップサイト画面だとすると… ¥ 高い 一番高い ¥ 1位メーカ 2位メーカ 3位メーカ 4位メーカ 1位中分類 2位中分類 3位中分類 4位中分類 ⇒スコア順に面積比で広告を掲載 2012/3/26 井上 綾香 3 30 30 0 単純な手法と提案手法の比較 単純な手法 提案手法 ■会員同士の類似度計算 ⇒会員間相関係数 (データ:各商品の購入数) ■商品の評価値 ⇒商品購入個数 ■会員同士の類似度計算 ⇒SimRank (データ:各商品の購入数) ■商品の評価値 ⇒商品購入個数 前半半年で商品を購入した会員1028名に対して推薦 ⇒商品推薦度と後半半年の購入商品の相関 計算時間:約35時間 計算時間:約1時間 スコアと実績の相関: スコアと実績の相関: 0.0940 2012/3/26 井上 綾香 0.2275 3 31 31 1 単純な手法と提案手法の比較 単純な手法 提案手法 ■会員同士の類似度計算 ⇒相関係数 (データ:あらゆる要素) ■商品の評価値 ⇒商品購入個数 ■会員同士の類似度計算 ⇒SimRank (データ:あらゆる要素) ■商品の評価値 ⇒商品購入個数 前半半年でサイトに1回以上アクセスした200名に対して推薦×5回 ⇒商品推薦度と後半半年の購入商品の相関(5回分の平均値) 計算時間:約20分 計算時間:約1分 スコアと実績の相関: スコアと実績の相関: 0.0101 0.2132 2012/3/26 井上 綾香 3 32 32 2 まとめ・感想・課題 【まとめ】 □SimRank を用いた類似度推測とそれを利用した商品推薦法を提案・実装・検証 ⇒特に,推測に要する時間と推薦精度のトレードオフを考慮した推薦法を 提案・実装・検証 【解析結果を見た感想】 □より長期間のデータ⇒より良い結果? ・春夏秋冬で購入するものが異なる ・1年に数回セールがある ご清聴ありがとう ございました. 【今後の課題】 ■SimRankを用いた類似度の計算においては枝重みとノードの取り方が重要 ⇒自動的に(人間の恣意を入れず)枝重みを調整 ⇒可能な限り多くのノードを用意し,自動的に集約 ■解析時間のボトルネックとなっているSimRank計算の高速化 ⇒アルゴリズム,プログラミング両面からの改良 2012/3/26 井上 綾香 3 33 33 3 付録 2012/3/26 井上 綾香 3 34 34 4 会員特徴ノード候補選出 ■簡単な集計からわかること ・商品:特定の商品を何個も購入している会員がいる. ・ハンディキャップ:保持者は商品の購入率が高い. ・年代:様々な年代の会員がいる. ・性別:購入率やPV数などに差がある. ・住所:東京都在住の会員が多い. ・リファラ:検索サイトからアクセスした会員の 購入率は高い. ・アクセス曜日:日,月曜日に商品購入する会員が多い. ・アクセス時間:会員ごとにアクセス時間に特徴がある. →これを参考に特徴ノードを選出 2012/3/26 井上 綾香 3 35 35 5 会員特徴ノード候補選出と枝重み調整 アイテムノード(枝重み) 詳細 ①購入商品[メーカ×中分類](個数) {(ナイキ,ウェア), (ブリジストン,用品・小物), (ヤマハ,クラブ),…} {1,2,3,4,7,10,20,30,40,50,60,70,80,90,100, 200,300,400以上} (人数が大体同じように平均をとった値) ②セッション総PV数(1) ③アクセス曜日(アクセス回数) {日,月,火,水,木,金,土} ④アクセス時間帯(アクセス回数) {0,1,2,…,22,23時} ⑤リファラ(アクセス回数) {gdo,google,メール,リファラなし,…} ⑥住所(1) {東京,埼玉,神奈川,…} ⑦年齢(1) {10代,20代,30代,40代,50代,60代,70代以上} ⑧ハンデ(1) {0,1,2,3,…,54,55} ⑨性別(1) {男性,女性} ⇛全ての組合せで推薦スコアと購買実績の相関係数で検証 更に,枝重みに工夫を施して行って良好な組合せを採用 2012/3/26 井上 綾香 3 36 36 6 SimRankの計算時間(理論値) 計算すべきSimRankの値の個数 Ο( n 2 )個 + Ο( m 2 )個 ベキ乗法の1反復にかかる時間 2 2 Ο ( n・ d 2 ) + Ο ( m・ d2 ) ( d : 平均次数) べき乗法のK回の反復にかかる時間 n個 2012/3/26 m個 Ο( Kn 2 d 2 + Km 2 d 2 ) 井上 綾香 3 37 37 7 SimRank計算時間(実験値) 計算時間(秒) 使用言語:Python マシン:iMac(CPU: 3.4GHz Intel Corei7,Mermory:16GByte,OS:MacOS 10.7.3) つまりちょっといい程度のパソコン 顧客ノード数(人) 2012/3/26 井上 綾香 3 38 38 8 相関係数の平均と分散 ※5回実験を行い,平均と分散をとった 顧客ノード数(人) 相関係数平均 相関係数分散 100 0.069 0.0071 200 0.142 0.0004 300 0.109 0.0009 400 0.130 0.0006 500 0.132 0.0008 ⇒200人の顧客をランダムに選び,実験を行うことに決定 このような人数で5回ほど実験を繰り返し,商品推薦スコアと購入商品の相関 を見た.100人と200人の標準変化変量値は5%水準で有意でなく,相関係数の 値が有意に異なっているといえない.100人と500人でも同様.しかし,100人 と200人では相関係数の平均が大きく差があるということから,200人の顧客を ランダムに選んで実験を行う,乱択アルゴリズムを採用することにした. 2012/3/26 井上 綾香 3 39 39 9 計算時間(SimRankべき乗法による反復回数) 縦軸対数グラフ SimRank値誤差 選出顧客人数(人) SimRank値誤差 折れ線グラフ 反復回数(回) 選出顧客人数(人) 反復回数(回) ⇒繰り返し計算は20回が妥当と判断 SimRank計算ではべき乗法を用いた.反復回数も実験により決定した.実験 結果からSimRankの値の反復ごとの差分(の最大値)が少数第三桁代になる 20回を繰り返し回数とした. 2012/3/26 井上 綾香 4 40 40 0