Slide 1

Slide 1 text

一橋大学 「経済学のための 実践的データ分析」 2020夏: 9/10 9.経済学と機械学習 9.1.最終レポート(reprise) 9.2.MLとAI/パネルデータ 9.3.SVM/決定木 9.4.スパース推定とPSM 一橋大学大学院経済学研究科 原泰史 [email protected]

Slide 2

Slide 2 text

今日の内容 • 10:30-10:45 • プレ講義 [録画なし] • 10:45-11:05 • 9.1最終レポートについて (reprise)[録画あり] • 11:05-11:10 • インターミッション[録画なし] • 11:10-11:30 • 9.2 MLとAIとパネルと経済学 [録画あり] • 11:30-11:35 • インターミッション2[録画なし] • 11:35-11:55 • 9.3 SVM/決定木分析[録画] • 11:55-12:00 • インターミッション3[録画なし] • 12:00-12:20 • 9.4 スパース推定とPSM [録画]

Slide 3

Slide 3 text

次回以降の 予定 • 7/20 10/10回 • 最終レポートプロポーサル 報告会 • 詳細については8.4 と9.1 で • 私は立命館@京都 から参加予定であります • 7/29 最終レポートの納品日 • 7/30-8/1 最終レポートの自己評価/360°評価 • 8/3 成績登録締切日

Slide 4

Slide 4 text

9.1 最終レポート (reprise)

Slide 5

Slide 5 text

まとめと最終報告レポート • 1組4名のグループを作り, そのメンバーで最終レポートを作成 します。 • データ分析組, • データ調達組, • プレゼンテーション作成組, • プレゼンテーション担当 など役割分担はお任せします。 • 第10回で, 最終レポートのプロポーサルを発表します • 発表時間10分, 質疑応答5分 • データの初期的な分析結果がまとまっているとベター

Slide 6

Slide 6 text

まとめと最終報告レポート • テーマ • 「○○のための実践的データ分析」 • 卒論や修論や博論の作成の入り口になるような、データの調達とその データの解析を, 講義で取り上げたデータセットおよび分析手法で実施 する • 分析単位はマクロ (国レベル) でもメソ (企業/産業レベル) でもミクロ (個人レベル) でも問いません • 利用できるデータセット • 特に制限なし • 利用できるツール • Tableau, Excel, Word, SQL, BigQuery, Google Colaboratory, Jupyternotebook (Python) など, 特に制限なし

Slide 7

Slide 7 text

まとめと最終報告レポート • 評価方法 • グループ内での自己評価 • グループ外からの評価 アンケートシステムをPolly で用意します。 • 評価基準 • (A.) グループ内の役割分担 (B.) データセットのユニークさおよび、それが適切に処理されているか (C.) 分析手法のユニークさおよび、それが適切に解析されているか (D.) プレゼンテーションのユニークさ (E.) 質疑応答にうまくリプライすることが出来ているか • 納品物 • プレゼンテーションに利用したファイル (Word か Powerpoint か Prezi か etc…) を, Slack のDM に代表者がアップすること

Slide 8

Slide 8 text

最終レポートのグループ分け • ランダムに学籍番号で割り振りました • 履修している19名を振り分けています • また、履修生以外の聴講生で(アイデア出しなどで)参加した い方がいたら、原まで Slack で DM して頂けると幸いです

Slide 9

Slide 9 text

グループ分け(1) • グループ1 • 2115087U 2117256A 2118279M 2119110U • グループ2 • 2116158M 2117226Y 2118264U 2119109H • グループ3 • 2117028C 2117173K 2117251Z 2119166C

Slide 10

Slide 10 text

グループ分け(2) • グループ4 • 2117032A 2117129U 2118050K 2119181S • グループ5 • 2117096U 2117151H 2117240K

Slide 11

Slide 11 text

最終レポートの雛形 • 表紙 • イントロダクション • 先行研究 • 問い • 仮説 • 集めたデータセット • データ解析結果 • 考察とインプリケーション

Slide 12

Slide 12 text

定量分析の業務フロー 2020/7/15 12 リサーチクエス チョンを決める 必要なデータを 探す 論文データ/書誌 情報を使う 特許データ/書誌 情報を使う その他データを使う (プレスリリース /POS データ) デ ー タ の ク リ ー ニ ン グ / 接 合 を 行 う エクセル/Python/Rでグラフを描く Stata/R/Python で回帰分析する KHCoder/R/Python でテキスト分析 する R/Netdraw etc… でネットワーク分 析する 企業データを 使う

Slide 13

Slide 13 text

例.元 IIR 西口先生のネットワーク研究 • “コミュニティー・キャピタル 中国・温州人企業家ネットワー クの繁栄と限界” • http://doi.org/10.11207/taaos. 4.1_200 • データに頼らずに, 足で稼いで ネットワークの動態をインタ ビュー調査から明らかにする • 足掛け10年(!) 2020/7/15 13

Slide 14

Slide 14 text

例. 元 IIR 西口先生のネットワーク研究 • “傑出したパフォーマンスで知られる中国・温州人企業家の国 際的ネットワークは、コミ ュニティー・キャピタルに依拠する 新たな社会ネットワーク分析に適した事例であり、近 年ビッグ データ一辺倒の観のある米国の定量分析 (Fleming et al. 2007) を補完する意味で、 詳細なフィールド調査に基づく豊かな実証 的知見を提供し得る。さらに Watts 等(1998, 1999, 2003) がシ ミュレーションで数学的に立証したスモールワールドの知見が、 現実に応用可 能なのは、実効的にコミュニティー・キャピタル に支えられた社会ネットワークに限定さ れることも示唆され る。 ” 2020/7/15 14

Slide 15

Slide 15 text

あくまでリサーチクエスチョンが大切 • データはあくまでデータ • 研究の問いに合わせて必要なデータを持ってくるのが大切で、 データに合わせて研究するのは本末転倒 (そういう研究も多い けど。。。) • 数年前に比べても利用できるデータはますますリッチになって いるので、ますます、「どのような研究がしたくて」、「どの ような問いを立てている」のかが大切に。 2020/7/15 15

Slide 16

Slide 16 text

ディスカッション • どういうテーマで解析を行うか/リサーチクエスチョンは何か • 解析を行うためには、どういうデータが必要か • メンバーの役割分担 について、グループ内で(いるメンバーで)ディスカッションをし てください。 Spital.chat へのリンク https://spatial.chat/s/Hara-DS-Space-2020-Summer

Slide 17

Slide 17 text

経済学のための実践的データ分析 グループ1 グループ2 グループ3 グループ4 グループ5

Slide 18

Slide 18 text

質疑応答の内容 • どのように研究を発展できる可能性があるか • データの取得方法や分析方法の妥当性 • どのような含意が得られるのか • 単純に、気になったこと, 知りたいこと

Slide 19

Slide 19 text

最終レポート回のタイムスケジュール 最初に; 10:45-10:55 グループ発表 発表10分, 質疑応答5分 グループ1 10:55-11:10 グループ2 11:10-11:25 グループ3 11:25-11:40 グループ4 11:40-11:55 グループ5 11:55-12:10 最後に; 12:10-12:15

Slide 20

Slide 20 text

最終レポート報告の360°評価 • プロポーサルのプレゼン時と、最終レポートの報告時二回投票 を行います。 • Polly でプレゼン後に投票を行ってください • 0 から10点までで採点が出来るので, レポートにたいして評価 を行ってください • 自分たちのプレゼンにも点数をつけてください

Slide 21

Slide 21 text

成績評価の方法

Slide 22

Slide 22 text

成績評価(1) • 平常レポート (40パーセント; 必須) • 講義計画に示したように、複数の回で学生にはレポートを課します。 レポートは Word/PowerPoint形式のメールあるいは, github 経由で の提出が求められます(どの方法を採用するかは、初回の講義で決定し ます)。 • レポートには、(A.) 利用したデータセットとその内容, (B.) 分析の問 い, (C.) 分析手法, (D.) 分析結果 を明記する必要があります。ページ 数や文字数は問いませんが, これらの内容が含まれており, 講義中にア ナウンスする評価手法を満たす場合, 高い得点を得ることが出来ます。 • 平常点 (10パーセント) • 本講義は実習が多く含まれており, また取り扱うデータセットや内容も 多彩です。そのため、受講者同士が協力する必要があります。こうし た受講者の態度を評価するために、平常点を設けます。

Slide 23

Slide 23 text

成績評価(2) • 最終レポート (40パーセント; 必須) • 講義の最終回では最終レポートの報告会を行います。受講者は3名から4名か ら構成されるグループで、最終レポートの報告を行う必要があります(人数は 受講者の人数により変更される可能性があります)。最終レポートでは、プレ ゼンテーションの方法を学生は自由に選ぶことが出来ます。PowerPoint 以 外にも、Prezi などのアクティブプレゼンテーションツールや、他のプレゼ ンテーション手法を用いることが出来ます(プレゼンテーションツールについ ては、必要であれば講義内で説明する機会を設けます)。最終レポートでは、 以下の点について評価を行います。 (A.) グループ内の役割分担 (B.) データセットのユニークさおよび、それが適切に処理されているか (C.) 分析手法のユニークさおよび、それが適切に解析されているか (D.) プレゼンテーションのユニークさ (E.) 質疑応答にうまくリプライすることが出来ているか • 最終レポートの360°グループ評価 (10パーセント) • 3. の最終レポートについて、グループの自己評価および他のグループからの 評価を行います。3. で挙げた評価ポイントに基づき、グループメンバーおよ び他のグループは評価を行います。

Slide 24

Slide 24 text

最高成績基準 引用: 一橋大学授業ハンドブック

Slide 25

Slide 25 text

成績評価 • 平常レポート • レポート1; max 20 • レポート2; max 20 • 最終レポート • 40点 • 最終レポートの360°評価 • 10点 • 投票システムから集計したデータを按分します

Slide 26

Slide 26 text

9.2 MLとAIとパネルと経済学

Slide 27

Slide 27 text

分析手法(1.1 の reprise) • Step1; グラフにする • 「まずは散布図を書いてみる」 • Step2; 統計的処理を行う (平均値, 中央値, 最大値, 最小値 etc..) • このあたりから、内生性や見せかけの回帰との戦いがはじまる • Step3; 回帰分析など, 入力と出力間の関係性を見る • 重回帰分析 • スパース推定 • 決定木分析, SVM (教師あり/教師なしの機械学習) • Step4; 因果効果を識別する • 因果関係と相関関係を識別する(次のページ)

Slide 28

Slide 28 text

因果識別の手法(1) 実験対象 Treated Group Control Group y x Cut-off Point • ランダム化比較試験 (RCT) • 対象者と非対象者を無 作為抽出して比較実験 • 回帰不連続(RD) デザイン – 回帰直線シフト 28 実験対象 Treated Group Control Group • 傾向スコアマッチン グ(PSM): – 各政策対象企業と同じ「政 策対象傾向」を持つ企業を 対照群から抽出 引用:岡室博之 (2019) 産業クラスターと地方創生:地域イノベーション政策の展開と分析方法, 一橋大学公開講座

Slide 29

Slide 29 text

因果識別の手法(2) • 差の差の分析(DID) • 処置群と対照群の比較 と政策前後比較の二重 差 y t Control Group Treated Group t+u t-s ▲t • パネル固定効果分析 • パネルデータを用いて、 各企業の固有の属性の 影響を除去 y x t+i t • 操作変数法(IV): – 内生変数を外生変数 (操作変数)に置き換 える2段階推定 Z X Y U β α 引用:岡室博之 (2019) 産業クラスターと地方創生:地域イノベーション政策の展開と分析方法, 一橋大学公開講座

Slide 30

Slide 30 text

機械学習と経済学 • 経済学のフレームワークで機械学習やAIの影響を測定する • 経済学の技法のひとつとして機械学習やAIを活用する • 因果推論 meets 機械学習 • 今日の9.3や9.4 の内容

Slide 31

Slide 31 text

網羅的なもの • The Economics of Artificial Intelligence: An Agenda • https://www.nber.org/ books/agra-1

Slide 32

Slide 32 text

How Causal Inference Findings Solve Tech Companies' Challenges • https://speakerdeck.com/ko_fujita1/how-causal-inference- findings-solve-tech-companies-challenges

Slide 33

Slide 33 text

AI関連を特許と論文で測る

Slide 34

Slide 34 text

Trends in the number of AI patents granted world-wide Figure • The number of patents granted has rapidly increased. • It shows the number of artificial intelligence (AI) patents granted by application country and reveals that it has increased more than threefold (from 708 items in 2012 to 2,888 items in 2016).’ • In particular, AI patents granted in the US increased by 1,628 items during this period (Figure 1a), accounting for approximately 75% of the increase worldwide . 34 (Source: Fuji and Managi (2017))

Slide 35

Slide 35 text

Trends in the number of AI patents, technology-wise granted worldwide Figure • The patent share of each AI technology type changed from 2012 to 2016. • In 2012, biological and knowledge-based models were the leaders in patented AI technologies. • However, from 2012 to 2016, the number of patents granted for specific mathematical models and other AI technologies rapidly increased, doubling from 2015 to 2016. 35 (Source: Fujii and Managi (2017))

Slide 36

Slide 36 text

AI : Number of Patents/Scientific Papers by Year Number of Papers Number of Patents 0 50000 100000 150000 200000 250000 USA PEOPLES R CHINA GERMANY JAPAN ENGLAND France Canada ITALY SPAIN Australia 0 200 400 600 800 1000 1200 1400 United States Japan Europe (Patent Office) Germany Korea Unite Kingdom France China Taiwan Israel India Source: Web of Science Core Collection Source: PatentsView(USPTO)

Slide 37

Slide 37 text

Robotics : Number of Patents/Scientific Papers by Year Number of Papers Number of Patents Source: Web of Science Core Collection Source: PatentsView(USPTO) 0 50 100 150 200 250 300 350 1990 1992 1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 2014 2016 USA PEOPLES R CHINA GERMANY ENGLAND CANADA ITALY JAPAN FRANCE SPAIN AUSTRALIA 0 20 40 60 80 100 120 140 160 180 19761978198019821984198619881990199219941996199820002002200420062008201020122014 United States Japan Germany Korea France Sweden United Kingdom Italy China Europe (Patent Office) Switzerland

Slide 38

Slide 38 text

Fact Findings • AI 分野はアメリカと中国が dominate している • 日本は1980年代後半から90年代はじめに集中的に投資したが, その後縮小

Slide 39

Slide 39 text

Topic1: パネルデータに基づく 固定効果分析をPython で行う

Slide 40

Slide 40 text

Extension; パネルデータ解析 • パネルデータ • N 個の主体(人,企業,団体,県,国など)の各々に関して T 期間に わたって観測された データ • パネルデータのメリット • (a) データ数が増えることにより,自由度が大きくなるので,推定精度 が向上する. • (b) 主体間の異質性をモデルに取り込むことは,単一の時系列,あるい はクロスセクションのみでは不可能であるが,それが可能になる. • (c) 主体間の異質性は,一般に観測不可能な主体固有の要因であり,そ のような要因以外の全体の関係を分析することが主目的ならば,固有 の要因を除去した分析が可能である. Source: https://www-cc.gakushuin.ac.jp/~20130021/ecmr/panel.pdf

Slide 41

Slide 41 text

Extension; パネルデータ解析 • = + ′ + (i =1 ,···,N; t =1 ,···,T) • このとき, 誤差項 は以下の仮定を満たす. • = 0, = { 2 = かつ = のとき , 0(その他) • ; 未知の係数ベクトル • ′ ; 説明変数の p*1 確率ベクトル • 誤差項との独立性が仮定される (狭義外生性; strict exogeneity) • ; 主体 i に特有の個別効果 (individual effect) Source: https://www-cc.gakushuin.ac.jp/~20130021/ecmr/panel.pdf

Slide 42

Slide 42 text

Extension; パネルデータ解析 • 固定効果モデル (Fixed Effect Model) • を定数のパラメータと仮定する • 変動効果モデル (Random Effect Model) • を主体ごとに独立な確率変数と仮定し, • = 0, 2 = 2, = 0 を満たす。

Slide 43

Slide 43 text

Extension; パネルデータ解析 • パネルデータ • 識別IDと時系列 が含まれている データ

Slide 44

Slide 44 text

Extension; パネルデータ分析 • Linearmodels パッケージをインストールする # !pip install linearmodels

Slide 45

Slide 45 text

Extension; パネルデータ分析 • Linearmodels から PanelOLS, RandomEffects パッケージをインポートする

Slide 46

Slide 46 text

Extension; パネルデータ分析 • サンプルのデータセットを読み出す • データセットから, 年データを取り出しインデックスとしての 設定を行う

Slide 47

Slide 47 text

Extension; パネルデータ分析 • データの構造

Slide 48

Slide 48 text

Extension; パネルデータ分析 • 被説明変数と説明変数を指定し, 変動効果モデルを解析する

Slide 49

Slide 49 text

Extension; パネルデータ分析 • 固定効果モデルを解析する

Slide 50

Slide 50 text

まとめ • 因果推論は経済学のハナであります • ノンパラメトリックとパラメトリック • 教師あり学習と教師なし学習

Slide 51

Slide 51 text

9.3 決定木とSVM

Slide 52

Slide 52 text

今日のこりのトピック • 決定木分析 • SVM • スパース推定(Lasso) • ラッソ回帰/リッジ回帰 • SGD Regressor • Propensity Score Matching

Slide 53

Slide 53 text

https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

Slide 54

Slide 54 text

https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html 今日の主なカバー範囲

Slide 55

Slide 55 text

a. 決定木分析 • 入力したデータから特徴を学習し、構造を視覚化できる • データのカテゴリ化を行える • カテゴリカルデータと数値データの両方での解析が可能 • 決定木分析のアルゴリズム • ID3 • C4.5 • C5.0 • CART https://pythondatascience.plavox.info/scikit-learn/scikit- learn%E3%81%A7%E6%B1%BA%E5%AE%9A%E6%9C%A8%E5%88%86%E6%9E%90

Slide 56

Slide 56 text

決定木用の Notebook • Google Colaboratory 版 • https://colab.research.google.com/driv e/1_jrQhBfSh_mAKzVibjMvi2Ni4c4jAn 1l

Slide 57

Slide 57 text

3-3. 必要なライブラリをインポートする # tensorflow を tf として import する import tensorflow as tf # numpy や pandas など, 計算やデータ処理のライブラリを import する import numpy as np import pandas as pd # データ可視化のライブラリをインポートする import matplotlib.pyplot as plt # データセットの取得&処理のライブラリをインポートする from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split # インポートの確認 print(tf.__version__) print(np.__version__) print(pd.__version__)

Slide 58

Slide 58 text

tensorflow • tensorFlow™ は、データフローグラフを 使用して数値計算を行うためのオープン ソースソフトウェアライブラリです。グ ラフ内のノードは数値演算を表し、グラ フのエッジはノード間でやり取りされた データの多次元配列(テンソル)を表し ます。柔軟性の高いアーキテクチャが採 用されているため、単一のAPIを使用して、 デスクトップ、サーバーまたはモバイル 端末の1つ以上の CPU またはGPUに計算 機能をデプロイすることができます • TensorFlow は本来、Google のマシンイ ンテリジェンス研究組織内の Google Brain チームに参加している研究者やエン ジニアが機械学習や高度なニュートラル ネットワークの研究用に開発したもので したが、このシステムは汎用性が高く、 他の領域にも幅広く適用することができ ます。 • https://www.tensorflow.org/ https://data.wingarc.com/tensor-flow-16087

Slide 59

Slide 59 text

利用するデータ • Scikit-learn の住宅価格データ • ボストンの506地区について, 犯罪率や固定資産税率, 教師あたりの生 徒数などの属性値と, 住宅平均価格をテーブルに • 第二回目で利用したデータセットと同じ

Slide 60

Slide 60 text

データセットの中身 CRIM 町ごとの人口一人あた りの犯罪率 AGE 1940年以前に建てられ た、所有者が住む建物 の割合 ZN 宅地の比率。25,000平 方フィート以上のゾー ンで数えた値 DIS ボストンの5つの雇用中 心からの距離 INDUS 町ごとの非小売業の面 積比 RAD 放射状幹線道路からの 距離 CHAS チャールズ川に道がつ ながっているか TAX 固定資産税率 NOX NOx 濃度 PTRATIO 町ごとの教師あたりの 生徒数 RM 住宅あたり部屋数 B 町ごとの黒人比率 LSTAT 低階層人口の比率 MEDV 所有者が住む住宅の価 値の中央値

Slide 61

Slide 61 text

重回帰分析での結果(第二回参照) • 出力結果

Slide 62

Slide 62 text

3-4. データセットを読み込む # データの読み込み boston = load_boston() # Pandasのデータフレーム形式へ変換 df = pd.DataFrame(boston.data, columns=boston.feature_names) df['target'] = boston.target # データの最初の5行を表示 df.head()

Slide 63

Slide 63 text

3-4. データセットを読み込む # 取り出したデータセットを, 特徴量 (回帰分析 における説明変数)とターゲット (回帰分析にお ける被説明変数) に切り分ける X_data = np.array(boston.data) y_data = np.array(boston.target) # 1行目のデータの特徴量(X)とターゲット (y)を確認 print(X_data[0:1]) print(y_data[0:1])

Slide 64

Slide 64 text

3-5. データの正規化を行う # 正規化 # 平均0, 分散1 となるように def norm(data): mean = np.mean(data, axis=0) std = np.std(data, axis=0) return (data - mean) / std # データを正規化したものに入れ替える # 正規化されたデータを確認する X_data = norm(X_data) print(X_data[0:1])

Slide 65

Slide 65 text

3-6. データセットの整形 # 1を追加する前のサイズを確認する print(X_data.shape) # 1の行を作成する ones = np.ones((506, 1)) # 1の行をデータセットに追加する X_data = np.c_[ones, X_data] X_data.shape

Slide 66

Slide 66 text

3-7. テストデータと訓練データへの切り 分けを行う # x とy について, 全体の2割をテストデータ として, 残りを訓練データへと切り分けする X_train, X_test, y_train, y_test = train_test_split(X_data, y_data, test_size=0.2, random_state=42) y_train = y_train.reshape(404,1) y_test = y_test.reshape(102,1) #分割したデータの長さを確認する print(X_train.shape) print(y_train.shape) print(X_test.shape) print(y_test.shape)

Slide 67

Slide 67 text

3-8. 線形回帰モデルの設定を行う # 学習率とエポック(反復処理回数)を設定する learning_rate = 0.01 training_epochs = 1000 # 特徴量の数 n_dim = X_data.shape[1] # 特徴量(X)とターゲット(y)のプレースホルダー # (作成される変数のための空の箱)を用意する X = tf.placeholder(tf.float32,[None,n_dim]) Y = tf.placeholder(tf.float32,[None,1]) # 係数(W)と定数項(b)の変数を指定する W = tf.Variable(tf.ones([n_dim,1])) b = tf.Variable(0.0)

Slide 68

Slide 68 text

3-9. コスト関数の設定および最適化を行う # 線形モデルを規定する y = tf.add(b, tf.matmul(X, W)) # コスト関数を設定する # 予測値と実際の値の差が極力最小化するよう に, # yの値とY の値の差分を取る cost = tf.reduce_mean(tf.square(y - Y)) # 最適化を行う training_step = tf.train.GradientDescentOptimizer(learning_rat e).minimize(cost)

Slide 69

Slide 69 text

3-10. モデルを実行し, 誤差を確認する # 初期化 init = tf.global_variables_initializer() # モデルの訓練を開始する sess = tf.Session() sess.run(init) # cost_history 変数のために空の値を入れておく cost_history=0 # for文を使って, 学習ごとの誤差の値を # cost_history の配列に放り込んでいく for epoch in range(training_epochs): sess.run(training_step, feed_dict={X:X_train, Y:y_train}) cost_history = np.append(cost_history, sess.run(cost, feed_dict={X:X_train, Y:y_train})) if epoch % 1000 == 0: W_val = sess.run(W) b_val = sess.run(b) # 誤差(cost)を確認 print(cost_history[1]) print(cost_history[50]) print(cost_history[100]) print(cost_history[1000]) ←誤差が次第に減っていく

Slide 70

Slide 70 text

3-11. 学習に基づく推計結果と, 実際の値 との比較を行う # テストデータを使って予測を行う pred_test = sess.run(y, feed_dict={X: X_test}) # 予測した価格と実際の価格の比較を行う pred = pd.DataFrame({"実際の不動産価格 ":y_test[:,0], "予測した不動産価格 ":pred_test[:,0], "差分":y_test[:,0]- pred_test[:,0]}) pred.head()

Slide 71

Slide 71 text

3-12. 散布図をプロットしてみる import seaborn as sns sns.jointplot(y_test[:,0],pred_test[:,0])

Slide 72

Slide 72 text

3-13. 決定木モデルの作成 #決定木モデルの作成を行う #sklearn より tree パッケージをインポートする from sklearn import tree #DesisionTreeRegressor でモデルを構築する #木の深さは3 にする (max_depth=3) clf = tree.DecisionTreeRegressor(max_depth=3) #X と y それぞれのtrain データで計測を行い clf = clf.fit(X_train, y_train) #X_test 値に基づき予測を行う pred = clf.predict(X_test)

Slide 73

Slide 73 text

3-13. 決定木モデルの作成 #pydotplus をインポートする import pydotplus #StringIO をインポートする from sklearn.externals.six import StringIO dot_data = StringIO() #決定木を図示化する tree.export_graphviz(clf, out_file=dot_data, filled=True, rounded=True) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) #Notebook 上に表示する from IPython.display import Image Image(graph.create_png())

Slide 74

Slide 74 text

決定木

Slide 75

Slide 75 text

決定木(n=5)

Slide 76

Slide 76 text

決定木 (n=7)

Slide 77

Slide 77 text

3-14. どの変数が作用するか確認 import matplotlib.pyplot as plt %matplotlib inline features = df.columns importances = clf.feature_importances_ indices = np.argsort(importances) plt.figure(figsize=(6,6)) plt.barh(range(len(indices)), importances[indices], color='b', align='center') plt.yticks(range(len(indices)), features[indices]) plt.show() AGE が寄与することが確認できる

Slide 78

Slide 78 text

3-15. 回帰モデルの可視化 from sklearn.linear_model import Ridge from yellowbrick.regressor import ResidualsPlot model = Ridge() visualizer = ResidualsPlot(model) visualizer.fit(X_train, y_train) # テストデータとの比較を行う visualizer.score(X_test, y_test) visualizer.poof();

Slide 79

Slide 79 text

b. SVM モデルの構築 • “学習データに対する最小の距離を 最大化するような直線(超平面)を見 つける” • それぞれのグループの中で、最も境 界線に近い点 (サポートベクター) との距離 (マージン) が最大化する ように線を引く http://labs.eecs.tottori- u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/ py_ml/py_svm/py_svm_basics/py_svm_basics.html

Slide 80

Slide 80 text

3.16 SVM モデルの構築 #svm のテストをする # データセットの取得&処理のライブラリをイン ポートする from sklearn.svm import LinearSVC from sklearn.model_selection import train_test_split from sklearn.datasets import load_breast_cancer cancer = load_breast_cancer() # x とy について, テストデータと訓練データへ の切り分けを行う X_train, X_test, y_train, y_test = train_test_split( cancer.data, cancer.target, stratify = cancer.target, random_state=0)

Slide 81

Slide 81 text

3.17 SVM モデルの構築(2) from sklearn.preprocessing import StandardScaler #標準化 sc = StandardScaler() sc.fit(X_train) X_train_std = sc.transform(X_train) X_test_std = sc.transform(X_test) #クラスの初期化と学習 model = LinearSVC() model.fit(X_train_std, y_train)

Slide 82

Slide 82 text

3.18 SVM モデルの構築(3) print('正解率 (train):{:.3f}'.format(model.sco re(X_train_std, y_train))) print('正解率 (test):{:.3f}'.format(model.scor e(X_test_std, y_test)))

Slide 83

Slide 83 text

まとめ • 学習データと教師データに分けて分析しよう • 学習率を高めていこう。 • っていうのが統計学や計量経済学でやってたアプローチと ちょっと違う気がします。

Slide 84

Slide 84 text

9.4 スパース推定 と PSM

Slide 85

Slide 85 text

c. スパース推定(Lasso) • Lasso(Least absolute shrinkage and selection operator); • モデル構築と変数選択を自動的に行う • サンプルサイズより特徴量が大きな状況でも実行できる https://stats.biopapyrus.jp/sparse-modeling/lasso.html

Slide 86

Slide 86 text

c-2. スパース推定(lasso) • 目的変数は中心化, 説明変数は標準化 {N(0,1)} する • Lasso(least absolute shrinkage and selection operator) t は調整パラメータで, given • ラグランジュの未定乗数法で書き直すと • መ = 1 2 − σ =1 2 2 + σ =1 λは正則化パラメータ 引用: (Tibshirani 1996), (川野 2018)

Slide 87

Slide 87 text

d. ラッソ回帰/リッジ回帰 • 線形回帰と違い, 過学習を防ぐためのモデル • 回帰関数の推定時, モデルの複雑さを示す項を損失関数 (cost function) に追加し, それを含め誤差を最小化するように回帰回 数を指定する • 損失関数 • σ =1 ( − ( ))2+ σ=1 • 二項目を正則化項と呼ぶ • M; 変数の数, w: 重み付け係数, λ: 正則化パラメータ • q=1 のときラッソ回帰, q=2 のときリッジ回帰と呼ぶ

Slide 88

Slide 88 text

c-3. スパース推定(lasso) Lasso 推定 Ridge 推定 ・解を範囲内で探索する 1 = − 1 1 − 2 2 2 2 2 = − 1 1 − 2 2 2 2 3 = − 1 1 − 2 2 2 2 最小二乗推定量 引用: (Tibshirani 1996), (川野 2018)

Slide 89

Slide 89 text

3.20 Lasso+αの実習 • 使うデータ • FIFA 19 データ • せっかくパラメータがたくさんあったので, Lasso で自動的に選択して みましょう

Slide 90

Slide 90 text

利用する Notebook • Jupyter Notebook バージョン • https://www.dropbox.com/s/ehn3rvbu66qh0ig/fifa19%20%E3%81% AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A7%E5%8D%98 %E5%9B%9E%E5%B8%B0%E3%81%A8%E9%87%8D%E5%9B%9E%E 5%B8%B0%E5%88%86%E6%9E%90%E3%81%A8%E6%95%99%E5%B 8%AB%E3%81%82%E3%82%8A%E5%AD%A6%E7%BF%92%E3%82% 92%E8%A1%8C%E3%81%A3%E3%81%9F%E7%B5%90%E6%9E%9C.i pynb?dl=0 • データセット • https://www.dropbox.com/s/e15f6z9swkim9t1/data3.xlsx?dl=0

Slide 91

Slide 91 text

利用するNotebook • Google Colaboratory バージョン • https://colab.research.google.com/drive/1h7NY4ByUp5MkB1- eU__Lp8jAwTMLTFiT • データセット data3.csv • https://www.dropbox.com/s/pghylqdgvruxj8h/data3.csv?dl=0

Slide 92

Slide 92 text

3.21 Lasso (続き) ※. データを読み込むところは省略 利用するパラメータを指定する 変数リストから, 被説明変数を取り出す 異常値を抜き取る StandardScaler で, データの正規化を行う 念の為に、相関係数を見てみる

Slide 93

Slide 93 text

とりあえず相関係数をプロットする

Slide 94

Slide 94 text

相関係数のプロット • Yellowbrick を用いる • X_test の結果を表示する

Slide 95

Slide 95 text

3.22 Lasso (続き) • 教師データと実データに分割する

Slide 96

Slide 96 text

3.23 SGD Regressor • SGD Regressor を適用してみる • 定数項と係数がプロットされる.

Slide 97

Slide 97 text

3.24 Lasso (続き) αの値をそれぞれ, 0.01, 0.1, 1 にしたときの精度と 係数をプロットする

Slide 98

Slide 98 text

3.25 Lasso(続き) • 出力結果 • αの値によって使われる特徴量が違う • 精度はあまり向上していない様子

Slide 99

Slide 99 text

3.26 Lasso (続き) • 使われているパラメータを確認 する • Alpha=1 のとき • Age; -1.89684646 • Reputation; 11.08361536 • least_contract; 0.14480343 • Overall; 7.20388477 線形回帰と結果がそんなにかわらな い • Alpha=0.1 のとき • age; -3.47603239 • reputation; 11.72772306 • least_contract; 0.5582404 • overall; 7.89572688 • finishing; 0.11362631 • Balance; 0.70103772 • ShotPower; 0.13964463 • stamina; -0.15779715 • Jumping; -0.14810666 • Strength; 0.04932909 • LongShots; -0.06731084 攻撃系のパラメータが高いことが給 与には寄与している?

Slide 100

Slide 100 text

3.27 Lasso(続き) • 利用された変数の影響度合いを確認する • やはり年齢は重要なパラメータに見える

Slide 101

Slide 101 text

3.28 FIFA データでも決定木を書いてみよう • 下ごしらえ; Jupyter でTerminal を開く

Slide 102

Slide 102 text

3.29 FIFAデータでも決定木を書いてみよ う(cont.) • conda install graphviz • pip install graphviz をそれぞれ実行する

Slide 103

Slide 103 text

3.30 FIFA データでも決定木を書いてみよ う(cont.) • DecisionTreeClassifier パッケージをインポート • Entropy を分岐条件として指定する • (wage の)正解率は32%程度

Slide 104

Slide 104 text

3.31 FIFA データでも決定木を書いてみよ う • 決定木を描画する • Graphviz の dot へのパスを個別に指定する (Windowsと Mac で記法が異なるので注意)

Slide 105

Slide 105 text

3.32 FIFA データでも決定木を書いてみよ う(cont.) • 出力結果

Slide 106

Slide 106 text

3.33 モデルの決定要因の確認 • 先程と同じ • 出力結果

Slide 107

Slide 107 text

e. 回帰モデルの評価指標 • 平均二乗誤差 • 予測値と正解の差(残差)をサンプル毎に足し上げ, サンプルサイズで割る (Mean Squared Error; MSE) • 平均絶対誤差 • 残差の絶対値をサンプルごとに足し上げ、最後にサンプルサイズで割る (Mean Absolute Error; MAE) • 外れ値の影響を受けにくい • Median Absolute Error (MedAE) • 残差の絶対値の Median • 決定係数 • 検証データの平均値で予測をした場合の残差平方和 (Sum of Squared Total; SST) と, モデルの残差平方和 (Sum of Squared Errors; SSE) の比率. R2 = 1 – SSE/SST. 誤差がすべてなくなれば1.0, 平均値の予測と同等の場合 0.0 とな る.

Slide 108

Slide 108 text

3.34 モデルの評価 • 線形の重回帰モデル, リッジ回帰モデル, 決定木モデル, 線形サ ポートベクター回帰 (LinearSVR) でモデルを構築する.

Slide 109

Slide 109 text

3.35 モデルの評価(続き) • MSE, MAE, MedAE, R2 をそれぞれ計算する.

Slide 110

Slide 110 text

3.36 モデルの評価(続き) • リッジ回帰モデルのR2 値がもっとも高い

Slide 111

Slide 111 text

4. 傾向スコアマッチング • 同じ「対象傾向」を持つリストを対照 群から抽出し、比較を行う Treated Group Control Group 実験対象 今回は(も)、FIFA19 のデータで解析してみましょう。

Slide 112

Slide 112 text

4.傾向スコアマッチング • 左利きと右利きで、Reputation に差があるかどうか

Slide 113

Slide 113 text

4. 傾向スコアマッチング • 利用するデータを指定する • FIFA19 の、Lasso や回帰分析に用いたものと同じデータを利 用する

Slide 114

Slide 114 text

4. 傾向スコアマッチング • 作成した equation_df3 から foot と reputation を取り出 す • 重回帰分析で行ったように、 null 値を除去する • 傾向スコアを求めるために, 被説明変数をfoot, 説明変数を その他のパラメータにして, ロジットモデルを回す

Slide 115

Slide 115 text

4. 傾向スコアマッチング • 傾向スコアの出力結果 (ps) を確認する • データが完備的に揃っている、 18,206選手についてスコアが 計算出来ている

Slide 116

Slide 116 text

4. 傾向スコアマッチング • Result.predict の値をps に放 り込む • Foot と Reputation と傾向ス コアの値を table に放り込み、 ラベルをつける

Slide 117

Slide 117 text

4. 傾向スコアマッチング • 等差数列をnp.arange で作り、0.01 ごとの値でマッチン グさせる • 利き足グループ間での値を比較する

Slide 118

Slide 118 text

4. 傾向スコアマッチング(cont.) • 同じセッティングで、今度は wage で比較してみる

Slide 119

Slide 119 text

4. 傾向スコアマッチング(cont.) • 結果は違う感じに

Slide 120

Slide 120 text

4. 傾向スコアマッチング • 左足と右足グループを比較すると、 • レピュテーションは -1.3パーセント左足グループのほうが低 く • 給料は 4.0% 左足グループのほうが高い • 左足のフットボールプレイヤーは希少性が高いので、同 じような能力を持ってても高いサラリーになりやすい?

Slide 121

Slide 121 text

今日のまとめ • 経済学徒として機械学習なアプローチをどう使う? • 卒論や修論や博論で定量的な分析を使うのであれば、まずはコンベン ショナルな手段 (線形な回帰分析や主成分分析 etc…) でも解析したほ うが手っ取り早い (nearly equal Stata or R で済む部分でこなせるかど うか) • ただし、Lasso や決定木などを使えたほうが, ビッグデータ解析には向 いている (see sklearn のhack tree) • 道具は必要な場所とタイミングで使いましょう

Slide 122

Slide 122 text

Extension • 『東京大学のデータサイエンティスト養成講座』 • https://blog.ikedaosushi.com/entry/2019/05/16/192708 • https://github.com/GoogleCloudPlatform/gcp-getting- started-lab- jp/tree/master/machine_learning/cloud_ai_building_blocks

Slide 123

Slide 123 text

参考文献 • https://www.codexa.net/tensorflow-for-begginer/ • http://tekenuko.hatenablog.com/entry/2016/09/19/214330 • http://www.randpy.tokyo/entry/python_random_forest • FUJII Hidemichi, MANAGI Shunsuke (2017) «Trends and Priority Shifts in Artificial Intelligence Technology Invention: A global patent analysis», RIETI Discussion Paper Series 17-E-066, https://www.rieti.go.jp/jp/publications/dp/17e066.pdf • The Economics of Artificial Intelligence: An Agenda, https://www.nber.org/books/agra-1

Slide 124

Slide 124 text

参考文献(2) • 確率的勾配降下法のメリットについて考えてみた • https://qiita.com/koshian2/items/028c457880c0ec576e27 • Python で Lasso を実装 • https://qiita.com/kotamatsukun/items/d09f09f23308627b42ab • LASSO 回帰 / Python • https://stats.biopapyrus.jp/sparse-modeling/python-glmnet.html • Lasso Regressor(回帰分析)【Pythonとscikit-learnで機械 学習:第15回】 • http://neuro-educator.com/ml15/

Slide 125

Slide 125 text

参考文献(3) • SDG Regressor(回帰分析)【Pythonとscikit-learnで機械学 習:第14回】 • http://neuro-educator.com/ml14/ • 【Python】Pythonではじめる機械学習のgraphvizでエラーが出 るときの対処方法 • https://kazusa-pg.com/python-install-graphviz/ • pydotplusでgraphvizのパスが解決できない場合の対処法 • https://qiita.com/wm5775/items/1062cc1e96726b153e28 • macOS Sierraでpip install tweepyしたらエラー出たので対処 した • https://qiita.com/ArtemisHaD/items/0fb4e32c44c358c9ef0c

Slide 126

Slide 126 text

参考文献(4) • Tibshirani, Robert (1996) Regression Shrinkage and Selection via the Lasso, Journal of the Royal Statistical Society. Series B, 58, 1, pp. 267-288, https://www.jstor.org/stable/2346178 • 川野秀一(2019) スパース推定に基づく統計モデリング, HIAS Health ビッグデータ・ICT勉強会 • 川野秀一・松井秀俊・廣瀬慧 (2018) スパース推定法による統 計モデリング, 統計学 One Point • http://rcommanderdeigakutoukeikaiseki.com/propensity_sco re.html • https://www.randpy.tokyo/entry/python_propensity_score

Slide 127

Slide 127 text