Chapter 5 DMR

予測そのものよりも、ようするに変数重要度を確認したいというのが主な目的の場合(いわゆる「架空の予測問題」を解く場合)、「DMR(distributed multinomial regression)」という手法が便利かもしれません。

5.1 DMR(distributed multinomial regression)

DMR(distributed multinomial regression)は、Taddy (2015) で提案された手法で、雑に言うと多項ロジスティック回帰を高次元のデータでも速くできるようにしたものです。distromというRパッケージから使えます。

DMRはたとえば次のようにして実行します。product_categoryについては順序がないので、ここではダミー変数化しています。

mat <- corp_train |>
  quanteda::corpus() %>%
  quanteda::tokens(what = "fastestword") |>
  quanteda::dfm() |>
  quanteda::dfm_trim(min_termfreq = 100, max_termfreq = 1e4) |>
  quanteda::dfm_tfidf() |>
  as("dgCMatrix")

covars <- corp_train |>
  dplyr::select(product_category, star_rating) |>
  dplyr::transmute(
    pc_video_dvd = dplyr::if_else(product_category == "Video DVD", 1, 0),
    pc_music = dplyr::if_else(product_category == "Music", 1, 0),
    pc_other = dplyr::if_else(product_category == "Other", 1, 0),
    star_rating = as.integer(star_rating)
  ) |>
  as.matrix() |>
  as("dgCMatrix")

cl <-
  parallel::makeCluster(
    max(1, parallel::detectCores() - 1, na.rm = TRUE)
  )

ret <-
  distrom::dmr(
    cl,
    covars = covars,
    counts = mat
  )

parallel::stopCluster(cl)

coefficientsが大きい特徴量を確認します。

coef(ret)["pc_video_dvd",] |>
  sort(decreasing = TRUE) |>
  head(50)
##           声優 ターミネーター           上映           宮崎       吹き替え           監督 
##       4.531380       3.853567       3.516524       3.371827       3.221108       3.103991 
##       キャスト           演技           役者           劇場           娯楽             cg 
##       2.877815       2.752172       2.702536       2.689291       2.685808       2.653322 
##   ラストシーン           観る     リアリティ       シーズン     アカデミー           俳優 
##       2.629915       2.593171       2.582959       2.579233       2.567552       2.539110 
##           脚本           特典           見所         シーン             役           公開 
##       2.459971       2.459964       2.395294       2.330210       2.316472       2.265206 
##           正義   スピルバーグ           放映             館            blu           レイ 
##       2.257692       2.247745       2.216671       2.216081       2.212462       2.203985 
##         ブルー         演じる           吹替           復讐           台詞       ヒーロー 
##       2.180158       2.177377       2.159551       2.138070       2.126201       2.119079 
##         アニメ           戦い       ヒロイン           刑事           戦闘           出演 
##       2.116731       2.106475       2.102385       2.065506       2.058139       2.032843 
##     バットマン     サスペンス       ホームズ           女優           戦争           悪役 
##       2.021464       1.966226       1.959172       1.956910       1.956398       1.918113 
##           恐怖       リメイク 
##       1.916225       1.911121
coef(ret)["pc_music",] |>
  sort(decreasing = TRUE) |>
  head(50)
##             sacd           ビート アコースティック         アルバム             リフ 
##         5.564642         5.460718         4.694369         4.549915         4.387598 
##               lp   ロックンロール             曲調           パンク       ヴォーカル 
##         4.347881         4.296106         4.274276         4.227198         4.200279 
##             必聴       スラッシュ               vo         リスナー         マイルス 
##         4.173485         4.030557         4.028758         3.973202         3.972505 
##         バラード           メタル           ギター             ソロ       ストーンズ 
##         3.840403         3.766170         3.761472         3.700822         3.517525 
##             全曲         ボーカル   レコーディング         メロディ               st 
##         3.487658         3.474896         3.461134         3.441243         3.390878 
##               nd           ポップ               曲             楽曲     プロデュース 
##         3.386917         3.316588         3.303455         3.274317         3.252896 
##             聴く       ギタリスト             楽器           ドラム       メロディー 
##         3.252538         3.170178         3.167700         3.158917         3.147558 
##         シングル           バンド       キャッチー       クラプトン         モノラル 
##         3.107950         3.105368         3.105220         3.091808         3.070800 
##             脱退               rd       カントリー       ビートルズ           ロック 
##         3.049162         3.015861         3.001146         2.993426         2.980474 
##           聴ける           ジャケ             rock           ジャズ         レコード 
##         2.961248         2.952392         2.950065         2.934386         2.841200
coef(ret)["pc_other",] |>
  sort(decreasing = TRUE) |>
  head(50)
##       kindle       atilde          ;&#       アプリ         充電         純正       レンズ 
##     6.335462     6.290259     6.001140     5.752085     5.309685     5.054201     5.015425 
##          usb   バッテリー         接続         著者           ;& インストール         book 
##     4.917993     4.402027     4.238265     4.172025     4.164973     4.081835     3.943654 
##         動作         本体     ケーブル       パーツ       使える           冊         電源 
##     3.942407     3.837859     3.825347     3.705331     3.689106     3.666314     3.598223 
##         便利       ボタン         無料         機能         遊ぶ       ページ       サイズ 
##     3.471980     3.182765     2.996116     2.937164     2.794061     2.704640     2.626639 
##           pc         文章         使用         操作         交換         製品         絵本 
##     2.607167     2.590672     2.539638     2.538409     2.497666     2.463607     2.419834 
##         付属           書           用          was         試す       データ         読む 
##     2.312074     2.310120     2.306234     2.281336     2.270339     2.258409     2.117860 
##        story         表示         貼る           as           式           台         have 
##     2.100581     2.070926     2.042347     2.039030     1.963620     1.926075     1.904731 
##         ヶ月 
##     1.885448
coef(ret)["star_rating",] |>
  sort(decreasing = TRUE) |>
  head(50)
##           最低           駄作           酷い       がっかり         ひどい       中途半端 
##      1.5704273      1.4536477      1.3218056      1.2388505      1.1423510      1.1070474 
##           最悪     つまらない         ゴジラ   インストール           退屈              _ 
##      0.9933692      0.9549500      0.9522552      0.9316276      0.8597217      0.8538243 
##           ダメ           肝心       イマイチ         やめる           声優       メーカー 
##      0.8022930      0.7714719      0.7467446      0.7001536      0.6878111      0.6873070 
##         欠ける       いまいち           無駄         ボンド           不足           怪獣 
##      0.6761385      0.6724465      0.6678372      0.6668025      0.6607413      0.6592544 
##           微妙           失敗           吹替         マニア           売る         コピー 
##      0.6588799      0.6377653      0.6340494      0.6307099      0.5852692      0.5724463 
##       アマゾン           残念             傷           貼る           試す           お金 
##      0.5501947      0.5305893      0.5297553      0.5179530      0.5148472      0.5076761 
##           結局           悪い           販売           全く         なんで             旧 
##      0.5021539      0.4981619      0.4887589      0.4814328      0.4812368      0.4792993 
##       安っぽい           移入           二つ         すぎる ターミネーター         kindle 
##      0.4639137      0.4625728      0.4496884      0.4471619      0.4448238      0.4392495 
##           届く       それなり 
##      0.4369202      0.4345080

References

Taddy, Matt. 2015. “Distributed Multinomial Regression.” The Annals of Applied Statistics 9 (3). https://doi.org/10.1214/15-aoas831.