統計応用という名の沼に飛び込もう

はじめに

更新履歴

2023-12-21 10:10:00 アドベントカレンダーに合わせ,まだ完全版ではないですが初版を公開しました.

2023-12-21 18:22:00 「合格のための戦略」を加筆しました.

2023-12-21 18:38:00 「おわりに」を加筆しました.

2023-12-21 18:49:00 「分野選択について」を加筆しました.

 

「統計・機械学習の数理」のAdvent Calendar 21日目の記事です.

この記事では,統計検定1級の合格要件として必須とされる「統計応用」という科目の試験について自分なりに考察した事項を共有したいと思います.多分に私見を含みますので,客観的事実とは峻別してご笑覧いただけると嬉しいです.

ちなみに筆者はこの科目に2年連続で落ちており,3年目でようやく合格しました.すんなり合格した成功者の体験談だけが知りたいという方はお引き取りいただいて構いませんが,失敗が続いた者からの視点もまた一定程度の価値があると信じてアウトプットしてみることにします.「せっかく受験するなら体系的にじっくり勉強したい」という方のみこの先を読んでください.

体験記にしてしまうともう何番煎じかわからないくらいたくさんのブログ・記事が既に見つかりますので,どちらかというと「この対策しにくい試験をどう突破するか」を個人にできる範囲で考察してみようという取り組みになります.具体的すぎる参考図書の話などにはあまり深入りしません.

どういう試験か?

公式の声明によると「レベル的には定量的なデータ解析に深くかかわるような大学での専門分野修了程度」の難易度であると定義されています.

統計検定1級|統計検定:Japan Statistical Society Certificate

どういう業務をしているかにもよると思うので受け取り方は個々人に委ねますが,いわゆる「データサイエンティスト」「データアナリスト」などデータ分析を生業とする職種に就いている以上は少なくとも出題範囲の概念的な理解くらいはしておいた方がいいんじゃないかなと個人的には思います.なくてもそれなりに生きてはいけるくらいの高難易度ではあるとは思いますが,それらが全くない人と一通り知っている人を比較したときにどちらをより信頼できるか?という話かなと思います.繰り返しますが「概念的な理解」が望ましいという私見であって「合格証明書がそれら専門職の免許である」とは言っていません.このテストで合格が取れなくても業務は回せることも多いでしょうし,その裏の命題もまた真になり得ます.

合格率はだいたい毎年20%くらいとなっています.そもそも大学数学レベルの知識を要求する試験であるため,志願の時点でかなりのふるいにかけられていることを加味すると,とても難易度の高い試験であると言えるでしょう.

解答指南・試験対策

具体的な問題や解答方法について紐解いていきましょう.解答用紙は論述用のものとなっており,学部や大学院の個別試験の数学と似たノリです.試験時間は90分間で,どんな過去問とも違うことを問うてくる小問を含む合計4~6つくらいの小問を抱える大問について,制限時間内に5問中3問をその場で取捨選択し解答することになります.問題選択や検算の時間を考えると,大問1つにかけられる時間はせいぜい25-28分くらいでしょう.これを小問の数で除すると,当たり前のように「小問1つあたりに4-7分くらいしかかけられない」という帰結が導かれるはずです.具体的な数値計算を求められることもあるので,電卓での加減乗除平方根の計算にも慣れておく必要があります.やってみると分かりますが,意外と電卓計算でモタつきます.メモリー機能なども使いこなせないと時間を食われますので,サボらず演習しましょう.

恐るべき時間の短さを鑑みると,「今まで見たことがないタイプの問題に対しても,手を止めないくらいの速さでなんとか部分点をかき集められるくらい意味のある論述・途中式を書き殴りなさい」というタイプの試験であることがご理解いただけるかと思います.言い方を変えると,「手を止めてじっくり解き方を考えている暇はない」ということあり,「これくらいの話題であれば大して熟考することなしに解き慣れておいて下さいよ」という運営側からの意図を感じざるを得ません.時間制約に加えて「年1しか受けられない」などのプレッシャーも加味すると平常な精神状態で試験本番で解いていけることは難しいですし,字を読んでもらうことに配慮して書くスピードが普段の殴り書きよりも遅くなる焦りなども考慮すると,リラックスした状態の7割くらいしか実力を発揮できないと思っていいでしょう.合格点も毎回非公開になっていますが,大体6割から7割くらいと言われている(後述の公式本にも載っています)ため,上の「7割くらいしか実力を出せない」論と組み合わせると「なんとかしておおよそ全ての小問について答えを出す」くらいの気合・気概を持っていないと確実な合格圏内に入ることが難しくなり,運ゲーの要素が絡んでくることになるでしょう.逆に,統計を専門としていない方であってもやたらと数学に強いタイプの人材であれば楽々パスしてしまうからくりがここにあります.要は「統計の専門に精通しているが合格できない」という偽陰性と,「専門的な統計学の知識をカバーし切らなかったけど数理ライクな知識のみでその年の問題セットでたまたま合格できたしまった」という偽陽性の両方が生じうるタイプの試験であるとご理解いただくのが適切でしょう.

典型的な例を交えて紹介します.理工学の2017年,2021年,2022年など多数の年において,最も頻出・王道分野の1つである「実験計画法」分野の出題を全て避けて選択することが可能になっていました.それで合格できてしまうことよりも,その勉強過程で何を得たのかを考えることの方がより大切だと個人的には思っています.たまたま一発合格するよりもむしろ,何年かかけてじっくり分野のいろいろな出題範囲に慣れ親しむ方が得られるものは大きいのではないでしょうか?これは一発合格した人を決して貶めたいわけではなく,むしろ一発合格できなくても(自分も含め)プラスに捉えることができるよ,というメッセージであるとお考えいただければと思います.

ちなみに,採点の詳細が開示されないため推測にはなってしまいますが,私の経験則的に部分点はかなり加味されると予想されます.私が合格した年も,最終的な答えの値の計算ミスが複数個生じて落ち込んでいたくらいでした.なので,考え方のプロセスを大事に記述するようにしてください.

対策困難さ

理工学を例にとり,過去10年間くらいでどのような分野の出題があったかを外観してみましょう.※あくまで個人がまとめたものになるので,鵜呑みにしないでください.誤り等について筆者は一切の責任を負いません.

このように,午前中の試験「統計数理」の色が強めに出題されることがやや多いですが,それだけでは勝ち切れないセットが並ぶことも多いです.

教科書・参考書について

したがって,万全の対策をするにはここに挙げたような複数分野に関する基礎的な話題を押さえていく必要があります.そこで役に立たせるのが難しいのが公式本です.例を取って説明します:実験計画法・直交表における「分割法」の1次誤差や2次誤差などの話題は確かに過去問に出題実績があります.これらの設問を公式本の知識だけで解答できるかというと答えはNOですSNSでは「公式本だけやっておけば良い」「統計応用含め久保川本だけやっておけば良い」「積分ゲー」といった論調も時折見受けられますが,これらの言説は自らの体験だけをもとに問題を矮小化しています.初学者にこのような混乱を与えるのは有害なことだと考えており,ここで明確にその説を否定しておきたいと思います.

なので,結局分野ごとに近い話題の参考書を複数漁って地道に勉強していくしかないです.ここがめちゃくちゃ大変で時間を吸われますが,覚悟を決めて向き合ってください.

合格のための戦略

1. 数学力でゴリ押して統計数理の対策重視で勝ち切る(非推奨)

前述の「やたらと数学に強いタイプの人材」を自認する方はこちらの戦略を取ることができると思います.しかし問題セットによっては応用を取り逃がす可能性が出てきますし,何より,応用にも面白い分野があるのにそれらをまともに学ばずして合格証明書だけを取って離脱してしまうのはとんでもない機会損失だと個人的には思います.まあ,合格という名誉だけが欲しい人はそうすればいいんじゃないっすかね,知らんけど.

2. 馴染みのある分野を増やしまくって未知の問題への反射神経を高める(推奨)

学問に王道なし,ということでご自身の受けられる分野の過去問を全て眺め,出されうる分野を満遍なく対策するというやり方がこちらです.

過去問を1つ1つ読んでいき,ざっくりどの分野からの出題であるのか,図のようにスプレッドシートでまとめていきます.理工の例は上で貼った通りで,人文なら多分下図のような感じになると思います.※あくまで個人がまとめたものになるので,鵜呑みにしないでください.誤り等について筆者は一切の責任を負いません.

これらを眺めていると,次に自分がやるべきことが少しずつ見えてくるでしょう.

人文 → 多変量解析がよく狙われるな.小西「多変量解析入門」または永田・棟近「多変量解析法入門」などをチェックしよう.

理工 → 実験計画法が大事だから永田「入門 実験計画法」などをチェックしよう.

といった感じです.参考書はご自身のレベルや好みに馴染む記述かどうかという観点でお好きに選んでください.どのみち試験に完全に適合したテキストはありませんので.

ある程度出題範囲についての理解が固まったら過去問にすぐに挑戦しましょう.1分野分だけでも50問近くあり,訓練を積んでいないと目安の30分で解き切るのはとてもじゃないですが不可能に近いですし,模範解答を読み込むのも時間がかかるので1問1時間以上費やすこともザラです.試験日までに問題を余らせてしまうという勿体無い状況をなるべく避けるようにしましょう.別分野の出題であっても自分野に関連が深い問いも探してみると結構あるので,過去問演習だけでも(良くも悪くも)かなりの時間をかけて鍛錬することができるでしょう.

※ただし,2014年以前はそもそも出題範囲表が現行のものと異なっていた(?)ようなので,場合によっては切り捨てても良いかもしれません.

分野選択について

分野選択は基本的にご自身の仕事・バックグラウンド・興味に近いものを選ぶ形でいいかと思いますが,個人的に機械学習系の人材の皆さんにおすすめなのは人文科学です.名前からすると「えっ?」と思われるかもしれませんが,実は上の図の通りクラスター分析や判別分析といった多変量解析系の出題が多く,機械学習で学ぶ範囲と重なる部分が最も多い分野です.逆に理工学は割と注意が必要で,意外と機械学習に絡んだ設問が少ない(2021の決定木などは例外的)ですし,理工学と謳っておきながら割と「工学」寄り(製造業での品質管理・実験計画法・寿命予測などを意識した設問が多め)です.名前のラベルに惑わされず,全分野の出題をざっと眺めて一番面白そうと思えるものを選べると理想的です.

Tips・前日までにやっておくと良いこと

どういうことを出題者が聞きたがるか一問一問しっかり味わう

統計応用は特に別の書籍や大学院入試等に類似の問題を見つけにくいことが知られています.なので,過去問の1つ1つを丁寧に解いていき,出題の意図に想いを馳せていくと本番でも動揺せずにスムーズに手が動いていくと思います.

完全に途中からやり始めた策なので全てを書ききれてはいませんが,理工学・人文科学を中心に解いた問題を1つずつXのスレッドで振り返る投稿を続けていました.↓

人に説明し読んでもらうコメントを意識することで,出題の意図を少しでも俯瞰できたのでこのやり方は結構おすすめです.どうしても人に見せるのが恥ずかしい場合は自分のノートや日記などに書くのでもいいと思います.

まとめノートの作成

演習を進めていると,「これは頭から抜け落ちそうだな」とか「この検定方法は細かい数式を頭に入れていなくて解けなかったな」と言った自分の弱点が徐々に炙り出されてくると思います.気づいた時になるべく早いタイミングでまとめノートにアウトプットしておきましょう!これを持っていけば,本番当日の会場でどんなお守りよりも強い精神安定剤になること請け合いです.

おわりに

この記事では「統計応用」という試験について紹介し,沼にハマってしまうほど対策が難しいタイプの試験であることを説明しました.

それでも,その沼はハマる価値のあるものだと思っています.勉強して身につけた統計的思考能力は必ず実務や今後の勉強などにおいて役立つことでしょう.

すうがくぶんかの内場先生 ( https://twitter.com/utaka233 )もしばしば「何度も落ちてしまっても決して恥ずかしいことじゃない,そういうものです」とおっしゃっていました.士業の資格試験などとは異なり,落ちても(受験料以外に)何の不利益もない試験ですので,臆せず打席に立ち,果敢に沼に飛び込んでいきましょう!

【Kaggle Advent Calendar 2023】day14: Kaggle非公式・非営利目的コミュニティTシャツを製作するために公式に許諾を得た話

はじめに

Kaggleアドベントカレンダー2023の14日目の記事です.

ゆるい記事で技術の話は一切出てきません.Kaggleの技術的内容に興味のある方は読み飛ばしてください.

Disclaimer: 本記事における活動はKaggle公式コミュニティとは一切関係がありません.あくまで非公式なファン活動の一種であるとご認識ください.当然,本記事の見解はKaggle公式による声明ではありません.

Kagglerフットサルクラブとは?

2023年夏頃、我らが部長であるKaggle Grandmasterのカレーちゃん ( https://twitter.com/currypurin )がおもむろに「Kagglerフットサルクラブ」を設立しました,月1で緩くフットサルをして遊ぼうというだけのシンプルなコミュニティです.彼の人望もあり瞬く間にDiscordコミュニティの参加者は増加していき,2023年12月現在でアカウント数は64名にも上ります.現在は錦糸町のフットサルコートを主な活動場所としています⚽️

ちょうど先日のKaggle Tokyo Meetup 2023においても「Kagglerも体力作りが重要」といった趣旨のご発表があり,Kagglerコミュニティで気軽に運動をしてみる場として本コミュニティがご活用いただけるのではないかなと思います.

コミュニティTシャツとは?

サッカーのユニフォームを模したオリジナルTシャツのことです.オリジナルスポーツTシャツのデザイン・受注販売を行なっている業者さんに依頼して作っていただいています.部員の皆様のXでのPostを見ていただくとどういったデザインなのか雰囲気が掴めると思います.

もちろん自分たちで費用を持ち寄って製作し自分たちで購入しているので完全に非営利目的で作成しており,一切の利益を得ていません.

※コミュニティ内での本Tシャツの購入は完全に任意であり一切強制されません.

本Tシャツ製作にあたり,Kagglerの皆様にはお馴染みのKernelerくん( https://www.kaggle.com/kerneler ) のロゴをぜひ使いたいと考えました.そこで我々は著作権的な問題を解決するため,Kaggle公式に直接許諾をいただけないか問い合わせることにしました.

Kaggle公式への問い合わせについて

※⚠️⚠️⚠️注意⚠️⚠️⚠️

Kaggle公式のお手を煩わせないために,仮に同様のお問い合わせをすることがある場合は必ず下記のFAQやガイドラインに事前に目を通し,これらに当てはまらない例外的なお問い合わせのみ送るようにご注意ください.

https://www.kaggle.com/contact

https://www.kaggle.com/brand-guidelines

我々のケースは問い合わせ時点においてこれらに当てはまらなかったので,ガイドラインページに記載のあったメールアドレスにEメールを送ることにしました(アドレスを直接記載するのは気が引けたので上記のURLから探してください).その際も「あらゆる公共媒体において,この活動はKaggle非公式の活動であり公式とは関係がないことを明記すること」「非営利目的でのTシャツ作成であること」を遵守する旨を記載することで許可をいただけました.

※同様のケースであっても100%許諾が得られるとは限らないため,非公式グッズを作りたい場合は必ず公式の判断を待ってから行うようにご注意ください.

おわりに

本記事では,Kagglerフットサルクラブという非公式コミュニティにおいてTシャツを作成した話についてご紹介しました.

本コミュニティでは随時メンバーを募集しています!Discordサーバーに誰でもJoin可能ですので,ご興味のある方は部長のカレーちゃん

https://twitter.com/currypurin

または副部長の私

https://twitter.com/ml_taro

までお気軽にリプライ・DM等でご連絡ください!

これからの「実利的なデータサイエンス」の話を『評価指標入門』で学ぼう

はじめに

あなたはデータサイエンティストとして,とある会社に勤務しているとします.

「で,この施策で一体いくら儲かるの?」

「F1 scoreがこれだけ上がったらどれくらいの利益に繋がったの?」

と,非データサイエンス部署から質問された(しばしば詰められた)として,あなたはどれくらい胸を張ってこの問いに答えられるでしょうか?

この問いに答えを出すための考え方を学べる最良の手段は,タイトルに掲げた『評価指標入門』を読むことだと思います.

gihyo.jp

幸運にも同僚の伝で,技術評論社様からこちらの本(以下,「本書」と呼びます)をご恵贈いただけました.この場をお借りして感謝を申し上げます.僭越ながら,本記事では本書のご紹介をさせていただきます.

『評価指標入門』書評

本書は,単に機械学習モデルの学習が上手くいったかどうかを測る一般的な評価指標の説明の羅列…だと思ってもらっちゃあ大間違いです.

本書の最大の特徴は,各章の終盤や付録で語られている,簡単なケースを例示しながら「利益=売上 - コストのお金の計算を真面目に分解して数式で指標を導出する」パートです.とても秀逸で一読の価値があります.複雑な要素が絡み合うビジネスシーンにおいては,本書で置いている仮定が単純すぎて当てはまらない場合もあるかもしれませんが,それでも「(おおよそ)XX円儲かると予想されます!」と主張できるロジックを組むことは,企業で働く実務家としてはこの上なく重要なことなのではないでしょうか.たとえアバウトな近似だとしても,「人件費がざっと月これくらいで,モデルやシステムの運用コストがこれくらいだと置くと,利益に最大限直結する評価指標はこういう定式化になる」という式を導く説明が一貫して明快に(しばしばフレンドリーに)語られています.

「数理の知識を生かして社会の役に立ちたい!」と望む私のような読者にとってドストライクな書籍が世に生み出され,ずっとワクワクが止まらないまま本書を一気に読んでしまいました.

昨今では,データサイエンティストが業務を遂行するのに必要となる素養として「ビジネス」「ドメイン知識」などといった単語が口を酸っぱくして語られていますが,その具体的な意味を最も実感できるのも本書なのではないでしょうか.まさにサブタイトルにもある通り,「ビジネス」と「サイエンス」を繋ぐ橋を架ける方法についてヒントを得ることができるでしょう.

我々読者自身の会社において本書と同じような定式化をこなしていくことは,一定以上の数理的なセンスが要求され,必ずしもすんなりと簡単にできることではないとは思います.しかしそれでも,我々のような「企業で雇用されるデータサイエンティスト」が飯を食っていくために何よりも重要な姿勢が本書で語られていると思いました.

私自身も冒頭のような問いに即答できない場合がある現状を反省し,座右の書として常に振り返るようにしたいと思います.

この本を誰が読むべきか?

あなたが実務でデータサイエンスを取り扱う仕事に就いているのであれば,間違いなくご一読の価値があると断言できます.機械学習でよく使われる指標自体に既に慣れ親しんでいる方(RMSEやAUCと聞いてピンとくる方)であれば,もしかしたらスラスラ読めるパートも多いかもしれません.それらも体系的に確認しておさえておきたいという駆け出し寄りのデータサイエンティストの方々であれば,より本書に読み応えが出てくるかもしれません.

逆に,「Kaggleのようなコンテストで勝てる機械学習モデルを作りたい」といった方や,実務でデータサイエンスの部署と間接的にでも関わりがない社会人であったり学生の方は本書のターゲットからは外れているかなと思いました.特に学生の方だと,ビジネスやお金周りの話題が出てきても共感しづらい部分があるかと思います.ただし,そのような属性の方々であってももちろん本書から得られるものはあると思うので,お気軽にめくってみる分には一向に構わない超良書だと思います.

おわりに

この記事では,『評価指標入門』の内容をご紹介させていただきました.少しでも気になった方は是非チェックしてみていただければと思います.

【統計学Advent Calendar day23】 統計学周りで今年読んで良かった本

この記事は何?

この記事は「統計学 Advent Calendar 2022」23日目の記事です.

ここでは,統計学周りの話題に絞って「今年読んで良かった本」を独断と偏見でまとめていきたいと思います.それぞれについて「こんな人におすすめ」という項目を付与しましたので,当てはまる方は是非書籍をお手に取ってご覧いただけると嬉しいです.

今年読んで良かった本

入門 実験計画法

何が良かったか

数式がゴリゴリ出てくるものの,前提となる知識から丁寧に導入してくれているので,「実験計画法」という分野について全くの初学者であっても読み進めることができます.ただし,t検定・F検定などの検定論の入門的知識(統計検定2級レベルくらい?)があった方が読むのは楽です.「なぜ因子の分散と誤差分散との比を取ってF検定することで効果を検定できるのか」や「平方和の分解」など本質的なトピックについて誤魔化しなく丁寧に式を展開してくれるので,読後の納得感がかなり高くなると思います.

私の場合は,統計検定1級の統計応用(理工学)の対策の意味で一通り読むようにしました.試験本番で出題される問題はかなりトリッキーですし,この本自体には演習問題がついていないため,残念ながら試験合格請負書籍として太鼓判を押すのは難しいですが,それでも「乱塊法」「分割法(直交表を絡めたものを含む)」など発展的なトピックを親切に解説している書籍はこれを除いてなかなか存在しないのではないかなと思っています.

東京大学工学教程」の本

 

も理工学対策としては有名ですが,上記のトピックについての解説が不足しているため,包括的に学ぶのであれば「入門 実験計画法」がベターかと個人的には感じました.

こんな人におすすめ

・理学・工学・化学など資源の限られた分野でなるべく少ない回数の実験から効果を測定したい方

・統計検定1級の統計応用(理工学)を目指しているが,体系的に実験計画法を学ぶのは初めてな方.ただし,試験問題が解けるようになるとは限らない.

・永田先生書籍シリーズお馴染みの平易な説明ファンの方.

ウェブ最適化ではじめる機械学習

何が良かったか

「ウェブ最適化,とりわけベイジアンA/Bテストはこうやるんですよ」をPythonコード付きで平易に解説してくれている神書籍です.私個人としては今年のMVPを授与したいと思うレベルです(書籍が出たのは2020年なので2年遅れですが).統計学(とりわけ確率分布)を全く勉強してこなかった人が読むとよく分からないかもしれませんが,その辺りの基礎的な知識さえあれば説明のわかりやすさに目から鱗が出るくらいだと思います.私はまだ6章の頭の方までしか読めていませんが,ここまでは大きく歩みを止めるような難解な箇所が全くなく,順調に読み進めることができました.

余談:表紙のウミウシが若干グロテスクで,人によっては敬遠してしまいそうになっているのが本当に本当に悔やまれます.ここまで見た目で損している書籍も珍しい.

こんな人におすすめ

ベイジアンA/Bテストに興味があるけど,どの本で実践的に入門していいか分からない方

・統計の基本は学んだことあるけど,Webサービスなどの改善周りの実務でどうやって使えばいいか分からない方

Pythonの初歩は分かっている(Numpyなどの基本演算やMatplotlibなどの可視化ライブラリを使ったことがある)方

・コードで実践的に身につけたい.でも数式の説明も多少はあり両面から理解したいという欲張りさん

A/Bテスト実践ガイド

何が良かったか

この本は有名なので今更説明は不要かもしれませんが,なんといっても「A/Bテスト」という分野の第一線で活躍し多数の論文も残した著者陣から直々に,活きたプラクティスを学ぶことができることが最大のポイントでしょう.実に23もの章にわたって細かい注意点を解説してくれます.一方で,各トピックについてはどうしても紙面が限られる影響か,ダイジェスト的な説明にとどまっている箇所も散見されました.特に,統計学が絡む第Ⅴ部は「この数式はどこから来た?」という疑問を持ったまま天下り的展開を認めながら読む必要があります(どうしても数式について深く納得したい方は別の専門書をあたりましょう).

個人的には,データアナリスト・データサイエンティストだけでなく,分析を専門としない人にこそ進んで読んで頂きたい(特に前半の章)と考えています.A/Bテストの重要性の説明はもちろん,指標(メトリクス)や意思決定のルールについて関係者間で合意を取っておく重要性についても言及されており,これらはプロダクトに関わる全ての人が知っておいて損しない話題だと思うからです.

こんな人におすすめ

・A/Bテストに関わる全ての

・A/Bテストを間違いなく遂行するためのベストプラクティスを学びたい方

・A/Bテストの具体的な実装・ツールの話というよりも方法論を勉強したい方

・今まで業務で雰囲気でA/Bテストを回してきたが,本当に正しく効果を測定できていたのかイマイチ自信がない方

終わりに

この記事では,私が統計学周りで今年読んで良かった本についてまとめました.ほんの少しでも参考になる部分があれば幸甚です.最後までご高覧いただきありがとうございました.

Google Cloud Professional Data Engineer試験に合格した話

この記事は何?

先日Google Cloudの認定資格の一つである「Professional Data Engineer」の試験を受験し,無事に合格を勝ち取ることができました.この記事では,試験対策方法や受験日当日の注意点などについて紹介していきます.

ちなみに合格者にはパーカーなどの記念品をプレゼントしてくれるようです.今はアメリカからの発送待ちで,着るのを楽しみにしています.

試験対策前の前提知識・経験

・業務でBigQueryにクエリを投げたりしているデータサイエンティスト.SELECT * したらスキャン量が大変なことになる,など常識的なことは(多分)知っている程度.

・その他のGoogle Cloudプロダクト(データエンジニアリング関連)はほとんど使ったことなし.Kaggle用途でVMインスタンスを立てたことがあるくらい.

機械学習は2013年から勉強しており,業務でも3年以上は扱っている.そのため,機械学習関連の対策はあまり必要なかった.

クラウドの試験対策をするのは初めてでしたが,何とかなりました.目安として,CLIの黒画面に怯えない程度のエンジニアリング歴と,応用情報を取得する程度の基本的なデータベースやSQL関連の知識があれば(データエンジニアの3年程度の経験が目安の試験なので大変なのはもちろんですが)何とか勉強は進めていけるかなと思います.

勉強期間(実績ベース)

下記の対策トータルでかかったのは2ヶ月.仕事をしながらなのでもっと短縮することは可能と思われます.

試験対策として勉強したこと

公式Coursera(約1ヶ月)

おすすめ度:★★★★★ (5/5)

「認定準備」と銘打ったコースは6つありますが,ご自身の事前知識に応じて飛ばし飛ばし受講すると良いでしょう.全てをゆっくり聞いているとかなりの時間がかかりそうです.その中でも,

こちらの試験対策講座がイチオシです.まずやらない手は無いでしょう.試験の対策のためのポイントをふんだんに盛り込んでくれます.あえて序盤に受講して,自分の知識の足りないところを逆算してその他のコースをパラシュート的につまみ食いしていくのも良さそうです.

一つ注意したいのは,この講座の練習問題の難易度は本番よりもやや簡単であるということです.Courseraだけで対策を終えて本番を迎えると痛い目を見ると思います.

公式模試(30分×解き直し回数)

おすすめ度:★★★★★ (5/5)

こちらも自明に大事なので,満点近く取れるまで時間を空けて何度か受けましょう.不正解選択肢の理由も含めて解説を読み込むと良いでしょう.

cloud.google.com

公式本(演習問題を2-3週間くらいかけて埋める)

おすすめ度:★★★★ (4/5)

英語に抵抗がない方は買うといいと思います.しかしながら,この本は本文はそこまで読んでいません(パラパラとめくってみましたが,英語を頑張って読み解く割には載っている情報が公式ドキュメントよりもやや薄めかなと思いました).この本を購入する旨味は,なんと言っても購入者特典で豊富な演習問題がWebサービスとして提供される点です.難易度や問題の癖は正直,本番のそれと異なるものもありますが,278問もの演習+不正解選択肢を含めた解説があるのは貴重です.個人的には大きな助けになりました.下図のように,演習問題の進捗を円グラフで示してくれるので「全部緑で埋めたい」というモチベーションが湧きやすいのも嬉しい設計になっています.

公式本の演習問題の進捗円グラフ

Udemy(6時間×解き直し回数)

おすすめ度:★★★★★ (5/5)

上記「公式本」の著者,Dan Sullivan氏のオリジナル模擬試験がコースの終盤に入っていて,本編をすっ飛ばして模試だけ受けることができます.私は動画講義は一切聞いていませんが,理解度に不安のある方は活用してもいいかもしれません(字幕も英語なので得意じゃない方は厳しいかも).

 

同氏の模擬試験2回分「だけ」のコースです.いい問題が揃っていると思うので頑張って英語を読むかDeepLにかけるかして解くと良いでしょう.

 

非公式ですが,紹介している模擬試験の類で一番歯応えがあり難しい問題が揃っていました.このレベルで合格点を出せるなら合格が近づいてきていそうな気がします.ただし,不正解選択肢の解説が不足しているので,自分でドキュメントを睨みながら納得していく必要がありそうです.

Whizlabs 無料模擬試験(20分×解き直し回数)

おすすめ度:★★★ (3/5)

LMS | Whizlabs

上記リンクから,Whizlabsという独自のトレーニングプログラムを販売しているサービスの模試を20問だけ無料で受けることができます.あくまで非公式ですし出題の傾向も本番のそれと異なるのでここまではやらなくてもいいかなと個人的には思います.課金するとより多くの問題演習や実践プログラムが提供されるみたいです.

上記の問題演習中に「知らなかったこと」をメモにまとめる

おすすめ度:★★★★★ (5/5)

例えば「Dataprocのベストプラクティス」→「GCSをストレージにする,プリエンプティブルVMは最大セカンダリワーカー数の30%以下にする,エフェメラクラスタを使う」など典型パターンは丸ごと暗記しておくと正解率が上がってきます.そういったパターンをメモにまとめ,暗記カードのノリで一問一答集を作り暇な時間に解いておくと記憶に定着すると思います.私の場合は,Notionのトグル機能を使って答えの表示・非表示を切り替えるスタイルで暗記作業を続けていました.

試験当日ギリギリもこれを眺めておけば,精神安定剤代わりになること請け合いです.(ちなみに私はデータエンジニア素人なので実にこのメモがA4用紙19ページに及びました…)

トグル機能を使って自作の一問一答集を作った様子

受験体験記

受験にあたってはお近くのテストセンターを探し,自分で好きな時間に予約をする形になります.私は東京に住んでいるので複数の選択肢から好きな会場を選ぶことができたのですが,Googleマップのレートが高く評判が良さそうなのと,Googleさんのオフィスが近くて縁起がいいことから渋谷会場を選びました.なお,土日を中心に意外と早く予約枠が埋まりやすいのでご注意ください.

 

テストセンターに関する情報

・身分証の提示が2種類+リマインダーメールの印刷が必要になるのでご注意ください.クレジットカードは「裏面に署名がされたものが必須である」などと言われ相当細かく確認されるので,念のため身分証は多めに持っていった方が良いかもです.(私の場合免許証+会社の保険証でイケました)マスクを脱いで顔写真との照合も行われます.


・試験場ではイヤーマフが置いてあるほか,事前の案内中に耳栓を希望して借りることができました.個人的に頭を圧迫されるのが苦手なので耳栓サービスはとても有難かったです.


解答中の情報

・問題文のフォントが日本語の漢字に対応していない?っぽく,中国語(?)の字体で表示されていて少々読みにくいです.


・模試でもそうだと思いますが「この問題文だけからだと一意に解を絞れなくない?」というパターンが時折あります.ので,局所最適というよりは全体最適を意識した選択肢を選ぶと良さそうです.ベストプラクティスをよく意識しておくことが大切そうです.


・時計は要りません(画面に残り時間が出ます)


・「次の問題へ」ボタンと「提出」ボタンの配置が結構近くにあるので,誤クリックして途中投了しないようにお気をつけください.

終わりに

この記事では,Google Cloud Professional Data Engineerの試験対策と受験体験記をまとめました.少しでも興味のある方にお役に立てていれば幸いです.

統計検定1級(2021)を受験した話(統計数理の試験対策・勉強編)

この記事は何?

タイトルの通り、2021年の統計検定1級試験を受験し統計数理に合格してきたので、記憶が鮮明なうちに勉強してきた内容をメモしておこうと思います。ちなみに、統計検定は私にとって今回が(級によらず)初めての受験でした。

対策・勉強した内容以外の、当日の受験体験記は以前に公開していますので、そちらもご興味あればぜひ併せてご覧ください。

taro-masuda.hatenablog.com

免責

あくまで個人的な方法論であるため、本記事の情報が必ずしも今後の試験においてそのまま有効であるとは限りませんのでご注意ください。損失等をこうむられた場合であっても、筆者は一切の責任を負いかねます。

TL;DR

久保川先生の教科書『現代数理統計学の基礎』の2~8章の章末問題((*)印は飛ばす) + 統計数理は過去問を仕上げました。過去問は1ヶ月以上前からやるのがお勧めです。

ちゃんと測っていたわけではないのでざっくりですが、あくまで個人の所要時間としてトータルで300時間ほど要しました。個人差が大きいところだと思うので、下記の勉強時間も軽い参考程度・目安だと思って読んでください。いわゆる天才肌の方や要領の良い方はもっとサクッと終わらせられそうですが、筆者を含め凡人を自覚している方であれば大量の勉強時間を費やすことが必要だと思います。もし基本的な微分積分・行列の計算に抵抗がある場合は、手計算方法のキャッチアップのために更なる時間が必要と考えます。

応用の対策法はよくわかりません。

試験対策開始前の筆者について

・業務で統計解析は全く使っていない。Rもほとんど書けない(ただし、1級の範疇ではプログラミングの力は全くと言っていいほど問われない)。機械学習は業務でよく使う。正規分布とか95%信頼区間の話はなんとなく知っている。

・私大理工学部物理系の学科及び同大学院同専攻修士修了(N年前)

・研究室配属では情報系のテーマを選択したため、理論物理系は全く分からない(忘れた)。

・ごくごく基本的な微分積分・行列の計算に抵抗はない

・おっちょこちょいな性格で、分数の足し算引き算も普通に間違える(下記の演習を積んでいくうちに少し改善された)

・Bishop先生の『パターン認識機械学習』(俗称PRML、黄色い本など)に修士1年の頃に出会い、上巻4章あたりまでは自分で手計算で確認しながら読み進めたことがある。演習問題も簡単なものは解いたことがある。

 

〜勉強してきた内容について時系列でご紹介〜

あまり計画的でなかったので鵜呑みにしてほしくないですが、以下のように進めていきました。

6~7月(20時間)

私事ですが7/1に新しい職場に入社するイベントがあり、業務でよく使う知識のキャッチアップばかりしていて正直統計はまだおろそかでした。

しかし、TLでちょくちょく話題になる統計検定1級について興味を持ち、受験を検討し始めます。2019年の過去問が公式HPで無料公開されていたのでとりあえずダウンロードし、レベル感を確認しました。問題文の意味・専門用語が全然分からなかったのが悔しかったので、竹村先生の教科書『現代数理統計学』を読み始めました。この頃は、「今年受けなくても別にいいかな」と気楽に構えていました。

 

この教科書は、TL;DRには載せていないですが個人的には購入をオススメします!その理由は、初学者の理解を促すように語りかけているような文体で書いてくださっているためです。実際、統計検定公式のお墨付きを得て「関係図書」リストにその名を連ねているようです。

ただし、統計数理」の出題範囲をカバーしきれていない場合が少しあるところが致命的な弱点です。わかりやすい例だと「デルタ法」「ワルド検定」「スコア検定」の話が載っていません。探したら他にも載っていない話があるかもしれません。

一方、久保川先生の本では、「統計数理」で登場する話題であればほぼ全てカバーできている印象ですし、章末問題もより1級対策としてのフィット感があります。ただし、これも個人の印象ですが、竹村先生の本に比べるとスッキリまとまり過ぎていて、初学者にとっては本文のとっつきやすさが低い感じがします。分からないところが出てきたら、2冊を相補的に読んでいくことが理解への近道になるのではないでしょうか。

けんちょん氏のQiita記事に素直に従い、まずは最重要単元である確率分布の章だけきっちり理解するように読んでいました。確率分布は上述「PRML」で学んだことがあったため割とスラスラと読め、「ひょっとしたら今年ワンチャン受けられるかもしれない」と甘く考え始めます。

8月(40時間)

確率分布は大体分かってきたので、この月は統計的推定(不偏推定量最尤推定量、クラメール・ラオの不等式、フィッシャー情報量など)の理解に重きを置きました。実際この単元も毎年のように出題されている印象なので、手を抜かずやっていくことが求められると思います。また、手計算の鬼畜さが相対的に少ない単元もここだと思うので、ここを得意分野にすると安定して点が取りやすくなるのではないでしょうか。(20時間)

範囲の膨大さに対して理解が進んでいないことに焦りを感じ始め、理解度のブーストのために有料講座を検討し始めました。比較検討した結果、講義時間(3時間×10回=30時間)の長かった(株)すうがくぶんかさんの「統計検定1級対策講座」の受講を決断しました。

 結構良いお値段がしますが、その分しっかりと教えてくださるので個人的には受けて良かったと思います(回し者ではないです、念のため)。ただし、当たり前ですが試験範囲の全てを網羅するには時間が足りない(特に応用は分野選択があるため、個別の話題に触れられない)ので、講義だけでなく自習も必要です。

(余談ですが、受講費用は会社に払ってもらいました。「受講したからと言って別に無理して検定試験を受けなくてもいいよ」とも会社に言われていたため、この頃もまだ気楽に勉強します。)

演習量が少ないことも懸念し、久保川先生の章末問題を解き始めたのもこの頃です。上記の「竹村先生の本はカバーしていない話題」の罠に気づいて、慌ててメインを久保川先生の本に切り替えました。まだ進捗管理はしていなく、パッと見て解けそうな問題をつまみ食いして20問くらい解いていました。(20時間)

9月(50時間)

「統計検定1級対策講座」の受講が始まります。毎回テキストのどの辺りまで進むか事前に教えてくださるので、予習をしておき、分からないところは必ず質問を用意しておくようにしました。(10時間)

並行して、確率分布と統計的推定という2大頻出単元は押さえ始めたので再び過去問をパラパラめくってみますが、依然として解ける気がしません。特に「統計応用」は目眩がするくらい訳が分からないので、この時点で2ヵ年計画(今年の統計応用は本番の雰囲気に慣れるための記念受験)を意識し始めます。(5時間)

まだ演習量が足りないという事実に青ざめ、慌てて残りの章末問題÷試験本番までの残り日数を計算しました。明らかに出題されにくそうな1章と、難易度が高そうな(*)印を除いても値が2.7くらいだったので、1日3問を目標に解くように進捗管理を始めるようになります。出願締め切りが10/14だったので、その頃までに明らかに間に合わなそうなら諦めようと思っていました。(35時間)

10月(90時間)

とっつきにくくて飛ばし飛ばし読んでいた「標本分布」「検定論」についても大まかに理解するまで本文を読み込み終わりました。(35時間)

「統計検定1級対策講座」も9月と同じように予習の習慣を作っておき、講義中は「うん、うん、そうだよね」と自分の理解を確認する作業になるように努めました。(20時間)

9月に始めた久保川先生の章末問題演習もコツコツ1日3問を続けます。9月の活動から1問1時間くらいかかる(概ね30分悩んで分からなかったら解答を読み込んで納得する。解説が難しい場合もあるのでここも30分くらい最大でかかる。この1時間周期を繰り返し)ことに気づき、仕事終わりの平日であってもなるべく時間を取るようにします。どうしても発生してしまう遅れは土日に解消しました。(35時間)

こうして勉強のペースが出来てきたので、受からなくてもペナルティはゼロであることをポジティブに捉え、統計数理・統計応用(数理との親和性が高そうな理工学を迷わず選択)いずれも出願します。この時点で統計応用は記念受験が確定し、数理1本で対策することを決めます。

過去問もそろそろ解き始めたかったのですが、(子どもはいないとはいえ)家庭を持っていながら何にも遮られずに本番相当の1.5時間を確保することが難しく、また仕事終わりで疲れていることを言い訳に後回しにしていました。今回最も反省すべきはこの態度かなと思います。量も8年分と決して少なくなく今後は増えていく一方なので、少なくとも1ヶ月以上前に過去問演習は是非取り入れることをお勧めします。特に、電卓を叩くタイプの演習は久保川先生の教科書では確保できないので、電卓計算にも慣れておきましょう。

11月(100時間)

散々逃げていた過去問をようやく解き始めました。選択問題の吟味も含め90分きっかりで時間を測って解きます。(30時間)

ここで9月とは明らかに違う現象が起きていました。

「解ける…解けるぞ…!!!」

常に大問完答とまではいきませんが、ほとんどの過去問で少なくとも部分点(小問半分個くらい)はギリギリゲットできている(計算ミスは発生しがちだが考え方は合っている)自分に気がつきます。久保川先生の教科書に全ベットしておいて良かったと心から思いました。

仕事がある平日はどうしても本番相当の時間が取れなかったので、過去問演習の1回目は全て土日祝に回しました。こうして無事に土日祝の楽しい予定が入る余地など全くなくなっていきます。大学受験生さながらの精神状態になり、TLに燦然と輝くオフを過ごすフォロイーを眺めている瞬間が一番つらかったです。それでも、共に勉強を頑張っている仲間も確かに観測できていたので、結局当日までTwitterを封印することはしませんでした。

章末問題は11/14(試験の1週間前)にようやく解き終わります(50時間)。流石に間違えた問題について2周目をやる余裕は時間的にも精神的にもありませんでした。

 

残り6日間(20時間)は過去問の解き残しをやり、前日は体力の温存も兼ねて、忘れやすい公式のまとめ+モーメント母関数・期待値・分散の導出ノートを作る程度に留めて寝ました。試験会場での最後のあがきとしても優秀な教材が仕上がるので個人的にはお勧めです。ちなみに、自分が想像していた以上に身体は緊張していたようで、前日はろくに寝れませんでした…

せっかくなので、本番当日に選択した問題の話にも触れます。具体的な問題や解き方に関しては言及が禁止されているそうなので、大雑把なキーワードのみ記載することにします。

[統計数理]

問1 [2つの確率変数の独立性・期待値]

問2 [超幾何分布の最尤法・ベイズ法]

問3 [ポアソン分布の最尤推定・信頼区間]

[統計応用/理工学]

問3 [プロビットモデルとベイズ推定]

問4 [決定木とGini係数]

問5 [ベイズの定理]

問題選択についても悩ましいところですが、今年は幸運にもパッと見で「うわ、自分は苦手そうだな。パス」と捨て問を判断することができました。

ご覧頂ければお気づきかもしれませんが、この年は最尤推定量やベイズに関する出題が目立ち、また時代の流れを受けてか機械学習に関する問も丸々1つ登場しました(選択していない問題の傾向までは追えていませんが)。毎年傾向が変わっている感じもするので今後のことが読めませんが、上記「PRML」をまともに読んだことがある人にとっては最尤推定量・ベイズ法・機械学習などいずれも慣れっこだと思うので、かなりラッキーな出題セットだったのかもしれません。(「PRML」は本当に読み解くのに時間がかかるので、手放しにオススメすることはできませんが…)

想定Q&A

Q. 久保川本の章末問題難しすぎない?解いて意味あるの?

A. 半分くらいはお気持ちがわかります。本番の試験よりも難易度の高い問いも珍しくありません。しかし、シンプルにこれよりも良い問題集を私は知らないです。難しいとはいえ理解度をしっかり問うてくる良問揃いだと思いますし、理工書には珍しく、略解ではなくしっかりと解説が付いた解答PDFがご本人のウェブサイトで公開されています(それでも行間を読むのが大変なものも多いですが)。少なくとも統計数理であれば、「ああ、なんか類題やったよなー」という感じで、本番の試験中に「進研ゼミでやった問題だ現象」を感じることができると思います。逆に言うと、それくらい”仕上げて”いかないと、30分/大問1つ  という時間制限では最後の小問まで解ききる時間がないと思います。小問は大体4つくらいあるので、小問1つにかけられる時間はたったの7分です。

なお、よっぽど時間がない場合は、8章「信頼区間」の話は後回しでも良いかもしれません。なぜなら、出題頻度としては他よりもやや低いですし、7章「検定」が仕上がっていれば、受容域を単に信頼区間と定義するだけで自動的に8章の範囲もよく解けるからです。

Q. 線形回帰モデル、ちょいちょい統計数理に出てるんだけど久保川本に演習問題なくない?

A. おっ、よく気づきましたね。残念ながらそうなんです。(ここまで長い本文を下の方まで読んでくださったありがたい読者の皆さまにだけこっそりお教えします。実は久保川本の唯一の弱点がそこです。)線形回帰モデルについては過去問中心に演習を積むしかないかなと思います。他にいい参考書があればコメントなどで教えてください。

Q. 教科書の本文ってどれくらい真面目に読むべき?

A. まず、「発展的事項」は飛ばしてもいいと思います。ここを読んでいなくて統計数理の過去問演習で困る場面はありませんでした。それ以外の基本的事項すら理解するのは大変なので、まずは基本を固めましょう。演習問題と過去問含め解けるようになって、よっぽど時間が余ったら手を出すくらいが個人的おすすめです。

「発展的事項」を除いてももし試験まで時間がないなら、例えば証明の細かい論理展開までは追わなくても良いと思います。試験で定理の証明が出ることはほぼないと思うので。しかし、時間があれば個人的にはできるだけ細かく読んだ方がいいと思います。理由は、定義と定理の結論だけ見てスラスラと問題を解けることの方が珍しいからです。試験対策RTAを否定するつもりはありませんが、新しく学んだ概念をより腹落ちさせるために細かく・じっくり読んでいくのも悪くないと思います。

話がずれますが、統計応用では毎年傾向を変えてくるあたりから推察するに、単なる試験合格RTAを狙う受験者を意図的に振るい落としてるのではないだろうか?とさえ勘ぐってしまいます。「過去問さえ解けりゃいい」の枠を飛び越えて、「自分の興味を持った統計応用系の書籍にどっぷり浸かる」くらいを目指しておくことが、一見遠回りに見える合格戦略になるのかもしれません…🤔

Q. 公式の教科書は買わなくていいの?

A. 特に統計応用の範囲をざっと確認するためには、他のドンピシャな書籍がないため結局買う必要があると思います。しかし、公式本を余裕ではみ出してくる出題も多数見られるので、あくまで参考程度にとどめておく使い方になる気がします。

おわりに

この記事では2021年の統計検定1級試験の個人的な対策・勉強法をまとめました。来年以降に受験を検討される方にとって少しでも参考になれば嬉しいです。

【Kaggle Advent Calendar day19】NLP初手はどれ?〜Kaggle Notebookの人気ランキングと簡単な精度比較〜

Kaggle Advent Calendar 19日目の記事です。Kaggle Advent Calendar初参加ということで、お手柔らかにお願いします。

qiita.com

前日の記事は sinchir0 さん

日本は他の国のKagglerよりTwitterが活発なのか - sinchir0のブログ

翌日は upura さん

【Weekly Kaggle News 2周年】クリック記事ランキング2021 - u++の備忘録

です。
いきなり余談かつ私事で申し訳ないですが、日頃から大変お世話になっているお二人に挟まれて嬉しさと恐縮さがないまぜになっております。

申し遅れました、Kaggle Competitons Expertの増田と申します、よろしくお願いします。お笑い鑑賞が好きで、本日のM-1グランプリ決勝もとても楽しみです。

この記事は何?

一言で言うと、

NLPコンペにおける「初手」を考えるためのヒントとして、KaggleのNLPコンペにおける人気の手法を集計してランキングを眺めてみよう!

という主旨になります。「Kaggleノートブックでよく使われているということは実践で有効なはずだ!」という仮説に基づいていることになります。テーブルではLightGBM、画像分類では SwinTransformer/EfficientNet/ResNet などとある程度定番の初手が広く認知されているのに対して、NLPでは「やっぱりBERTかな?」と思いつつも、初手の知見を聞くことが相対的に少ないような??と感じたのが調査開始のきっかけとなりました。もちろん、「良いモデル」の選び方は解きたい問題にも大いに依存するでしょうし、モデル以外の改善ポイントもたくさんあるとは思いますが、そのあたりの調査はまたの機会にということで。

ありふれたテーマですが、意外と日本語記事で全く同じことをしている方は見つからなかったので、自身の実装力の向上も兼ねて挑んでみることにしました。

TL; DR

LSTM (/RNN/GRU)・BERT・RoBERTaの3強で、簡単な実験ではCNNも強かった。しかしながら、やはりアンサンブル前提で複数試すべき。

この記事からは得られないこと

論文ではないので、精度比較に対する詳細でサイエンティフィックな考察は述べていません。特に結果の解釈が難しくなりがちな領域だと個人的に思っているので、詳しい方がいらっしゃいましたらぜひコメント等で補足いただけると嬉しいです。

また、それぞれの手法の技術的な解説はせず、各種書籍や技術ブログ等に委ねます。気になった方は、せっかくKaggle Advent Calendarなので「NotebookをForkして動かしてみよう!」という学び方も素敵ですね。

最後にもう1点、筆者はNLPコンペ経験が極めて少ない(現在のJigsawコンペが初参戦)ため、上位入賞経験を踏まえた解説も残念ながらありません。。。(精進します)

先行調査についてご説明

この記事のモチベーションは下記のnekoumeiさんのQiita記事での精度比較実験とよく似ています。

[Python]文書分類における文書ベクトル表現手法の精度比較 - Qiita

本記事との相違点としては以下が挙げられます。

・本記事はあくまでKaggleでよく見る特徴量・モデルにフォーカスしていること

・その結果として、本記事ではCNN/LSTM/BERTなどNN系の実験が多くなったこと

・本記事では英語データセットを使っていること(Kaggleでよく出る英語で勝ちたい!🔥という意図から)

調査のやり方

8つのNLPコンペのCode(Notebook)のタイトル一覧からモデル・特徴量のキーワードについて雑に目grepし、使われていた回数が20回以上のものをランキング形式で紹介したいと思います。タイトルに入っていないが使用している場合もあると思いますが、そういうケースは取り逃がしている点ご了承ください(真面目にやるなら中のコードを見てimportしているライブラリを集計するとかになるかと思います)。

8つのコンペとは以下です。

・Jigsaw Rate Severity of Toxic Comments

・Jigsaw Multilingual Classification

・Jigsaw Unintended Bias in Toxicity Classification

・Toxic Comment Classification Challenge

Google QUEST Q&A Labeling

・Gendered Pronoun Resolution

・CommonLit Readability Prize

・chaii - Hindi and Tamil Question Answering

筆者が把握しているNLPコンペを寄せ集めただけなので、漏れがあると思います。また、ちょうど記事執筆中に最新のNLPコンペ「Feedback Prize - Evaluating Student Writing」が始まりましたが、こちらはまだほとんどモデリングのノートブックが公開されていないため対象外としています。

※筆者の手作業によるため、間違いなく真値とのズレが生じていると思います。ざっくり人気傾向を見たかっただけなのでこのような簡易的な集計法になっている点、ご了承ください。
(略称の書き方なども多岐にわたるため、自動集計しようとしても正規表現を考えるのもそれなりに骨が折れると思い、やめました。また、自分が知らなかった名前も拾えるだろうという思惑で目grepを選びましたが、結果的に聞いたことのあるものがほとんどで、見知らぬ手法は上位にランクインしませんでした。本当に見知らぬ手法名を取り逃がしている可能性は否めませんが、流石にそんな奴らの獲得票数はそこまで多くないはず…)

データセットとしては、トイデータにはなりますが学習時間が短くて済むため「News Aggregator Data Set」の記事タイトルからジャンルを分類するものを使わせていただきました。(画像でいうところのMNIST的なデータセットだと思います)

UCI Machine Learning Repository: News Aggregator Data Set

データセットのダウンロードや整形はこちらを参考にしました。

【PyTorch】BERTを用いた文書分類入門 - Qiita

ハイパラまでチューニングしだすとキリがないので、原則としてモデルのデフォルト値を使います。NN系のアーキテクチャについては、KaggleノートブックでUpvoteの高いものを拝借させていただく形を取りました。train,valid,testは8:1:1で分割しています。

精度比較実験のコードは、Jupyter notebookの非常に簡易的で整備されていないもので恐縮ですがGitHubにアップしておりますので、ご自由にお使いください。現状のリポジトリは決して完成系でなく、綺麗なコードに直したり、複数データセットで比較したり、学習・検証データでk-fold CVを切ったり、複数シードでの中央値を比較対象にしたりなど随時アップデートしていきたいと思います。

GitHub - taro-masuda/nlp_modeling_comparison

※「精度比較なんてPapers with Codeで十分なのでは?」という声が聞こえてきそうですが、あえて自分で手を動かすことが自分の財産になると思ったのでこのような試みを始めています。入門者を温かく見守る感じでご覧ください。

調査結果(人気ランキング)

〜モデル部門〜

1位:LSTM、RNN、GRU(276票)

BERT以前から広く使われてきていたLSTM系が堂々の第1位でした。これら3つは親戚のような手法であるとともに、集計途中で明らかにトップレベルに使われていそうだったので、集計を楽にするためにまとめてしまっています。評価実験では代表としてLSTM選手に登場していただきますが、3種類全ての実験結果も後日追加しようと思います。

しかしながら、1位とはいえ最近のコンペでは2,3位のBERT系に押され気味なのが気になります。開催中の「Jigsaw Rate Severity of Toxic Comments」では14個ということでまだまだ現役である感はありますが、「chaii」では1つも登場しませんでした。

2位:BERT(247票)

はい、さすが2018年に現れてから「自然言語処理の王様」と名高いだけありますね。1位が3種のチームマージ優勝だったので、BERTはソロ部門の優勝ですね。まさに王様。やはり上位は驚きのない結果が続きます。

3位:RoBERTa(203票)

Jigsaw Multilingualコンペ、chaiiコンペで多言語を扱うべく「XLM-RoBERTa」が、CommonLitコンペでベースのRoBERTaがそれぞれ圧倒的人気を誇りTop3にランクインしました。この記事の実験では多言語タスクは解かないため、ベースのRoBERTaとの合体票とさせていただきました。こちらも色々なノートブックでよく見るモデルなのでしっかり押さえたいところです。

今回のモデルの中で一番大きくて回すのが大変な印象がありますが、ColabでランタイムをTPUにすればすぐに回し終えることができました。BERT系の実験はこちらのノートブックを拝借させていただきました。

Jigsaw TPU: XLM-Roberta | Kaggle

同じくらいの時期に「ALBERT」もBERTの進化系として話題になったはずですが、Kaggleノートブック人気はあまりないようでした。その辺りの考察ができたらまた記事を書きたいと思っています。

4位:LightGBM、XGBoost(72票)

テーブルコンペの初手でお馴染みLGBMさんですが、テキストデータ界隈ではこの位置に来ました。それでもよく使われることに変わりはないので、比較対象に入れてみましょう。XGBさんも親戚なので合体票とさせていただきました。後述の「特徴表現部門」の色々な特徴量のパターンを試してみようと思います。

5位:CNN(70票)

画像で効果的であるというイメージばかり先行していたので、ここまでNLPで人気だというのは個人的には意外でした。しっかり自分の武器の1つにしたいと思います。こちらのノートブックを参考にします。

CNN GLOVE300 3-OOF 3 epochs | Kaggle

6位:Logistic Regression(ロジスティック回帰)(62票)

いわゆる枯れたモデルですが、特に昔のコンペに行く程よく使われていたためTop10にランクインしました。使い方も難しくなく計算も速いので、比較としてはとても試しやすいですね(有り難い。。。)そういう手軽さや、挙動が分かりやすいところが人気の理由なのかもしれません。とはいえ、こちらも最近のコンペでは下火のようです。

7位:SVMSupport Vector Machine, サポートベクタマシン)(48票)

SVR, SVCといった表記の合体票です。Twitterではしばしば「SVMが実践で役立ったことはない」とディスられがちなSVMさんですが、意外にもノートブック人気は高いです。本当に使えないのかどうか、比較対象にしてみましょう。

8位:DistilBERT(38票)

蒸留により軽量化されたBERTですね。計算が速くなり実験のイテレーションも多く回せるのが人気の秘訣でしょうか。

9位:ナイーブベイズ(Naive Bayes)(34票)

6位「Logistic Regression」と全く同じことが言えます。笑

10位:Ridge/Lasso Regression(リッジ回帰, ラッソ回帰)(23票)

せっかくランクインしていただいたRidge/Lassoさん達ですが、今回は一旦分類問題を解かせるということで実験対象からは外しています😢  今後時間を見つけて回帰でも比較実験をしてみたいところです。最近ですとCommonLitがデータ規模小さめの回帰タスクだと話題を呼んでいたためうってつけですね。

〜特徴表現部門〜

1位:GloVe(48票)
2位:Word2Vec(CBOW, skip-gram, doc2vecなど)(35票)
3位:FastText(22票)

これらに加え、TF-IDFさんも数多く使用されていたため、比較対象に入れます(いちいちカウントするのは面倒になってやめました、すみません)。

なお、TF-IDFは万単位の高次元ベクトルに達することが多いため、SVD(Singular Value Decomposition; 特異値分解)で300次元に圧縮して使用することにします。その他の特徴量も300次元がデフォルトの場合が多くなるべく次元数を揃えたかったところですが、BERTのembeddingは768次元がデフォルトになっているものをそのまま使いました。また、ナイーブベイズに対してだけは、次元圧縮せずそのまま突っ込むということと、負のベクトルを入れるべきでないという事情からTFIDFのみを特徴ベクトルとして使います。

単語毎に特徴ベクトルが算出されるembeddingについて、系列として扱わないモデルにはSWEM-averageで単純な平均プーリング特徴を突っ込むことにします。こちらのコードを拝借します。

GitHub - yagays/swem: Python implementation of SWEM (Simple Word-Embedding-based Methods)

精度比較結果

f:id:taro_masuda:20211219014055p:plain

結果は表のようになりました。val_accやtest_accを高くできた優勝者はCNNで、AUCやloglossも含め総合的に良い値を叩き出せているのはCNNに加えてLSTMとBERTでした。まさに深層学習最盛期を象徴するような結果ですね。

今回のEmbedding-SWEM系の敗因としては、他の手法との条件を揃えるためストップワードの除去など丁寧な前処理なしの重みなし平均プーリングしており、分類にとって重要でない単語の特徴がノイズになったのではないかと考えられます。

対照的に、TFIDF系であれば重要でない単語の寄与度が減ってくるため、そこそこいい精度を出せています。BERTについては、self-attentionを使ってどういう単語に注意を向けるかが学習できていたのだと思いますが、同様のことが言えるRoBERTaが9割超えならずとなったのはあまり腑に落ちない結果となりました。逆の話で、LSTMにとっては必ずしも長期記憶の強みが発揮されるとは言いにくい短いテキストだったはずですが、ここまで良くなった理由も今のところはっきり分かっていません。

LSTMでは異なる種類の分散表現でも軒並み高い精度を出せたのですが、LightGBMではw2v << GloVe < TFIDF < FastText とかなり精度に差が出ているところが気になります。はっきりとした原因はわかっていませんが、SWEMでの平均プーリング操作への頑健性の差が出たのでしょうか。実際のコンペではdo everything精神で全て試してみる方が良さそうに思います。

また、GBDT系の2つのモデル(LGBM vs XGB)を比べてみると、あらかたLGBMの方が勝利していることもわかります。ハイパラ調整で結果も変わってきそうではありますが、この辺りの「手のかからなさ」が理由でLGBMがより持て囃されているのだろうと推測されます。今回の場合は、分散表現の中では最近寄りに提案されたfasttextとコンビを組むと決して悪くない結果を出せていると思います。

ナイーブベイズやロジスティック回帰など、古典的な手法も割と侮れないほど結果を出してきているところにも注目したいです。最近の実戦のコンペではより複雑で大規模なデータと格闘しなければならないため、それ相応の表現力を持ったものが好まれているのだと推測しました。SVMについては、BERT embeddingを使った場合は素晴らしい精度を出せていましたが、下馬評通りあまりかっこいいところが見せられていない結果も多いです。チューニング芸に長けている方なら色々なシーンで性能を引き出せるのかもしれませんが、素人が初手として選ぶようなモデルではない気がしました。

その他の参考文献

テーブルデータ向けの自然言語特徴抽出術

文章の埋め込みモデル: Sparse Composite Document Vectors を読んで実装してみた - nykergoto’s blog 

Kaggle Grandmasterに学ぶ 機械学習 実践アプローチ | マイナビブックス

いずれも、具体的な特徴抽出の実装コードを参考にさせていただきました。この場を借りて深い感謝を申し上げます。

おわりに

本記事では、NLPコンペにおける「初手」を考えるためのヒントとして、KaggleのNLPコンペにおける(ここ数年の)人気の手法を集計してごく簡単な精度比較実験をしてみました。結論としてはBERTやRoBERTa、LSTM系が初手の候補になり得ると思います。今回の実験で活躍したCNNも味方になってくれそうです。

しかし、バラエティに富んだモデリング手法がノートブックで公開されていることや、最近のコンペの解法でも多くのモデルのアンサンブルがその強力さゆえに盛んに用いられていることから、様々なモデルを自分の道具としてストックしておくことも重要だと考えています。サクッと複数のモデル学習を回す力を養っておけば、コンペで差がつくと思われる前処理・後処理やオリジナルの特徴抽出などを考えるために割ける時間が増えることでしょう(と今後の自分の成長に期待)。集計作業は地味で大変なものでしたが、その分この分野でホットな手法を俯瞰することができたので、今ではやって良かったと思っています。しかしながらなにぶん進歩の早い業界なので、また数年後にランキング集計からやり直すことも求められそうです😇

皆さんがモデリングするにあたってこの記事が少しでも参考になっていれば幸いです。

ブログのコメント欄はもちろん、Twitter, GitHubでのフィードバックも随時歓迎しています!よろしくお願いいたします。

Taro Masuda (@ml_taro) | Twitter