Slide 1

Slide 1 text

SPSS Modeler Flow で 儲かるAIをつくる ⾚⽯ 雅典 IBM Cloud Festa Online2021

Slide 2

Slide 2 text

講演者プロフィール AIエンジニア 著書 「Pythonで儲かるAIをつくる」「最短コースでわかるディープラーニングの数学」⽇経BP 「現場で使える!Python⾃然⾔語処理⼊⾨」(共著) 翔泳社 「Watson Studioで始める機械学習・深層学習」リックテレコム

Slide 3

Slide 3 text

「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⽇まで半額ポイントバックセールで⼤変お得 です︕

Slide 4

Slide 4 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ ※ 当資料の2.2節までの図版はすべて「Pythonで儲かるAIをつくる」⽇経BP からの引⽤です。

Slide 5

Slide 5 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ

Slide 6

Slide 6 text

⼈⼯知能(⽇本語Wikipediaの定義): 「知能」を研究する計算機科学の1分野 機械学習: ⼈⼯知能を実現する⼿段のうち、現在最も有⼒とされている⼿法です。 ⼈⼯知能には、機械学習以外の実現⽅法も存在します。 代表的な⼿法としてはルールベースシステムと最適化システムがあります。 1. ⼈⼯知能とは

Slide 7

Slide 7 text

学習により作られる「モデル」 モデル ⼊⼒を受け付けて有⽤な結果を返すAIプログラム (数学的にいうと関数のようなブラックボックス) 学習 データに基づいて望ましい振る舞いを作ること 1. 機械学習モデルとは ػցֶश͸ "* Λ࣮ݱ͢ΔͨΊͷखஈͩͱઆ໌͠·ͨ͠ɻͰ͸ɺ۩ମతʹͲ͏ ͏खஈͳͷͰ͠ΐ͏͔ʁ͜ͷ͜ͱΛҰൠతʹࣔͨ͠ͷ͕ɺ࣍ͷਤ Ͱ͢ɻ ϧʔϧ ϕʔε γεςϜ ࠷దԽ γεςϜ ػցֶश σΟʔϓ ϥʔχϯά ਤ ɹ"*ʢਓ޻஌ೳʣͱػցֶशͷؔ܎ ਤ ɹػցֶशͷఆٛ Ϟσϧ ೖྗ ग़ྗ ݪଇ ೖྗΛड͚ͯग़ྗΛฦ͢ϒϥοΫϘοΫε ʢϞσϧɿϒϥοΫϘοΫεΛ࣮ݱ͢Δ ϓϩάϥϜʣ ݪଇ Ϟσϧ͸ʮֶशʯʹΑΓ࡞ΒΕΔ ʢϩδοΫͰͳ͘σʔλʹΑΓ࡞ΒΕΔʣ 2 ষ ػ ց ֶ श Ϟ σ ϧ ͷ ॲ ཧ ύ λ ồ ϯ

Slide 8

Slide 8 text

機械学習は、「学習⽅式」により3つに分類されます。 1. 機械学習における「学習⽅式」 教師あり学習 正解を知った上で学習する 教師なし学習 正解を知らずに学習する (分析に近い) 強化学習 「報酬」を基に⾏動を学習 ɹલઅͰఆٛͨ͠ػցֶश͸༷ʑͳํ͕ࣜ͋ΓɺͦΕΛʮॲཧύλʔϯʯͱݺ Ϳͱ અͰઆ໌͠·ͨ͠ɻॲཧύλʔϯ͸େ͖͘ࡾͭͷʮֶशํࣜʯʹ෼ྨ Ͱ͖·͢ɻ ਤ ɹػցֶशͷࡾͭͷֶशํࣜ ʢਓ޻஌ೳʣ ϧʔϧ ϕʔε γεςϜ ࠷దԽ γεςϜ ػցֶश σΟʔϓ ϥʔχϯά ػցֶश ڭࢣͳֶ͠श ਖ਼ղΛ஌Βͣʹ ֶश ʢ෼ੳʹ͍ۙʣ ɾΞιγΤʔγϣϯ ෼ੳ ɾΫϥελϦϯά ॲཧύλʔϯ ॲཧύλʔϯ ɾ࣍ݩѹॖ ຊॻͷର৅ ͷֶशํࣜ ຊॻͷର৅֎ ͷֶशํࣜ ڧԽֶश ʮใुʯ Λجʹ ߦಈΛֶश σΟʔϓ ϥʔχϯά ڭࢣ͋Γֶश ਖ਼ղΛ஌ͬͨ ্Ͱֶश ɾ෼ྨ ɾճؼ ɾ࣌ܥྻ༧ଌ σΟʔϓ ϥʔχϯά

Slide 9

Slide 9 text

教師あり学習は「学習フェーズ」と「予測フェーズ」に分けられます。 学習フェーズは正解のわかった状態で、モデルの精度を⾼めていきます。 予測フェーズでは、正解はわからない状態です。 新しく来た未知のデータに対して、モデルが結果を予測します。 1. 教師あり学習 ڭࢣ͋Γֶश ɹػցֶशϞσϧͷೋͭΊͷಛ௃͸ʮֶशʯͱ͍͏ϓϩηεʹ͋Δͱઆ໌͠· ͨ͠ɻڭࢣ͋Γֶश͸ɺ ʮਖ਼ղʯ͕Θ͔ͬͨঢ়ଶͰֶश͢Δ͜ͱ͕ಛ௃Ͱ͢ɻڭ ࢣ͋ΓֶशͰ͸௨ৗɺਖ਼ղσʔλʢڭࢣσʔλͱ΋͍͍·͢ʣ͕͋Δঢ়ଶͰϞ σϧΛ࠷దԽ͢ΔʮֶशϑΣʔζʯͱɺਖ਼ղ͕Θ͔Βͳ͍ঢ়ଶͰɺֶशࡁΈϞ σϧͷग़ྗΛ༧ଌ݁Ռͱ͢Δʮ༧ଌϑΣʔζʯΛ෼͚ͯߟ͑·͢ɻ͜ͷ͏ͪɺ ʮ༧ ଌϑΣʔζʯͰ͸ʮֶशϑΣʔζʯͰଘࡏ͠ͳ͔ͬͨະ஌ͷೖྗσʔλ͕΍ͬ ͖ͯͯɺͦͷະ஌σʔλʹରͯ͠ద੾ͳ༧ଌ݁ՌΛग़͢͜ͱ͕Ϟσϧͷ໨తͰ ͢ɻ͜ͷ༷ࢠΛਤ ʹࣔ͠·ͨ͠ɻ Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗσʔλ ਖ਼ղσʔλ ֶश Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗσʔλ ༧ଌ ग़ྗ ग़ྗ ग़ྗ ༧ଌ݁Ռ ֶशϑΣʔζ ༧ଌϑΣʔζ ਤ ɹڭࢣ͋ΓֶशͰͷֶशϑΣʔζͱ༧ଌϑΣʔζ श Ϟ σ ϧ ͷ ॲ ཧ ύ λ ồ ϯ

Slide 10

Slide 10 text

正解データなしに学習を⾏ないます。 「データ分析」に近い機械学習です。 1. 教師なし学習 ͳ͠Ͱֶश͢Δͷ͕ڭࢣͳֶ͠शͰ͢ɻ͜ͷ৚͔݅Β૝૾͕ͭ͘ͱࢥ͍·͕͢ɺ ڭࢣ͋Γֶशͱൺֱͯ͠೉қ౓ͷߴֶ͍शํࣜͰɺͰ͖Δ͜ͱ΋ݶఆతͰ͢ɻ ɹڭࢣͳֶ͠शͷ৔߹ɺ ڭࢣ͋ΓֶशͰઆ໌ͨ͠Α͏ͳʮֶशϑΣʔζʯͱʮ༧ ଌϑΣʔζʯͷ۠ผ͸ͳ͘ɺσʔλΛϞσϧʹ༩͑Δͱɺ͍͖ͳΓग़ྗ͕ಘΒ Ε·͢ɻڭࢣͳֶ͠श͸ɺػցֶशͷख๏ͷҰͭͰ͕͢ɺ ʮσʔλ෼ੳʹ͍ۙʯ ͱ΋͍͑·͢ɻਤ ʹɺڭࢣͳֶ͠शͷॲཧΠϝʔδΛࣔ͠·ͨ͠ɻ ɹ͜͜·Ͱʹઆ໌ͨ͠ڭࢣ͋Γֶशͱڭࢣͳֶ͠शͱ͍͏ֶशํࣜͷ۠ผ͸ɺ ॲཧύλʔϯΛબ୒͢ΔࡍʹۃΊͯॏཁͰ͢ɻද ͰվΊͯ੔ཧ͓͖ͯ͠· ͢ɻ Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗ ग़ྗ ग़ྗ ग़ྗ ग़ྗ ֶश ݁Ռ ਤ ɹڭࢣͳֶ͠शͷॲཧΠϝʔδ ֶशํࣜ ਖ਼ղσʔλ ओͳ໨త ϑΣʔζ ར༻࣌ͷೖྗσʔλ ڭࢣ͋Γֶश ඞཁ ༧ଌ ʮֶशʯͱʮ༧ଌʯ ະ஌ ڭࢣͳֶ͠श ෆཁ ෼ੳ ʮֶशʯͷΈ ط஌ ɹ͜͜·Ͱʹઆ໌ͨ͠ڭࢣ͋Γֶशͱڭࢣͳֶ͠शͱ͍͏ֶशํࣜͷ۠ผ͸ɺ ॲཧύλʔϯΛબ୒͢ΔࡍʹۃΊͯॏཁͰ͢ɻද ͰվΊͯ੔ཧ͓͖ͯ͠· ͢ɻ Ϟσϧ ೖྗ ೖྗ ೖྗ ೖྗ ग़ྗ ग़ྗ ग़ྗ ग़ྗ ਤ ɹڭࢣͳֶ͠शͷॲཧΠϝʔδ ද ɹڭࢣ͋Γֶशͱڭࢣͳֶ͠श ֶशํࣜ ਖ਼ղσʔλ ओͳ໨త ϑΣʔζ ར༻࣌ͷೖྗσʔλ ڭࢣ͋Γֶश ඞཁ ༧ଌ ʮֶशʯͱʮ༧ଌʯ ະ஌ ڭࢣͳֶ͠श ෆཁ ෼ੳ ʮֶशʯͷΈ ط஌

Slide 11

Slide 11 text

機械学習でできることは、かなり限られています。 AIを使ったプロジェクトを進めるためには、実業務の中で、この限られた処理パターンに当てはめることが第⼀歩となります。 書籍の中で取り上げている処理パターンは以下のとおりです。 1. 機械学習の「処理パターン」 ɹ͔͜͜Βղઆ͢Δ छྨͷॲཧύλʔϯΛද ʹ·ͱΊ·ͨ͠ɻڭࢣͳ͠ ֶशͱڭࢣͳֶ͠शͰͦΕͧΕ छྨͣͭ͋Γ·͢ɻ छྨͷॲཧύλʔϯʹ ͍ͭͯɺ ষͰ͸࣮ۀ຿Ͱ͙͢࢖͑ΔϨϕϧͷྫ୊ΛऔΓ্͛ɺॲཧύλʔϯ ʹ߹ΘͤͨϞσϧͷ࡞ΓํΛ࣮ફతʹղઆ͍͖ͯ͠·͢ɻ͜ΕΒͷྫ୊Λ௨͡ ͯɺػցֶशΛଟ༷ͳۀ຿ʹ͏·͘ద༻Ͱ͖ΔΑ͏ʹͳΔ͜ͱ͕ຊॻͷ࠷େͷ ໨తͰ͢ɻ ද ɹ छྨͷॲཧύλʔϯͷղઆͱ࣮श ֶशํࣜ ॲཧύλʔϯ ষͷղઆ ষͷ࣮श ڭࢣ͋Γֶश ෼ྨ ճؼ ࣌ܥྻ෼ੳ ڭࢣͳֶ͠श ΞιγΤʔγϣϯ෼ੳ ΫϥελϦϯά ࣍ݩѹॖ

Slide 12

Slide 12 text

教師あり学習の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() モデル出⼒は「確率値」 で得られることが多い。

Slide 13

Slide 13 text

教師あり学習の1種です。 数値を予測する。 (例) 季節、曜⽇、天気、気温などを元にその⽇の貸⾃転⾞利⽤数を予測する。 1. 処理パターン「回帰」 Δ൑ผʢଟ஋෼ྨʣ ʯͱͯ͠঺հ͍ͯ͠·͢ɻ ɹҰํɺຊॻͷதͰѻ͏෼ྨ͸ɺ͢΂ͯάϧʔϓΛೋͭʹ෼͚Δ ஋෼ྨͰ͢ɻ ͔͜͜Β୯ʹ෼ྨͱॻ͖·͕͢ɺ ஋෼ྨͷ͜ͱΛࢦ͠·͢ɻ ճؼ ɹਤ Λݟ͍ͯͩ͘͞ɻϞσϧͷೖྗͷ෦෼͸෼ྨͱ·ͬͨ͘ಉ͡Ͱ͢ɻ། ҰҟͳΔͷ͸ग़ྗͷ෦෼Ͱɺ͜ͷϞσϧͰ͸ʮͲͷάϧʔϓʹଐ͢Δ͔ʯͰͳ ͘ʮࣗసंར༻਺ʯͱ͍͏਺஋Λ༧ଌ͍ͯ͠·͢ɻ͜ͷΑ͏ʹ਺஋Λ༧ଌ͢Δ Ϟσϧ͕ʮճؼʯͰ͢ɻ ɹ ʮճؼʯͷྫ୊͸ અͰऔΓѻ͍·͢ɻਤ Ͱࣔͨ͠ྫ͸ɺϨϯλαΠΫ ϧձࣾͷࣗసंར༻਺Λ༧ଌ͢ΔϞσϧͰɺ༵೔ɾఱؾɾ෩଎ͳͲʹΑΓɺࣗ సंར༻਺͕มಈ͢Δ͜ͱ͕༧૝͞Ε·͢ɻࣗసंར༻਺Λਖ਼֬ʹ༧ଌ͢Δ͜ Ϟσϧ ೖྗ قઅ ೥ ༵೔ ఱؾ ࣪౓ ෩଎ ग़ྗ ࣗసंར༻਺ ਤ ɹࣗసंར༻਺༧ଌϞσϧ ػ ց ֶ श Ϟ σ ϧ ͷ ॲ ཧ ύ λ ồ ϯ ɹਤ Ͱ͸ɺվળલͷ஋Λʮ༧ଌ݁Ռ ʯ ɺվળޙͷ஋Λʮ༧ଌ݁Ռ ʯͱ ͯ͠දࣔ͠·ͨ͠ɻಛʹ ݄ޙ൒෼ʹؔͯ͠͸ɺվળલΑΓ࣮੷஋ʹ͍ۙͮͯ ਤ ɹνϡʔχϯάޙͷొ࿥Ϣʔβʔར༻਺༧ଌͱ࣮੷஋ͷ࣌ܥྻදࣔ ⿊線 実績値 ⻘線 モデル予測結果

Slide 14

Slide 14 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ

Slide 15

Slide 15 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ

Slide 16

Slide 16 text

2.1 前提 当講演では第1部で紹介した処理パターンのうち「教師あり 分類」のモデルを題材に2つのツールでモデル作成をし た結果をご説明します。前提は以下のとおりです。 対象データ︓タイタニック・データセット (書籍の4.1/4.2節で取り上げています) 処理パターン︓教師あり 分類 アルゴリズム︓決定⽊ (書籍の4.3.6項で取り上げています) 書籍4.2節(データ前処理)ではデータ加⼯が⼀通り済んで、モデル作成の直前の状態になっています。 その状態から決定⽊のモデル作成をするコードを当講演⽤に追加しました(2.2)。 まったく同じデータから、SPSS Modeler Flowで 決定⽊モデルを作りました(2.3)。 最後に両者を⽐較した結果を考察としました(2.4)。

Slide 17

Slide 17 text

2.1 タイタニック・データセット タイタニック・データセットは、次のような項⽬からなる公開データセットです。 沈没した豪華客船タイタニック号の乗客・乗員名簿に⽣き残ったかどうかを⽰す項⽬を追加したデータで、機械学 習モデル構築によく⽤いられます。 フリー画像 参照元 https://publicdomainq.net/rms-titanic-ship-0004916/

Slide 18

Slide 18 text

2.1 決定⽊ 決定⽊とは、教師あり分類モデルを実現するアルゴリズムの⼀つです。注⽬している特定の項⽬の値により、データ をグループ分けするルールを⾃動的に作ります。 ルールが⼈間にわかりやすいため、よく⽤いられるアルゴリズムの⼀つとなります。 ܾఆ໦ܕ ɹಛఆͷ߲໨ʹᮢ஋ΛఆΊɺͦͷ஋ΑΓେ͖͍͔খ͍͔͞Ͱάϧʔϓ෼͚Λ͢ ΔํࣜͰ͢ʢਤ ʣ ɻ ೖྗʢՖห௕ɺՖห෯ʣ Ֆห෯ DN Ֆห௕ DN ͋΍Ί ͋΍Ί ͔͖ͭ͹ͨ ػ ց ֶ श Ϟ σ ϧ 4 ষ

Slide 19

Slide 19 text

2.1 機械学習モデル構築⼿順 機械学習モデル構築の標準的なフローは、右の図のようになります。 このプロセスは、実装⼿段がPythonであれ、SPSS Modeler Flow であれ共通です。 このうち、ポイントになるのは、「(3)データ前処理」と「(8)評価」のプ ロセスです。 (1) データ読み込み (3) データ前処理 (5) アルゴリズム選定 (7) 予測 (9) チューニング モデル開発フロー (2) データ確認 (4) データ分割 (6) 学習 (8) 評価

Slide 20

Slide 20 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ

Slide 21

Slide 21 text

2.2 Pythonの不都合な真実 (scikit-learnで決定⽊を作るときにつらい点) (3) データ前処理フェーズの課題 • 「決定⽊」のアルゴリズムは本来⼊⼒に⽋損値があっても構築可能ですが、 scikit-learnだとそれができません。 前処理として⽋損値対応が必要です。 • ⼊⼒にカテゴリ変数がある場合、One Hot Encodingによるダミー変数化の前処理が必要です。 どちらも本来の「決定⽊」では考えなくていいことですが、Python(scikit-learn)で実装する場合は対応の必 要があります。 (8) 評価フェーズの課題 • 項⽬名に⽇本語が含まれていると、決定⽊のツリー表⽰が⽂字化けします。 決定⽊モデルの最⼤の特徴であるツリー表⽰ができないことは、分析観点で⼤きなデメリットです。 唯⼀の回避策は項⽬名を英語にすることですが、標準的⽇本⼈からするとつらい。。。

Slide 22

Slide 22 text

2.2 ⽋損値対応とは データを読み込んだ直後の「タイタニック・データセット」 欠損値は「NaN」 で示される

Slide 23

Slide 23 text

2.2 ⽋損値対応の⼿順(状況確認) ⽋損値対応とは、具体的にどのような⼿順で⾏われるのでしょうか︖ 書籍の4.2節の内容を順に説明します。 最初に次のような関数により、項⽬ごとの⽋損値の状況を確認します。 項⽬「デッキ」に関しては、value_counts関数で現在の項⽬値ごとの個数も調べました。

Slide 24

Slide 24 text

2.2 ⽋損値対応の⼿順(対応⽅針決定) ⽋損値が⾒つかった3つの項⽬それぞれに、対応⽅針を決定します。

Slide 25

Slide 25 text

2.2 ⽋損値対応の⼿順(実装) 対応⽅針に応じて項⽬ごとに関数を使い分け、⽋損値対応をします。

Slide 26

Slide 26 text

2.2 ⽋損値対応の⼿順(結果確認) 最後に最終的な結果であるdf6に対して⽋損値チェックを⾏い、⽬的を達成できたことを確認します。

Slide 27

Slide 27 text

2.2 2値ラベルの数値化 項⽬値が"yes" or "no" や"male" or "famale"のように2つの値しかとらない場合を2値ラベルと呼びます。 この場合、2つの項⽬値を 1と0に割り当てる処理をします。 タイタニック・データセットでは次の3つの項⽬があります。 male / female True / False

Slide 28

Slide 28 text

2.2 2値ラベルの数値化 2値ラベルの数値化は変換⽤の辞書を⽤意した上で、map関数により⾏います。 下の画⾯では「性別」を数値化しています。同じやりかたで「成⼈男⼦」「独⾝」も数値化します。 (参考) 変換前

Slide 29

Slide 29 text

2.2 多値ラベルの数値化 次の前処理は、多値ラベルの数値化です。 値が 2値でなく多値の場合は、下の図に⽰されるような One Hot Encodingの⼿法を⽤います。 ⼀⾒すると、3値の場合も0, 1, 2を割り当てればよさそうに思えます。しかし、この場合、「ネズミ」「ゾウ」「キリン」にど の値を割り当てたらいいか、考えてみて下さい(数値にした瞬間、⼤⼩関係が意味を持つようになります)。

Slide 30

Slide 30 text

2.2 多値ラベルの数値化 One Hot Encodingには、get_dummies関数を利⽤します。書籍では、下のコードのようにenc関数を⼀度定 義して、この関数呼び出しを項⽬単位に⾏うことで対応しています。 元の項⽬「男⼥⼦供」が3項⽬ に分割され、値はすべて1か0に なっている

Slide 31

Slide 31 text

2.2 モデル構築(データ分割) 以上、書籍4.2節の実装の流れを⼀通り説明してきました。書籍の中ではこの後で「正規化」をしていますが、今回 の実習のように⽬的のモデルのアルゴリズムが決定⽊の場合、この処理は不要です。 講演⽤に、この段階のデータを⽤いて決定⽊(分類を実現するアルゴリズムの⼀つ)によるモデル構築を⾏ってみました。 モデル構築プロセスのうち「(4)データ分割」の実装は下記になります。 データ分割の実装イメージ

Slide 32

Slide 32 text

2.2 モデル構築(アルゴリズム選定・学習) モデル構築プロセスの次のステップである「(5)アルゴリズム選定」「(6)学習」の実装は下記になります。 (5) アルゴリズムとして「決定⽊」を 選定 (6) 学習の実施

Slide 33

Slide 33 text

2.2 モデル構築 (予測・評価) 作ったモデルで、検証データに対して「(7)予測」、「(8)評価」した結果は下記になります。 適合率・再現率ともに約70%の結果となりました。 (7)予測はpredict関数で⾏う (8)評価の結果 (8)評価の1⼿法として 「混同⾏列表⽰」がある

Slide 34

Slide 34 text

2.2 モデル構築 (評価) 決定⽊モデルでは、数値による評価以外に、判定基準のツリー表⽰があり、データ分析で⾮常に重要な機能です。 以下に作ったモデルから決定⽊のツリー表⽰をするPython実装と、結果の⼀部を⽰します。 しかし、肝⼼の項⽬名が化けてしまっているため、どの項⽬で判断がされているのかがわかりません。。。。現在のところ、 項⽬名をすべて英字表記する回避策しかありません。 項⽬名が⽂字化けして読めない

Slide 35

Slide 35 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ

Slide 36

Slide 36 text

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の「クラウド簡易 版」の位置付けとご理解下さい。

Slide 37

Slide 37 text

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 で利⽤する ソフトウェア製品) 機能の ポーティング

Slide 38

Slide 38 text

2.3 SPSS Modeler Flowによる決定⽊の実装 下の図が、SPSS Modeler Flowにより決定⽊のモデルを構築した結果になります。 各部品のノードを結線した形でモデルが作られているのがわかると思います。 いわゆる「ビジュアル・プログラミング環境」の位置づけになります。

Slide 39

Slide 39 text

2.3 検査ノードによるデータ検査 書籍 4.1 節で説明しているような「データ確認」は、検査ノードにより⾏います。 その結果例を以下に⽰します。 検査ノード

Slide 40

Slide 40 text

2.3 タイプノードの設定(1) SPSSによるモデル構築で⼀番肝になるのが、左から2つめの「タイプノード」の設定です。 この設定を⾏うことでPythonの実装で必要だった前処理などが簡単になる仕掛けです。 設定項⽬の「指標」と「ロール」について、別スライドで詳しく説明します。

Slide 41

Slide 41 text

2.3 タイプノードの設定(2) 設定項⽬をスクロールダウンした2ページ⽬です。

Slide 42

Slide 42 text

2.3 タイプノードの設定(3) 指標 該当項⽬が、どのような性質のデータかを指定するものです。 統計学で⽤いられる「尺度」の概念とほぼ同じと理解して下さい。 ⾃動認識結果がセットされていますが、誤っている部分は⼈間が⼿で修正をかけます。 よく使われるのが、連続型、フラグ型、名義型、順序型で、それぞれの意味は次のとおりです。 連続型︓ 年齢や、料⾦のように数値を取る項⽬です。値は整数値または浮動⼩数点値です。 フラグ型︓yes no や male/famale 、True/Falseのように2値の値を取る項⽬です。 名義型︓ child/man/woman のように3値以上の値を取る項⽬です。 順序型︓ 名義型のうち順番が決まっている項⽬(例 First/Second/Third)は順序型で定義します。

Slide 43

Slide 43 text

2.3 タイプノードの設定(4) ロール 個々の項⽬が、モデルでどのような役割を持つのかを指定します。 ⼊⼒︓モデルの⼊⼒となる項⽬(説明変数)に対して設定します。 デフォルトの状態ではすべて「⼊⼒」となっています。 ターゲット︓モデルの出⼒となる項⽬(⽬的変数)に対して設定します。 ターゲットとなる項⽬は、教師あり学習の場合1項⽬のみです。 なし︓モデルの⼊⼒にも出⼒にも利⽤しない項⽬は、「なし」に設定します。 Pythonで予測に使わない項⽬は学習前にdrop関数で落としますが、それに対応する設定です。

Slide 44

Slide 44 text

2.3 タイプノードの設定(5) ロール(続き) 今回、「⽣存」「等室」「乗船港コード」のロールを「なし」にしているのは、それぞれ 「⽣存可否」「等室名」「乗船港」というまったく同じ情報の項⽬が他にあるからです。 書籍4.2節「前処理」の冒頭では、drop関数で「⽣存可否」「等室名」「乗船港」の3つの項⽬を落としており、 それと同じ⽬的になります。 「儲かるAI」のPython実装では、One Hot Encodingを省くため「等室名」(First, Second, Third) を落として、「等室」(1, 2, 3)を残しました。 今の実習では「等室名」が正しく「順序型指標」と して認識されていたので、人間にわかりやすい「等 室名」を残しています。

Slide 45

Slide 45 text

2.3 パーティションノードの設定 下記は、「パーティションノード」の設定画⾯です。 訓練70%、検証30%の⽐率を指定しました。 参考までに該当するPython実装を右に再掲しました。 Pythonでの実装

Slide 46

Slide 46 text

2.3 学習 以上の準備が終われば、⽋損値が残った状態で学習が可能です。 学習する時は、画⾯上部の「実⾏」ボタンをクリックします。 決定⽊モデル 学習済みモデル

Slide 47

Slide 47 text

2.3 決定⽊のツリー表⽰(1) 学習が終わると、次のようにモデルのツリー表⽰ができます。

Slide 48

Slide 48 text

2.3 決定木のツリー表示(2) 「分岐のラベル表示」オプションを指定した上で、図を拡大した結果です。 ※処理に乱数を使っている関係で一回ごとに多少結果は変わります。 ②男性の場合、次の 要因は「成人男子」 (男性では子供が優先 された) ①生死を分けた最大の 要因は性別 (女性優先で救出された)

Slide 49

Slide 49 text

2.3 決定⽊ 精度評価結果 検証データに対する混同⾏列の評価結果も確認できます。 ※処理に乱数を使っている関係で一回ごとに多少結果は変わります。 「出⼒およびバージョン」のアイコンを クリック 「精度分析」の⽬のアイコンをクリック

Slide 50

Slide 50 text

⽬次 1. ⼈⼯知能・機械学習⼊⾨ 2. モデル構築デモ 2.1 前提 2.2 Pythonによる実装 2.3 SPSS Modeler Flowによる実装 2.4 ツール⽐較まとめ

Slide 51

Slide 51 text

2.4 ツール⽐較まとめ 同じデータから、同じアルゴリズム(決定⽊)でPythonとSPSS Modeler Flowの⽐較を実施しました。 モデルを作るまでの⼿間、使いやすさ、わかりやすさの観点で、SPSS Modeler Flowが便利です。 →特にプログラミングの経験のない初⼼者にはSPSS Modeler Flowがお勧めです。 Pythonを普段使いしている経験者は「味⾒」フェーズ※で活⽤可能です。 →試⾏錯誤が簡単に⾏えるという点で、SPSS Modeler Flow(あるいは有償のSPSS Modeler)を利⽤するのが よりよい選択と考えられます。 ※本番⽤モデルのチューニングの前に、⼊⼿したデータで本当に予測ができるのか確認するフェーズ。 SPSS Modeler Flowは、scikit-learnで実装できていない、アソシエーション分析や、時系列分析なども利⽤可 能です(次ページ参照)。是⾮、皆さんもお試しいただければと思います。

Slide 52

Slide 52 text

(参考) SPSS Modeler Flow 利⽤可能モデル 以下のようなモデルが利⽤可能です。※ ※ 2021年4⽉29⽇現在 今後変更の可能性もあります

Slide 53

Slide 53 text

(参考) 実習⽤リンク集 当プレゼンのデモは以下のコンテンツを使って再現可能です。 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

Slide 54

Slide 54 text

(参考) SPSS Modeler Flow リンク集 より深くSPSS Modeler Flow を知りたい⽅には以下の記事があります。 (かなり古い記事もあり、画⾯などが現⾏と異なる点があることにご注意ください) DSXLのSPSS Modelerで異常検知 DSXLのSPSS Modelerで故障予知 「Watson Machine Learning」でSPSS Modelerみたいな「Flows」を使ってみた 製品版のSPSS Modelerのよりディープな活⽤⽅法に関しては、下記シリーズものの記事がお勧めです。 SPSS Modelerの推しノード達