GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 08/10 - #109

Open GENZITSU opened 1 year ago

GENZITSU commented 1 year ago

PMにとって(地味だけど)重要な 「相談される」スキルとは

相談しやすいPMであるために日頃何に気をつけるべきかについての紹介

話しかけるための準備がいらない

  • どのタイミングで話しかけられても機嫌を一定にする
  • 相談してくれたという行為を尊重する
    • ヒアリングを通して課題を明らかにするという姿勢

相談した後の悩み解決率が高い

  • 相手の言語、前提知識に合わせる
  • 相談後のネクストアクションを明確にする

コメント

相談する側は、一度でも相談して公開するとそれ以降相談してくれなくなるので、意識していきたい...

出典

PMにとって(地味だけど)重要な 「相談される」スキルとは

GENZITSU commented 1 year ago

Machine Learning Project Checklist

DataRobotが公開しているML プロジェクトを始める上での21のチェックリスト。

重要そうなものだけピックアップ

ビジネス課題の定義

ペインポイントの理解、MLで解くに値するインパクトがあるか、MLを作るにあたって十分なデータがあるか

Understand the pain points and end goals for the use cases. Investigate whether the business problem can be solved with machine learning and has sufficient business impact to warrant such an approach. Inquire whether there is sufficient data to support machine learning.

スコープの設定

プロジェクトのビジョン、想定される結果、何を持って成功とみなすか、想定されるリスクなどを把握する

Align on project vision and end results. Outline clear metrics to measure success. Document assumptions and risks to develop a risk management strategy.

Identify project stakeholders

ビジネス部門, 法務、ITなど多様なステークホルダーを巻き込む

Stakeholders from business, legal, and IT should be involved. Machine learning models created in silos are rarely implemented.

Assess the infrastructure

必要な計算資源、環境を精査する。

Evaluate the computing resources and development environment that the data science team will need.

Invest in solutions compatible with your cloud and on-premises requirements

多様な実行環境で動作するようなslutionを提供すること

Ensure your solutions offer flexibility and avoid being locked into any single technical infrastructure or cloud platform.

Identify a consumption strategy

モデルがどのように利用されるかを特定する。

Discuss how the stakeholders want to interact with the machine learning model after it is built.

Create the target variable

定義が明確な予測対象を設定すること

Define the exact calculation for the target variable or create a couple options to test. There will be several reasonable choices for most use cases.

Perform data quality checks and develop procedures for handling issues

データの品質をチェックすること、また、チェックするための手続きを作成すること

以下は一例

  • Missing data or incomplete records
  • Inconsistent data formatting (e.g., dashes and parentheses in telephone numbers)
  • Inconsistent units of measure (e.g., mixture of dollars and euros in a currency field)
  • Inconsistent coding of categorical data (e.g., mixture of abbreviations such as “TX” and full names such as “Texas”)
  • Outliers and anomalies (e.g., ages below 0 and over 150 years)

Incorporate methodologies to address model drift and data drift

ビジネス要件の変化、データの変化に対応するために、モデルの再学習スキームを構築しておく

Shifting business needs may cause decreased model relevance, requiring models to be retrained. Retraining may also be warranted when mismatch exists between the initial training dataset and the scored dataset, such as differences in seasonality, consumer preferences, and regulations. Adding retraining methodologies upfront to address these concerns will save time.

Test for bias to ensure fairness

なんらかのバイアスが含まれていないかをチェックする

Testing, monitoring, and mitigating bias helps ensure models align with company ethics and culture.

Ensure well-defined MLOps processes

プロダクションリリースやモニタリングを継続的に実施するための仕組みの構築をする

Scaling your models’ usage and value requires robust and repeatable production processes, including clear roles, procedures, and logging to support established controls. Model governance practices must be established to ensure consistent management and minimal risk when deploying and modifying models.

Monitor and observe results

モニタリングの仕組みを構築すること

Dashboards that display the agreed-upon success metrics are a key communication tool with business stakeholders. However, since users rarely review dashboards with consistency, alert functionalities play a crucial role in notifying stakeholders of significant activities.

コメント

真新しい事は特に振られていないがいずれも重要なことばかりである。

出典

Machine Learning Project Checklist

GENZITSU commented 1 year ago

リストからランダムに要素を取得する処理を鬼速くしてみた

pythonで要素数の長いリストからランダムに2つのペアを順番に取得する処理の高速化方法の紹介

before

# from https://qiita.com/Keyskey/items/7da429170a1eba5994c2

from numpy import random as rnd
import random

%%timeit
agents = [i for i in range(10000)] # 今回はエージェントの代わりに整数を格納
while agents != []:
    agent1, agent2 = rnd.choice(agents, 2, replace=False)  # 重複を許さずにゲームのプレイヤーを2人選ぶ
    '''
    本来はここでゲームをする処理が入る
    '''
    agents.remove(agent1)  # ゲームをプレイした人は母集団から取り除く
    agents.remove(agent2)
12.3 s ± 274 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

実はnumpyのrandomよりもpython標準のrandomを使った方が早い
おそらくnumpy arrayへの変換の必要がないから

%%timeit
agents = [i for i in range(10000)]
while agents != []:
    agent1, agent2 = random.sample(agents, 2) # 違いはここだけ
    agents.remove(agent1)
    agents.remove(agent2)
309 ms ± 2.58 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

事前にシャッフルしておいて順々にpopするのが最速。

after

# from https://qiita.com/Keyskey/items/7da429170a1eba5994c2

%%timeit
agents = [i for i in range(10000)]
rnd.shuffle(agents)

while agents != []:
    agent1 = agents.pop()  # リストの末尾の要素を取得してかつ母集団から削除
    agent2 = agents.pop()
1.09 ms ± 2.51 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

コメント

かしこい

出典

リストからランダムに要素を取得する処理を鬼速くしてみた

GENZITSU commented 1 year ago

「厳しい」フィードバックの「優しい」伝え方

適切にフィードバックをするために何を意識しないといけないかがまとめられている。
vc→企業家の方向が意識されているけれど一般的に重要なことばかり。

以下重要そうだったことのメモ

効果的なフィードバック=「厳しい」内容+「優しい」伝え方

著書『GREAT BOSS: シリコンバレー式ずけずけ言う力(原題:Radical Candor: Be a Kick-Ass Boss Without Losing Your Humanity)』で同氏が提案したフィードバックのフレームワークは、「言いにくいことをズバリと言う(challenging directly)」と「心から相手を気にかける(caring personally)」の2軸で構成されます。

批判的フィードバックを伝える場面などネガティブな状況では、無意識のうちに【相手の目線で調整】のステップが疎かになってしまいがちです。すると、自分の視点や体験を基準に、他者に対して言語化してしまうので、相手に意図が伝わらない

「言わなくても伝わるだろう」という希望的観測にもとづいたフィードバックは、意図や背景の説明が足りないために、相手の戸惑いや反発を引き起こしやすい

言語化する際には、フィードバックのSBIモデルなどをベースにする S:Situation(状況) 例:取締役会のプレゼンの時 B:Behavior(行動) 例:スライド2枚の標準フォーマットを使わなかった I:Impact(結果) 例:結果として、聞き手には情報がキャッチしにくかった

さらに確実に伝わっていることを確認するには、「〇〇さんの言葉でいいので、今の話をどう理解したか教えてくれる?」とリピートしてもらったり、シンプルにフィードバックに対する相手の感想を聞いてみたり、といった方法が有効

一方的に相手に伝えるのではなく、相手から引き出すようなコーチング的アプローチを試してみてはいかがでしょうか? 代表的なコーチングモデルであるGROWモデルに沿って、相手から言葉を引き出しながら、結果的にフィードバックを与えることができます。

G:Goal(達成したい目標・結果) R:Reality(現状) O:Options(選択肢) W:Will(意志)

フィードバックの内容や伝え方は、自身が置かれている状況の合わせ鏡である。

1つに、フィードバックというのは、受ける側に関することであると同時に、与える側のことも雄弁に語ります。ことあるごとに厳しいフィードバックをしたり、口調が強くなったりしたら、あなた自身のメンタル状態を見つめるサインです。例えば、激しい口調で「報連相が足りない」と部下を批判する上司は、大きな不安を感じていて「安心する材料が欲しい」という欲求が強いのかもしれません。本当に改善が必要なのは、不適切に低い報連相の頻度なのか、それとも異常に高い不安の感情なのか、冷静な見極めが必要です。

コメント

勉強になる。

出典

「厳しい」フィードバックの「優しい」伝え方

GENZITSU commented 1 year ago

【開発チーム・ハンドブック】(1)効果的な1on1の実施方法

表題の通り。

重要そうなところだけピックアップ

初対面のマネージャーとチームメンバーで初めて1on1をするなら、最初の数週間は次のように過ごすと良いでしょう。

  • 1週目:お互いを知るために話をします。
  • 2週目:チームとメンバーの役割、パフォーマンスの考え方について話し合います。
  • 3週目:メンバーの長期的、短期的なキャリアの目標について話し合います。
  • 4週目:現時点でのマネージャーとチームメンバーによる双方向のフィードバックを行います。
  • 5週目以降:通常の1on1を実施します。

マネージャーが1on1をする理由

  • チームメンバーと個人的なつながりを持ち、信頼関係を築くため。
  • チームメンバーのキャリア開発や目標について話す時間を設けるため。
  • 双方向のフィードバックを行うため。
  • 問題の提起と解決を行うため。
  • 仕事の優先順位を示し、必要な場合は他の仕事を断わるのを助けることで、チームメンバーが自分の仕事に取り組めるようにするため。
  • チームメンバーに組織や全社的な動向について継続的に情報を提供するため。
  • チームメンバーが仕事にやりがいを持ち、満足できるようマネージャーがコミットしていることを示すため。

アジェンダ

(1)今すぐ話し合うべきこと

  • 緊急に対処しなければならないことや仕事の妨げになっていること、現在進行中の仕事や直近の仕事に関連することなど。
  • 最近のチームや会社、チームメンバーに関連する重要な出来事について

(2)近々話し合うべきこと

  • 以前のミーティングから繰り越したもので、解決すべき問題。
  • 今すぐではないけれど、今後、仕事に関わってくることについて。
  • 近いうちに予定されている会社/チーム/組織に関する変更について。

(3)長期的な検討事項や目標について

  • チームメンバーの長期的なキャリア形成や目標について考えていること。
  • 個人、あるいはキャリア上の目標や進展など、過去に話したことで続きを話す必要があることについて。
  • チームメンバーの発展や成長に役立つフィードバックなど。

議論を深掘りするための質問

  • チームの状況はどうですか?
  • 私たちは正しいことに取り組んでいると思いますか?
  • チームのメンバーは協力して生産的な仕事ができていますか?
  • 私たちは最大限生産性を発揮できていると思いますか?
  • 会社全体の目標や進展についてどう思いますか?
  • あなたがワクワクしていることは何ですか?
  • 反対に前向きでないことは?
  • 最近の全社ミーティングや発表、組織/プロセスのアップデートについて何か意見はありますか?
  • プロジェクトXはうまくいったと思いますか?
  • 改善できることがあるとしたら、会社としてどのように取り組めばいいと思いますか?
  • 私たちの組織における最大の問題は何ですか?その理由は?
  • ここでの仕事が楽しくないと思うのはどんなときですか?
  • 社内で本当に活躍しているのは誰だと考えていますか? 尊敬している人はいますか?
  • あなたが私の立場だったら、何を変えますか?
  • 私たちのプロダクトで気に入らない部分はありますか?
  • 私たちが見逃しているチャンスがあるとしたら、それは何だと思いますか?
  • 会社で取り組むべきなのに、できていないと思うことはありますか?
  • ここで働くことに満足していますか?

コメント

マネージャーではないので今すぐは使わないが参考になる。

出典

【開発チーム・ハンドブック】(1)効果的な1on1の実施方法

GENZITSU commented 1 year ago

Cloud Functions の最大実行時間に収まらない処理をどうする?

cloud functionの最大実行時間以上かかる可能性があるリストに対する操作を、リストを適宜分割することで回避した方法のシェア。

APIを呼び出して帰ってきたリストに対して諸々の処理を行うという設定。

スクリーンショット 2022-08-06 17 32 54

スクリーンショット 2022-08-06 17 33 04

対応策

インスタンスを立てたり、cloud strageにjobを貯めていくみたいなことも可能だったが、以下の処理を選択。
データ数がある一定の数よりも多ければデータを分割して次のcloud functionsを呼ぶ、一定数以下であればそれを処理する。

データの分割数が多すぎるとコストが嵩むが、cloud functionsは安いので問題にならないとのこと。
ちなみにcloud functionsの最大実行時間は、旧世代は9分、新世代は60分となっているらしい。

スクリーンショット 2022-08-06 17 33 52

コメント

コードをミスると無限にcloud functionsを呼び出してしまいそうなところがちょっと不安。
リストを再起的に分割するcloud functionsよりも、一定数に分割するcloud functionsを一個追加する方が見積もりは楽そうな....?
いやでも、データ数がどんどん増えるとそれも間に合わなくなるのか。

出典

Cloud Functions の最大実行時間に収まらない処理をどうする?

GENZITSU commented 1 year ago

AlexNet前夜

AlexNetが登場する直前の時期によく利用されていた画像認識手法が紹介されているスライド。

スクリーンショット 2022-08-09 23 31 22

CNNによる画像認識手法が台頭する前は、画像に対する特徴量設計が盛んに研究されていた。

スクリーンショット 2022-08-09 23 32 06

代表的な特徴量算出手法たち

スクリーンショット 2022-08-09 23 33 25

スクリーンショット 2022-08-09 23 34 03

スクリーンショット 2022-08-09 23 34 11

スクリーンショット 2022-08-09 23 37 37

スクリーンショット 2022-08-09 23 35 45

スクリーンショット 2022-08-09 23 36 32

スクリーンショット 2022-08-09 23 36 43

代表的なモデルたち

スクリーンショット 2022-08-09 23 38 49

スクリーンショット 2022-08-09 23 43 52

スクリーンショット 2022-08-09 23 44 07

コメント

CNN全盛時代より前に用いられていた技術が、再び使われたり、焼き直されることもあるのでどういう課題間にどういう手法が編み出されたかを知っておくのは大事そう。

出典

AlexNet前夜