Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スティーブン・セガール出演作品の邦題に「沈黙」がつくかどうか判別する機械学習モデルを作ろうとしてみた
Search
tama-chang
November 01, 2019
Technology
0
880
スティーブン・セガール出演作品の邦題に「沈黙」がつくかどうか判別する機械学習モデルを作ろうとしてみた
tama-chang
November 01, 2019
Tweet
Share
More Decks by tama-chang
See All by tama-chang
データ分析の世界で今後必要とされる役割 「Purple People」とは
cmtamai
3
2.8k
Transform〜メトリクスレイヤーとは何か? データ分析に必要な「指標」を管理する
cmtamai
0
2.1k
アナリティクスエンジニアとは(What is Analytics Engineer)
cmtamai
1
8.8k
DWH御三家の各特徴と選び方〜SnowflakeとBigQueryとRedshiftと〜
cmtamai
0
9.6k
禁忌解放~TableauとLookerを連携して究極のBI環境を召喚する
cmtamai
0
3.3k
Lookerはじめの一歩
cmtamai
0
2.2k
Snowflakeはじめの一歩
cmtamai
2
2.5k
osaka_tamai.pdf
cmtamai
0
1.8k
スティーブン・セガール出演作品の邦題に「沈黙」がつくかどうか判別する機械学習モデルを作ろうとしてみた
cmtamai
0
1.4k
Other Decks in Technology
See All in Technology
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
17
16k
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
850
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
Qiita埋め込み用スライド
naoki_0531
0
5.1k
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
130
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
310
5分でわかるDuckDB
chanyou0311
10
3.2k
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
490
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
Featured
See All Featured
BBQ
matthewcrist
85
9.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
A better future with KSS
kneath
238
17k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Fireside Chat
paigeccino
34
3.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing for Performance
lara
604
68k
Practical Orchestrator
shlominoach
186
10k
Transcript
スティーブン・セガール出演作品の邦題に 「沈黙」がつくかどうか判別する機械学習モ デルを作ろうとしてみた データアナリティクス事業本部 玉井励
スライドは後で入手することが出来ますので 発表中の内容をメモする必要はありません。 写真撮影をする場合は フラッシュ・シャッター音が出ないようにご配慮ください
3 ハッシュタグ イベント全体について #cmdevio この部屋のセッションについて #cmdevio4
4 自己紹介 玉井 励(タマイ レイ) • データアナリティクス事業本部 • 大阪オフィス勤務 •
今日は出張で東京に来ました • 3日後にはアメリカ出張 人生のモットー • 群れない 媚びない 頑張らない
5 空前の機械学習ブーム
6 空前の機械学習ブーム
7 機械学習をやるために必要そうなもの
8 機械学習をやるために必要そうなもの
9 勉強できそうな本もたくさん
10 技術的なことはわかってきた
11 でも、これらの技術を実際に使ってみた話は あんまり聞いたことがない?
12 今日は機械学習を実際にやってみた話をします
13 本日お話すること
14 本日お話すること • 機械学習を使ったデータ分析プロジェクトをやって みたという経験談 • Alteryx • Amazon Rekognition
• スティーブン・セガールに関する簡単な説明
15 Alteryx?
16 Alteryx Designer
17 本日お話しないこと
18 本日お話しないこと • Alteryxの詳しい説明 • 機械学習に関する高度な説明 • データ分析におけるベストプラクティス • インフラについて
• スティーブン・セガールに関する詳しい説明
19 「やってみた」という物語~沈黙の分析
20 仕事ではじめる機械学習 めちゃくちゃ 参考にしました
21 書評も書きました https://dev.classmethod.jp/book-review/donated-book-machine- learning-to-begin-with-work/
22 機械学習でデータ分析する時の流れ
23 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
24 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
25 ビジネスだったら • ECサイトの売上をあげたい • 工場の消費電力のコストを下げたい
26 ビジネスだったら • ECサイトの売上をあげたい • ECサイトの売上を上げるために、ユーザー毎におすすめ商 品を提示する • 工場の消費電力のコストを下げたい •
工場の消費電力を最適化するために、消費電力を予測する
27 問題を定式化する 今回は?
スティーブン・セガール出演作品の邦題に 「沈黙」がつくかどうか判別する機械学習モ デルを作ろうとしてみた (再掲)
29 セガール映画の邦題 主演作の邦題には「沈黙の~」で始まるものが多いため、 まとめて『沈黙シリーズ』と呼ばれることが多いが、実 際のシリーズ作は『沈黙の戦艦』とその続編『暴走特 急』(シリーズ原題『Under Siege』)のみである。他 は日本国内での配給権を得た会社が、配給会社にかかわ らず、原題とは無関係に「沈黙の~」としているにすぎ ない。
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82% A3%E3%83%BC%E3%83%B4%E3%83%B3%E3%83%BB%E3%82% BB%E3%82%AC%E3%83%BC%E3%83%AB
30 問題を定式化する • スティーブン・セガールが出演する映画で、「沈 黙」がつくのは、どういう作品になるのか知りたい • スティーブン・セガールが出演する映画で、まだ邦 題がついていない作品に、もし邦題がつくとしたら、 「沈黙」がつくかどうか知りたい
31 問題を定式化する セガール映画のデータを元に、 邦題に「沈黙」がつくかどうか予測する
32 こういう人もいるかもしれない スティーブン・セガールって?
33 スティーブン・セガールについて スティーヴン・フレデリック・セガール(Steven Frederick Seagal / 1952年4月10日 - )は、アメリ カ合衆国の俳優で、テキサス州ハズペス郡保安局の執行
官、武道家。合気道七段。 https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82% A3%E3%83%BC%E3%83%B4%E3%83%B3%E3%83%BB%E3%82% BB%E3%82%AC%E3%83%BC%E3%83%AB
34 スティーブン・セガールについて 17歳の時から10年以上大阪府に滞在していたため、日 本語が堪能。千葉真一と親交があり、千葉がハリウッド に拠点を移してからは、セガールが流暢な大阪弁で「千 葉先生、居てはりまっか?」などと、頻繁に千葉へ連絡 している。淀川長治とも日本語で対談を行い、淀川の 「日本語がお上手ですね」に対してセガールは「恐れ入 ります」と応えた。 https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%
A3%E3%83%BC%E3%83%B4%E3%83%B3%E3%83%BB%E3%82% BB%E3%82%AC%E3%83%BC%E3%83%AB
35 スティーブン・セガールについて 遅刻と早退の常習犯で、『沈黙の脱獄』と『沈黙の傭 兵』を製作したキル・マスター・プロダクションと ニュー・イメージから、映画製作を遅らせたとして訴え られた。その訴訟内容の中には脚本の勝手な書き換えや、 取り巻き連中による撮影の妨害という内容まである。 https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82% A3%E3%83%BC%E3%83%B4%E3%83%B3%E3%83%BB%E3%82% BB%E3%82%AC%E3%83%BC%E3%83%AB
36 スティーブン・セガールの受賞歴 ゴールデンラズベリー賞 • 最低監督賞:受賞『沈黙の要塞』、最低作品賞:ノミネート『沈黙の要塞』、 最低主演男優賞:ノミネート『沈黙の要塞』(1994年) • 最低助演男優賞:ノミネート『エグゼクティブ・デシジョン』(1996年) • 最低主演男優賞:ノミネート『沈黙の断崖』、最低主題歌賞:ノミネート『沈
黙の断崖』、最低作品賞:ノミネート『沈黙の断崖』、最低スクリーン・カッ プル賞:ノミネート『沈黙の断崖』(1997年) • 最低主演男優賞:『奪還 DAKKAN -アルカトラズ-』(2002年) https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%A3% E3%83%BC%E3%83%B4%E3%83%B3%E3%83%BB%E3%82%BB%E3 %82%AC%E3%83%BC%E3%83%AB
37 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
38 機械学習以外の方法を考える 機械学習(をビジネスに組み込むの)は難しい • (予測に対して)必ず一定の間違いが発生する • モデルをずっとメンテナンスし続ける必要がある • 機械学習を用いたシステムは技術的負債が蓄積しやすい •
そういう論文があります • https://ai.google/research/pubs/pub43146
39 機械学習以外の方法を考える 目的は「問題を解決すること」
40 機械学習以外の方法を考える • 機械学習自体が目的ではない • 例えばBIツール等でデータを分析してみて、それで問題解決へのア クションが分かればそれに越したことはない
41 機械学習以外の方法で予測してみた例 2010年代から全部「沈 黙」がついている →今後の作品も全部 「沈黙」がつくので は?
42 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
43 機械学習の種類 • 分類 • 回帰 • その他
44 分類 • このメールはスパムかどう か? • この画像は犬か猫か? • 教師あり学習 •
入力データとそれに対する正 解カテゴリ(クラス)をもと に学習し、未知のデータに対 してカテゴリを予測する
45 回帰 • 来年の売上を予測したい • うちのWebサイトのアクセス 数はどうなる? • 教師あり学習 •
入力データとそれに対する正 解の数値をもとに学習し、未 知のデータに対して数値(連 続値)を予測する
46 強化学習
47 その他 • クラスタリング • 次元削減 • 推薦 • 頻出パターンマイニング
• 異常検知(outlier detection) • …など
48 アルゴリズムを選定する 今回は?
49 アルゴリズムを選定する 「沈黙」がつくかどうか
50 アルゴリズムを選定する 分類です
51 分類のアルゴリズム • ロジスティック回帰 • サポートベクターマシン • ニューラルネットワーク • 決定木
• ランダムフォレスト • …などなど
52 アルゴリズムを選定する 複数のアルゴリズムを併用して 一番結果が良いものを選択する
53 今回はこの4つを試したいと思います • ロジスティック回帰 • ニューラルネットワーク • 決定木 • ランダムフォレスト
54 ロジスティック回帰とは • シンプルなアルゴリズム • 予測性能はそこそこ • 学習速度が速い • (予測時に)確率が出る
• Google Mapの駐車場の空き 具合推定に使われている • https://ai.googleblog.com/2017/02/u sing-machine-learning-to- predict.html
55 ニューラルネットワークとは • 脳の神経回路の情報伝達の方 法から着想を得たので、この 名前(らしい) • 学習速度は遅め • GPUを活用することで改善
• パラメータの数が多い • チューニングが難しい • 過学習しやすい • これがめっちゃ進化したのが ディープラーニング
56 決定木とは • ツリー型のアルゴリズム • 人間がみて理解しやすいモデ ル • IF文が連発してる感じ •
過学習しやすい • 「枝刈り」という手法で対策
57 ランダムフォレストとは • 決定木をの応用版 • 決定木を複数並行で行い、結 果を多数決で統合する • 決定木より予測性能は高い (といわれている)
• 過学習しやすい • 「枝刈り」がない(しない)
58 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
59 特徴量、教師データとログの設計をする どんなデータをどこからとってきて どういう形にするべきか
60 ざっくり考えてみる… • スティーブン・セガールが出演した映画のデータ • 出演者 • 公開年 • ジャンル
• 上映時間 • …など • 邦題も必要
61 データ取得先の候補 TMDb API OMDb API
62 The Movie Database API (TMDb API) • APIでデータをとってこれ る
• 無償(重要) • 特徴量として使えそうな データが少なめ • https://www.themovied b.org/
63 The Open Movie Database API(OMDb API) • APIでデータをとってこれ る
• 無償(重要) • 特徴量として使えそうな データが多め • http://www.omdbapi.co m/
64 OMDb APIに決定しそうな勢いだったが… OMDb APIは必ず作品名か IMDbのIDを投げないといけない
65 どういうことか 理想はリクスエストパラメータに「Seagal」とか投げ て、セガール映画のデータを一気に取りたかった • OMDb APIはそれができない(タイトルかIMDb IDがい る) •
セガール映画のIDリストを別途用意して、それをもとに OMDb APIに投げる必要あり
66 セガール映画のIMDb IDを一気に取得したい TMDb APIで可能
67 データ取得先の候補 2つのAPIを両方使うことに決定
68 次の問題 邦題はどうする?
69 Wikipediaをスクレイピングせざるをえない
70 APIのデータとWikipedia(邦題)データ 「原題」で結合する
71 まとめ • TMDbのAPIからスティーブン・セガールが出演した 映画のIMDbのIDを取得する • OMDbのAPIからスティーブン・セガールが出演した 映画のデータを取得する • スティーブン・セガールのWikipediaから原題と邦題
のデータを取得する • 上記2つのデータを「原題」で結合する
72 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
73 前処理をする • TMDbのAPIからスティーブン・セガールが出演した 映画のIMDbのIDを取得する • OMDbのAPIからスティーブン・セガールが出演した 映画のデータを取得する • スティーブン・セガールのWikipediaから原題と邦題
のデータを取得する • 上記2つのデータを「原題」で結合する
74 /discover/movie • /discover/movie • ここに欲しい映画に関す るワードをリクエストに 投げれば、IMDb IDがレ スポンスとして取得でき
る
75 リクスエストパラメータ セガールの名前ではなくIDが必要
76 /search/person • /search/person • queryに「seagal」と投げ てセガールのIDを取得す る
77 ついにAlteryxが登場
78 1.セガールID取得ワークフロー
79 1.セガールID取得ワークフロー
80 1.セガールID取得ワークフロー
81 1.セガールID取得ワークフロー
82 2.セガール映画データ取得ワークフロー
83 2.セガール映画データ取得ワークフロー セガールIDを使用して セガール映画のIMDb IDを取得
84 2.セガール映画データ取得ワークフロー
85 2.セガール映画データ取得ワークフロー セガール映画のIMDb IDを使用して セガール映画のデータを取得
86 2.セガール映画データ取得ワークフロー
87 2.セガール映画データ取得ワークフロー
88 2.セガール映画データ取得ワークフロー
89 前処理をする • TMDbのAPIからスティーブン・セガールが出演した 映画のIMDbのIDを取得する • OMDbのAPIからスティーブン・セガールが出演した 映画のデータを取得する • スティーブン・セガールのWikipediaから原題と邦題
のデータを取得する • 上記2つのデータを「原題」で結合する
90 3.セガール映画の邦題取得ワークフロー
91 Dashblock Webサイトの任意の値を API化して取得できるア プリケーション https://dashblock.com/
92 3.セガール映画の邦題取得ワークフロー DashblockでWikipediaのデータを API化し、そこからGET
93 3.セガール映画の邦題取得ワークフロー 取得したJSONを整形
94 3.セガール映画の邦題取得ワークフロー
95 前処理をする • TMDbのAPIからスティーブン・セガールが出演した 映画のIMDbのIDを取得する • OMDbのAPIからスティーブン・セガールが出演した 映画のデータを取得する • スティーブン・セガールのWikipediaから原題と邦題
のデータを取得する • 上記2つのデータを「原題」で結合する
96 3.セガール映画データと邦題の結合ワークフロー
97 3.セガール映画データと邦題の結合ワークフロー 原題で結合
98 3.セガール映画データと邦題の結合ワークフロー 想定以上に結合漏れする映画が発生 (数十件)
99 どういうことか API側とWikipediaで大文字と小文字の表記が異なっ ていた • 「Above the Law」と「Above The Law」など
• 双方とも全て大文字に変換してから結合することで対策
100 3.セガール映画データと邦題の結合ワークフロー それでも結合漏れする映画が発生
101 1つづつ確認していく そもそも日本未配給だった(要するに邦題がない) • Get Bruce! • The Unbeatable Bruce
Lee • How to Blow Up a Helicopter (Ayako's Story) • Sheep Impact • The Joe Show • 80’s Blockbusters: When Hollywood Played Tough
102 本来結合するべきはずの映画たち Urban Justice • 原題は「Renegade Justice」(Wikipediaはこっち) • しかしアメリカ版DVDだけ「Urban Justice」(API側は
こっち) • ちなみに邦題は「沈黙の報復」
103 本来結合するべきはずの映画たち Cartels • 英語版Wikipediaの説明文 • Cartels also known as
Killing Salazar[1] is a 2017 action film starring Steven Seagal and directed by Keoni Waxman. • セガールの日本語Wikipediaには「Killing Salazar」とい う映画が記載。99%とこの作品と判断。 • ちなみに邦題は「キリング・サラザール 沈黙の作戦」
104 この2作品はどうする? 面倒なので出力したcsvを直接編集した
105 3.セガール映画データと邦題の結合ワークフロー 邦題に「沈黙」を含んでたらTrue
106 3.セガール映画データと邦題の結合ワークフロー
107 これでデータは揃った…? まだ前処理は終わらない
108 機械学習の前処理として避けられない • ダミー変数(化) • 欠損値の補完 • 正規化
109 ダミー変数とは 題名 脚本 Above the Law Andrew Davis (story)
Hard to Kill Steven McKay Marked for Death Michael Grais Out for Justice R. Lance Hill
110 ダミー変数とは 題名 脚本_Andrew Davis (story) 脚本_Steven McKay … Above
the Law 1 0 … Hard to Kill 0 1 … Marked for Death 0 0 … Out for Justice 0 0 …
111 欠損値とは • 一言でいうとNULLのこと • NULLがあると学習が回らない • 補完する必要がある • 手法はいろいろ…
• 平均を代入する • 中央値を代入する • 最頻出値を代入する • 任意の固定値を代入する • …などなど
112 正規化とは データ等々を一定のルール(規則)に基づいて変形し、 利用しやすくすること。 • by Wikipedia • 例えば身長と体重は純粋に数字だけで比較できない •
同じ粒度に変換して、計算や比較を行いやすいようにする
113 欠損値補完、正規化、ダミー変数化するWF
114 欠損値補完、正規化、ダミー変数化するWF
115 欲張り屋さんなんだから~ 気になるデータがまだ2つあります
116 学習に使えそうな2つのデータ • 映画のあらすじ • 文章データ • ポスター画像(のURL) • 画像データ
117 学習に使えそうな2つのデータ
118 これらを学習に使うためには? • 映画のあらすじ • 自然言語処理 • ポスター画像(のURL) • 画像認識
119 二兎追う者は一兎も得ず (時間的にもスキル的にも) どちらか一方しかできない
120 二兎追う者は一兎も得ず ポスター画像から学習に使えそうなデータを とってくることにしました
121 理由 • 日本の配給会社は映画の内容と関係なく「沈黙」をつけて いる • 「映画のあらすじ」は映画の内容を表しているデータなの で、今回の学習・予測には不適格と判断
122 ポスター画像から何をデータとして取り出すのか • 前作(「沈黙の分析2」@大 阪)で下記の発言をした • 「ポスター画像内でセガール の顔が占める割合」が大きい ほど「沈黙」がつくのでは …?(沈黙の仮説)
※TMDB APIから取得したポスター画像(沈黙の追撃) https://m.media-amazon.com/images/M/MV5BMjM2MjAyMDUzMl5BMl5BanBnXkFtZTgwNTMxNjAwNzE@._V1_SX300.jpg
123 沈黙の画像 セガール映画のポスター画像の中で セガールの顔が占める割合を計算し そのデータを学習データをして使用する
124 Amazon Rekognition
125 有名人の認識 ※TMDB APIから取得したポスター画像(沈黙の追撃) https://m.media-amazon.com/images/M/MV5BMjM2MjAyMDUzMl5BMl5BanBnXkFtZTgwNTMxNjAwNzE@._V1_SX300.jpg
126 沈黙の画像認識 全画像に一括で「有名人認識」を 実行すればすぐ終わるやん
127 沈黙の画像認識 そうは問屋が卸さなかった
128 複数のケースが発生 • セガールと認識された+写ってる人間が1人 • セガールと認識された+写ってる人間が複数 • セガールと認識されないが顔としては認識された+写って る人間が1人 •
セガールと認識されないが顔としては認識された+写って る人間が複数 • セガールと認識されない+そもそも顔自体が認識されない • 別の有名人と認識されたが、よく見たらセガールだった
129 複数のケースが発生 • 取得できるデータはJSON形式 • データだけではどれがセガールか分 からないケースが出てきた • SDKやAWS CLIを使用した場合、
画像自体は確認できないため
130 セガールと認識された+写ってる人間が1人 • そこに写っているのはセ ガール本人であると判断 • 取得したデータをそのま ま使用する ※TMDB APIから取得したポスター画像(沈黙の追撃)
https://m.media-amazon.com/images/M/MV5BMjM2MjAyMDUzMl5BMl5BanBnXkFtZTgwNTMxNjAwNzE@._V1_SX300.jpg
131 セガールと認識された+写ってる人間が複数 • セガールと判断された データはセガール本人で あると判断(信用する) • セガール部分のデータを そのまま使用する ※TMDB
APIから取得したポスター画像(弾突 DANTOTSU) https://m.media-amazon.com/images/M/MV5BMTY0MjM0OTQ4OV5BMl5BanBnXkFtZTcwODg4NjI5MQ@@._V1_SX300.jpg
132 セガールと認識されないが顔としては認識された+写ってる人間が1人 • 画像を目視してセガール 本人であることを確認 • セガール本人と確認でき たものはそのままデータ を使用する ※TMDB
APIから取得したポスター画像(沈黙の激突) https://m.media-amazon.com/images/M/MV5BMTQ2ODkyODAyM15BMl5BanBnXkFtZTgwNjY0NjAwNzE@._V1_SX300.jpg
133 セガールと認識されないが顔としては認識された+写ってる人間が複数 • 画像を目視してどれがセ ガールなのか確認 • セガール本人と確認でき たデータを使用する ※TMDB APIから取得したポスター画像(沈黙の帝王)
https://m.media- amazon.com/images/M/MV5BNzZlYWNmYzItMTVlMC00MDNlLWI3MzEtNGE1Njg4ZmZiMWYzXkEyXkFqcGdeQXVyMjE4ODM 4MjI@._V1_SX300.jpg
134 セガールと認識されない+そもそも顔自体が認識されない • 「顔の分析」という別の 機能を使用 • 複数人が写っている場合 は、画像を目視してどれ がセガールなのか確認 •
セガール本人と確認でき たデータを使用する ※TMDB APIから取得したポスター画像(沈黙の粛清) https://m.media- amazon.com/images/M/MV5BMGI1ODNkYTQtZGM5YS00Y2NkLWJhZDQtMWQ2MzkxOGVjOGViXkEyXkFqcGdeQXVyMjMzMz Y4Njk@._V1_SX300.jpg
135 顔の分析 ※TMDB APIから取得したポスター画像(沈黙の粛清) https://m.media- amazon.com/images/M/MV5BMGI1ODNkYTQtZGM5YS00Y2NkLWJhZDQtMWQ2MzkxOGVjOGViXkEyXkFqcGdeQXVyMjMzMz Y4Njk@._V1_SX300.jpg
136 別の有名人と認識されたが、よく見たらセガールだった • データとしてはBruce Maimuth氏として認識 • 念の為目視で確認 • どう見てもセガールやな いかい
• セガールのデータとして 使用 ※TMDB APIから取得したポスター画像(ハード・トゥ・キル) https://m.media-amazon.com/images/M/MV5BMTc4NzE1NTU5N15BMl5BanBnXkFtZTgwNTgwNTg4NjE@._V1_SX300.jpg
137 沈黙の画像認識のまとめ • 有名人認識でセガールを認識されなかったものは、ほとん ど目視で確認 • セガールの顔エリアの縦×横の値を取得した後、下記の計算 を行う • (セガールの顔エリアの縦×横)/(ポスター画像の縦×
横)
138 沈黙の画像認識ワークフロー
139 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
140 沈黙予測モデル作成ワークフロー
141 沈黙予測モデル作成ワークフロー サンプルデータだけ抽出 ※詳細は後述
142 沈黙予測モデル作成ワークフロー
143 ロジスティック回帰ツール 目的変数 (予測したい値) 説明変数 (予測に使用する変数)
144 ロジスティック回帰ツール 目的変数 (沈黙フラグ) 説明変数 (出演俳優とかジャンル とか…)
145 ロジスティック回帰ツール よくわかんないので全カラム指定してみた
146 ロジスティック回帰ツール
147 ロジスティック回帰ツール エラー
148 ロジスティック回帰ツール データ数に対して説明変数が多すぎると うまく学習できないらしい
149 ロジスティック回帰ツール データ数に対して説明変数が多すぎると うまく学習できないらしい
150 そもそもデータ数ってどれくらいいるのか? https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
151 そもそもデータ数ってどれくらいいるのか?
152 そもそもデータ数ってどれくらいいるのか?
153 そもそもデータ数ってどれくらいいるのか? 54件は少なすぎでしょ…
154
155 沈黙の復活 さすがにここでは終われないので 無理やりにでも続けます
156 ロジスティック回帰ツール データ数に対して説明変数が多すぎると うまく学習できないらしい
157 説明変数を極端に減らしてみると成功
158 ロジスティック回帰ツール どの説明変数をどれだけ指定するのが ベストなのか?
159 p値が低すぎる説明変数を省く • データが偏りすぎている変数は省く • 1が一つしかないダミー変数とか • p値が高すぎる説明変数を省く • 手法がいくつかあります
160 p値が低すぎる説明変数を省く • データが偏りすぎている変数は省く • 1が一つしかないダミー変数とか • p値が低すぎる説明変数を省く • 手法がいくつかあります
161 p値が低すぎる説明変数を省く AIC(赤池情報量基準)を使用する • 統計学者の赤池弘次氏が考案 • そのモデルのAICが小さいほど、そのモデルの精度は良い と評価できる • 説明変数を選択する基準によく用いられる
162 AICはいいんだけど… 「p値が一番大きい変数を1つずつ外してはAIC を確認…外してはAICを確認…」 面倒そう…
163 AICはいいんだけど… Alteryxは自動でできる
164 ステップワイズツールを投入する
165 ステップワイズツールを投入する 基準はAIC、p値が大きい ものから減らしていく方 法を指定
166 ついにロジスティック回帰成功か? これでいけるか?
167 ついにロジスティック回帰成功か? エラー
168 ついにロジスティック回帰成功か? いくらステップワイズツール入れても やっぱり説明変数多すぎるらしい
169 どっちの対策もやることに • データが偏りすぎている変数は省く • 1が一つしかないダミー変数とか • p値が低すぎる説明変数を省く • 手法がいくつかあります
170 データが偏りすぎている変数は省く • 俳優系のダミー変数はほぼ全部偏っていた • 大体、一度しか出演してない俳優 • (当然ながら)逆にセガールは全部出ている • 公開国のダミー変数もほぼ全部偏っていた
• 逆にアメリカはほとんど全部公開国 • 脚本家とかもほとんど全部偏っていた • …など
171 説明変数の選択 偏っているか微妙なデータはどうする?
172 説明変数の選択 センス
173 データに対する知見は絶対必要 • もちろんグラフ等で偏りをしっかり確認するのは大事 • しかし、データに対する知見(センス)も必要 • 例:監督がキオニ・ワックスマンかどうかは必要と思う • キオニ・ワックスマンはいつもの何とも言えないセガール映画
を量産している監督で有名 • キオニ・ワックスマンが監督の時は「沈黙の~」になるので は??という仮説も浮かんだり。
174 そして… ひとまずロジスティック回帰 動きました
175 最終的に選択した説明変数
176 今回は他のアルゴリズムも使います 他のアルゴリズムも同じ要領で設定する
177 他のアルゴリズムも投入
178 他のアルゴリズムも投入 決定木 ランダムフォレスト ニューラルネットワーク
179 学習結果が明らかにおかしい場合もある 学習結果が明らかにおかしい場合 • 例:結果が良すぎる場合 • p値がどれも0に極めて近い(全部が有意になっている)
180 学習結果が明らかにおかしい場合もある 過学習(または未学習)の可能性
181 過学習とは • 学習したデータはバッチリ予測できる • 未知のデータはてんでダメ • テスト勉強で問題を丸暗記しただけ、な状態 • →テスト以外の問題問題が出たら解けない
182 交差検証(クロスバリデーション) 全データ 開発データ テストデータ 訓練データ 検証データ ※交差検証にも 色々な手法があります
183 交差検証(クロスバリデーション)
184 「仕事ではじめる機械学習」より 1. 問題を定式化する 2. 機械学習以外の方法を考える 3. アルゴリズムを選定する 4. 特徴量、教師データとログの設計をする
5. 前処理をする 6. 学習・パラメータチューニング 7. 評価
185 モデルの評価 そのモデルの予測精度はいいのか? それとも悪いのか?
186 モデルの評価指標 • 正解率 • 適合率 • 再現率 • F値
187 正解率(Accuracy) 正解した数 / 予測した全データ数 • シンプル • これでいい?
188 正解率(Accuracy) 正解率で精度を評価するのはダメ
189 正解率(Accuracy) すべて「沈黙がつく」と予測するモデル • データの偏りによってはそれなりの精度になる • そのモデルに意味はあるか?
190 ではどうすれば? 適合率と再現率を見る
191 適合率と再現率 適合率(Precision) • モデルがTrueと予測したうち、実際に正解していた割合 • 「沈黙がついている」と予測したうち、実際に正解してい た割合 再現率(Recall) •
全データに含まれるTrueのうち、モデルが正解した割合 • 実際に「沈黙」がついている映画のうち、モデルが実際に 正解した割合
192 適合率と再現率 適合率と再現率はトレード・オフの関係 正確性 見逃し 適合率 高 多 再現率 低
少
193 適合率、再現率、F値 どの指標を優先するかは、分析の要件による • 今回の「沈黙の予測」は予測するからには外したくないの で、適合率優先でいきます。
194 F値 • 適合率と再現率のバランスを表した指標 • 1に近いほどよい
195 どうやって出すのか Alteryxはこれらの指標も出してくれます
196 モデル比較ツールを投入する
197 モデル比較ツールを投入する
198 モデル比較ツールを投入する
199 混同行列(Confusion Matrix) 実際の結果が負 (沈黙なし) 実際の結果が真 (沈黙なし) 予測した結果が 負(沈黙なし) 予測した結果が
真(沈黙あり)
200 混同行列(Confusion Matrix) 実際の結果が負 (沈黙なし) 実際の結果が真 (沈黙なし) 予測した結果が 負(沈黙なし) 真陰性
偽陰性 予測した結果が 真(沈黙あり) 偽陽性 真陽性
201 混同行列(Confusion Matrix) 実際の結果が負 (沈黙なし) 実際の結果が真 (沈黙なし) 予測した結果が 負(沈黙なし) 5
3 予測した結果が 真(沈黙あり) 4 10
202 混同行列(Confusion Matrix) 実際の結果が負 (沈黙なし) 実際の結果が真 (沈黙なし) 予測した結果が 負(沈黙なし) 5
3 予測した結果が 真(沈黙あり) 4 10 10 / 4+10 = 適合率
203 混同行列(Confusion Matrix) 実際の結果が負 (沈黙なし) 実際の結果が真 (沈黙なし) 予測した結果が 負(沈黙なし) 5
3 予測した結果が 真(沈黙あり) 4 10 10 /3+10 = 再現率
204 再掲
205 数値の名前を説明に合わせます 正解率 F値
206 数値の名前を説明に合わせます 再現率 ※なぜか適合率はない…
207 今回の結果 適合率 再現率 F値 ロジスティック 回帰 66% 61% 0.52
決定木 60% 69% 0.37 ランダム フォレスト 71% 76% 0.58 ニューラル ネットワーク 53% 69% 0.37
208 今回の結果 ランダムフォレスト(で作成したモデル)を 採用します
209 他にも評価するための手法は色々あります • リフトチャート • 適合率再現率曲線 • ROC曲線 • …など
210 圧倒的沈黙…ッッ… ついに「沈黙」を予測する時がきた
211 沈黙のワークフロー
212 沈黙のワークフロー 予測したいデータ
213 沈黙のワークフロー さっき作成したモデル
214 沈黙のワークフロー 予測したいデータの形式も、 学習時と同一にしておく (ダミー変数化や正規化など)
215 沈黙の予測結果
216 沈黙の予測結果 「Sheep Impact」と「80’s Blockbusters~」 に邦題をつけるとしたら、約60%の確率で 「沈黙」がつく
217 80's Blockbusters, When Hollywood Played Toughを詳しく • 80年代アクションスターに関するドキュメンタリー •
スタローンとかシュワちゃんとか • どうやら制作はフランス? • 作品としての評価はあまり良くない • https://www.amazon.com/Blockbusters-When-Hollywood- Played-Tough/dp/B076QX1HV1#customer-review-section • そもそもセガールはメインじゃない
218 所詮は機械学習… セガールが主人公じゃないドキュメンタリー なんかに「沈黙」の名は与えられない
219 Sheep Impactを詳しく • 2010年に放映されたオーストラリアの短編映画(4分) • カールトン&ユナイテッドブルワリーズの広告として制作 された(ほとんどCM) • セガールとその友人がバーベキューに肉を持ち込んだら起
訴されて色々揉める話? • YouTubeで普通に見れる • https://youtu.be/LgXXC7OTD3g
220 私が命名します 「沈黙の羊たち」
221 セガール vs レクター博士? どこかで聞いたことがあるような…?
222 まとめに入ります
223 今回のプロジェクトの問題点 データ少なすぎ • そもそも問題設定からして無理があった • 一人の俳優が出演した作品数なんて多くても2桁どまり • モデルの精度にも影響が出た アルゴリズムわかってなさすぎ
• ハイパーパラメータの調整とか一切やってない • そもそもアルゴリズムの選び方が適当すぎる
224 総まとめ 問題設定はしっかり 機械学習以外の方法を真剣に考える データに対する知識のある人が必要 • そのデータの内容をわかっていないと分析は不可 アルゴリズムの使い方がわかる人が必要 • 今回のように”なあなあ”でやってもモデルは作れてしまう
前処理はやっぱり時間がかかる
225