おじさんAのプログラムメモ

30代のおじさんの主にプログラムについてのブログです

AzureMLでニワカなまとめ

AzureMLはブラウザーから機械学習を実行できる環境。
ドラックドロップでデータやアルゴリズムなどのモジュールをペタペタ貼り付けるだけでOK。
プログラミングも、機械学習の知識も必要ない。

ブラウザで遊んでいるだけであれば無料。
お金を払えば、作った機器学習をWebAPI化し、自分のシステムに組み込むことも可能。

azure.microsoft.com

機械学習の主な用途

手法 概要 教師 用途
回帰(Regression) 未知の値の予測する あり 販売予測
クラス分類(Classfication) 人が作ったカテゴリに分類する あり 迷惑メールの判定
クラスタリング(Clustering) 機械的に分類する なし ユーザーのセグメント
レコメンデーション(Recommendation) あり/なし ECサイトでおすすめ
情報圧縮 複数の特徴量を少数の特徴量に圧縮する 数学の点数と物理の点数をもとに理系の点数
その他 囲碁とか

回帰

f:id:surume000:20160608122024p:plain

アルゴリズム
Linear Regression(線形回帰)
Bayesian Linear Regression(ベイズ線形回帰) 通常の線形回帰よりも事象の発生した頻度を重視。過学習に強い
Neaural Network Regression
Ordinal Regression
Poisson Regression(ポワソン回帰)
Boosted Decision Tree Regression(決定木)
Fast Forest Quantile Regression
Decision Forest Regression
精度チェック
  • MAE
  • RMSE
  • 決定係数
精度向上
  • 変数を増減
    • 変数が多すぎると、本来関係ないはずのデータも利用して、無理やり式を作り上げてしまうことがある(=過学習)
  • 正則化(Regularization weigth)の調整
    • 過学習防止。weigthの値が高ければ高いほど各特徴量に対するパラメータが小さく収まるようになる。(ただし全体として誤差は増える)
  • 外れ値を除く
  • データの掃除(欠損値)
  • アルゴリズムの変更
用途
  • ファンダメンタル情報をもとに、株価の適正価格を計算
  • 物件の情報をもとに、物件の適正価格を計算

クラス分類

f:id:surume000:20160608122537p:plain

アルゴリズム
Multiclass Decision Forest
Multiclass Decision Jungle
Multiclass Logistic Regression
Multiclass Neural Network
One-Vs-All Multiclass
Two-Class Averaged Perceptron
Two-Class Bayes Point Machine
Two-Class Boosted Decision Tree
Two-Class Decision Forest
Two-Class Decision Jungle
Two-Class Locally Deep Support Vector Machine
Two-Class Logistic Regression
Two-Class Neural Network
Two-Class Support Vector Machine

2つに分類するもの -> Two-Class
nに分類するもの -> Multiclass

精度チェック
精度向上
  • 判別式の精度を上げる
  • 閾値を調整
  • 手法を変更

ロジスティック回帰はクラス分類時に、まずは確率を計算する。
そして計算された確率ごとに、設定された閾値を超えるかどうかによって、分類先を振り分けている。
(ex. このメールは55%の確率で迷惑メールっぽいと計算されたとする。その場合閾値が50に設定されていたら迷惑メールに判定され、60に設定されていたら通常のメールと判定される。)
よって、精度向上には、確率の計算がより正しくなるようにするのと、閾値をいくつに設定するかによる。

用途
  • メールが迷惑メールかどうか
  • 株価があがるか、下がるかを予測
  • 症状などをもと病気か病気じゃないか
  • ブログ記事をカテゴリに振り分け
用語
  • 正解率(Accuracy)
  • 真陽性率(TruePositiveRate)
  • 偽陽性率(FalsePositiveRate)
  • ROC曲線
  • 適合率(Precision)
  • 再現率(Recall)
  • F値(F1 score, F-score)

真陽性を改善しようと偽陽性が悪化するなどのトレードオフ関係がある
(ex. 迷惑メール判定の精度を向上させようとすると、通常のメールも迷惑メールと判定されやすくなる)

クラスタリング

f:id:surume000:20160608153132p:plain

アルゴリズム
k-means Clustering (Azureではk-means++)
精度チェック
精度向上
  • 分類するクラスタの数を調整
  • 対象データの項目を増減
  • 正規化(normalization)
    • 項目に年収と年齢がある場合、年収の影響力が大きくなりすぎる(数値が大きいので)。項目間の影響度を揃えるためにスケールを揃えることを正規化という
用途
  • ユーザーをグループ化
用語

レコメンデーション

f:id:surume000:20160608153117p:plain

AzureMLでのレコメンデーションはMatch Boxというのを使う

精度チェック
  • NDCG
    • ユーザーが商品に与える評点の順序に対する予測が実際とどの程度一致しているかの数値
    • 1.0(良) ~ 0.0(悪)
  • MAE
    • 予測値の誤差を表す
  • RMSE
    • 予測値の誤差を表す。(誤差のバラつきが大きいとMAEより大きくなる)
精度向上
  • 商品とユーザーの属性情報を増減
  • 評点の見直し(ex レビュー点数じゃなく、購買有無のみを評点にする->データ数が増える)
  • 特徴ベクトルの長さ(定数K)を調整する
用途
  • いろいろ
用語
  • コールドスタート問題
    • 新しい商品、新しいユーザーにレコメンドさせようがない。解決策としては、評点情報だけでなく商品とユーザーの属性情報によるレコメンドをおこなう(AzureMLではデフォルトそうなっている)

その他書きたいこと

  • テスト方法
    • ホールドアウト法、クロスバリデーション
  • クリーニング
  • deleteボタンに要注意
  • 教師あり、教師なし、強化学習
  • 過学習について

参考にした本

クラウドではじめる機械学習 Azure MLでらくらく体験

クラウドではじめる機械学習 Azure MLでらくらく体験