taisablog

taisa's engineer blog

「 機械学習 」 一覧

機械学習におけるアルゴリズム

前回のパーセプトロンに引き続きこの勉強会用に仕事ではじめる機械学習を元に機械学習におけるアルゴリズムをまとめる。 AIPy (アイパイ) ハンズオン #3 (2018/07/19 19:30〜) この勉強会について しばらくは機械学習に特化した勉強会になります。仕事で機械学習などを活用したいけど何からはじめればよいか分からないような方向けのハンズオン形式の勉強会です。ハ ンズオン形式といいつつまず初めは力を養う為に 仕事ではじめる機械学習 の輪読会からはじめます。この会はみんなで集まって意見を交換したり協力したりしながら一気 … ※不適切な内容である場合はすぐに取り下げます。 そもそもどのアルゴリズムを選ぶべきか 機械学習にはどんな種類があるか 分類(Classification):正解となる離散的なカテゴリ(クラス)と入力データの組み合わせで学習し、未知のデータからクラスを予測する 回帰:正解となる数値と入力データの組み合わせで学習し、未知のデータから連続値を予測する クラスタリング:データを何かしらの基準でグルーピングする 次元削減:高次元のデータを可視化や計算量削減などのために低次元マッピングする その他 推薦:ユーザーが好みそうなアイテムや、閲覧しているアイテムに類似しているアイテムを提示する 異常検知:不審なアクセスなど、普段とは違う挙動を検知する 頻出パターンマイニング:データ中に高頻度に出現するパターンを抽出する 強化学習:囲碁や将棋のような局所的には正解が不明確な環境で、とるべき行動の方針を学習する アルゴリズムを選定するには以下のフローチャートを参考にするとよい。startからはじめて条件によって分類、回帰、クラスタリング、次元削減のどれを選べばよいかが分かる。 アルゴリズムを選定する、scikit-learnのフローチャート ※その他(推薦、異常検知、頻出パターンマイニング、強化学習)は覗く 参考:scikit-learn algorithm cheat-sheet 分類 教師あり学習の1つ 予測対象はカテゴリなどの離散的な値を予測する メールがスパムかどうかや画像が映っているのがどういった物体かなど クラスの数が2の場合を二値分類、3以上の場合を多値分類という 分類については以下のようなアルゴリズムが存在する パーセプトロン ロジスティック回帰 SVM (サポートベクターマシン) ニューラルネットワーク k-NN (k近傍方、k-Nearest Neighbor Method) 決定木、ランダムフォレスト、GBDT (Gradient Boosted Decision Tree) ナイーブベイズ HMM (Hidden Markov Model) 本記事では太字の分類アルゴリズムと回帰(少し)について触れる ロジスティック回帰 ロジスティック回帰の特徴 出力とは別に、その出力のクラスに所属する確率値が出せる 学習はオンライン学習でもバッチ学習でも可能 予測性能はまずまず、学習速度は早い 過学習を防ぐ為の正則化項が加わっている 特に出力の確率値が出せるという特徴のため、広告のクリック予測にもよく使われている。 実践系の参考記事 新シリーズ第8回「ロジスティック回帰分析でターゲットを確率的に予測する」 ロジスティック回帰 ロジスティック回帰を実装してみよう ロジスティック回帰の決定境界 決定境界は直線 ロジスティック回帰の仕組み 活性化関数はシグモイド関数 損失関数は交差エントロピー誤差関数 シグモイド関数 入力が0の時は0.5をとる 値が小さくなるほど0に近づく 値が大きくなる程に1に近づく シグモイド関数を記述するコード def sigmoid(x): return 1 / (1 + np.exp(-x)) 出力yは y= sigmoid(np.dot(w, x)) と表すことが可能で、2値分類時の交差エントロピー誤差関数は、N個のデータに対してyを出力、tを正解ラベル(正しい場合は1、間違っている場合は0とする)、logを底がeの自然対数とすると、次のような書式で表すことができる。 2値分類の時の交差エントロピー誤差関数をコードで書くと以下のようになる def cross_entropy_error(y, t, eps = 1e-15): y_clipped = …