機械学習の概要

機械学習

機械学習とは

機械学習はAIを実現するための手段の一つである。コンピュータが読み込んだデータからパターンを見つけ出し、そのパターンに従って分類や回帰などを実施する。機械学習の全体像を以下に示す。

Notion Image

機械学習の処理パターン

  • 分類 教師あり学習の一つ。特徴量データと教師データの組み合わせのパターンを学習して、分類を実施する。特徴量として「体重」と「瞬発力」を、教師データとして「犬か猫どちらか」を用いた場合のイメージ図を以下に示す。
  • Notion Image
  • 回帰 教師あり学習の一つ。特徴量データと教師データの組み合わせのパターンを学習して、回帰を実施する。分類と似ているが、教師データが数値であることが異なる。特徴量として「広告費」を、教師データとして「売上」を用いた場合のイメージ図を以下に示す。
  • Notion Image
  • 時系列予測 教師あり学習の一つ。特定の値の過去のデータを入力に、未来の値を予測する。
  • Notion Image
  • アソシエーション分析(バスケット分析) 教師なし学習の一つ。顧客が複数の商品を同時に購入可能な状況で、どの商品の組み合わせに関連が深いかを分析する。分析結果に基づいて、関連が深い商品を近い場所に陳列する、セット割引で販売する、一方の商品を購入した顧客にもう一方の商品をレコメンドするなどの施策を打つことで分析の効果が得られる。
  • Notion Image
  • クラスタリング 教師なし学習の一つ。教師データなしで、似たようなパターンのデータをまとめて、グループ分けをする。分析結果に基づいて、各グループの特性を踏まえて、特定のグループのみを対象とした施策を打つことで分析の効果が得られる。
  • Notion Image
  • 次元圧縮 教師なし学習の一つ。多くの特徴量をより少ない次元に圧縮することで、データの特徴を捉えやすくする。例えば、身長と体重という2つの指標からBMI(肥満度)という1つの指標に変換することも次元圧縮に対応する。
  • Notion Image
  • 強化学習 エージェントが環境と相互作用を繰り返すことで実施される。設定された報酬を最大化するように学習する。囲碁AIや将棋AIなどが挙げられる。

  • 機械学習のアルゴリズム

    機械学習には様々なアルゴリズムがあり、課題に適したアルゴリズムを選択する必要がある。代表的なアルゴリズムを以下に示す。


    主な教師あり学習アルゴリズム

    アルゴリズム分類回帰
    線形回帰
    ロジスティック回帰
    サポートベクトルマシン
    ナイーブベイズ
    決定木
    ランダムフォレスト
    GBDT
    kNN
    ニューラルネットワーク

    主な教師なし学習アルゴリズム

    アルゴリズム次元削減クラスタリング
    PCA
    LSA
    LDA
    k-means
    混合ガウス
    t-SNE

    線形回帰

    線形関数を用いて予測する手法である。平均二乗誤差が最小になるように学習する。ただし、非線形なデータや外れ値を含むデータのように、適切な結果を得られない場合もある。

    Notion Image

    ロジスティック回帰

    シグモイド関数を用いて分類カテゴリの確率を予測する手法である。名前に「回帰」と入っているが分類問題に利用される。ロジスティック損失(ログロス)が最小になるように学習する。決定境界(分類結果が切り替わる境界)は線形になるため、複雑な分類は出来ない。

    Notion Image

    サポートベクトルマシン

    マージン最大化という、決定境界を学習するアルゴリズム。ロジスティック回帰と同様に決定境界は線形だが、サポートベクトルマシンの方が良い結果が得られる場合がある。

    Notion Image

    ナイーブベイズ

    主に自然言語の分類で用いられる。ベイズの定理を基に、文章内に出現する単語から各カテゴリに分類される確率を計算し、確率が最も大きくなるものに分類する。(追記予定)

    Notion Image

    kNN

    kNNは、学習データすべてを記憶しておき、未知データと学習データすべてとの距離を計算し、近傍k個のデータのラベルで多数決をとり、未知データの予測をする。

    Notion Image

    決定木

    決定木は、学習データに対して条件分岐を繰り返して予測する手法。分岐時に不純度(一つのグループに含まれるラベルの数)が最も減少するように学習する。

    Notion Image

    ランダムフォレスト

    ランダムフォレストでは、複数の独立した決定木を利用して、多数決をとることで予測精度を向上させる。

    Notion Image

    決定木を学習する際に、同じデータで学習してしまうと、すべての決定木が全く同じ予測結果を出すようになってしまい、多数決の意味がなくなる。そこで、学習データからランダムに復元抽出(ブートストラップ法)した上で、特徴量をランダムに選択したデータを用いて学習を実施する。


    GBDT(勾配ブースティング木)

    GBDTは、複数の決定木を直列につなげた構造になっていて、2本目以降の決定木では、目的変数とそれまでの決定木の予測値の差から、予測精度が上がるように修正していく。

    Notion Image

    ニューラルネットワーク

    パーセプトロン

    パーセプトロンでは、入力x1, x2, x3, …から出力yを得るアルゴリズムである。

    入力が3つのの場合、yの計算は以下のように表せる。

    Notion Image
    s=w1x1+w2x2+w3x3s=w_1x_1+w_2x_2+w_3x_3
    y=f(s)y=f(s)

    ここで、w1, w2, w3は各入力に対する重み、fは活性化関数である。重みというパラメータを調整することで、様々な課題に対して有効なモデルを作ることができる。パーセプトロンの活性化関数はステップ関数で以下のように表せる。

    s0f(s)=0s\le0 \rightarrow f(s)=0
    s>0f(s)=1s>0 \rightarrow f(s)=1

    ニューラルネットワーク

    ニューラルネットワークはパーセプトロンを多段階に組み上げて、モデルをより複雑にしたもの。

    Notion Image

    パーセプトロンとは異なり、各ノードの出力は0か1かの二値ではなく、微分可能な連続的な値を取るような活性化関数を用いる。代表的な活性化関数にシグモイド関数がある。

    Notion Image

    誤差逆伝搬法

    ニューラルネットワークでは、現在のパラメータを使って予測値を計算する順伝搬と、予測値と正解値のずれからパラメータを更新する逆伝搬を交互に繰り返すことによって学習が進む(誤差逆伝搬法)。パラメータの初期値はランダムに設定されていて、微分計算を用いて予測値が正解値に近づくようにパラメータを調整していく。

    Notion Image

    ディープラーニング

    ニューラルネットワークの層を増やして深くしたモデル。最近ではニューラルネットワークというとディープラーニングを表していることも多く、特に区別する必要はない。


    PCA(主成分分析)

    次元削減の代表的な手法。身長と体重のように相関の強いデータに対して有効。新たな軸(主成分)は元の変数の数だけ作ることができ、情報量(分散)が多い順にPC1, PC2, …と設定する。各主成分が持つ情報量の割合は寄与率と呼ばれ、元の情報は寄与率の大きい主成分のみで表現できる。例えば、「身長-体重データ」の場合、PC1(第一主成分)を「体格」などと解釈し、PC1のみでもある程度の情報を表現できる。

    Notion Image

    LSA(潜在意味解析)

    次元削減の手法の一つ。特異値分析を用いて次元圧縮を行う。(追記予定)

    PLSA

    次元削減の手法の一つ。LSAを確率生成モデルとして考え直したもの。(追記予定)


    LDA(潜在的ディリクレ配分法)

    次元削減の手法の一つ。PLSAをベイズ化したもの。(追記予定)

    k-means法

    クラスタリングの代表的な手法。各データにランダムにクラスタを割り当てた後、各クラスタの重心の計算と各データのクラスタを最近傍のクラスタ重心へ更新する作業を、クラスタの割り当てが変化しなくなるまで繰り返す。

    Notion Image

    GMM(混合ガウス分布)

    k-means法ではデータは必ず一つのクラスタに属するようにクラスタリングされる。一方GMMでは、複数のガウス分布を線形に重ね合わせることで複数のクラスタに確率的に属するようにクラスタリングできる。各ガウス分布のパラメータ(平均と分散)をランダムに初期化した後、データの重みの計算とパラメータの更新を、パラメータが収束するまで繰り返す。

    Notion Image

    t-SNE

    次元削減の手法の一つ。PCAと異なり、非線形な関係に対しても適用できる。高次元空間でのデータ間の距離を維持するように低次元空間に次元を圧縮する。

    参考資料


    著者画像

    ゆうき

    2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.