ここから始めよう - 実践でつまずきにくくなる行動指針
- 実データを最低1万件用意し、前処理からやってみる
現場の課題やデータ特有の問題を早期に体験できる
- print文や例外処理をコード全体の10%以上に組み込む
エラー発生時すぐ原因特定でき、学習効率が上がる
- 7日以内にノートブックだけでなく.pyファイル化して保存する
.py移行で本番環境への意識と再現性が高まる
- データを複数のソース(演習)からAPI/共Docker/本番(最初はローカル)まで流れを書き出す
全工程見える化で混乱減り、詰まりポイントも明確になる
初心者がよくやる失敗、学習の罠
# なぜあなたの機械学習プロジェクトが採用につながらないのか—そしてその対策
やあ、こんにちは。あれ、こんな時間に何を書いてるんだろう…まあいいや。もし、あなたが機械学習(ML)プロジェクトに夢中で取り組んでいるのに、なんとなく面接に呼ばれない、と感じていたら、別にそれはあなた一人だけじゃないんですよね。うーん、この感覚、結構あると思う。ポートフォリオを作るときって、つい「見栄え重視」になっちゃって、本当に企業が求めてるスキルが見えてないまま進めてしまうこと、多くの人がそうだと思います。いや、自分もたぶんそうだった。
ただし、ここで少し希望もあるわけです。ああ…コーヒー冷めてきた。でも本題戻りますね。MLプロジェクトをもっと良いものにしたいとか、キャリアを一歩先へ進めたいなら、実は明確な道筋みたいなものが存在します。それは特別な話じゃなくて—うーん、この表現古風かも—ごく普通のことなんだけど、「どうやってレベルアップすればいいか」を知ることで状況はずいぶん変わります。
さて、それでですね。この文章では初心者から高度な段階まで、一応5つのレベルで機械学習プロジェクトについて説明してみます。途中で変な話を挟むかもしれませんが、ご容赦を(集中力持続しなくて…)。最後まで目を通してもらえれば、自分自身が今どこにいるかとか、「次は何を鍛えるべきなのかな」っていう輪郭がほんのり浮かび上がると思います。ま、とりあえず読み進めてもらえると嬉しいです。
やあ、こんにちは。あれ、こんな時間に何を書いてるんだろう…まあいいや。もし、あなたが機械学習(ML)プロジェクトに夢中で取り組んでいるのに、なんとなく面接に呼ばれない、と感じていたら、別にそれはあなた一人だけじゃないんですよね。うーん、この感覚、結構あると思う。ポートフォリオを作るときって、つい「見栄え重視」になっちゃって、本当に企業が求めてるスキルが見えてないまま進めてしまうこと、多くの人がそうだと思います。いや、自分もたぶんそうだった。
ただし、ここで少し希望もあるわけです。ああ…コーヒー冷めてきた。でも本題戻りますね。MLプロジェクトをもっと良いものにしたいとか、キャリアを一歩先へ進めたいなら、実は明確な道筋みたいなものが存在します。それは特別な話じゃなくて—うーん、この表現古風かも—ごく普通のことなんだけど、「どうやってレベルアップすればいいか」を知ることで状況はずいぶん変わります。
さて、それでですね。この文章では初心者から高度な段階まで、一応5つのレベルで機械学習プロジェクトについて説明してみます。途中で変な話を挟むかもしれませんが、ご容赦を(集中力持続しなくて…)。最後まで目を通してもらえれば、自分自身が今どこにいるかとか、「次は何を鍛えるべきなのかな」っていう輪郭がほんのり浮かび上がると思います。ま、とりあえず読み進めてもらえると嬉しいです。
現実味ないデータで遊ぶだけじゃダメ?
【レベル1:ビギナープレイグラウンド】たぶん、ここから始める人が一番多い気がする。まあ、それで全然問題ないと思うし、最初の一歩ってだいたいこんなもんよね。えっと、この段階ではKaggleとか、そういう場所から落としてきたピカピカのデータセットを使っていることが多いはず。ノートパソコン開いてJupyterノートブック起動して、pandasでごそごそデータを触ったり、scikit-learnみたいなライブラリ使ってモデル組む――ああ、線形回帰とかロジスティック回帰とか、そのへん。……あれ?今何話してたっけ? そうそう、ときどき集中切れるんだよね。でも話を戻すと。
実際によくやる作業としては、CSVファイルを読み込んでデータフレーム化したり(これ結構楽しい)、matplotlibやseaborn使って簡単なグラフ描いたりする感じかな。それから平均値突っ込んで欠損値埋めたり、「なんとなく」カテゴリカル変数にワンホットエンコーディングかけたりするし、ごく普通のモデル訓練して精度見て「ふーん」てなることもある。ま、いいか。
こういうプロジェクトは学ぶには本当にちょうどいいと思う。ただ…現場で直面する課題とは微妙に違う部分も確実に存在するわけで。現実世界のデータって、本当に整理されてなくて手間取ることばかりなんだよね…。うーん、それでも最初のステップとして悪くないと私は思うよ。
実際によくやる作業としては、CSVファイルを読み込んでデータフレーム化したり(これ結構楽しい)、matplotlibやseaborn使って簡単なグラフ描いたりする感じかな。それから平均値突っ込んで欠損値埋めたり、「なんとなく」カテゴリカル変数にワンホットエンコーディングかけたりするし、ごく普通のモデル訓練して精度見て「ふーん」てなることもある。ま、いいか。
こういうプロジェクトは学ぶには本当にちょうどいいと思う。ただ…現場で直面する課題とは微妙に違う部分も確実に存在するわけで。現実世界のデータって、本当に整理されてなくて手間取ることばかりなんだよね…。うーん、それでも最初のステップとして悪くないと私は思うよ。

ノートブックから脱却する最初の一歩は何
実際のところ、ノートブックだけじゃ物足りない瞬間ってあるんだよね。ふと気が付いたら、あれ?なんか最近この程度の小さなプロジェクトだとあまり苦労しなくなったかも、と感じることもある。ま、いいか。でも、それって次の段階に行くタイミングなんじゃないかなと、ぼんやり思うわけで。
レベル2:データサイエンティスト的思考――ここからはちょっとだけ専門っぽくなる。えっと、具体的には、一つのノートブックに全部突っ込むんじゃなくて、例えばデータクリーニング用・モデリング用みたいに用途ごとにコードを分けたファイルを作り始めたりする。ああ、それからGitでバージョン管理したりとかも、この辺で意識し出す人多いよね。でも急にそうしろと言われても…いや、自分も最初は抵抗感しかなかったけどさ。
途中で話が逸れちゃったけど、本題に戻すね。さらに言えば実験内容を記録するための設定ファイル(コンフィグファイル)を書いて管理するようになったら、もうこれは立派な「次のステップ」なのかもしれない。まあ、「できて当然」とまでは言えないものの、この辺から世界がちょっと違って見えてくる気がして、不思議だよね…。
レベル2:データサイエンティスト的思考――ここからはちょっとだけ専門っぽくなる。えっと、具体的には、一つのノートブックに全部突っ込むんじゃなくて、例えばデータクリーニング用・モデリング用みたいに用途ごとにコードを分けたファイルを作り始めたりする。ああ、それからGitでバージョン管理したりとかも、この辺で意識し出す人多いよね。でも急にそうしろと言われても…いや、自分も最初は抵抗感しかなかったけどさ。
途中で話が逸れちゃったけど、本題に戻すね。さらに言えば実験内容を記録するための設定ファイル(コンフィグファイル)を書いて管理するようになったら、もうこれは立派な「次のステップ」なのかもしれない。まあ、「できて当然」とまでは言えないものの、この辺から世界がちょっと違って見えてくる気がして、不思議だよね…。
複数ソース統合と実験追跡、地味に大事な話
適切なトレーニング/バリデーション/テストの分割を使うっていうのは、まあ当たり前なんだけど、クラスの不均衡への対処も忘れちゃいけない。あ、そういえば昨日夢でLightGBMが犬になって走り回ってたんだよね…いや関係ないか。新しいモデルとしてLightGBMとかシンプルなニューラルネットワークを試したりもできるし、ハイパーパラメータチューニングも大事だったりする。でもほんとに、そればっかやってて疲れたら休憩した方がいいよ。
それで軽量なデータパイプラインを構築することも考えられるし…ま、正直この辺わからなくても何とかなる気がしてくるけど、ともかく色々やることは多いね。うーん、レベル2プロジェクトの良き例としては顧客離反予測システムの構築――これが挙げられるかな。サポートチケットや利用ログ、それから購買履歴みたいな複数ソースからデータ引っぱってきて、「あ、この人そろそろ離れそう」みたいな兆候を探す感じ。
このフェーズだと、多分ね、多くの場合企業内で求められている仕事とより近いことになってると思う。でもさ、「これ本番環境いつ使える?」とか急に聞かれた瞬間に、新しい世界というか領域がさらに見えてきたりするんだよね…。
**レベル3:実世界へのモデル導入**
**レベル3へようこそ** ―ここでは「単なる」データサイエンティストじゃもう物足りなくて、機械学習エンジニアとして歩き始める役目になる。なんか響きはカッコいいけど、本音言うとちょっとプレッシャー感じたりもする。
それで軽量なデータパイプラインを構築することも考えられるし…ま、正直この辺わからなくても何とかなる気がしてくるけど、ともかく色々やることは多いね。うーん、レベル2プロジェクトの良き例としては顧客離反予測システムの構築――これが挙げられるかな。サポートチケットや利用ログ、それから購買履歴みたいな複数ソースからデータ引っぱってきて、「あ、この人そろそろ離れそう」みたいな兆候を探す感じ。
このフェーズだと、多分ね、多くの場合企業内で求められている仕事とより近いことになってると思う。でもさ、「これ本番環境いつ使える?」とか急に聞かれた瞬間に、新しい世界というか領域がさらに見えてきたりするんだよね…。
**レベル3:実世界へのモデル導入**
**レベル3へようこそ** ―ここでは「単なる」データサイエンティストじゃもう物足りなくて、機械学習エンジニアとして歩き始める役目になる。なんか響きはカッコいいけど、本音言うとちょっとプレッシャー感じたりもする。

API化?Docker?本番環境へモデルを放り込む混乱
最近は、モデルを作るだけじゃなくて、本当に動くようにしないと意味がないんだよね。うーん、いや、それって昔もそうだった気がするけど…まあ、今だとDockerコンテナでラッピングしておいてさ、API経由(FastAPIとかFlaskとかよく聞くやつ)で予測出すのが普通になっちゃった。ああ、それからGrafanaみたいなダッシュボードで監視までしてる人、多いらしい。さらにMLflowやDVCなんか使ってバージョン管理も忘れずに――正直ちょっと面倒、と言いたくなる。でも逃げられない。
例えばメディアサイト向けの推薦エンジンを考えてみようか。リアルタイムでAPIからレコメンド返しつつ、夜中にはバッチアップデートも走らせている。不思議な話だけど、人間寝ててもシステムは働き続けるんだよね。それとクリック率やパフォーマンス指標なんかもしっかり記録していくらしい。えっと…でも何かトラブル起きた時にはデフォルトリコメンダーみたいなの用意しとかないと危険かな、と自分でも思うことがある。本筋に戻すけど、そういう全部まとめて「現場」で求められている業務領域なんだろうな。
もしここまで扱えるならキャリア上メリットにもなる可能性ある…たぶん。そのあとというか、**レベル4: スケーラブルな機械学習システムの構築**って話になるわけだけど、本番運用できた先はスケールアップ段階へ進むことになるわけで――ま、この辺で一息入れてまた考え直したい気分です。
例えばメディアサイト向けの推薦エンジンを考えてみようか。リアルタイムでAPIからレコメンド返しつつ、夜中にはバッチアップデートも走らせている。不思議な話だけど、人間寝ててもシステムは働き続けるんだよね。それとクリック率やパフォーマンス指標なんかもしっかり記録していくらしい。えっと…でも何かトラブル起きた時にはデフォルトリコメンダーみたいなの用意しとかないと危険かな、と自分でも思うことがある。本筋に戻すけど、そういう全部まとめて「現場」で求められている業務領域なんだろうな。
もしここまで扱えるならキャリア上メリットにもなる可能性ある…たぶん。そのあとというか、**レベル4: スケーラブルな機械学習システムの構築**って話になるわけだけど、本番運用できた先はスケールアップ段階へ進むことになるわけで――ま、この辺で一息入れてまた考え直したい気分です。
夜中に回すバッチ、壊れた時どうするんだろうね
大規模で複雑なシステムを扱うって、どうしても気が重くなるものだよね。うーん、まあ現実にはさ、データやユーザー数が増えても、そのままずっとスムーズに動き続けなきゃいけないわけで…。例えば、AWS SageMakerやAzure ML、それからGoogle Vertex AIみたいなクラウドサービスとかを活用することになるんだけど、本当に全部把握できてるのか自分でもちょっと疑問なんだ。Kubernetesによるスケーリングと管理、これ地味に骨が折れるし、AirflowやPrefectなんかのワークフローツールも必須になってくる。でもあれ? PyTorchやTensorFlowみたいなディープラーニング系まで一気に押し寄せてくると本当に疲れない?…いや、本筋戻ろう。モデルの高速化のためには量子化や知識蒸留なんて方法もあるらしい。それが全部噛み合えばいいんだけどさ。
たとえば…そうだな、グローバル金融企業向けの不正検出システム構築とか思い浮かぶよね。このケースでは、大量かつリアルタイムなデータから見逃されがちな希少パターンをどう拾うかで悩むし、一方で厳格な規則や法令適合にも同時対応しないといけないわけ。ああ、何度読み返しても面倒。でも、このレベルになると、高度アルゴリズムだけじゃなく全体システムとして堅牢性・信頼性…つまり壊れず動き続けられることが最重要課題っぽい。
**レベル5:AI分野の限界へ挑戦する段階**
**レベル5では** 、既存課題を直すというより、新しい解決方法そのものを作り出す場所だったりする。まあ正直、この辺は大手AI企業など研究チームが担当している領域なんだろうね。しかし、それって本当に一般人に近づきようあるんだろうか?……いや、ごめん、自分語りだった。本筋戻すと、とにかく「前例なし」に挑戦するフェーズなのは間違いないらしい。
たとえば…そうだな、グローバル金融企業向けの不正検出システム構築とか思い浮かぶよね。このケースでは、大量かつリアルタイムなデータから見逃されがちな希少パターンをどう拾うかで悩むし、一方で厳格な規則や法令適合にも同時対応しないといけないわけ。ああ、何度読み返しても面倒。でも、このレベルになると、高度アルゴリズムだけじゃなく全体システムとして堅牢性・信頼性…つまり壊れず動き続けられることが最重要課題っぽい。
**レベル5:AI分野の限界へ挑戦する段階**
**レベル5では** 、既存課題を直すというより、新しい解決方法そのものを作り出す場所だったりする。まあ正直、この辺は大手AI企業など研究チームが担当している領域なんだろうね。しかし、それって本当に一般人に近づきようあるんだろうか?……いや、ごめん、自分語りだった。本筋戻すと、とにかく「前例なし」に挑戦するフェーズなのは間違いないらしい。

クラウドで巨大データをさばく…課題もメリットも山ほど
カスタムニューラルネットワークの設計を考えてみると、なんだか果てしない感じがしてしまう。ああ、未ラベルデータセットでの自己教師あり学習って、本当に膨大すぎて目が回りそうだよね。強化学習も絡んできて、さらにシンボリックリースニングとディープラーニングの融合――なんだっけ、あれも最近妙に話題だけど…いや、それより、モデル訓練用に特注のハードウェアまで作っちゃうとか、本気度が違うと思わずにはいられない。でもさ、こういう領域を探求してる人たちって本当に何者なんだろう。
レベル5のプロジェクトというやつでは、AIシステムが新薬発見をサポートする例が語られることが多い。ふむ…科学的仮説を自動生成しつつ実験シミュレーションもしちゃって、その上、人間研究者へ「この分子どう?」みたいに提案までする、と。えっと、この仕組み、一見すると魔法じみてるけど実は意外と地道な積み重ねだったりするんじゃないか、と時々思う。それでもやっぱり――まあいいか。現状としてはこれらプロジェクト、大部分はまだ試験的段階から抜け出せてなくて、本格運用には届いてないケースが目立つ。なのに、不思議と未来のAI像をちらっと垣間見せてもくれる気配がある。あー…ここまで書いてきて急に気になったんだけど、結局就職したかったらどこまで到達しなきゃダメなんだろ?らしいけど、その答えはね…すごく単純化すると職種次第です、ということでひとまず締めておこうかな。
レベル5のプロジェクトというやつでは、AIシステムが新薬発見をサポートする例が語られることが多い。ふむ…科学的仮説を自動生成しつつ実験シミュレーションもしちゃって、その上、人間研究者へ「この分子どう?」みたいに提案までする、と。えっと、この仕組み、一見すると魔法じみてるけど実は意外と地道な積み重ねだったりするんじゃないか、と時々思う。それでもやっぱり――まあいいか。現状としてはこれらプロジェクト、大部分はまだ試験的段階から抜け出せてなくて、本格運用には届いてないケースが目立つ。なのに、不思議と未来のAI像をちらっと垣間見せてもくれる気配がある。あー…ここまで書いてきて急に気になったんだけど、結局就職したかったらどこまで到達しなきゃダメなんだろ?らしいけど、その答えはね…すごく単純化すると職種次第です、ということでひとまず締めておこうかな。
KubernetesとかPrefect使っててもう人間じゃない感覚になる
簡単に言うとさ、エントリーレベルのデータサイエンス職にはレベル2のプロジェクトが大切なんだよね。実際のデータ扱えますか?って、そこけっこう見られるし、適切な検証手法を使えるかとかも当然問われるし。あれ…今何話してたんだっけ、ああそうそう、自分の作業内容を説明できるってことも外せないポイントなんだよ。ま、いいか。
でさ、エントリーレベルのMLエンジニアとかミッドレベルのデータサイエンス職だったらどうするべきかっていうと…やっぱりレベル3を目指す方がいいんじゃないかなと思うわけ。でもAPIとかモニタリング、それにバージョン管理―まあ要はデプロイメント系全般だけど、その辺の経験ちゃんと持ってるぞアピールもいるんだよね。ふぅ…。
シニアMLエンジニアやMLOps関連職になるとさ、もうレベル4での経験は必須って感じになっちゃう。それだけじゃなくてスケーラブルなシステム構築したり、それクラウド上で維持できたりする力まで証明しろって言われるし。ちょっと大変そう…。いや、大変なんだけど。
AIファースト企業で研究職ポジションについては―これはもうレベル5想定されてるみたい。でも正直そこまで行く人そんな多くない気もするなぁ…。まぁ、とにかくそんな流れです。
でさ、エントリーレベルのMLエンジニアとかミッドレベルのデータサイエンス職だったらどうするべきかっていうと…やっぱりレベル3を目指す方がいいんじゃないかなと思うわけ。でもAPIとかモニタリング、それにバージョン管理―まあ要はデプロイメント系全般だけど、その辺の経験ちゃんと持ってるぞアピールもいるんだよね。ふぅ…。
シニアMLエンジニアやMLOps関連職になるとさ、もうレベル4での経験は必須って感じになっちゃう。それだけじゃなくてスケーラブルなシステム構築したり、それクラウド上で維持できたりする力まで証明しろって言われるし。ちょっと大変そう…。いや、大変なんだけど。
AIファースト企業で研究職ポジションについては―これはもうレベル5想定されてるみたい。でも正直そこまで行く人そんな多くない気もするなぁ…。まぁ、とにかくそんな流れです。

AI最前線―新しい方法を自作して結果は未知数の世界へ
つまり、出版物とか…ああ、何だっけ、そうそう最先端のモデル、それにAI理論やシステムへの――うん、深い理解が求められるわけですよ。ま、だからといって、全部覚えなきゃダメって話でもなくて。たぶんね、「Level 5」に到達しないと機械学習で素敵なキャリアは築けません!……みたいに思うかもしれないけど、実はそうでもなくてさ。正直なところ、多くの現実的な仕事はLevel 3とLevel 4、その間くらい?いや、むしろそこら辺に転がってる気すらする。こう言うのも何だけど、一つ強力なLevel 3プロジェクト(ただし、それが現実の問題をエンドツーエンドで解決できる場合だけど)は、複数の初級ノートブックより断然価値があることも多々ある、と私は思うんだよね……あれ、この説明で伝わったかな?ま、とりあえず進もう。
さて――まとめ、と言いたいところなんだけど……あっ、ごめんちょっと考え事してた。えっと、ここまでがMLプロジェクトの5つのレベルと、それぞれがキャリアというものにどう絡むかについてだったんだよね。各レベルって不思議と前段階に積み上げるようになっていて、無理して先へ突っ走ろうとしなくても大丈夫らしい。でもまあ、人によっては焦る気持ちもわかるかな……いや私も時々そうなるしさ。しかし、自分のペースが一番かもしれない。
さて――まとめ、と言いたいところなんだけど……あっ、ごめんちょっと考え事してた。えっと、ここまでがMLプロジェクトの5つのレベルと、それぞれがキャリアというものにどう絡むかについてだったんだよね。各レベルって不思議と前段階に積み上げるようになっていて、無理して先へ突っ走ろうとしなくても大丈夫らしい。でもまあ、人によっては焦る気持ちもわかるかな……いや私も時々そうなるしさ。しかし、自分のペースが一番かもしれない。
どこまで行けば仕事につながるか、それぞれのゴールライン
今いる場所から始めるしかないよね。焦っても仕方ないし、うーん…結局、自分のペースで進むしかない気がする。実際に役立つスキルを身につけていくことで、ほんの少しずつだけど前に進めるはず。ま、いいか。ところで、今はどのレベルで取り組んでる?自分でも時々「これって本当に意味ある?」なんて考え込むことがあるけど…。そういえば、一番大きな課題って何だった?意外と誰にも話してなかったりするんだよね。不思議なものだ。あ、もし良かったらコメント欄に書いてみてほしいな。えっと、最近ちょっと疲れてて返信遅れるかもだけど、それでも読みに行くつもりだからさ。そして、これから投稿していく予定の中では、それぞれのレベルに合ったツールや手法についてもう少し細かく紹介できたらいいなって思ってる――いや、本当にちゃんと伝わるかな…。また迷子になりそうだけど、とりあえず続けてみるよ。