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

YoujiSuzuki

youjisuzuki000
August 28, 2020
5.3k

 YoujiSuzuki

PyConjp2020トークセッション
数理最適化と機械学習(自然言語処理)による課題可決

youjisuzuki000

August 28, 2020
Tweet

Transcript

  1. 発表内容  1. 自己紹介  2. 機械学習と数理最適化  3. 身近な課題を解いてみよう

     4. 採用面談のスケジューリング  5. 実装について  6. 計算結果  7. まとめ 2
  2. 1. 自己紹介 名前 鈴木 庸氏 (Youji Suzuki) 所属 リーディングエッジ社 出身

    千葉県君津市 Python歴 6年 業務内容 物流の組合せ最適化、シミュレーション、データ分析 趣味 釣り、ドライブ、ギター 共著 Pythonエンジニア育成推進協会監修 Python3スキルアップ教科書 辻真吾さん(みんなのPython勉強会主宰) 小林秀幸さん(Leading Edge社) 細川 康博さん(Leading Edge社) 鈴木庸氏 (Leading Edge社) 3
  3. 2. 機械学習と数理最適化  機械学習 明示的な指示を用いることなく、その代わりにパターンと推論に依存して、特 定の課題を効率的に実行するためにコンピュータシステムが使用するアルゴリズ ムおよび統計モデル(Wikipediaより) →分類、回帰、クラスタリング、次元削減など  数理最適化

    ある条件に関して)最もよい元を、利用可能な集合から選択すること (Wikipediaより) →線形計画法、整数計画法、進化的アルゴリズム、焼きなまし法など 近年ではデータから機械学習をおこなった結果をもとに、数理最適化で意思決定を おこなうことが増えている。Pythonなら両方が簡単にできてとても便利!! 4
  4. 4. 採用面談のスケジューリング  課題の発見 弊社でのエンジニア採用について営業部にヒアリングしたところ、求人応募者の面談スケジュー ルをつくるのが大変であるのこと。  課題の背景 ベテラン営業社員が求人応募者のスキルと経験をみて、面談を担当する営業社員をアサインして いる。

     解決したいこと 面談を担当する営業社員にも得意、不得意な技術領域があることと、求人応募者とのスケジュー ルがマッチするかどうかを考慮し、自動で面談スケジュールを作る。  期待される効果 求人応募者のスキルと経験に合った営業社員を面接官としてアサインすることにより、弊社が求 めるスキルにマッチするエンジニアを採用しやすくする。また、各営業社員の業務負荷(面談回 数)の平準化し、特定の営業社員への負荷集中を防ぐ。 6
  5. 4. 採用面談のスケジューリング ③求人応募者のスキルと、営業社員のスキルのマッチング度合いを数値化する 営業のスキルのデータ(抜粋) 応募者番号 レベル skill1 skill2 skill3 skill4

    skill5 0 A AWS 運用 インフラ 構築 1 A 若手 AWS 運用 ヘルプデスク 2 A AWS 運用 インフラ 構築 3 A 若手 AWS 運用 ヘルプデスク 4 A Python Web開発 上流工程 30代 5 A Java ブランク コンサル PM 営業社員 レベル skill1 skill2 skill3 skill4 skill5 0 A AWS 運用 インフラ 構築 1 A 若手 AWS 運用 ヘルプデスク 2 A Python Web開発 上流工程 30代 3 A 外国籍 機械学習 Python C、C++ 2 B 50代 インフラ 運用保守 2 C 若手 BIツール テスター スクール 8 求人応募者スキルのデータ(抜粋)
  6. 4. 採用面談のスケジューリング ・CountVectorizerで単語の出現頻度を算出する(抜粋) java php pm pmo python インフラ テスター

    ヘルプデ スク 上流工程 仕様書作 成 機械学習 画像解析 運用保守 音声認識 営業0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 営業1 7 1 2 0 2 6 2 1 2 0 0 0 4 0 営業2 0 0 0 0 2 0 0 0 0 0 2 0 0 0 営業3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 営業4 0 0 0 0 2 1 0 3 0 1 0 0 0 0 営業5 0 0 0 0 0 0 0 2 0 0 0 0 1 0 応募者0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 応募者1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 応募者2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 応募者3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 応募者4 0 0 0 0 1 0 0 0 1 0 0 0 0 0 応募者5 1 0 1 0 0 0 0 0 0 0 0 0 0 0 応募者6 0 0 0 0 1 0 0 0 0 0 1 0 0 0 応募者7 0 0 0 0 0 1 0 0 0 0 0 0 1 0 応募者8 0 0 0 0 0 0 1 0 0 0 0 0 0 0 応募者9 0 0 0 0 0 1 0 0 0 0 0 0 0 0 応募者10 0 0 0 0 1 0 0 0 0 0 0 0 0 0 9
  7. 4. 採用面談のスケジューリング ・TfidfTransformerでTF-IDFに変換する(抜粋) java php pm pmo python インフラ テスター

    ヘルプデ スク 上流工程 仕様書作 成 機械学習 画像解析 運用保守 音声認識 営業0 0 0 0 0 0 0.345861 0 0 0 0 0 0 0 0 営業1 0.165046 0.040053 0.068272 0 0.060729 0.165543 0.086189 0.028437 0.071531 0 0 0 0.125914 0 営業2 0 0 0 0 0.323253 0 0 0 0 0 0.426391 0 0 0 営業3 0.214652 0 0 0 0 0 0 0 0 0 0 0 0 0 営業4 0 0 0 0 0.213894 0.097177 0 0.300472 0 0.151783 0 0 0 0 営業5 0 0 0 0 0 0 0 0.30439 0 0 0 0 0.168474 0 応募者0 0 0 0 0 0 0.43444 0 0 0 0 0 0 0 0 応募者1 0 0 0 0 0 0 0 0.492627 0 0 0 0 0 0 応募者2 0 0 0 0 0 0.43444 0 0 0 0 0 0 0 0 応募者3 0 0 0 0 0 0 0 0.492627 0 0 0 0 0 0 応募者4 0 0 0 0 0.465063 0 0 0 0.547787 0 0 0 0 0 応募者5 0.347466 0 0.503054 0 0 0 0 0 0 0 0 0 0 0 応募者6 0 0 0 0 0.376824 0 0 0 0 0 0.497055 0 0 0 応募者7 0 0 0 0 0 0.539647 0 0 0 0 0 0 0.615695 0 応募者8 0 0 0 0 0 0 0.630588 0 0 0 0 0 0 0 応募者9 0 0 0 0 0 0.394875 0 0 0 0 0 0 0 0 応募者10 0 0 0 0 0.422426 0 0 0 0 0 0 0 0 0 10
  8. 4. 採用面談のスケジューリング TF-IDFは文書中に含まれる単語の重要度を評価する手法 ・TF:Term Frequency(単語出現頻度) →文書においてその単語がどれだけ出現しているのかをあらわす指標 文書において出現する回数が多い単語は重要となる ・IDF: Inverse Document

    Frequency (逆文書頻度) →その単語の重要度をあらわす指標 文書中でどれだけレアな単語なのか 多くの文章に出現する単語は重要ではない 少ない文書に出現する単語ほど重要となる ・TF-IDF → 上記のTFとIDFを掛け合わせた指標 11
  9. 6. 計算結果 営業0 営業1 営業2 営業3 営業4 営業5 面談割り当て結果 応募者0

    0.79610698 0.10657836 0 0 0.04221739 0.33588984 営業0 応募者1 0.43276954 0.07594414 0 0.12553288 0.21277525 0.61789063 営業5 応募者2 0.79610698 0.10657836 0 0 0.04221739 0.33588984 営業0 応募者3 0.43276954 0.07594414 0 0.12553288 0.21277525 0.61789063 営業5 応募者4 0 0.1457589 0.15033284 0 0.09947428 0 営業2 応募者5 0 0.2332301 0 0.07458408 0 0 営業1 応募者6 0 0.17057316 0.85783488 0 0.28023835 0 営業2 応募者7 0.18664298 0.21742893 0 0 0.05244105 0.10372887 営業1 応募者8 0 0.15997455 0 0.27824371 0.1279206 0.08311388 営業3 応募者9 0.13657197 0.23824476 0 0.37024512 0.03837261 0 営業3 応募者10 0 0.06256442 0.13655022 0.10081003 0.5063471 0.0790195 営業4 営業0 営業1 営業2 営業3 営業4 営業5 面談担当比率 0.10 0.31 0.19 0.17 0.10 0.12 目標面談担当比率 0.20 0.30 0.20 0.10 0.10 0.10 ・応募者と営業のコサイン類似度と、面談割り当て結果 ・各営業の担当比率 22