Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UBtech_vol7 データサイエンティストのための エクストリームプログラミング入門

UBtech_vol7 データサイエンティストのための エクストリームプログラミング入門

nonakakenya

March 29, 2023
Tweet

Other Decks in Technology

Transcript

  1. 8 データから価値を発見する • データからビジネス的価値を発見するために使える方法論は多く存在 ◦ 「イシューから始めよ」などに代表されるコンサル本 ◦ 大学院で主に経験・学ぶことができる科学的方法論 ◦ 機械学習分野でも、このトピックに絞った書籍が執筆され始めている

    ▪ 「戦略的データサイエンス入門」 ▪ 「AI・データ分析プロジェクトのすべて」 ▪ 「評価指標入門~データサイエンスとビジネスをつなぐ架け橋」 ユーザベースのメンバーの一人も共 著者になっています!
  2. 9 発見した価値を継続的に生み出し続ける • なぜ継続性が重要なのか? ◦ 機械学習モデルの外の環境とニーズの変化が必ず起こるから ▪ 簡単な例 • サイトの回遊行動から、どのユーザーがConversionするかを予測す

    るモデルを開発(当時state of the art!) • プロダクトが依存しているPlatformが、モデルが使用している特徴 量を提供しなくなる • その特徴量を使用しないモデルの開発する必要性 ◦ あるあるかな? ▪ 当時の担当者不在 ▪ ソースコードの可読性が低い ▪ 社内の誰も仕様を把握していない
  3. 11 発見した価値を継続的に生み出し続ける • 価値発見の方法論ほど、継続的な価値提供の方法論は発達していない印象 ◦ (私含め)多くのデータサイエンティスト/MLエンジニアのバックグラウンド ▪ =ある時点での分析や研究の成果に責任を負っている • 機械学習・人工知能の研究者

    • マーケティングの定量分析の専門家 • 大学院で定量的な分野を学んだ・研究した人 • 物理学、経済学、心理学etcetc • 戦略・経営・分析コンサルティング企業出身者 ◦ 最近だとMLOps(DevOpsの考え方の適用)などもある ▪ 2018年にGoogleが提案
  4. 13 エクストリームプログラミングとは? • 1990年代:Kent Beckが開発・提案したソフトウェア開発の方法論 ◦ 「注意して、適応して、変更する」パラダイム エクストリーム・プログラミング、XP(英: Extreme Programming)は、

    ソフトウェア品質 を 向上させ、変化する顧客の要求への対応力を高めることを目的としたソフトウェア開発 プロセスである。(引用: wikipedia)
 • 変化に対応した方法論がデータサイエンスコミュニティ内で発達していないのな ら、ソフトウェアエンジニアリングの成熟した方法論をパクろう!
  5. 15 価値・原則・プラクティス • プラクティス ◦ 具体的にエクストリームプログラミングでは何をやるのか? • 価値 ◦ 好き嫌いの判断基準となるもの

    • 原則 ◦ 価値から各プラクティス導くために必要となるもの,論点 • データサイエティストが好きそうな理解 ◦ 価値=公理、原則=定理、プラクティス=各定理の現実世界への応用
  6. 19 コミュニケーション • データサイエンス業務においても聞けばわかることの方が多い ◦ データの前処理 ▪ 取りたいデータのエンドポイント ▪ APIから返ってくるデータ

    ▪ DBに格納されているデータの形式・意味 ◦ 問題の定式化 ▪ ビジネスサイドとのコミュニケーション ◦ アルゴリズム改善 ▪ アルゴリズムに強い人に聞きに行く
  7. 23 シンプリシティ • 機械学習的にもシンプルなモデルの方が好まれる ◦ より良い振る舞いをする ▪ モデル選択 • 情報量基準

    ▪ オッカムのカミソリ • L1,L2正則化 ◦ Neural Networkで皆が使いたくなるアーキテクチャ ▪ GAN ▪ Attention ◦ baselineから始める
  8. 31 リスペクト • いままでに上げた4つの価値が成り立つ前提 ◦ チームメンバー・他者に対するリスペクト チームメンバーがお互いに関心がなく、何をしているかを気に求めないようであれば、 XPはうまくいかない。... ソフトウェア開発に関係している人は、人間として等しく重要 である。


    • 研究室とかアカデミア出身だと特に気をつけた方が良いかも(自戒) ◦ 自身の自由(な発想)を優先するあまり他者への配慮にかけたふるまいになっ ていないか? ◦ もちろん、アカデミア出身の人、皆が皆そうではない
  9. 33 プラクティス • 全員同席 • チーム全体 • 計画づくりと管理 ◦ 四半期サイクル・週次サイクル・ストーリー

    ◦ 情報満載のワークスペース • 実際のプログラミング作業 ◦ ペア・プログラミング ◦ テストファーストプログラミング ◦ インクリメンタルな設計 • 継続的インテグレーション・デプロイメント 後の二組が説明・実演してく ださいます! • 価値を実現するためのプラクティスという考えを持つ。
  10. 35 締めの自論 • 2つの方法論を一人の人間が高いレベルで両立させるのは難しいのでは? ◦ 重なる部分はありつつも違う部分は多いと思っている ▪ 仕事の範囲:個としての仕事⇔チームとしての仕事 ▪ 想定アウトプット:ドキュメント(知見)⇔動くソフトウェア

    ▪ コミュニケーション:一人で考える時間も重要⇔取れば取るだけ良い ▪ スキルセット:分析・リサーチ⇔ソフトウェアエンジニアリング • チームとして2つの方法論をマスターしている状態にできていれば良さそう? ◦ コミュニケーションの断絶を防ぐため、縦割りではなく、横に割った形