「[[マイクロソフト系技術情報 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]]