新規およびジュニアデータサイエンティスト向けのアドバイス

数年前に自分に言ったこと

画像クレジット:アリストゥルオン

動機

2年前、業界でデータサイエンスを行った経験を共有しました。この執筆はもともと、Twitterでの2年間のツイッターを祝うための個人的な反省となることを目的としていましたが、多くの意欲的なデータサイエンティストにとって非常に役立つと思われるため、代わりにMediumで公開しました。

2017年まで、Airbnbで2年弱働いていましたが、最近、シニアデータサイエンティストになりました。これは、一定レベルの技術的専門知識を獲得したことを示す業界タイトルです。これまでの旅を振り返り、次に何が起こるかを想像しながら、キャリアの初期に知っていたらよかったと思ういくつかの教訓をもう一度書き留めました。

私の以前の投稿の対象読者が、意欲的なデータサイエンティストと、この分野に完全に馴染みのない人である場合、この記事はすでにこの分野にいるが、まだ始まったばかりの人を対象としています。私の目標は、この投稿を、私が学んだ重要なことを思い出させるだけでなく、他の人がDSのキャリアに乗り出すときに刺激を与えることです!

あなたのクリティカルパスは誰ですか?

卓越した学術的で多作なブロガーであるフィリップ・グオは、学生、インターン、研究者としての彼の年月の間、さまざまなメンターと交流した経験を反映しました。彼のブロットポスト「Whoose Critical Path Are You On?」で、彼は次の観察を行いました。

メンターのクリティカルパス(キャリアアップまたはフルフィルメント)にいた場合、彼らは私が成功するために必要な助けを得られるように懸命に戦うでしょう。逆に、メンターのクリティカルパスにいなかった場合、通常は自分でやるしかありませんでした。 […]誰かの​​クリティカルパスに到達した場合、あなたは彼らにあなたの成功を彼らの成功に結び付けるように強制します。
画像クレジット:The Icefields Parkway // Daniel Han

このワークダイナミクスは非常に直感的であり、プロジェクトの選択、チームの選択、さらにはどのメンターや会社で働くかを評価するときに、キャリアの早い段階でそれを内面化したかったのです。

例として、Twitterで私は常に機械学習の詳細を知りたいと思っていましたが、私のチームは、データ駆動型であるにもかかわらず、実験設計と製品分析に専念するためにデータサイエンティストを大いに必要としていました。私の最善の努力にもかかわらず、この知的欲求を私のチームの重要なプロジェクトと結びつけることはしばしば困難であると感じました。

その結果、Airbnbに到着したとき、MLが成功に不可欠なプロジェクト/チームに参加することに集中するという意識的な決断をしました。私はマネージャーと協力して、いくつかの有望な機会を特定しました。そのうちの1つは、Airbnbのリストのライフタイムバリュー(LTV)をモデル化することです。

このプロジェクトは、私たちのビジネスの成功だけでなく、私のキャリアの発展にとっても重要でした。機械学習モデルを大規模に構築するワークフローについて多くのことを学びましたが、具体的なビジネス問題を解決するという文脈で学習する以外に、学習するより良い方法はありませんでした。

間違いなく、自分の願望やスキルを磨きたい場所に合ったプロジェクトを見つけることができたのは非常に幸運でした。メンターのクリティカルパスでプロジェクトを選択するフレームワークは、私たちの願望を仕事中の適切なプロジェクトと一致させることで、徐々に「幸運」になると信じています。

私が学んだ原則:私たちは皆、開発したいスキルと追求したい知的興味を持っています。私たちの願望が現在の環境のクリティカルパスとどれだけうまく調和しているかを評価することが重要です。クリティカルパスがあなたのものと最もよく一致するプロジェクト、チーム、および企業を見つけてください。

問題に適したツールを選ぶ

Airbnbの前は、ほとんどの職業生活でRとdplyrでコーディングしていました。 LTVプロジェクトを開始した後、すぐに成果物が分析コードの一部ではなく、実稼働の機械学習パイプラインであることに気付きました。 Pythonを使用してAirflowで複雑なパイプラインを構築する方がはるかに簡単であるため、ジレンマに直面しました。RからPythonに切り替える必要がありますか?

画像ソース:quickmeme.com(RまたはPythonに加えて、Excelも真剣な候補です)

多くの人が選択する言語を決定するのに苦労したため、これはデータサイエンティストの間で非常に一般的な質問であることが判明しました。私にとっては、どちらか一方にコミットすると切り替えコストが明らかにかかります。トレードオフを理解するために長所と短所を調べましたが、それについて考えれば考えるほど、意思決定麻痺のtrapに陥りました。 (これはこの概念を実証する面白い話です)。最終的に、Redditでこの応答を読んだ後、この麻痺から脱出しました。

どのプログラミング言語を学ぶべきかを考えるのではなく、どの言語が問題に合った適切なドメイン固有言語(DSL)のセットを提供するかを考えてください。

ツールの適切性は、常にコンテキストに依存し、問題に固有です。 Pythonを学ぶ必要があるかどうかではなく、Pythonが仕事に適したツールであるかどうかです。この点について詳しく説明するために、いくつかの例を示します。

  • 目標が最新の最新の統計手法を適用することである場合、Rの方が適している可能性があります。どうして? Rは統計学者によって、統計学者のために構築されているためです。現在、学者は論文だけでなくRパッケージでも研究を発表しています。毎週、このようなCRANで利用できる多くの興味深い新しいRパッケージがあります。
  • 一方、Pythonは汎用プログラミング言語であるため、実稼働データパイプラインの構築に最適です。たとえば、Python UDFを使用してscikit-learnモデルを簡単にラップして、Hiveで分散スコアリングを実行したり、複雑なロジックでAirflow DAGを調整したり、Flask Webアプリを記述してブラウザーでモデルの出力を表示したりできます。

私の特定のプロジェクトでは、実稼働の機械学習パイプラインを構築する必要があり、Pythonでやった方がずっと楽になります。最終的に、私は袖をまくり、この新しい挑戦を受け入れました!

私が学んだ原則:単一のテクニックやプログラミング言語に固執する代わりに、問題を解決するのに役立つツールやテクニックの最良のセットは何であるかを自問してください。問題解決に焦点を合わせれば、ツールは自然に生まれます。

学習プロジェクトの構築

Pythonを使用してデータサイエンスの作業を行ったことはありませんが、異なる能力でこの言語を使用しました。ただし、Pythonの基本を正しく学んだことはありません。その結果、コードがクラスに編成されたとき私は怖くなりました。

今回は基本を正しく学ぶために、Anders Ericssonの意図的な実践に関する研究からインスピレーションを得ました。

故意の練習は、個人のパフォーマンスの特定の側面を効果的に改善することを唯一の目的として、通常は教師によって設計された活動です。

私が自分の教師だったので、エリクソン博士からの洞察はとても役に立ちました。たとえば、PythonでMLを実行するのに最も関連性のある一連の資料をキュレーションすることで、「学習プロジェクト」を開始しました。パーソナライズされたカリキュラムに落ち着くまで、このプロセスには数週間かかりました。経験豊富なPythonistaに私の計画をレビューしてもらうことで、このカリキュラムをストレステストしました。この事前作業のすべては、私が正しい学習経路にいることを保証することを目的としていました。

ここに私のパーソナライズされたカリキュラムを垣間見る

明確に定義されたカリキュラムを作成したら、次の戦略を使用して、仕事で意図的に練習しました。

  • 繰り返し練習:RではなくPythonで日常的な非ミッションクリティカルな分析を実行するように強制しました。これにより、最初は生産性が低下しましたが、パンダの基本的なAPIに慣れる必要がありました。緊急の期限に間に合います。
  • フィードバックループの作成:他の人のコードを確認し、必要に応じて小さなバグを修正する機会を見つけました。たとえば、使用する前に内部Pythonライブラリがどのように設計されているかを理解しようとしました。自分のコードを書くとき、私はそれを数回リファクタリングし、誰でも読みやすくしようとしました。
  • チャンキングとリコールで学ぶ:毎週の終わりまでに、その週に勉強した重要なリソース、学んだ概念、その週の重要なポイントなど、毎週の進捗状況を書き留めました。私が学んだ資料を思い出すことで、概念をよりよく内部化することができました。

ゆっくりと徐々に、私は毎週良くなりました。しかし、確かに簡単ではありませんでした。RとPythonの両方で基本的な構文を調べる必要があったときがありました。2つの言語を切り替えたからです。とはいえ、これは長期投資であり、MLプロジェクトに飛び込んだときに配当が支払われることを念頭に置いていました。

私が学んだ原則:多くのフィールド実験で裏付けられているように、プロジェクトに飛び込む前に、事前に計画を立てることで、より慎重に練習することができます。繰り返し、チャンク、リコール、およびフィードバックを取得することは、学習を強化するための最も有用なアクティビティの1つです。

経験豊富なデータサイエンティストとの連携

意図的な練習の重要な要素の1つは、タイムリーで実用的なフィードバックを受け取ることです。偉大なアスリート、ミュージシャン、または数学者は、コーチングやターゲットを絞ったフィードバックなしに偉大さを達成することはできません。

強い成長マインドを持っている人から私が観察した一般的な特徴の1つは、彼らが一般に知らないことを認めることを恥じておらず、常にフィードバックを求めていることです。

これまでの自分の学問的および職業的経歴を振り返ってみると、過去に何度も自分の質問を自己検閲しました。しかし、時間がたつにつれて、この態度はかなり有害であることに気付きました。長期的には、自己検閲のほとんどの例は、恥ずかしさではなく学習の機会を逃しています。

画像ソース:edutopia —成長のマインドセットを持つことが重要です!

このプロジェクトの前は、機械学習モデルを本番環境に導入した経験はほとんどありませんでした。プロジェクトのために行った多くの決定のうち、最良の決定の1つは、MLインフラストラクチャについてはほとんど知らないが、学びたいと思ったことを早く、恥知らずに協力者に宣言することでした。私は彼らに約束しました、しかし、私はより多くの知識を得たので、私はチームのために自分自身を有用にするでしょう。

これはかなり良い戦略であることが判明しました。なぜなら、人々は一般的に知識を共有するのが大好きだからです。以下は、パートナーの指導がなければすぐに学べなかったいくつかの例です。

  • Scikit-Learn Pipelines:私の協力者は、Sklearnのパイプラインコンストラクトを採用することで、コードをよりモジュール化できることを提案しました。基本的に、パイプラインは、トレーニングとスコアリング全体で一貫した一連のデータ変換を定義します。このツールにより、コードがよりクリーンになり、再利用可能になり、実動モデルとの互換性が高まりました。
  • モデル診断:予測の問題には時間がかかることを考えると、共同研究者は、将来のデータを使用して過去を予測するリスクに直面する可能性があるため、一般的な相互検証が機能しないことを教えてくれました。代わりに、より良い方法は時系列相互検証を使用することです。また、リフトチャートなどのさまざまな診断手法や、SMAPEなどのさまざまな評価指標も学びました。
  • 機械学習インフラストラクチャ:MLインフラエンジニアの助けを借りて、virtualenvを介したパッケージの依存関係の管理、pickleを使用してモデルをシリアル化する方法、Python UDFを使用してスコアリング時にモデルを使用可能にする方法について学びました。これらはすべて、以前は知らなかったデータエンジニアリングスキルです。

より多くの新しい概念を学んだので、自分のプロジェクトにそれらを適用できるだけでなく、データサイエンティスト向けのより良いMLツールを構築できるように、機械学習インフラストラクチャチームとの活発な議論を推進できました。私と共有された知識が私をより良いパートナーであり協力者にしたので、これは好循環を生み出します。

私が学んだ原則:長い目で見れば、自己検閲のほとんどの例は、恥ずべきことではなく、学ぶ機会を逃しています。早く、恥知らずに学びたいというあなたの願望を宣言し、良くなるにつれて自分自身を役立ててください。

教えて福音を伝える

モデルを実稼働環境に近づけるにつれて、私が学んだ多くのスキルは、チームの他のデータサイエンティストにとって非常に価値があることに気付きました。何年も大学院のインストラクターであった私は、教えることに情熱を抱いていることを常に知っていました。教師になったとき、私は常にこのテーマについてより多くを学びました。故ノーベル物理学賞受賞者で驚異的な教師であるリチャード・ファインマンは、教授に関する彼の見解について語りました。

リチャード・ファインマンは、かつてカリフォルニア工科大学の教員から、半粒子がスピンしてフェルミ・ディラックの統計に従う理由を説明するように頼まれました。挑戦に立ち上がって、彼は「新入生の講義を準備します」と言いました。しかし、数日後、彼は教職員に言いました。新入生レベルに減らすことはできませんでした。つまり、私たちは本当にそれを理解していないということです。」

これは非常に刺激的でした。主題を中心に絞って他の人がアクセスできるようにできない場合、それはあなたが本当に理解していないことを意味します。これらのスキルを教えることで理解が深まることがわかっているので、モデルの実装を慎重に文書化し、昼食を学び、他の人にツールを試してもらうように勧めます。これは、福音宣教が意識を高め、チーム全体でツールの採用を促進するのに役立つため、双方にとって好都合でした。

9月下旬に、社内のMLツールに関する一連のクラスを準備するために、社内のData Universityチームと協力し始めました。これがどこに行くのかは正確にはわかりませんが、Airbnbでより多くのML教育を推進することに非常に興奮しています。

最後に、Hadley Wickhamからのツイートでこのセクションを終了します。

私が学んだ原則:教えることは、主題に対する理解をテストする最良の方法であり、スキルを向上させる最良の方法です。貴重なものを学んだら、それを他の人と共有してください。常に新しいソフトウェアを作成する必要はありません。既存のツールがどのように機能するかを説明することも非常に重要です。

ステップKでは、ステップK + 1について考えます

私自身の成果物に焦点を合わせてから、MLインフラストラクチャチームと提携し、最終的に他のデータサイエンティストがMLツールについてより多くを学ぶことができるようになるまで、元のプロジェクトの範囲が数か月よりもはるかに大きかったことが本当に嬉しいです前。しかし、確かに、私はそもそもこれを予想していませんでした。

このプロジェクトの進化を振り返ってみると、以前のプロジェクトとは異なっていたことの1つは、現在の状況に常に少し不満があり、常に少しでも良くしたかったということです。これを特徴付ける最も雄弁な方法は、クロードシャノンのエッセイからです。

画像ソース:「遊び心:クロードシャノンが情報ページを発明した方法」のブックカバー、ジミーソニ、ロブグッドマン
「不満という考えがあります。これは、世界に対する悲観的な不満を意味するものではありません-物事のあり方を嫌います-建設的な不満を意味します。アイデアは言葉で表現できますが、これで構いませんが、もっとうまくやれると思います。これを行うためのよりきれいな方法があると思います。少し改善できると思います。言い換えると、物事が完全に正しく見えないと、常にわずかな刺激があります。そして、現代の不満は優秀な科学者の重要な原動力だと思います。」

私は資格のある科学者ではありません(それが私の肩書きになんらかの理由でありますが)。しかし、わずかな不満の特徴は、プロジェクトの影響を拡大できるかどうかをかなり示していると思います。私のプロジェクト全体を通して、ステップKにいるときはいつでも、ステップK + 1以降で何をすべきかを自然に考え始めます。

  • 「生産モデルを構築する方法がわからないので、その方法を考えさせてください」から「ツールを改善できると思います。ツールを改善するための苦痛ポイント、提案、フィードバック」を再構築しました顧客からMLインフラストラクチャチームとのパートナーまで。
  • 「ツールを習得して上手にできるようにする」から「これらのツールをMLに関心のある他のすべてのデータサイエンティストがアクセスしやすくする」から、パートナーから福音宣明者に自分を作り直しました。

私はこの考え方が非常に役立つと思います-あなたの良い味とわずかな不満を使って、永続性であなたの進歩を後押しします。そうは言っても、この不満は製造することはできず、あなたが気にする問題に取り組むことからのみ来ることができると思います。

私が学んだ原則:プロジェクトに取り組むときは、あなたの内なる不満に注意してください。これらは、プロジェクトを次のレベルに改善および拡張する方法の手がかりです。

別れの思い:あなたとあなたの仕事

最近、私はリチャード・ハミングの講義に出会いました。リチャード・ハミングは、ハミングコードやハミング距離を含む多くの科学的貢献で有名なアメリカの数学者です。講義のタイトルは「あなたとあなたの研究」で、ハミング博士は「あなたとあなたのキャリア」と改名することができると述べました。

彼が自分の物語を共有したとき、私にとっていくつかの重要なポイントが際立っていました。

あなたがしていることが重要ではなく、重要ではない可能性がある場合、なぜそれをしているのですか?重要な問題に取り組む必要があります。私は金曜日の午後、私の分野での重要な問題を考えて何年も過ごしました[これは私の作業時間の10%です]。
重要な問題について警告します。重要性は結果ではありません。攻撃を受けていないため、いくつかの問題は重要ではありません。問題の重要性は、大部分は、問題を攻撃する方法を得たかどうかに依存します。
このコース全体で、私はあなたにスタイルと味について何かを教えようとしているので、あなたは問題が正しいとき、どの問題が正しいか、どうすればいいのかについていくらか推測することができます。適切なタイミングで適切な方法で適切な問題がカウントされ、他に何もカウントされません。なし。

ハミング博士が重要性について話すとき、彼はあなたにとって重要な問題を意味します。彼にとって、それは科学的な問題であり、私たちの多くにとって、それは何か違うかもしれません。また、攻撃計画を立てることの重要性についても話しました。計画がなければ、問題は重要ではありませんが、結果は大きくなります。最後に、彼はあなた自身のユニークなスタイルと味でそれをすることを述べました。

すばらしい仕事をするための彼の水準は非常に高いですが、追求する価値があります。あなたの重要な問題を見つけると、自然にそれを改善し、よりインパクトのあるものにしようとします。その重要性について他の人に教える方法を見つけるでしょう。あなたは他の偉大な人々から学び、あなたの工芸を構築するために時間を費やすでしょう。

クリティカルパスにある、あなたにとって重要な問題は何ですか?

投稿を確認してフィードバックをくれたJason GoodmanとTim Kwanに感謝します。