「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Azure Machine Learning]]
--[[Azure Machine Learningチュートリアル]]
--Azure Machine Learningのアルゴリズム・モデル
--[[Azure Machine Learningのモデルのデプロイ]]

* 目次 [#raca1359]
#contents

*概要 [#h849ad0d]
アルゴリズムの[[選択>#u02b267b]]と、モデルの[[評価>#g97a7e87]]、[[解釈・説明>#s72f2d94]]について。

*詳細 [#reaa3ee4]


**アルゴリズム [#u02b267b]
機械学習アルゴリズム チート シート(2021)の情報から。

***回帰 [#a54804d4]
-値を予測する
-値の関係を推定して予測
-質問の例:いくらですか、いくつですか?

-アルゴリズム

--高速フォレスト分位点回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/fast-forest-quantile-regression
>分布を予測する(価格予測、飛行機遅延予測

--ポワソン回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/poisson-regression
>イベント数を予測(イベント=飲料水の販売個数を予測などを意味する

--線形回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/linear-regression
>⾼速トレーニング、線形モデル

--ベイズ線形回帰~
https://docs.microsoft.com/en-us/previous-versions/azure/machine-learning/studio-module-reference/bayesian-linear-regression
>線形モデル、⼩さなデータセット(確率的に直線が当てはまりそうな領域で予測

--デシジョン フォレスト回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/decision-forest-regression
>正確で速いトレーニング時間

--ニューラル ネットワーク回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/neural-network-regression
>正確で⾧いトレーニング時間

--ブースト デシジョン ツリー回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/boosted-decision-tree-regression
>正確で⾼速なトレーニング時間、~
⼤きなメモリフットプリント

***2クラス分類 [#idbcba2b]
-2つのカテゴリ間の予測
-はい・いいえ、真・偽などの~
単純な2つの選択肢の質問に答える。
-質問の例:これはAですかBですか?

-アルゴリズム

--2 クラス サポート ベクター マシン~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-support-vector-machine
>100未満の機能、線形モデル

--2 クラス平均化パーセプトロン~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-averaged-perceptron
>⾼速トレーニング、線形モデル

--2 クラス デシジョン フォレスト~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-decision-forest
>正確で迅速なトレーニング

--2 クラス ロジスティック回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-logistic-regression
>⾼速トレーニング、線形モデル

--2 クラス ブースト デシジョン ツリー~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-boosted-decision-tree
>正確で⾼速なトレーニング、~
⼤容量のメモリフットプリン

--2 クラス ニューラル ネットワーク~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-neural-network
>正確で⾧いトレーニング時間

***マルチクラス分類 [#oc96f941]
-いくつかのカテゴリ間で予測
-複数の可能な答えで複雑な質問に答える。
-質問の例:これはAまたはBまたはCまたはDですか?

-アルゴリズム

--マルチクラス ロジスティック回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/multiclass-logistic-regression
>速いトレーニング時間、線形モデル

--多クラス ニューラル ネットワーク~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/multiclass-neural-network
>精度、⾧いトレーニング時間

--多クラス デシジョン フォレスト~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/multiclass-decision-forest
>正確で速いトレーニング時間

--One-vs-All Multiclass~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/one-vs-all-multiclass
>2クラス分類器に依存

--One-vs-One Multiclass~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/one-vs-one-multiclass
>2クラス分類器に依存、複雑さが⼤きく、不均衡なデータセットに対する感度が低い

--多クラスのブースト デシジョン ツリー~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/multiclass-boosted-decision-tree
>ノンパラメトリック、⾼速トレーニング時間、スケーラブル

***クラスタリング [#m00950fb]
-構造を発見する
--類似のデータポイントを直感的なグループに分離
--質問の例:これはどのように構成されていますか?

-アルゴリズム(教師なし学習)
--K-Means クラスタリング~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/k-means-clustering

***異常検出 [#u294d6fc]
-異常な出来事を見つける
-稀な・異常なデータポイントを識別して予測
-質問の例:これは奇妙ですか?

-アルゴリズム

--1 クラス サポート ベクター マシン~
...
>100未満の機能、積極的な境界

--PCA ベースの異常検出~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/pca-based-anomaly-detection
>速いトレーニング時間

***レコメンダー [#m93919e1]
-推奨事項を⽣成する
-誰かが何に興味を持つかを予測
-質問の例:彼らは何に興味がありますか?

-アルゴリズム

--SVD レコメンダー~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/train-svd-recommender
>協調フィルタリング、次元削減による低コストでのパフォーマンスの向上

--ワイドかつディープなレコメンダー~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/train-wide-and-deep-recommender
>ハイブリッドレコメンダー(協調フィルタリングとコンテンツベースのアプローチ)

***テキスト分析 [#n655c233]
-テキストから情報を抽出する
-テキストから⾼品質の情報を導き出す
-質問の例:このテキストにはどのような情報がありますか?

-アルゴリズム

--潜在的ディリクレ配分法~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/latent-dirichlet-allocation
>教師なしトピック・モデリング、類似したグループ・テキスト

--テキストからの N gram 特徴抽出~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/extract-n-gram-features-from-text
>フリーテキストの列からn-gramの辞書を作成

--特徴ハッシュ~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/feature-hashing
>VowpalWabbitライブラリを使⽤して~
テキストデータを整数エンコードされたフィーチャに変換

--テキストの前処理~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/preprocess-text
>テキストのクリーニング操作~
(ストップワードの削除、⼤⽂字と⼩⽂字の正規化など

--単語からベクターへの変換~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/convert-word-to-vector
>レコメンダー、固有表現抽出、機械翻訳などの~
NLPタスクで使⽤するために単語を値に変換

***画像分類 [#jaf4d82b]
-画像を分類する
-CNNで画像を分類
-質問の例:この画像は何を表していますか?

-アルゴリズム

--ResNet~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/resnet
>CNNの代表的なモデル

--DenseNet~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/densenet
>ResNetより深い層の実現を目指したモデル

**選択のフローチャート [#dbc5a3dc]
最適な機械学習アルゴリズムの選択は

-データの性質と、
-データで達成したい目標

の両方によって決定される。

***データの特徴や構造を捉えたい。 [#n9bd3029]
[[クラスタリング>#m00950fb]]を選択する。

***(予測)分類したい。 [#v771d2b4]

-2値分類

--正例が少ないケース:[[異常検出>#u294d6fc]]のアルゴリズム・モデルを理論別の分類で選定

--通常のケース:[[2クラス分類>#idbcba2b]]のアルゴリズム・モデルを理論別の分類で選定

-3値以上の分類:[[マルチクラス分類>#oc96f941]]のアルゴリズム・モデルを理論別の分類で選定

***(予測)回帰したい。 [#yaba22dd]
[[回帰>#a54804d4]]のアルゴリズム・モデルを理論別の分類で選定

***(予測)時系列予測したい。 [#b331a2d9]
[[RNN、LSTMなど>ニューラルネットワーク#p7254b04]]
[[RNN、LSTMなど>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF#p7254b04]]

***(その他)レコメンドしたい。 [#wb16b5d8]
[[レコメンダー>#m93919e1]]

***(その他)テキストから情報抽出したい。 [#l30686a1]
[[テキスト分析>#n655c233]]

***(その他)画像を分類したい。 [#p7029c77]
[[画像分類>#jaf4d82b]]

**モデルの評価 [#g97a7e87]

***分類メトリック [#q46ed90b]
-混同行列
-ROC 曲線
-適合率 - 再現率曲線
-累積ゲイン曲線
-リフト曲線
-較正曲線

***回帰/予測メトリック [#dd367416]
-残差
-予測と True

***イメージ モデルのメトリック (プレビュー) [#ac5bea4f]
...

***[[モデルの説明と特徴の重要度>#s72f2d94]] [#uaccc8f7]
信頼できる AI を実現するには、

>「モデルがその予測にデータセットのどの特徴を使用したか」

を調査することが重要。

**モデル解釈・説明 [#s72f2d94]

***解釈性・説明性 [#laa454f4]
-解釈性
--モデルの改善方法を知りたい
--ステークホルダーへモデル自体を説明

-説明性
--[[説明可能なAI>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?AI%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88#if5c23fc]]
--ユーザへモデルの出力した結果の根拠を説明したいケース

***大域的・局所的 [#z6f299b4]

-大域的~
学習したデータセット全体を使ってモデルを説明する。

-局所的~
1つのデータを使った予測結果でモデルを説明する。

***モデル毎の説明手法 [#d762e31b]
-解釈可能なモデル(Glass Box AI Model)

--主に[[統計的機械学習のモデル>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%EF%BC%88machine%20learning%EF%BC%89#ibaa375a]]
---シンプルな「統計モデル」
---階層的な木構造の確率的な「生成モデル」

--[[数理最適化>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%EF%BC%88machine%20learning%EF%BC%89#r91e67ac]]も、簡単な関数の近似なら解釈可能か。

-ブラック・ボックスなモデル(Black Box AI Model)
--[[深層学習で使用されるDNN(Deep Neural Network)>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF#p7254b04]]
--[[複数の決定木を使用するモデル(ランダムフォレスト・勾配ブースティング木)>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%EF%BC%88machine%20learning%EF%BC%89#mcb6a10f]]

-トレードオフ~
一般的に、精度と[[解釈性・説明性>#laa454f4]]はトレードオフ関係にある。
--解釈可能なモデルを採用するなら、精度を上げる。
--ブラック・ボックスなモデルを採用するなら、[[解釈性・説明性>#laa454f4]]を上げる。

-参考:[[機械学習(machine learning) - 開発基盤部会 Wiki > 詳細 > 理論>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%EF%BC%88machine%20learning%EF%BC%89#r23cea4f]]

***ライブラリ・フレームワーク [#u23ad491]
InterpretMLと言う、機械学習の解釈を説明可能~
とするためのpythonライブラリ・フレームワーク

-「高精度」を実現した「解釈可能なモデル」~
Explainable Boosting Machine(EBM)
--[[scikit-learn>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?scikit-learn]]準拠(Estimatorというインターフェイスが基本)

--[[大域的>#z6f299b4]]な解釈
---「教師データの密度」と「説明変数のスコア(結果を上げた度合い)」などで説明ができる。
---また、交互作用法で複数の説明変数のスコア(結果への影響度合い)で説明ができる。

--[[局所的>#z6f299b4]]な解釈
---予測が正解となる確率を上げた変数と、その度合い。
---予測が正解となる確率を下げた変数と、その度合い。

-「ブラック・ボックスなモデル」の局所的な説明を行う。

--ある入力xに対しモデルが出力yとした時、予測の根拠を説明として提示する。
--入力・出力のみに依存するため、あらゆるモデルに対応する。

--また、モデルの誤差分析も可能(誤差の大きいコーホートを特定
---決定木で見る
---ヒートマップで見る

--ライブラリ
---SHAP
---LIME
---, etc.

>※ コーホート:ココでは、データの集団の意味。

*参考 [#x683546e]
-Microsoft/InterpretMLの中身 - 勉強の記録~
https://tmitani-tky.hatenablog.com/entry/2019/07/06/233837

-MicrosoftのInterpretMLが便利だった - ざこぷろのメモ~
https://zakopilo.hatenablog.jp/entry/2020/09/19/181719

-AutoML & InterpretML (2019/11/27 Deep Learning Lab 講演資料)~
https://www.slideshare.net/keitaonabuta/automl-interpretml-20191127-deep-learning-lab

-【記事更新】私のブックマーク~
「機械学習における解釈性(Interpretability in Machine Learning)」~
人工知能学会 (The Japanese Society for Artificial Intelligence)~
https://www.ai-gakkai.or.jp/resource/my-bookmark/my-bookmark_vol33-no3/

**YouTube [#pbe0695f]
-Azure Machine Learning ハンズオン モデル解釈~
https://www.youtube.com/watch?v=ljOxHenrOqg

--Module
---#1 環境準備
---#2 解釈性の高いモデルを構築する
---#3 BlackBox モデルを説明する

--Resources
---DOC~
https://speakerdeck.com/konabuta/azure-machine-learning-hanzuon-moderujie-shi
---Git~
https://github.com/konabuta/responsible-ai

**Microsoft Docs [#fe3cf58c]

***機械学習アルゴリズム [#l407c417]
-機械学習アルゴリズム チート シート - デザイナー~
https://docs.microsoft.com/ja-jp/azure/machine-learning/algorithm-cheat-sheet

-機械学習アルゴリズムの選択方法~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-select-algorithms

-機械学習のアルゴリズム~
(コンポーネント リファレンス)

--回帰
---線形回帰~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/linear-regression
---...

--クラスタリング
---K-Means Clustering (K-Means クラスタリング)~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/k-means-clustering
---...

--分類
---2 クラス サポート ベクター マシン~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/two-class-support-vector-machine
---...

--異常検出
---PCA ベースの異常検出~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/pca-based-anomaly-detection
---...

--レコメンダー
---SVD レコメンダー~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/train-svd-recommender
---...

--テキスト分析
---潜在的ディリクレ配分法~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/latent-dirichlet-allocation
---...

--コンピューター・ビジョン
---ResNet~
https://docs.microsoft.com/ja-jp/azure/machine-learning/component-reference/resnet
---...

***機械学習モデル [#oa1aa4f6]
-AutoML 実験結果の評価~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-understand-automated-ml

-自動 ML でのモデル説明 (プレビュー)~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-machine-learning-interpretability-automl

-Python を使用したモデルの解釈と説明 (プレビュー)~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-machine-learning-interpretability-aml

----
Tags: [[:クラウド]], [[:BI/AI]], [[:Azure]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS