Padoc_presen5R

>100 Views

May 07, 24

スライド概要

前処理をDSのメイン作業としたデータ編集と分析ツール

profile-image

データサイエンティスト

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

前処理に重点おいた Padocデータ分析環境 2023/03/20 mabo 1

2.

自己紹介と目次 • 自己紹介 中井眞人 20年以上データサイエンティストとして働く • 所属 筑波大 博士課程 • 実績 1.債務者の与信モデル 2.倒産率の推移予測 3.全社的ポートフォリオ分析 4.営業員の不正検知 5.最適人員配置 6.自然言語での要因分析 1. 2. 3. 4. 5. 6. 7. 8. 9. 目的 データサイエンスの目的 データサイエンスの問題 データサイエンスの解決方法 Padoc分析環境の考え方 Padocの統合分析環境 Padocの機械学習モデル Padocのイントール Padocの事例 • 研究 1.VAEの潜在空間上の強化学習 2

3.

1.目的 • データサイエンス工程での前処理が労力の70~80%占る • 主に前処理用のツールとしてPadocを提供 Padoc: Process and Analysis Data Optimization Circumstance 3

5.

データサイエンスの目的(2) • データサイエンスの手法は古代から存在した • 多くの知見を集めて問題解決する手法 ①集める→②理解する→③選択する→④活かす→⑤評価される 司馬遷 史記 歴史の中の普遍性 徳川吉宗 日本に根付く薬草 5

6.

2.データサイエンスの目的(3) データサイエンスの目的 • 課題に関する集めたデータから発生メカニズムを推測し 解決方法をデータを使って実証的に示す • 機械学習は推測された発生メカニズムのモデル化に過ぎない 機械学習のモデル(例) • 判別分析 • 合理的配置や配分 • 需要予測 • 不正(異常)検知 • 推薦(穴埋)問題 データサイエンス 機械学習 6

7.

データサイエンスの目的(4) • 発想の転換 • 課題の発生メカニズムが不明の場合 (画像認識、最適問題は自明) 主役を「モデル」→「前処理」へ変更する 前処理 課題 課題データの 把握 収集と理解 モデル 感応分析で 変数 データを選択 加工 前処理:課題の発生メカニズムの推測 課題 データの収集 業務知識で 要因を推測 把握 と理解 要因の兆 候データを 選択 後処理 モデル モデル評 構築 価保守 モデル化 評価 モデル モデル評 価保守 構築 7 DS:①集める→②理解する→③選択する→④活かす→⑤評価される

8.

3.データサイエンスの問題(1) • 前処理は発生メカニズムを推測する期間⇒70~80%を占める • 発生メカニズムは業務知識で選択したデータと課題との感応分析 で絞り込み推測を繰返す 課題の発生メカニズム(要因)の推測 課題 データの収集 把握 と理解 業務知識で 要因を推測 要因の 兆候デー タを選択 モデル化 評価 モデル モデル評 構築 価保守 8

9.

3.データサイエンスの問題(2) • 業務データからは課題は一般に見えない • 業務データは殆ど入出金・在庫の管理データで正確だが課題は見えない • User側のデータ管理者から複雑な業務データの構造を理解 • User側の業務従事者から業務に沿って業務データの内容を理解 • DS側とUser側は共同で課題の発生メカニズムの仮説を立てる DS側 User データ管理者 User 業務従事者 9

10.

3.データサイエンスの問題(3) • 業務データから発生メカニズムを示すデータの作成が容易でない 1. 課題の発生メカニズムが異なるとデータを分割する必要がある 2. 過去のデータが無い (解約先や破綻先は削除されている場合が多い) 3. 業務データが複雑過ぎて内容が理解できない(下記参照) 発生要因が異なる 別モデル 営業データ(例) 1営業員 2支店 3顧客 4契約 5商品 6売上 7納品 8遅延 9入出金 10取消訂正 11日報 12営業履歴 13信用情報 10

11.

3.データサイエンスの問題(4) • 作成モデルが将来の運用データに適合するか不明 モデル作成データでの精度は意味がない。運用後の精度が大事 • 運用データが変化する可能性がある • 機械学習モデルの導入自体で運用データが変わる • 業務の拡大やビジネスの見直しにより運用データが変化する 11

12.

4.データサイエンスの解決方法 • 課題の発生メカニズムの推測にはDS側とUser側の協調が必要 • 将来の運用も考えるとUser側によるモデル調整が必要 • 現在はDS側とUser側で協調できる適切な分析環境が無い • モデル作成言語PythonはUser側の理解し難い • SQLでは分析が出来ない DS側とUser側が協調できる分析環境をPadocが提供 DS側 User側 12

13.

5.Padoc分析環境の考え方 • • • • • Padocはテーブル型データを扱う テーブル型データの編集や結合は コマンドで行う 課題と感応の強さの順にデータ表示 できる 分析と結果をUserとで確認できる コマンドの並びでUserが理解と確認 ができる get data1; //テーブル型データの読込 wrk = undate(today) - undate(birthday); age = wrk/365.25; //年齢の計算 データ編集コマンド put data2; get data2; //別のデータの読込 merge data2 by id //マージコマンド put data3; get data3; cross target by age x1 x2 x3 x4 x5; get data3; reg target by x1-5 //分析コマンド anaput out1; Get out1 plot scat x1 x2 x3 by target; 13

14.

6.PADOCの統合分析環境(操作) データ編集と分析の統合環境 ① • コントロール画面① • コマンドの編集② • 反転部分だけ実行可能 実行アイコン ② • 実行結果のログの表示③ • 実行結果のテーブル表示④ • 分析結果のPlot表示⑤ ④ ③ ⑤

15.

6.PADOCの統合分析環境(機械学習モデル) SVM 最短経路問題 ベイジアンネット 3Dの重回帰結果 ガウス構造(GGM) Cox Hazard 共分散構造分析(SEM) カーネル回帰 ガウス過程回帰

16.

8.PadocのInstall download先のDirにある readMe.htmlに従って インストールする instructYou.htmlは分析 事例の実行方法を示す https://padoc.info/ 16

17.

7.Padocの記述例・人種問題の分析(1) 米国の銀行の人種と職種 に給与の差があるか調査 職種 1:行員 2:新人行員 3:警備 4:技術者 5:管理職 6:MBA 7:特殊 home pgm; //dataはprogramと同じDirにある get banker.csv@; /* 人種・職種の整数→コード型に変更*/ attr name type/ minority:code jobcat:code ; put bank; get bank; /* 人種・職種別に給与の平均を計算 */ sumup salnow by minority jobcat; anaput work; get work; /* 職種-人種ラベル作成 */ jobnm=stradd(stradd(jobcat,”-”),minority); put work1; get work1; /* 職種・人種別の平均給与Plot */ plot bar salnow by jobnm/ yrange:[0:40000] ; 職種1,2の白人は給与 が僅に高いが、職種4,5 の白人は逆に低い 17

18.

7.Padocの記述例・ローンのリスク層を計算(2-1) ローン情報 顧客コード(複数) 個人コード 個人データ 個人コード 家族コード summary サマリー 顧客コード 個人コード 省略 merge 統合情報 顧客コード 個人コード 家族コード merge ローン破綻情報 変数加工 家族データ 家族コード 変数選択 分析データ 金額 返済 年齢 年収 破綻 感応度 分析 判別ツリー 18

19.

7.Padocの記述・例ローンのリスク層の分析(2-2) ローンの申し込客のリスク層の分析 契約情報・個人情報・家族情報・延滞情報 を連結して判別ツリーでリスク層を検出 /* 契約情報読込 */ get loan3ContR.csv@; select personid contract mon amount payrate bonus; paym=amount/mon+amount*payrate/100/12; Put cont0; /* 個人情報を顧客IDでマージ */ Get cont0; merge loan3PersonR.csv@ by personid/ method=and11 ; put togo0; /* 家族情報を世帯IDでマージ */ get togo0; merge loan3Home.csv@ by homeid/ method=and11 ; put togo1; /* 延滞情報を契約IDでマージ */ get togo1; merge loan3Bank.csv@ by personid/ method=and11 ; put loan3togo@; /* 変数追加 */ get loan3togo@; old=ifix((undate(20180101)-undate(birth))/365.25); //年齢 workold=old-workspan; //就業年齢 if(bonus > 0) bonflg=“1”; //賞与有無 else bonflg="0"; ltoi = amount/income; //借金/収入 ptoi = paym/income; //金利/収入 put loan3ana@; /* 破綻先(def=bad) と他の変数のCross 感応度解析 */ get loan3ana@; cross def by counts amount sex work job income workspan marrige family home homespan openen old workold bonflg paym ltoi ptoi; /* 破綻先(def=bad)のTree分析 */ get loan3ana@; tree def by counts amount sex work job income workspan marrige family home homespan openen old workold bonflg paym ltoi ptoi/ target/bad,good terminal=100 /* 末端ノード数 */ test=50 /* 試験用のデータの率 50%*/ ; anaput anaout; /* 試験データの精度曲線 */ get anaout; plot line distincRate by countRate; 19

20.

7.Padocの記述例・ローンのリスク層の分析(2-3) 破綻先と個人情報とのCross感応度 判別ツリーによるリスク層の検出 20

21.

7.Padocの記述例・ローンの破綻率を計算(2-4) ローンの申し込客の破綻率のロジット回帰 個人・契約・家族・延滞・を連結したデータ でロジット回帰で破綻率を計算 /* 連結データの読込 */ get loan3ana@; /* カテゴリのOneHot化 */ onehot work home marrige; put anadata0; get anadata0; select def bonflg work_dmy1-5 home_dmy1-8 marrige_dmy1 workold ltov family old income homespan openen workspan ltov ptov; put anadata1; get anadata1; /* 目的変数の指標化 */ if(def == "good") deflg=0; else deflg=1; put anadata2; get anadata2; /* 学習データ2000件と試験データを分離4000件 */ rnd=random; sort rnd; if(# <= 2000) outrec train3; //学習データ else outrec test3; //試験データ get train3; /* ロジット回帰 */ logit deflg by bonflg work_dmy1 work_dmy3-4 home_dmy1-8 marrige_dmy1 ltov family income homespan openen old workspan ptov; anaput anaout; //work_dmy2 は発散する get anaout; /* ロジット回帰結果 パレート図の表示 */ plot line logitRate by countRate; get test3; /* 試験データのロジットモデル適用 */ score deflg by bonflg work_dmy1 work_dmy3-4 home_dmy1-8 marrige_dmy1 ltov family income homespan openen old workspan ptov; anaput test3out; get test3out; /* 試験データでのパレート図の表示 */ plot line logitRate by countRate; 21

22.

7.Padocの記述例・ローンの破綻率を計算(2-4) 結果 学習データでのパレート図 ロジット回帰結果 22 試験データでのパレート図