2021年5月21日 IBM Cloud Festa 発表資料
SPSS ModelerFlow で儲かるAIをつくる⾚⽯ 雅典IBM Cloud Festa Online2021
View Slide
講演者プロフィール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/4296106961Amazon(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. 処理パターン「回帰」Δผʢଟྨʣʯͱͯ͠հ͍ͯ͠·͢ɻɹҰํɺຊॻͷதͰѻ͏ྨɺͯ͢άϧʔϓΛೋͭʹ͚Δ ྨͰ͢ɻ͔͜͜Β୯ʹྨͱॻ͖·͕͢ɺ ྨͷ͜ͱΛࢦ͠·͢ɻ ճؼɹਤ Λݟ͍ͯͩ͘͞ɻϞσϧͷೖྗͷ෦ྨͱ·ͬͨ͘ಉ͡Ͱ͢ɻ།ҰҟͳΔͷग़ྗͷ෦Ͱɺ͜ͷϞσϧͰʮͲͷάϧʔϓʹଐ͢Δ͔ʯͰͳ͘ʮࣗసंར༻ʯͱ͍͏Λ༧ଌ͍ͯ͠·͢ɻ͜ͷΑ͏ʹΛ༧ଌ͢ΔϞσϧ͕ʮճؼʯͰ͢ɻɹʮճؼʯͷྫ અͰऔΓѻ͍·͢ɻਤ Ͱࣔͨ͠ྫɺϨϯλαΠΫϧձࣾͷࣗసंར༻Λ༧ଌ͢ΔϞσϧͰɺ༵ɾఱؾɾ෩ͳͲʹΑΓɺࣗసंར༻͕มಈ͢Δ͜ͱ͕༧͞Ε·͢ɻࣗసंར༻Λਖ਼֬ʹ༧ଌ͢Δ͜Ϟσϧೖྗقઅ༵ఱؾ࣪෩ग़ྗࣗసंར༻ਤ ɹࣗసंར༻༧ଌϞσϧػցֶशϞσϧͷॲཧύλồϯɹਤ ͰɺվળલͷΛʮ༧ଌ݁Ռ ʯɺվળޙͷΛʮ༧ଌ݁Ռ ʯͱͯ͠දࣔ͠·ͨ͠ɻಛʹ ݄ޙʹؔͯ͠ɺվળલΑΓ࣮ʹ͍ۙͮͯਤ ɹνϡʔχϯάޙͷొϢʔβʔར༻༧ଌͱ࣮ͷ࣌ܥྻදࣔ⿊線 実績値⻘線 モデル予測結果
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) 評価
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実装と、結果の⼀部を⽰します。しかし、肝⼼の項⽬名が化けてしまっているため、どの項⽬で判断がされているのかがわかりません。。。。現在のところ、項⽬名をすべて英字表記する回避策しかありません。項⽬名が⽂字化けして読めない
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 StudioSPSS ModelerFlowSPSS 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 HotEncodingを省くため「等室名」(First, Second,Third) を落として、「等室」(1, 2, 3)を残しました。今の実習では「等室名」が正しく「順序型指標」として認識されていたので、人間にわかりやすい「等室名」を残しています。
2.3 パーティションノードの設定下記は、「パーティションノード」の設定画⾯です。訓練70%、検証30%の⽐率を指定しました。参考までに該当するPython実装を右に再掲しました。Pythonでの実装
2.3 学習以上の準備が終われば、⽋損値が残った状態で学習が可能です。学習する時は、画⾯上部の「実⾏」ボタンをクリックします。決定⽊モデル学習済みモデル
2.3 決定⽊のツリー表⽰(1)学習が終わると、次のようにモデルのツリー表⽰ができます。
2.3 決定木のツリー表示(2)「分岐のラベル表示」オプションを指定した上で、図を拡大した結果です。※処理に乱数を使っている関係で一回ごとに多少結果は変わります。②男性の場合、次の要因は「成人男子」(男性では子供が優先された)①生死を分けた最大の要因は性別(女性優先で救出された)
2.3 決定⽊ 精度評価結果検証データに対する混同⾏列の評価結果も確認できます。※処理に乱数を使っている関係で一回ごとに多少結果は変わります。「出⼒およびバージョン」のアイコンをクリック「精度分析」の⽬のアイコンをクリック
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/タイタニック・デモ.ipynb2.3節IBM Cloud / Watson Studio サインアップ⼿順.https://qiita.com/makaishi2/items/b666f847a98c2e42dfbbタイタニック・データセットhttps://raw.githubusercontent.com/makaishi2/sample-data/master/data/titanic_j.csvSPSS 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の推しノード達