Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SPSS Modeler Flow で儲かるAIをつくる
Search
makaishi2
May 21, 2021
Business
1
1.6k
SPSS Modeler Flow で儲かるAIをつくる
2021年5月21日 IBM Cloud Festa 発表資料
makaishi2
May 21, 2021
Tweet
Share
More Decks by makaishi2
See All by makaishi2
Watsonの見果てぬ夢は大規模言語モデルで花開く
makaishi2
1
470
AI・DS領域を学習したい方に向けて
makaishi2
2
940
新生IBM PI誕生秘話
makaishi2
0
530
「パーソナリティデータ」から見えてくる世界
makaishi2
1
620
性格推定技術の活用を一緒に考えませんか?
makaishi2
2
750
最短コースでPyTorchとディープラーニングを征服するためのツボ
makaishi2
13
3.2k
データサイエンティストに必要なスキルと、分析プロジェクトを成功させるための上流工程のポイント
makaishi2
4
630
SPSS Modeler Flow で儲かるAIをつくる(ワトソンカフェ版)
makaishi2
2
720
Watson Studio / AutoAI ご紹介資料
makaishi2
1
1k
Other Decks in Business
See All in Business
Arches 会社説明資料/ HR Deck
arches0501
0
7.5k
サバノミソニLT‐AWS認定資格合格への道のり
utosun
0
360
これを使用
ehealthcare2004
0
350
株式会社Rehab for JAPAN会社概要
rehabrecruiting
4
67k
Startup CTO of the year 2024 株式会社ハイヤールー
kkosukeee
0
3.7k
VISASQ: ABOUT US
eikohashiba
15
460k
Backlogで1on1を進化させる!メンバーの成長を促すアプローチ
kohsakusaito
PRO
2
230
会社案内資料
mkengineering
1
160
IT 未経験者をVue.js で開発できる IT コンサルタントに育てあげる秘訣/ Future's New Employee Training
yut0naga1_fa
0
300
GovTech Express
botexpress
1
210
akippa株式会社 - 会社紹介資料
akippa
3
58k
ログラス会社紹介資料 新卒採用 ビジネス職[経営幹部候補]/ Loglass Company Deck
loglass2019
0
700
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
It's Worth the Effort
3n
183
27k
The Cult of Friendly URLs
andyhume
78
6k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Building an army of robots
kneath
302
43k
KATA
mclloyd
29
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Building Applications with DynamoDB
mza
90
6.1k
Optimizing for Happiness
mojombo
376
70k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Transcript
SPSS Modeler Flow で 儲かるAIをつくる ⾚⽯ 雅典 IBM Cloud Festa
Online2021
講演者プロフィール AIエンジニア 著書 「Pythonで儲かるAIをつくる」「最短コースでわかるディープラーニングの数学」⽇経BP 「現場で使える!Python⾃然⾔語処理⼊⾨」(共著) 翔泳社 「Watson Studioで始める機械学習・深層学習」リックテレコム
「Pythonで儲かるAIをつくる」ご紹介 ⾒込み客、⼟⽇の需要、商品リコメンド… 営業、マーケティングが劇的に変わる 業務に本当に役⽴つ “儲かるAI”を⾃分で作る︕ 業務の課題を認識し、どう改善するかという「業務⽬線」が必要なのは従来システムと同じですが、AIの構築ではさらに 業務の課題が本当にAIで解決できるのか、AIのどの処理⽅式なら適⽤できそうかという「技術⽬線」が不可⽋なので す。 本書のPython実習で学ぶことで、「AIの⽬利きができる技術⽬線」を獲得し⾃分でもAIを作れるようになります。 1章
業務と機械学習プロジェクト 2章 機械学習モデルの処理パターン 3章 機械学習モデルの開発⼿順 4章 機械学習モデル開発の重要ポイント 5章 業務要件と処理パターン 6章 AIプロジェクトを成功させる上流⼯程のツボ Amazon(単⾏本) https://www.amazon.co.jp/dp/4296106961 Amazon(Kindle) https://www.amazon.co.jp/dp/B08F9P726T 書籍サポートページ (全実習コードGithubでダウンロード可) https://bit.ly/2EbU3hz 当講演の1章と2.1節・2.2節は、こ の本の抜粋となっています。 Kindle版はAmazon⼈⼯知能カテゴリで1位 (2021年5⽉19⽇時点)! 5⽉27⽇まで半額ポイントバックセールで⼤変お得 です︕
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ ※ 当資料の2.2節までの図版はすべて「Pythonで儲かるAIをつくる」⽇経BP からの引⽤です。
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ
⼈⼯知能(⽇本語Wikipediaの定義): 「知能」を研究する計算機科学の1分野 機械学習: ⼈⼯知能を実現する⼿段のうち、現在最も有⼒とされている⼿法です。 ⼈⼯知能には、機械学習以外の実現⽅法も存在します。 代表的な⼿法としてはルールベースシステムと最適化システムがあります。 1. ⼈⼯知能とは
学習により作られる「モデル」 モデル ⼊⼒を受け付けて有⽤な結果を返すAIプログラム (数学的にいうと関数のようなブラックボックス) 学習 データに基づいて望ましい振る舞いを作ること 1. 機械学習モデルとは ػցֶश "*
Λ࣮ݱ͢ΔͨΊͷखஈͩͱઆ໌͠·ͨ͠ɻͰɺ۩ମతʹͲ͏ ͏खஈͳͷͰ͠ΐ͏͔ʁ͜ͷ͜ͱΛҰൠతʹࣔͨ͠ͷ͕ɺ࣍ͷਤ Ͱ͢ɻ ϧʔϧ ϕʔε γεςϜ ࠷దԽ γεςϜ ػցֶश σΟʔϓ ϥʔχϯά ਤ ɹ"*ʢਓೳʣͱػցֶशͷؔ ਤ ɹػցֶशͷఆٛ Ϟσϧ ೖྗ ग़ྗ ݪଇ ೖྗΛड͚ͯग़ྗΛฦ͢ϒϥοΫϘοΫε ʢϞσϧɿϒϥοΫϘοΫεΛ࣮ݱ͢Δ ϓϩάϥϜʣ ݪଇ ϞσϧʮֶशʯʹΑΓ࡞ΒΕΔ ʢϩδοΫͰͳ͘σʔλʹΑΓ࡞ΒΕΔʣ 2 ষ ػ ց ֶ श Ϟ σ ϧ ͷ ॲ ཧ ύ λ ồ ϯ
機械学習は、「学習⽅式」により3つに分類されます。 1. 機械学習における「学習⽅式」 教師あり学習 正解を知った上で学習する 教師なし学習 正解を知らずに学習する (分析に近い) 強化学習 「報酬」を基に⾏動を学習
ɹલઅͰఆٛͨ͠ػցֶश༷ʑͳํ͕ࣜ͋ΓɺͦΕΛʮॲཧύλʔϯʯͱݺ Ϳͱ અͰઆ໌͠·ͨ͠ɻॲཧύλʔϯେ͖͘ࡾͭͷʮֶशํࣜʯʹྨ Ͱ͖·͢ɻ ਤ ɹػցֶशͷࡾͭͷֶशํࣜ ʢਓೳʣ ϧʔϧ ϕʔε γεςϜ ࠷దԽ γεςϜ ػցֶश σΟʔϓ ϥʔχϯά ػցֶश ڭࢣͳֶ͠श ਖ਼ղΛΒͣʹ ֶश ʢੳʹ͍ۙʣ ɾΞιγΤʔγϣϯ ੳ ɾΫϥελϦϯά ॲཧύλʔϯ ॲཧύλʔϯ ɾ࣍ݩѹॖ ຊॻͷର ͷֶशํࣜ ຊॻͷର֎ ͷֶशํࣜ ڧԽֶश ʮใुʯ Λجʹ ߦಈΛֶश σΟʔϓ ϥʔχϯά ڭࢣ͋Γֶश ਖ਼ղΛͬͨ ্Ͱֶश ɾྨ ɾճؼ ɾ࣌ܥྻ༧ଌ σΟʔϓ ϥʔχϯά
教師あり学習は「学習フェーズ」と「予測フェーズ」に分けられます。 学習フェーズは正解のわかった状態で、モデルの精度を⾼めていきます。 予測フェーズでは、正解はわからない状態です。 新しく来た未知のデータに対して、モデルが結果を予測します。 1. 教師あり学習 ڭࢣ͋Γֶश ɹػցֶशϞσϧͷೋͭΊͷಛʮֶशʯͱ͍͏ϓϩηεʹ͋Δͱઆ໌͠· ͨ͠ɻڭࢣ͋Γֶशɺ ʮਖ਼ղʯ͕Θ͔ͬͨঢ়ଶͰֶश͢Δ͜ͱ͕ಛͰ͢ɻڭ
ࢣ͋ΓֶशͰ௨ৗɺਖ਼ղσʔλʢڭࢣσʔλͱ͍͍·͢ʣ͕͋Δঢ়ଶͰϞ σϧΛ࠷దԽ͢ΔʮֶशϑΣʔζʯͱɺਖ਼ղ͕Θ͔Βͳ͍ঢ়ଶͰɺֶशࡁΈϞ σϧͷग़ྗΛ༧ଌ݁Ռͱ͢Δʮ༧ଌϑΣʔζʯΛ͚ͯߟ͑·͢ɻ͜ͷ͏ͪɺ ʮ༧ ଌϑΣʔζʯͰʮֶशϑΣʔζʯͰଘࡏ͠ͳ͔ͬͨະͷೖྗσʔλ͕ͬ ͖ͯͯɺͦͷະσʔλʹରͯ͠దͳ༧ଌ݁ՌΛग़͢͜ͱ͕ϞσϧͷతͰ ͢ɻ͜ͷ༷ࢠΛਤ ʹࣔ͠·ͨ͠ɻ Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗσʔλ ਖ਼ղσʔλ ֶश Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗσʔλ ༧ଌ ग़ྗ ग़ྗ ग़ྗ ༧ଌ݁Ռ ֶशϑΣʔζ ༧ଌϑΣʔζ ਤ ɹڭࢣ͋ΓֶशͰͷֶशϑΣʔζͱ༧ଌϑΣʔζ श Ϟ σ ϧ ͷ ॲ ཧ ύ λ ồ ϯ
正解データなしに学習を⾏ないます。 「データ分析」に近い機械学習です。 1. 教師なし学習 ͳ͠Ͱֶश͢Δͷ͕ڭࢣͳֶ͠शͰ͢ɻ͜ͷ͔݅Β૾͕ͭ͘ͱࢥ͍·͕͢ɺ ڭࢣ͋Γֶशͱൺֱͯ͠қͷߴֶ͍शํࣜͰɺͰ͖Δ͜ͱݶఆతͰ͢ɻ ɹڭࢣͳֶ͠शͷ߹ɺ ڭࢣ͋ΓֶशͰઆ໌ͨ͠Α͏ͳʮֶशϑΣʔζʯͱʮ༧ ଌϑΣʔζʯͷ۠ผͳ͘ɺσʔλΛϞσϧʹ༩͑Δͱɺ͍͖ͳΓग़ྗ͕ಘΒ Ε·͢ɻڭࢣͳֶ͠शɺػցֶशͷख๏ͷҰͭͰ͕͢ɺ
ʮσʔλੳʹ͍ۙʯ ͱ͍͑·͢ɻਤ ʹɺڭࢣͳֶ͠शͷॲཧΠϝʔδΛࣔ͠·ͨ͠ɻ ɹ͜͜·Ͱʹઆ໌ͨ͠ڭࢣ͋Γֶशͱڭࢣͳֶ͠शͱ͍͏ֶशํࣜͷ۠ผɺ ॲཧύλʔϯΛબ͢ΔࡍʹۃΊͯॏཁͰ͢ɻද ͰվΊͯཧ͓͖ͯ͠· ͢ɻ Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗ ग़ྗ ग़ྗ ग़ྗ ग़ྗ ֶश ݁Ռ ਤ ɹڭࢣͳֶ͠शͷॲཧΠϝʔδ ֶशํࣜ ਖ਼ղσʔλ ओͳత ϑΣʔζ ར༻࣌ͷೖྗσʔλ ڭࢣ͋Γֶश ඞཁ ༧ଌ ʮֶशʯͱʮ༧ଌʯ ະ ڭࢣͳֶ͠श ෆཁ ੳ ʮֶशʯͷΈ ط ɹ͜͜·Ͱʹઆ໌ͨ͠ڭࢣ͋Γֶशͱڭࢣͳֶ͠शͱ͍͏ֶशํࣜͷ۠ผɺ ॲཧύλʔϯΛબ͢ΔࡍʹۃΊͯॏཁͰ͢ɻද ͰվΊͯཧ͓͖ͯ͠· ͢ɻ Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗ ग़ྗ ग़ྗ ग़ྗ ग़ྗ ਤ ɹڭࢣͳֶ͠शͷॲཧΠϝʔδ ද ɹڭࢣ͋Γֶशͱڭࢣͳֶ͠श ֶशํࣜ ਖ਼ղσʔλ ओͳత ϑΣʔζ ར༻࣌ͷೖྗσʔλ ڭࢣ͋Γֶश ඞཁ ༧ଌ ʮֶशʯͱʮ༧ଌʯ ະ ڭࢣͳֶ͠श ෆཁ ੳ ʮֶशʯͷΈ ط
機械学習でできることは、かなり限られています。 AIを使ったプロジェクトを進めるためには、実業務の中で、この限られた処理パターンに当てはめることが第⼀歩となります。 書籍の中で取り上げている処理パターンは以下のとおりです。 1. 機械学習の「処理パターン」 ɹ͔͜͜Βղઆ͢Δ छྨͷॲཧύλʔϯΛද ʹ·ͱΊ·ͨ͠ɻڭࢣͳ͠
ֶशͱڭࢣͳֶ͠शͰͦΕͧΕ छྨͣͭ͋Γ·͢ɻ छྨͷॲཧύλʔϯʹ ͍ͭͯɺ ষͰ࣮ۀͰ͙͑͢ΔϨϕϧͷྫΛऔΓ্͛ɺॲཧύλʔϯ ʹ߹ΘͤͨϞσϧͷ࡞ΓํΛ࣮ફతʹղઆ͍͖ͯ͠·͢ɻ͜ΕΒͷྫΛ௨͡ ͯɺػցֶशΛଟ༷ͳۀʹ͏·͘ద༻Ͱ͖ΔΑ͏ʹͳΔ͜ͱ͕ຊॻͷ࠷େͷ తͰ͢ɻ ද ɹ छྨͷॲཧύλʔϯͷղઆͱ࣮श ֶशํࣜ ॲཧύλʔϯ ষͷղઆ ষͷ࣮श ڭࢣ͋Γֶश ྨ ճؼ ࣌ܥྻੳ ڭࢣͳֶ͠श ΞιγΤʔγϣϯੳ ΫϥελϦϯά ࣍ݩѹॖ
教師あり学習の1種です。 どのグループに属しているかを予測します。 (例) 顧客の様々な情報を⼊⼒として、営業活動が成功するか、失敗するかを予測する 1. 処理パターン「分類」 ͷಛ༧ଌ͍ͨ݁͠Ռ͕ʮͲͷάϧʔϓʹଐ͢Δ͔ʯͱͳΔͰ͢ɻ͜Ε͔ ΒຊॻͰऔΓ͋͛ΔྫΛࡐʹઆ໌͠·͢ɻ ɹਤ
Λݟ͍ͯͩ͘͞ɻ͜ͷϞσϧͰۜߦͷిӦۀۀʹ͓͍ͯɺސ٬ ใΛೖྗσʔλͱͯ͠ɺސ٬ʹిͰӦۀΛ͔͚ͨ߹ɺͷݟࠐΈ͕͋ Δ͔Ͳ͏͔Λ༧ଌ͠·͢ɻސ٬͕ʮ͋Γʯ ʮͳ͠ʯͷͲͪΒͷάϧʔϓ ʹଐ͢Δ͔Λ "* ʹஅͤ͞ΔΘ͚Ͱ͢ɻ ʮஅʯΛਓؒͷΘΓʹ "* ʹͬͯ Β͏ͱ͍͏ɺ࣮ۀͰ࠷ར༻͞ΕΔॲཧύλʔϯʹͳΓ·͢ɻ ɹ͜ͷӦۀ༧ଌϞσϧɺ અͰղઆ͠·͢ɻͦ͜Ͱઆ໌͠·͕͢ɺྨ ͷॲཧύλʔϯͰɺϞσϧͷੑೳΛͲ͏ධՁ͢Δͷ͔͕େ͖ͳϙΠϯτͰ͢ɻ ͦ͜ͰӦۀ༧ଌϞσϧͱධՁํ๏Λม͑ͨέʔεͱͯ͠ɺຊॻͷαϙʔ ೖྗ ྸ ৬ۀ ࿈བྷճ ܦա ࠷ऴൢଅ݁Ռ ग़ྗ ͋Γ ʢʣ PS ͳ͠ ʢʣ Ϟσϧ ਤ ɹӦۀ༧ଌϞσϧ ίʔυ ɹ֬ͷάϥϑͷදࣔ ᶄ ᶃ ˞ݟ͍͢Α͏ʹೋͭ ͷάϥϑεέʔϧΛ ࣗಈௐ͍ͯ͠Δɻ ʮޭʯͷεέʔϧ ࣮ࡍͬͱখ͍͞ Z@UFTUͱZ@UFTUͰσʔλׂ y0 = y_proba0[y_test==0] y1 = y_proba0[y_test==1] ࢄਤඳը plt.figure(figsize=(6,6)) plt.title(' ֬ͷ ') sns.distplot(y1, kde=False, norm_hist=True, bins=50, color='b', label=' ޭ ') sns.distplot(y0, kde=False, norm_hist=True, bins=50, color='k', label=' ࣦഊ ') plt.xlabel(' ֬ ') plt.legend() plt.show() モデル出⼒は「確率値」 で得られることが多い。
教師あり学習の1種です。 数値を予測する。 (例) 季節、曜⽇、天気、気温などを元にその⽇の貸⾃転⾞利⽤数を予測する。 1. 処理パターン「回帰」 Δผʢଟྨʣ ʯͱͯ͠հ͍ͯ͠·͢ɻ ɹҰํɺຊॻͷதͰѻ͏ྨɺͯ͢άϧʔϓΛೋͭʹ͚Δ
ྨͰ͢ɻ ͔͜͜Β୯ʹྨͱॻ͖·͕͢ɺ ྨͷ͜ͱΛࢦ͠·͢ɻ ճؼ ɹਤ Λݟ͍ͯͩ͘͞ɻϞσϧͷೖྗͷ෦ྨͱ·ͬͨ͘ಉ͡Ͱ͢ɻ། ҰҟͳΔͷग़ྗͷ෦Ͱɺ͜ͷϞσϧͰʮͲͷάϧʔϓʹଐ͢Δ͔ʯͰͳ ͘ʮࣗసंར༻ʯͱ͍͏Λ༧ଌ͍ͯ͠·͢ɻ͜ͷΑ͏ʹΛ༧ଌ͢Δ Ϟσϧ͕ʮճؼʯͰ͢ɻ ɹ ʮճؼʯͷྫ અͰऔΓѻ͍·͢ɻਤ Ͱࣔͨ͠ྫɺϨϯλαΠΫ ϧձࣾͷࣗసंར༻Λ༧ଌ͢ΔϞσϧͰɺ༵ɾఱؾɾ෩ͳͲʹΑΓɺࣗ సंར༻͕มಈ͢Δ͜ͱ͕༧͞Ε·͢ɻࣗసंར༻Λਖ਼֬ʹ༧ଌ͢Δ͜ Ϟσϧ ೖྗ قઅ ༵ ఱؾ ࣪ ෩ ग़ྗ ࣗసंར༻ ਤ ɹࣗసंར༻༧ଌϞσϧ ػ ց ֶ श Ϟ σ ϧ ͷ ॲ ཧ ύ λ ồ ϯ ɹਤ ͰɺվળલͷΛʮ༧ଌ݁Ռ ʯ ɺվળޙͷΛʮ༧ଌ݁Ռ ʯͱ ͯ͠දࣔ͠·ͨ͠ɻಛʹ ݄ޙʹؔͯ͠ɺվળલΑΓ࣮ʹ͍ۙͮͯ ਤ ɹνϡʔχϯάޙͷొϢʔβʔར༻༧ଌͱ࣮ͷ࣌ܥྻදࣔ ⿊線 実績値 ⻘線 モデル予測結果
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ
2.1 前提 当講演では第1部で紹介した処理パターンのうち「教師あり 分類」のモデルを題材に2つのツールでモデル作成をし た結果をご説明します。前提は以下のとおりです。 対象データ︓タイタニック・データセット (書籍の4.1/4.2節で取り上げています) 処理パターン︓教師あり 分類 アルゴリズム︓決定⽊
(書籍の4.3.6項で取り上げています) 書籍4.2節(データ前処理)ではデータ加⼯が⼀通り済んで、モデル作成の直前の状態になっています。 その状態から決定⽊のモデル作成をするコードを当講演⽤に追加しました(2.2)。 まったく同じデータから、SPSS Modeler Flowで 決定⽊モデルを作りました(2.3)。 最後に両者を⽐較した結果を考察としました(2.4)。
2.1 タイタニック・データセット タイタニック・データセットは、次のような項⽬からなる公開データセットです。 沈没した豪華客船タイタニック号の乗客・乗員名簿に⽣き残ったかどうかを⽰す項⽬を追加したデータで、機械学 習モデル構築によく⽤いられます。 フリー画像 参照元 https://publicdomainq.net/rms-titanic-ship-0004916/
2.1 決定⽊ 決定⽊とは、教師あり分類モデルを実現するアルゴリズムの⼀つです。注⽬している特定の項⽬の値により、データ をグループ分けするルールを⾃動的に作ります。 ルールが⼈間にわかりやすいため、よく⽤いられるアルゴリズムの⼀つとなります。 ܾఆܕ ɹಛఆͷ߲ʹᮢΛఆΊɺͦͷΑΓେ͖͍͔খ͍͔͞Ͱάϧʔϓ͚Λ͢ ΔํࣜͰ͢ʢਤ ʣ ɻ
ೖྗʢՖหɺՖห෯ʣ Ֆห෯ DN Ֆห DN ͋Ί ͋Ί ͔͖ͭͨ ػ ց ֶ श Ϟ σ ϧ 4 ষ
2.1 機械学習モデル構築⼿順 機械学習モデル構築の標準的なフローは、右の図のようになります。 このプロセスは、実装⼿段がPythonであれ、SPSS Modeler Flow であれ共通です。 このうち、ポイントになるのは、「(3)データ前処理」と「(8)評価」のプ ロセスです。 (1)
データ読み込み (3) データ前処理 (5) アルゴリズム選定 (7) 予測 (9) チューニング モデル開発フロー (2) データ確認 (4) データ分割 (6) 学習 (8) 評価
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ
2.2 Pythonの不都合な真実 (scikit-learnで決定⽊を作るときにつらい点) (3) データ前処理フェーズの課題 • 「決定⽊」のアルゴリズムは本来⼊⼒に⽋損値があっても構築可能ですが、 scikit-learnだとそれができません。 前処理として⽋損値対応が必要です。 •
⼊⼒にカテゴリ変数がある場合、One Hot Encodingによるダミー変数化の前処理が必要です。 どちらも本来の「決定⽊」では考えなくていいことですが、Python(scikit-learn)で実装する場合は対応の必 要があります。 (8) 評価フェーズの課題 • 項⽬名に⽇本語が含まれていると、決定⽊のツリー表⽰が⽂字化けします。 決定⽊モデルの最⼤の特徴であるツリー表⽰ができないことは、分析観点で⼤きなデメリットです。 唯⼀の回避策は項⽬名を英語にすることですが、標準的⽇本⼈からするとつらい。。。
2.2 ⽋損値対応とは データを読み込んだ直後の「タイタニック・データセット」 欠損値は「NaN」 で示される
2.2 ⽋損値対応の⼿順(状況確認) ⽋損値対応とは、具体的にどのような⼿順で⾏われるのでしょうか︖ 書籍の4.2節の内容を順に説明します。 最初に次のような関数により、項⽬ごとの⽋損値の状況を確認します。 項⽬「デッキ」に関しては、value_counts関数で現在の項⽬値ごとの個数も調べました。
2.2 ⽋損値対応の⼿順(対応⽅針決定) ⽋損値が⾒つかった3つの項⽬それぞれに、対応⽅針を決定します。
2.2 ⽋損値対応の⼿順(実装) 対応⽅針に応じて項⽬ごとに関数を使い分け、⽋損値対応をします。
2.2 ⽋損値対応の⼿順(結果確認) 最後に最終的な結果であるdf6に対して⽋損値チェックを⾏い、⽬的を達成できたことを確認します。
2.2 2値ラベルの数値化 項⽬値が"yes" or "no" や"male" or "famale"のように2つの値しかとらない場合を2値ラベルと呼びます。 この場合、2つの項⽬値を 1と0に割り当てる処理をします。
タイタニック・データセットでは次の3つの項⽬があります。 male / female True / False
2.2 2値ラベルの数値化 2値ラベルの数値化は変換⽤の辞書を⽤意した上で、map関数により⾏います。 下の画⾯では「性別」を数値化しています。同じやりかたで「成⼈男⼦」「独⾝」も数値化します。 (参考) 変換前
2.2 多値ラベルの数値化 次の前処理は、多値ラベルの数値化です。 値が 2値でなく多値の場合は、下の図に⽰されるような One Hot Encodingの⼿法を⽤います。 ⼀⾒すると、3値の場合も0, 1,
2を割り当てればよさそうに思えます。しかし、この場合、「ネズミ」「ゾウ」「キリン」にど の値を割り当てたらいいか、考えてみて下さい(数値にした瞬間、⼤⼩関係が意味を持つようになります)。
2.2 多値ラベルの数値化 One Hot Encodingには、get_dummies関数を利⽤します。書籍では、下のコードのようにenc関数を⼀度定 義して、この関数呼び出しを項⽬単位に⾏うことで対応しています。 元の項⽬「男⼥⼦供」が3項⽬ に分割され、値はすべて1か0に なっている
2.2 モデル構築(データ分割) 以上、書籍4.2節の実装の流れを⼀通り説明してきました。書籍の中ではこの後で「正規化」をしていますが、今回 の実習のように⽬的のモデルのアルゴリズムが決定⽊の場合、この処理は不要です。 講演⽤に、この段階のデータを⽤いて決定⽊(分類を実現するアルゴリズムの⼀つ)によるモデル構築を⾏ってみました。 モデル構築プロセスのうち「(4)データ分割」の実装は下記になります。 データ分割の実装イメージ
2.2 モデル構築(アルゴリズム選定・学習) モデル構築プロセスの次のステップである「(5)アルゴリズム選定」「(6)学習」の実装は下記になります。 (5) アルゴリズムとして「決定⽊」を 選定 (6) 学習の実施
2.2 モデル構築 (予測・評価) 作ったモデルで、検証データに対して「(7)予測」、「(8)評価」した結果は下記になります。 適合率・再現率ともに約70%の結果となりました。 (7)予測はpredict関数で⾏う (8)評価の結果 (8)評価の1⼿法として 「混同⾏列表⽰」がある
2.2 モデル構築 (評価) 決定⽊モデルでは、数値による評価以外に、判定基準のツリー表⽰があり、データ分析で⾮常に重要な機能です。 以下に作ったモデルから決定⽊のツリー表⽰をするPython実装と、結果の⼀部を⽰します。 しかし、肝⼼の項⽬名が化けてしまっているため、どの項⽬で判断がされているのかがわかりません。。。。現在のところ、 項⽬名をすべて英字表記する回避策しかありません。 項⽬名が⽂字化けして読めない
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ
2.3 SPSS Modeler Flow 以上、Pythonの実習で「不都合な真実」の状況がわかったかと思います。 では、まったく同じデータを使い、SPSS Modeler Flowを使った場合どのような実装の流れになるのか、⾒ていきま しょう。 その前に、IBM
CloudにおけるSPSS Modeler Flowの位置づけを説明します。 IBM Cloud内には数百ものサービスがあるのですが、その1機能としてWatson Studioがあります。 Watson Studio⾃体が多くのツールの集合体です。その⼀つとしてこれからご紹介するSPSS Modeler Flowが あります。SPSS Modeler FlowはIBM社が元々持っているデータ分析ツールSPSS Modelerの「クラウド簡易 版」の位置付けとご理解下さい。
2.3 SPSS Modeler Flow 下の図が、IBM社の製品体系の中でのSPSS Modeler Flowの位置づけになります。 IBM CloudにはLite Acountという、クレジットカード登録なしに無期限で利⽤可能なライセンスがあり、⼀定時間
内であれば、これからご紹介するSPSS Modeler Flowも無料で利⽤可能です。 IBM Cloud (Public) Watson Studio SPSS Modeler Flow SPSS Modeler (PC で利⽤する ソフトウェア製品) 機能の ポーティング
2.3 SPSS Modeler Flowによる決定⽊の実装 下の図が、SPSS Modeler Flowにより決定⽊のモデルを構築した結果になります。 各部品のノードを結線した形でモデルが作られているのがわかると思います。 いわゆる「ビジュアル・プログラミング環境」の位置づけになります。
2.3 検査ノードによるデータ検査 書籍 4.1 節で説明しているような「データ確認」は、検査ノードにより⾏います。 その結果例を以下に⽰します。 検査ノード
2.3 タイプノードの設定(1) SPSSによるモデル構築で⼀番肝になるのが、左から2つめの「タイプノード」の設定です。 この設定を⾏うことでPythonの実装で必要だった前処理などが簡単になる仕掛けです。 設定項⽬の「指標」と「ロール」について、別スライドで詳しく説明します。
2.3 タイプノードの設定(2) 設定項⽬をスクロールダウンした2ページ⽬です。
2.3 タイプノードの設定(3) 指標 該当項⽬が、どのような性質のデータかを指定するものです。 統計学で⽤いられる「尺度」の概念とほぼ同じと理解して下さい。 ⾃動認識結果がセットされていますが、誤っている部分は⼈間が⼿で修正をかけます。 よく使われるのが、連続型、フラグ型、名義型、順序型で、それぞれの意味は次のとおりです。 連続型︓ 年齢や、料⾦のように数値を取る項⽬です。値は整数値または浮動⼩数点値です。 フラグ型︓yes
no や male/famale 、True/Falseのように2値の値を取る項⽬です。 名義型︓ child/man/woman のように3値以上の値を取る項⽬です。 順序型︓ 名義型のうち順番が決まっている項⽬(例 First/Second/Third)は順序型で定義します。
2.3 タイプノードの設定(4) ロール 個々の項⽬が、モデルでどのような役割を持つのかを指定します。 ⼊⼒︓モデルの⼊⼒となる項⽬(説明変数)に対して設定します。 デフォルトの状態ではすべて「⼊⼒」となっています。 ターゲット︓モデルの出⼒となる項⽬(⽬的変数)に対して設定します。 ターゲットとなる項⽬は、教師あり学習の場合1項⽬のみです。 なし︓モデルの⼊⼒にも出⼒にも利⽤しない項⽬は、「なし」に設定します。 Pythonで予測に使わない項⽬は学習前にdrop関数で落としますが、それに対応する設定です。
2.3 タイプノードの設定(5) ロール(続き) 今回、「⽣存」「等室」「乗船港コード」のロールを「なし」にしているのは、それぞれ 「⽣存可否」「等室名」「乗船港」というまったく同じ情報の項⽬が他にあるからです。 書籍4.2節「前処理」の冒頭では、drop関数で「⽣存可否」「等室名」「乗船港」の3つの項⽬を落としており、 それと同じ⽬的になります。 「儲かるAI」のPython実装では、One Hot Encodingを省くため「等室名」(First,
Second, Third) を落として、「等室」(1, 2, 3)を残しました。 今の実習では「等室名」が正しく「順序型指標」と して認識されていたので、人間にわかりやすい「等 室名」を残しています。
2.3 パーティションノードの設定 下記は、「パーティションノード」の設定画⾯です。 訓練70%、検証30%の⽐率を指定しました。 参考までに該当するPython実装を右に再掲しました。 Pythonでの実装
2.3 学習 以上の準備が終われば、⽋損値が残った状態で学習が可能です。 学習する時は、画⾯上部の「実⾏」ボタンをクリックします。 決定⽊モデル 学習済みモデル
2.3 決定⽊のツリー表⽰(1) 学習が終わると、次のようにモデルのツリー表⽰ができます。
2.3 決定木のツリー表示(2) 「分岐のラベル表示」オプションを指定した上で、図を拡大した結果です。 ※処理に乱数を使っている関係で一回ごとに多少結果は変わります。 ②男性の場合、次の 要因は「成人男子」 (男性では子供が優先 された) ①生死を分けた最大の 要因は性別
(女性優先で救出された)
2.3 決定⽊ 精度評価結果 検証データに対する混同⾏列の評価結果も確認できます。 ※処理に乱数を使っている関係で一回ごとに多少結果は変わります。 「出⼒およびバージョン」のアイコンを クリック 「精度分析」の⽬のアイコンをクリック
⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3
SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ
2.4 ツール⽐較まとめ 同じデータから、同じアルゴリズム(決定⽊)でPythonとSPSS Modeler Flowの⽐較を実施しました。 モデルを作るまでの⼿間、使いやすさ、わかりやすさの観点で、SPSS Modeler Flowが便利です。 →特にプログラミングの経験のない初⼼者にはSPSS Modeler
Flowがお勧めです。 Pythonを普段使いしている経験者は「味⾒」フェーズ※で活⽤可能です。 →試⾏錯誤が簡単に⾏えるという点で、SPSS Modeler Flow(あるいは有償のSPSS Modeler)を利⽤するのが よりよい選択と考えられます。 ※本番⽤モデルのチューニングの前に、⼊⼿したデータで本当に予測ができるのか確認するフェーズ。 SPSS Modeler Flowは、scikit-learnで実装できていない、アソシエーション分析や、時系列分析なども利⽤可 能です(次ページ参照)。是⾮、皆さんもお試しいただければと思います。
(参考) SPSS Modeler Flow 利⽤可能モデル 以下のようなモデルが利⽤可能です。※ ※ 2021年4⽉29⽇現在 今後変更の可能性もあります
(参考) 実習⽤リンク集 当プレゼンのデモは以下のコンテンツを使って再現可能です。 2.2節 notebook (Google Colabで動作確認済み) https://github.com/makaishi2/sample-data/blob/master/notebooks/タイタニック・デモ.ipynb 2.3節 IBM
Cloud / Watson Studio サインアップ⼿順. https://qiita.com/makaishi2/items/b666f847a98c2e42dfbb タイタニック・データセット https://raw.githubusercontent.com/makaishi2/sample-data/master/data/titanic_j.csv SPSS Modeler Flowで決定⽊をつくる(Modeler Flowの完全な⼿順) https://qiita.com/makaishi2/items/629e3739bfa274392019 実習⽤flowファイル https://github.com/makaishi2/sample-data/blob/master/spss/決定⽊分析(タイタニック).str
(参考) SPSS Modeler Flow リンク集 より深くSPSS Modeler Flow を知りたい⽅には以下の記事があります。 (かなり古い記事もあり、画⾯などが現⾏と異なる点があることにご注意ください)
DSXLのSPSS Modelerで異常検知 DSXLのSPSS Modelerで故障予知 「Watson Machine Learning」でSPSS Modelerみたいな「Flows」を使ってみた 製品版のSPSS Modelerのよりディープな活⽤⽅法に関しては、下記シリーズものの記事がお勧めです。 SPSS Modelerの推しノード達