はじめまして!アドベントカレンダー2024 5日目の担当に預かりました、のっこです。よろしくお願いします。
まずは「サザエさん」を観ましょう
早速ですが、皆さんは「サザエさん」観てますか?
残念ながら今のところTVerのリアムタイム配信や見逃し配信がないので、テレビを持っていない人にはちょっとハードルが高いかもしれませんが…
実は今年(2024年)11月にはなんとギネスにも認定されてます!快挙です!マジですごいです!めちゃくちゃめでたいです!一生観続けます!
今年放送55周年を迎えたフジテレビ系人気アニメ『サザエさん』が、「最も長く放映されているテレビアニメ番組」として、6年前に認定されたギネス世界記録を更新。また、フグ田サザエの声優を番組開始当初から務めてきた加藤みどり(85)が「同一のアニメ作品のキャラクターを最も長く演じてきた声優」としてギネス世界記録に認定された。(放送55周年迎えた『サザエさん』&声優・加藤みどりがギネス認定 記録更新に笑顔「この5年間はあっという間」【コメントあり】 | ORICON NEWS:https://www.oricon.co.jp/news/2354494/full/より引用)
まさに「大いなるマンネリ」ですが、毎回安定して面白いです。結構頻繁に衝撃的な回もありますし、実は担当脚本家によって話のカラーが違ったりして全く飽きません。ぜひこの機会に観始めてほしい!そしてついでに、この記事の肝でもある、じゃんけんもしていきましょう。
「サザエさんじゃんけん」
「サザエさん」は(数県を除く全国のほとんどの地域で)毎週日曜18:30から19:00までの時間で放送されていますが、その最後の最後、18:58〜59にじゃんけんがあります。
アニメ自体は1969年10月5日に放送を開始しましたが(55周年!)、じゃんけんは1991年11月10日からコーナーとして追加されており、記事執筆時点(2024年12月4日)までに実に1664回も行われているんです!
そしてフグ田サザエ(24歳)から毎回繰り出されるその手は、実はアニメの製作会社のスタッフの方の個人的な思いつきとのこと。
Q1:サザエさんの手は誰がどうやって決めているのですか? A1:アニメーションを製作している株式会社エイケンの動画編集担当者(エンディングで「編集」とクレジットされている人)が個人的な思いつきで決めています。(サザエさんじゃんけん研究所 公式ウェブサイト - よくある質問と回答:http://park11.wakwak.com/~hkn/faq.htmより引用)
ということは攻略の余地がある…?
機械学習を駆使してサザエさんに勝ちにいく
いろいろ調べたらQiitaに先行研究がありました→機械学習でサザエさんとじゃんけん勝負(SVM編):https://qiita.com/everylittle/items/f4321980b24052bbb78d。
このQiitaの記事ではscikit-learnを用いたサポートベクターマシン(SVM)を利用しているのですが、注目は特徴量。
なんと以下の4次元で済んでいます。
- week_1:放送週が各月の1週目かどうか(1次元:1週目なら1、それ以外なら0)
- recent_G、recent_C、recent_P:グー・チョキ・パーのそれぞれが現れていない週数(3次元)
- 前の回(先週の放送)で現れていれば1、2回前(2週間前の放送)で現れていれば2…
- 初回は便宜上 (1, 1, 1) から始める
そしてその4つから、サザエさんの手:sazae(0:グー、1:チョキ、2:パー)を予測するというもの。
自分もそのお手軽さに惹かれ、SVMに加えてランダムフォレスト、ニューラルネットワークも使えば予測精度が上がるんじゃないか?と考えました。それが去年(2023年)の12月。その月にあった発表イベントのjackFesでも少し話しました。
せっかくなので…
2024年の初回放送から毎回手を予測して挑む
やってみました。
元記事同様、過去のじゃんけんの手が毎週分すべて記録されている「サザエさんじゃんけん研究所」からデータをせっせとスクレイピングしてCSVにまとめて使いました。
サザエさんじゃんけん研究所様々です、本当にありがとうございます→http://park11.wakwak.com/~hkn/
戦い方としては、
- 5種類の手法で予測
- scikit-learnのSVMでデフォルト設定(線形カーネル、C=1、degree=3)
- scikit-learnのSVMでグリッドサーチ(カーネルを線形・RBF・多項式から、Cを0.1・1・10から、degreeを2・3・4から選択)
- scikit-learnのSVMで同様にランダムサーチ(カーネルを線形・RBF・多項式から、Cを0.1・1・10から、degreeを2・3・4から選択)
- scikit-learnでランダムフォレスト(n_estimators=100)
- kerasでニューラルネットワーク(層ごとのノード数はそれぞれ64→32→32→3、ReLU関数を3回かけた後にソフトマックス関数をかける、epochs=25、batch_size=32)
- 80%の訓練データと20%のテストデータに分割して上記の5種類の手法で検証し、最も正解率(Accuracy)の高かった手法が予測した、相手が出してくるであろう手を信じ、こちらはそれに勝つような手を出す(負けるくらいならあいこ狙いで…とかではなく、やっぱり本気で勝ちにいくのが大事だと思うので)
現時点での勝率
2024年、毎週日曜日戦ってきましたが、現時点でどれくらいの勝率を挙げられているか発表します。
なお、ここでは勝率を正解率(Accuracy)と定義し、全ゲームのうち、相手の手を正しく予想できた=それに勝つ手を出して勝てた比率とします。要は、
ってことです。
記事執筆時点(12月4日)までの結果、つまり1月7日放送分から12月1日放送分までの47戦の結果は…
24勝10敗13分(勝率51.06%)でした!
単純計算で1/3 ≒ 33.33%よりは結構良いのかなといった印象です。
ちなみに、2024年を通した勝率の推移はこんな感じです。
一時は結構調子良かったんですけどね、最近ちょっと低迷気味で…まだまだ頑張って高みを目指したいところです。
最後に
記事執筆時点で次の放送日は12月8日です。せっかくなので予想しておきます。
以下がそれぞれの手法で予測したサザエさんの手と、テストデータでの正解率(Accuracy)です。
- SVM(デフォルト):グー予想、57.06%
- SVM(グリッドサーチ:RBFカーネル、C=0.1、degree=2):グー予想、59.16%
- SVM(ランダムサーチ:線形カーネル、C=10、degree=3):グー予想、59.16%
- ランダムフォレスト:パー予想、58.86%
- ニューラルネットワーク:グー予想、56.46%
パー予想のランダムフォレスト(しかも正解率も結構高い)も気になりますが、規定に従って正解率が最も高いグリッドサーチならびにランダムサーチのSVMの予測した手を信じ、サザエさんのグーに対抗してパーを出します。
次の日曜日の夜はテレビの前でパーを出してください。なんなら向こうが出す前からパーを出しっぱなしにしといてください。
…負けたらごめんなさい。