深層学習のマーケティング適用事例をarXivから漁る

はじめに

深層学習が流行りだして久しいですが、マーケティングにおいて適用することが全くないため、学習のモチベーションを維持する事ができておりません。そろそろアカデミアの領域でマーケティング事例での深層学習の盛り上がりがあるのではないかと期待して、調べてみようと思います。

基本的に各研究ごとに
・目的と結果
・対象となるデータ
・手法の概要
・PDFのリンク
について記していきます。リンクは下の方にある参考情報を参照ください。

調べ方

いったん、皆さんの大好きなarXiv.orgに掲載されている論文の中から、マーケティングに関わりそうなものを見つけます。見つけ方としては、Google検索において、「marketing deep learning site:https://arxiv.org」するものとします。site:コマンドを使うことでarXiv.org以外の情報を弾いて検索できます。

今回紹介する研究

  • Predicting online user behaviour using deep learning algorithms
  • Churn analysis using deep convolutional neural networks and autoencoders
  • Customer Lifetime Value Prediction Using Embeddings

Predicting online user behaviour using deep learning algorithms

目的と結果

大規模ECサイトのユーザー行動からの24時間以内での購買意図の予測を目的としており、ベースラインである既存の手法と比べて、深層学習の手法(Deep Belief Networks・Stacked Denoising auto-Encoders)が予測において勝り、不均衡データの分類においても秀でているという結果となった。

対象となるデータ

  • 6ヶ月間のECサイトのユーザー行動データ
    • ユーザーID

    • タイムスタンプ

    • イベントタイプ

      • 商品のPageView(価格などの詳細データが伴う。商品数は25,000個)
      • カゴのPageView(価格などの詳細データが伴う。)
      • 購入
      • 広告クリック(今回の分析では無視)
      • 広告ビュー(今回の分析では無視)

手法の概要

  • 前処理
    ・購入までのセッション期間
    ・ユーザーごとの購入に対するクリックの比率
    ・購入までのセッション数の中央値
    ・商品の説明文
    ・商品の価格
    ・商品に費やされたセッション時間の合計
    ・セッションが発生した時刻
    ・セッション単位でのクリック数
    ・セッション単位での購入した商品の平均価格
    ・過去24時間でのページビュー数
    ・先週のページビュー数

    • 購入アイテムの説明文に対して、word2vecにより50次元の分散表現を作成しその算術平均をとった。
    • サイトにおいてクリック数が10回以下のユーザーのデータを除外。
    • 特徴量の次元圧縮のためにNMF(Non-Negative Matrix Factorization)を適用。
  • アルゴリズム(評価方法はAUC、10分割交差検証。Kerasで実行。)
    • Deep Belief Networks
      2006年にHintonが提案した教師なし学習アルゴリズム。制約付きボルツマンマシン(RBM)を多数重ねて、最上位層だけ無向でそれ以外は下層への有向エッジを伴うネットワーク。
      RBMよりも複雑なデータ生成の仕組みをモデル化することができるとされている。
    • Stacked Denoising auto-Encoders
      AutoEncoderは出力データが入力データをそのまま再現するニューラルネットワークで、入力層から中間層への変換器をencoder、中間層から出力層への変換器をdecoderと呼ぶ。
      そのAutoEncoderを高次元に写像できるように改良したものがDenoising auto-Encodersと言われています。
      さらに、そのDenoising auto-Encodersを層ごとに学習し積み重ねて教師ありの学習器を繋いだものをStacked Denoising auto-Encodersと呼びます。
    • 決定木
    • ランダムフォレスト
    • Drop outによる正則化
      過学習を避けるために、ランダムに隠れ層や入力層を除いている。

PDFのリンク

Predicting online user behaviour using deep learning algorithms

Churn analysis using deep convolutional neural networks and autoencoders

目的と結果

電話通信業におけるユーザーの解約予測を行うことを目的とし、深層学習を用いた予測の結果、既存手法よりも精度が高いことがわかった。
また、解約予測だけでなく、解約理由を探るに際しての可視化においてもAutoencoderを用いることで理解が深まることが示されている。

対象となるデータ

  • ユーザー情報(おそらく携帯電話会社であるタイのトゥルー・コーポレーションのデータ)
    • データ使用量
      モバイルのプリペイド補充金額
      モバイルのプリペイド補充頻度
      音声通話
      通話時間
      SMSメッセージ
      など

手法の概要

  • ユーザーの情報を画像のように扱う。各々の行が日にちを表し、各々の列がユーザー行動の種類を表す。
  • 二値変数の定義
    解約の定義は30日間行動が観察されなかったかどうか。(解約率は3.57%)
    最後の通話は過去14日間での通話として、最後の14日間に記録のなかったユーザーは分析対象から除外している。プロアクティブな解約予測をするに祭して、すでに解約してしまったと思われる人を除外するということとなる。
  • ユーザー行動を画像のように変換したデータに対してCNN(Convolutional Neural Network)を実行しています。
    CNNの構成としては、
    ・2連続のConvolutional Layer
    ・2×1の最大Pooling Layer
    ・128個のFully Connected Layer
    ・バイナリーな結果を返すsoftmax output
    となっています。
  • 訓練データとテストデータは80:20で分割
  • Docker上で環境を構築
  • オープンソースライブラリとしてはTheano、TensorFlow、Kerasを利用。
  • ユーザー理解のためにAutoencoderを適用している。

PDFのリンク

Churn analysis using deep convolutional neural networks and autoencoders

Customer Lifetime Value Prediction Using Embeddings

目的と結果

手探りで特徴量を構築してきた、既存のCustomer Lifetime Value(CLTV)の算出手法に勝るモデルを作ることを目的とし、十分なデータがあれば、既存の特徴量よりも予測パフォーマンスにおいて秀でていることが示されている。しかしながら、ランダムフォレストを超えるレベルの精度を追求するとニューロンの数を大幅に増やす必要があり、計算コストがかかるため商業的なバリューにおいて懸念がある。

対象となるデータ

  • ユーザー情報(アパレルECサイトのASOS.comのデータ)
    注文数
    注文日の標準偏差
    直近四半期のセッション数
    売り上げ
    など

手法の概要

  • 特徴量の生成
    word2vecを行うに際して、単語の代わりとしてユーザーの商品ビューデータを入力としてニューラルネットワークによる分散表現の生成を行なっている。出力層において、全てのユーザーへのノードがあり、ユーザー数が1億人近くいるため計算が膨大になってしまうが、Negative Sampling(NE)によるSkipGramを行うことで、計算の高速化(近似による計算コストの低減)が図られている。分散表現の次元は32-128次元までが望ましい傾向を示している。
  • Hybridモデルの適用
    既存の特徴量に分散表現を加えた、ロジスティック回帰とのHybridなDNNによるモデルの適用を行なっている。
  • CLTVの研究ながらも、予測し検証する目的変数は解約(12ヶ月購買なし)の有無。
  • 検証用のデータは5万人のユーザーデータ
  • ベースラインとの比較となる評価指標はAUCが使われている。ベースラインはロジスティック回帰とランダムフォレスト。
  • オープンソースライブラリとしてはTensorFlowを利用。GPUはTesla K80を利用。

PDFのリンク

Customer Lifetime Value Prediction Using Embeddings

まとめ

  • ユーザーの行動ログに対して、縦を時間、横にカテゴリとして画像データのように扱うアプローチを知れた。
  • データ数が十分に多そうな企業の適用例が多かったが、扱うデータの規模感が少しわかった。
  • 画像や音声ではなく、ユーザーデータにおいてもDNNでランダムフォレストを超える精度を叩き出せる可能性はあるが、計算コストがかかってしまい商業的なバリューが下がってしまう可能性もある。
  • ログや閲覧したページのコンテンツベースに生成した分散表現を特徴量とするアプローチが3例中、2例あった。

データ量の観点からまだまだ社内での適用は視野に入っていないですが、私のDNN理解も浅いので、今回のような分析事例をモチベーションにして勉強を進め適用可能性を探っていきたいと思います。

参考情報

Chainer v2による実践深層学習
深層学習 (機械学習プロフェッショナルシリーズ)
Stacked Denoising Autoencoderを用いた語義判別
Dropoutの実装と重みの正則化
RBMから考えるDeep Learning ~黒魔術を添えて~
Convolutional Neural Networkとは何なのか

人工知能学会全国大会2017のWebマーケティングで参考になりそうな研究9選

はじめに

今更ではありますが、2017年5月に開かれた人工知能学会全国大会2017の公開資料の中から、私の本業であるWebマーケティングで役に立ちそうな研究を独断と偏見で9本ほど集めてみました。思っていたよりもWebマーケティングぽい領域が多かったので、社内での分析業務におけるアイデアに直結しそうな気がしています。

ちなみに、全ての資料はこちらにあります。

基本的に各研究ごとに
・目的と結果
・対象となるデータ
・手法の概要
・PDFのリンク
について記していきます。

紹介する研究

今回は以下の研究を紹介したいと思います。
「オンライン広告におけるスパース性と遅れコンバージョンを考慮した予測モデル」
「テキストマイニングを用いた転職サイトの会員離脱予測」
「インターネット広告におけるスパースなユーザー行動ベクトルからのユーザー特徴抽出モデル」
「ユーザーのページビュー系列からのコンバージョン予測」
「SNSにおけるユーザの行動のモチベーション要因の分析」
「状況に応じた楽曲推薦に向けたソーシャルデータ分析」
「テキストマイニングを用いた口コミ分析による点数評価の信頼性確認手法」
「不動産仲介マーケティングのためのユーザ行動予測」
「SUUMOでの不動産データ活用の取り組みと未来」

オンライン広告におけるスパース性と遅れコンバージョンを考慮した予測モデル

目的と結果

オンライン広告のCVR予測の精度向上を目的としている。
これまでの課題としては、
「質的変数による特徴量のスパース性」
「広告クリックからのCVまでの期間の長さ(期間が空いてからCVしたりするケースがあるので正例だったはずが負例と扱われる可能性がある)」
などがあった。提案手法により従来手法に比べ高い精度でCVR予測が可能であることが示された。

対象となるデータ

過去3週間分の広告配信データでテスト期間は7日間

手法の概要

  • 次元圧縮
    • Factorization Machine(FM)を用いて、従来のロジスティック回帰では考慮できていなかった交互作用をモデリングし、低次元のベクトル内積に分解して表現している。
  • 遅れCV問題の対応
    • 遅れてCVが発生する事象に関しては、指数分布を用いて遅れてCVする事象をモデリングするDelayed Feedback Modelを構築することで、本当は事後的にCVしそうなユーザーの推定を行っている。
  • 予測
    • これらの手法を合わせた、Delayed Feedback Factorization Machineを構築し、SGD(確率的勾配降下法)やAdaGradを用いてパラメータを推定している。

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/110.pdf

テキストマイニングを用いた転職サイトの会員離脱予測

目的と結果

登録情報や履歴書のテキスト情報を用いて特徴量とし、転職サイトの登録会員の離脱予測を行っている。ブラックボックスでは無い形での結果の解釈ができ、予測精度も高いことが示された。

対象となるデータ

  • 2009年10月1日〜2016年9月28日までの履歴書、職務経歴書、自己PR書、希望条件
  • 離脱会員の定義は「登録して1ヶ月以内に一度も応募しない会員」としている。

手法の概要

  • STEP1:Pythonのmojimojiというライブラリを利用してカナを全角に、数字とアルファベットは半角に変換。
  • STEP2:MeCabを用いて名詞のみ抽出
  • STEP3:「職務」「経歴」「業務」「内容」などを不用語(stop word)とした。
  • STEP4:Grid Searchでパラメータチューニングしたランダムフォレストを用いて変数重要度(Feature Importance)を出し、重要度の上位90%を占める単語以外を削除
  • STEP5:登録情報のデータ(年齢、転職回数、住所)を数値データに変換
  • STEP6:選定した特徴量を用いて決定木アルゴリズムを適用

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/949.pdf

インターネット広告におけるスパースなユーザー行動ベクトルからのユーザー特徴抽出モデル

目的と結果

広告のCTR予測を行う際の特徴量が非常にスパースであることから、ユーザーをクラスタリングして広告配信に効果的なユーザーを抽出することを目的としている。研究ではCVRの高いユーザー群の抽出を可能にしている。

対象となるデータ

  • 2016年6月1日〜2016年6月21日の間のクリックやコンバージョンのデータ(株式会社アイモバイルが提供)
  • クリック実績のある広告数、コンバージョン実績のある広告数、クリックされた広告番号、コンバージョンが発生した広告番号、ユーザー番号など

手法の概要

  • 高次元スパースデータを低次元に落とし込むために、オートエンコーダを用いている。
  • オートエンコーダにより得られた特徴量をもとにユーザーのクラスタリングを行っている。(オートエンコーダは入力された情報をなるべく欠損しないように、効率的に圧縮する構造を持たせたニューラルネットワークのこと。)
  • データにおけるゼロの成分を確率的に欠損とみなして計算処理を早めている。
  • 学習モデルはAdaGrad(学習率を学習に合わせて最適化する手法)
  • 訓練データ(特徴量の数がクリックで23339個、コンバージョンで5619個)にスパースデータ許容型オートエンコーダで500次元まで圧縮し、さらに通常のオートエンコーダで146次元まで圧縮している。
  • 次元圧縮して獲得したデータに対してk-means法でクラスタリングを行い、CVRなどを比較している。

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/12.pdf

ユーザーのページビュー系列からのコンバージョン予測

目的と結果

Web広告において、ユーザーの閲覧履歴からコンバージョンを予測することを目的に、Recurrent Neural Network(RNN)を用いた結果、非時系列のSVMよりもわずかばかりかの精度向上が観察された。データ数が少ない場合はSVMに軍配があがる結果となっている。

対象となるデータ

2016年7月1日〜2016年10月31日の広告の接触履歴データなど(広告の業種別データやユーザーのページビュー数)を特徴量に用いて、2016年11月1日〜11月30日までの期間を予測対象とした。データは株式会社マイクロアドが提供している模様。

手法の概要

  • Long Short-Term Memory RNN(LSTM)
    • ソフトアテンションモデル
      • 可変長の系列に対して内積で重みを算出し、足し合わせることで一部から情報を取り出すモデル。途中の層まで複数業種のデータを用いることで、複数の業種などの情報を共有することができる。(最後の隠れ層には業種別の特徴量を用いている。)
      • 勾配の計算に関してはAdamを用いて、実装はKerasを用いている。活性化関数はTanh、ドロップアウトはGaussianDropout
        としている。
    • RNNで用いる特徴量としては、特定のWebページを640種類に分類して、1日のうちに各トピックにページビューがあったかなかったかを1-0の変数にするなどの前処理を行っている。

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/765.pdf

SNSにおけるユーザの行動のモチベーション要因の分析

目的と結果

SNSユーザーのモチベーションの要因(一ヶ月先に投稿するかどうか)をユーザー同士の関係性(staticな関係)と、そのユーザーの周りのインタラクション(dynamicな関係)という観点から分析し、ユーザー同士の関係性とユーザー周りのインタラクションを同時に用いたモデルにおいて、それらがモチベーションの要因につながりうる傾向が観察された。

対象となるデータ

  • RoomClipという部屋の家具やインテリアの様子の写真を投稿するSNSのデータ
    • 気に入った写真に「いいね」を付けたり、コメントを送れる。
  • 2015年3月の一ヶ月間を学習期間とし、2015年4月の投稿の有無を予測対象とする。

手法の概要

  • ネットワーク特徴量
    • 各ユーザーに対して、
      • 中心性(次数中心性、媒介中心性、近接中心性)
      • クラスタ係数、PageRank、フォロー数とフォロワー数の比率、フォローしているユーザのアクティブ度
  • フィードバック特徴量
    • 特定期間中にユーザが周りのユーザから自身の投稿に対してもらった「いいね」「コメント」に対して
      • 反応の数
      • 反応を行ったユーザの数
      • 反応を行ったユーザのうち、相互フォロー関係にあるユーザからのものの割合
  • 予測器としてSVMを利用

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/534.pdf

状況に応じた楽曲推薦に向けたソーシャルデータ分析

目的と結果

ユーザへの楽曲推薦システムの構築を目的に、楽曲とその再生時の状況の関係を収集したソーシャルデータより分析している。取得したデータのうちの7%ほどではあるが、ツィート情報から楽曲と再生時の状況との関係を抽出可能であるということが示された。

対象となるデータ

2016年8月10日〜2016年9月3日の間に投稿されたツィート(66879件)

手法の概要

  • ハッシュタグ#nowplaying付きのツィートを収集して、アーティスト名や楽曲名や楽曲再生時の状況(同一ユーザの5分前後の投稿内容)を収集
  • 取得したツィートからアーティスト名、楽曲名を除去して再生時の状況を取得
  • 取得したデータからデータベースを作成

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/102.pdf

テキストマイニングを用いた口コミ分析による点数評価の信頼性確認手法

目的と結果

製品などの口コミの評価レビューに関する信頼性を確かめることを目的としている。レビューデータに対して感性評価を行い、さらにその結果に対して総合評価点数別に感性表現(Goodなど)の伴った表現の頻出ランキングを作成することで、点数が高い理由を把握しやすくなった。

対象となるデータ

ソニーの製品サイトにおける、ユーザの製品に対する評価とコメントのデータ(1406件)

手法の概要

  • テキストマイニングスタジオによる感性評価(ポジティブ、中立、ネガティブ)
  • 総合評価点数別(5段階)の「ポジティブ、中立、ネガティブ」の割合の調査
  • 総合評価4の口コミかつ中立な表現にフィルターをかけて、感性情報を有する単語と係り受け関係となった単語の頻度ランキングのTOP10を抽出

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/1115.pdf

不動産仲介マーケティングのためのユーザ行動予測 Prediction of user behaviors for real estate brokerage marketing

目的と結果

不動産紹介業において、顧客の属性情報と来店初期の行動から、来店者が最終的に商品を購買するかどうかの予測モデル(不均衡データにおける予測タスク)を構築することでマーケティングの広告効果測定に適用することを目的としている。結果として、顧客の来店後30分間という短い時間における行動だけでも識別力のある予測が可能であることが示されている。

対象となるデータ

  • オンライン不動産賃貸仲介店舗iettyの顧客データベース
    • 希望物件の情報
      • 引っ越し希望日
      • 住みたいエリアの駅
      • 間取り
      • 広さ
      • 家賃
    • 顧客属性
      • 在住の地域
      • 性別
      • 年齢
    • 行動データ
      • 登録時
        • フォームの記入にかかった時間
        • フリーコメントの長さ
        • 利用デバイス
      • 登録後
        • 初回チャット発言までの経過時間
        • 初回物件評価までの経過時間

手法の概要

  • STEP1:顧客の属性および登録初期(30分以内)の行動から特徴量を作成し、2ヶ月以内に契約すれば正例、それ以外を負例とする。(正例は619件、負例は33212件)
  • STEP2:検証用データを無作為に20%取り置く
  • STEP3:残り80%のデータに対して負例に対する、ランダムアンダーサンプリングと、正例に対するSMOTE(Synthetic Minority Over-sampling Technique)を用いたオーバーサンプリングによりサンプル数を調整する。
  • STEP4:ランダムフォレストを用いて、無効な特徴量の取捨選択や離散化のレンジ調整する。
  • STEP5:全特徴量(83次元)を二値化して、RBFカーネル(Gaussian カーネル)のSVMを適用し、様々なCやγの組み合わせを試行して、二値分類を行う。
  • STEP6:評価を予測確率の平均とAUCの2種類で行う。

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/466.pdf

SUUMOでの不動産データ活用の取り組みと未来

目的と結果

物件検索ユーザーが比較検討を行いやすくすることを目的に様々な取り組みをしている。

対象となるデータ

  • 不動産ポータルサイトSUUMOのデータ
    • 行動履歴(Webサイト、アプリ)
    • 物件情報(不動産情報)
    • 街情報(独自で収集)
    • アンケート

手法の概要

  • 実活用
    • 相場推定
    • 単純な加算平均ではなく、外れ値や時系列変動、データ量などを考慮して推定している。
    • リアルタイム物件レコメンド
    • ランキング学習により推定したモデルを利用し、リアルタイムに計算を行っている。個人ごとにパーソナライズしたランキングも用いている。
    • バンディットアルゴリズムによる配信施策の最適化
    • メールやプッシュ通知などで件名やデザイン、配信時間など様々な選択肢があり、その最適なパターンを見つけるために、バンディットアルゴリズムを適用している。
  • 実験段階
    • 間取り画像の分析
    • ユーザーの求めている間取りが何なのかを画像から抽出しようとしている。
    • ユーザーの検索行動、嗜好の推定
    • ユーザーの検索行動から、嗜好性を掴み取り、レコメンドする際の理由付けができるようにモデルを作ろうとしている。

PDFのリンク

https://kaigi.org/jsai/webprogram/2017/pdf/743.pdf

感想

  • 特徴量の削減のためにランダムフォレストを適用する流れ
  • 高次元スパースデータに対するニューラルネットワークの適用
  • CVの時系列予測のためにRNNの適用
  • SNS分析におけるネットワーク特徴量とフィードバック特徴量という概念
  • 口コミデータ分析の作法(点数別に感性表現の係り受けを見る)
    など勉強になりました。Kaggleと違って日本語なのが読みやすかったですね。

参考文献

初めてのディープラーニング –オープンソース”Caffe”による演習付き
SMOTE で不均衡データの分類

Tokyo.R#53で得たパッケージ情報とその実践

第53回のTokyo.Rで気になったパッケージの情報と実行例をいくつかあげました。スライドなどもろもろの発表はこちらの方のブログ「第53回R勉強会@東京で発表してきた」が非常に詳しく書かれています。

【目次】
・ggradarパッケージ
・proxyパッケージ
・因果推論(CBPSパッケージ)
・MXNetパッケージ
・missForestパッケージ
・RFinanceパッケージ

ggradarパッケージ

簡単にレーダーチャートを作れるパッケージです。こちらのブログを参考にしています。

企業の職場環境に関してまとめられた某口コミサイトから4個ほどデータを拝借してきました。

ggradarをそのまま使おうとすると、Circular Air Lightというフォントが必要だと怒られるので、参考のブログにある通り、OSXの場合はこちらをダブルクリックでインストールして再起動します。

先ほどのデータに対して、以下のコードを実行すれば非常に簡単にレーダーチャートが作れました。

company_voice_radar

proxyパッケージ

距離や類似度を計算するパッケージです。
先ほどのデータに対して類似度と距離を計算してみます。

こんな感じで、類似度や距離の計算ができます。

因果推論

こちらはパッケージとかそういうものではなく、既存の関数などで計算できるようです。
こちらのブログ、「調査観察データにおける因果推論(3) – Rによる傾向スコア,IPW推定量,二重にロバストな推定量の算出」に詳しく書かれています。
・glm関数での傾向スコアの算出
・傾向スコアを共変量としてlm関数で回帰分析
・コードを愚直に書いてIPW推定量の算出
・期待値の標準誤差を出すための関数を作成
・DR推定量の算出をするための関数を作成
などで、推定自体は実現できるようです。

ただし、CBPS(Covariate Balancing Propensity Score)というパッケージがあるらしく、このパッケージを用いれば因果推論の計算を行えるようです。

Package ‘CBPS’
以下のようなExampleコードが載っていたので、実行してみましたが、なかなか結果が返ってこなかったので不安になりました。計算が終わるまで10分以上はかかったと思います。

MXNet

XGBoostのパッケージを作ったチームが手がけているパッケージで、深層学習を実行できます。

インストール方法はここに書かれています。
Deep Learning for R

あれ、OSXではエラーが返ってきてライブラリが読み込めないですね。どうやら私のためにあるようなブログ「Installing mxnet for R on Yosemite」があったので、時間を見つけてチャレンジしてみようと思います。

ディープラーニングを用いた回帰分析については、Neural Network with MXNet in Five Minutesにコードがもろもろ載っていますので、チャレンジしてみると良いと思います。

リンク先に載っているのですが、一応コードを以下に記しておきます。

missForest

ランダムフォレストを用いて、欠損値補完を行うためのパッケージです。目的変数が欠損していても適用できるようです。
詳しくは、スライドを見ていただいた方がいいですが、以下のプログラムで実行できました。ちなみにスライドはこちら、「Imputation of Missing Values using Random Forest

RFinanceYJ

Yohei Sato, Nobuaki Oshiro, Shinichi Takayanagiさんたちが作った、Yahoo!ファイナンスの株価データを取得できるパッケージです。だいぶ前からあったようですが、使って分析している人は初めて見ました。どうやらYahoo!ファイナンスの仕様によって書き換えていかないといけないようです。「2015-01-20 Rでチャートを書いてみる(9)」のブログに実行可能なプログラムがあります。以下、実行可能なコードを転載いたします。

このコードでYahoo!ジャパンの株価を見てみましょう。ちなみに番号は4689です。どうやら上手く取れているようです。

ディープラーニングの基礎まとめ

【目次】
・ディープラーニングとは
・ディープラーニングでできること
・ディープラーニング実行のためのライブラリ
・参考文献

ディープラーニングとは

階層の深いニューラルネットワークを利用したアルゴリズムの総称。
様々なアルゴリズムが存在する。

  • Convolution Neural Network(CNN)
  • 畳み込み層とプーリング層と呼ばれる層を持つニューラルネットワークの総称
    CNNは画像認識に良く利用され、畳み込み層やプーリング層が画像における局所的な情報の抽象化や位置の不変性を持たせる役割を担っています。人間の視野の構造にも近いとされているらしいです。

      畳み込み層
      前の層の中で近くにあるノード同士の集合が、次の層のノードと接続するような構造を持つ層のこと。画像の局所的な部分の特徴を様々な方法で浮き立たせる役割を果たす。

    スクリーンショット 2016-03-05 15.28.10

      プーリング層
      前の層のノードの局所的な部分をまとめあげる処理のこと。局所的な部分の最大化を取る処理は「最大プーリング」と呼ばれる。プーリング層の役目は位置変更への感度を下げることで、小さな平行移動に対する不変性を持たせることにあります。

    スクリーンショット 2016-03-05 15.36.42

  • AutoEncoder
  • 入力層(画像データなどの特徴量)と出力層(判別したいカテゴリなど)が同一のサイズのノードを持つ層となるニューラルネットワークを利用したアルゴリズム。利用する隠れ層は一般的に、入力層や出力層よりも小さいものにするそうです。隠れ層は1層である必要性はなく、複数置くこともできます。AutoEncoderの役割としては、入力層と出力層の値がなるべく同じ値を出力しながら、欠損を極力少なくして、情報を圧縮することです。その結果として、データをよく表す特徴を獲得したり(なんだか主成分分析的なものを感じますね。)、深いネットワークを解く際の初期値を手にいれることができます。圧縮することで、深い階層のネットワークでもうまく計算できるということになります。

    スクリーンショット 2016-03-05 15.57.52

  • Recurrent Neural Network(RNN)
  • 先ほど挙げたCNNやAutoEncoderの前提となるデータは固定長と呼ばれ、つまり画素数などのピクセルが一定のものを値としてとります。しかしながら、画像のデータ以外は固定長データではないものが多いので、扱うことができません。実際、音声の長さやテキストの文字数はデータによってバラバラです。そこで、可変長のデータを扱えるようにしたものが、Recurrent Neural Network(RNN)です。音声認識処理や自然言語処理で利用されているそうです。
    RNNの特徴は、Recurrent(再帰)の字面の通り、隠れ層において再帰的な構造を持つことで前の状態を再び使いながら計算を行うことです。どうして再帰によって可変長が扱えるようになるのかは、理解が追いついていないですが、同じデータの長さでなくても、隠れ層で得た知見を活かせるという仕組みのようです。

    スクリーンショット 2016-03-05 16.34.49

    ディープラーニングでできること

  • 画像認識
  • 不適切なコンテンツ検知
    画像の意味分析
    画像のキャプション
    CLOUD VISION API
    Cloud Vision APIの凄さを伝えるべくRasPi botとビデオを作った話

  • 音声認識
  • iOSのSiriなどに活用されている。従来の手法である隠れマルコフを利用した場合はエラー率が25.8%であったのに対して、ディープラーニングでは16%のエラー率に改善されているそうです。

    CRMのデータとかアクセスログデータにおいての活用に関心がありますが、数は少ないものの、活用している企業はあるようです。ディープラーニングとアクセス解析の事例はググっても出てこなかったのは残念です。
    (基礎調査)Deep Learning は、ビジネス や 産業の現場で どこまで使われているのか?

    ディープラーニング実行のためのライブラリ

    実行するためのライブラリですが、非常に多くのものが用意されているようです。私はTensorFlowやChainerやTheano・Caffe・Pylearn2くらいしか目にしかことはなかったです。インストールも簡単ですし、Pythonを用いるという観点からはChainerが一番興味があります。

    ・TensorFlow
    ・Chainer
    ・Theano
    ・Pylearn2
    ・PyBrain
    ・nolearn
    ・Cuda-convnet2
    ・Torch7
    ・deeplearning4j
    ・Caffe
    ・DeepDream

    ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換) – Over&Out その後

    参考文献

    初めてのディープラーニング –オープンソース”Caffe”による演習付き

    機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料

    OS X YosemiteへのTensorFlowのインストールと簡易な分類モデルの実行

    遅ればせながらTensorFlowをインストールしてみようと思います。
    環境はOSX Yosemite version 10.10.5です。

    まずは、こちらのサイトにあるように、ターミナル(Windowsでいうところのコマンドプロンプト)にて、
    以下のコードを実行します。(前提として、Python2.7とpipが入っているものとします。)

    こちらを実行すれば、インストールされます。

    次に、画像を格納しておくためのディレクトリを作成します。
    同じくターミナルにて以下のコードを実行します。

    次に、こちらのgithubより、MNISTの画像を取得するコードをコピーします。

    コピーしたものを、先ほどのターミナル上で表示されているvimにて、
    i
    を押してからペーストし、Escを押してコマンドモードに移り、
    :wq
    を入力することで上書きしてファイルを閉じます。
    詳しくはvimコマンド一覧をご覧ください。

    そして、ターミナル上でpythonを開き、以下のコードを実行します。

    そうすることで、フォルダが作られデータが格納されていることが確認できると思います。
    だいたい11MBくらいのボリュームです。元の画像は手書き文字で、28×28ピクセルの画素だそうです。

    さて、このデータに対する機械学習による分類の実行ですが、
    TensorFlow 畳み込みニューラルネットワークで手書き認識率99.2%の分類器を構築」こちらで紹介されているコードを丸々引用させていただきます。これの初級者用のロジスティック回帰モデルのものを扱います。(試行回数を1000回から50000回に変更しています。)

    こちらを実行したところ、

    ****MNISTデータ読み込み****
    Extracting MNIST_data/train-images-idx3-ubyte.gz
    Extracting MNIST_data/train-labels-idx1-ubyte.gz
    Extracting MNIST_data/t10k-images-idx3-ubyte.gz
    Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
    ****Start Tutorial****
    ****init****
    ****50000回学習と結果表示****
    0.914

    と試行回数を50000まで増やしても、Qiita初級者向けモデルの1000回試行の0.91と比べてあまり良くなりませんでした。
    紹介されていたQiitaの上級者向けモデルでは0.992まで持って行っていましたので、上級版もチャレンジしてみたいですね。
    勉強しないとここらへんの改良はできないので、今後学習していこうと思います。