
7. 機械学習の基本
7.3 アルゴリズム例(決定木、SVM等)
ここでは、実務で広く使われる代表的な学習アルゴリズムを、考え方がつかみやすい順に紹介する。まずは「分岐のルールを木にしたモデル」である決定木、次に「境界線(面)でクラスを分ける」SVM(サポートベクターマシン)、そして決定木をたくさん束ねて精度と安定性を上げるランダムフォレストを取り上げる。いずれも分類にも回帰にも使えるが、得意分野や扱い方のコツが違うため、現場での選択眼を養ううえで基本を正確につかむことが大切である。
決定木は、質問を順にたどって結論に至る木構造のモデルで、データの特徴に対して「もし〜なら右へ、そうでなければ左へ」と分岐を繰り返し、末端(葉)で予測を出す仕組みになっている。この「木」は、根(最初の分岐)、内部ノード(途中の分岐)、葉ノード(最終結果)からなり、分類問題にも回帰問題にも用いられるノンパラメトリックな教師あり学習の代表である。利点は、判断の流れがそのまま図として読める解釈性と、特徴量のスケール調整などの前処理をあまり気にせず使える手軽さにある。一方で、単独の決定木は訓練データに過度に合わせやすく(過学習)、分割の深さなどを適切に制御しないと新しいデータで精度が落ちやすいという弱点も知られている。[1][2][3][4][5][6][7]
SVM(サポートベクターマシン)は、クラスを分ける境界(超平面)を選ぶ際に「両クラスから等距離で、最も余裕(マージン)が大きい線(面)」を探す考え方に基づいた方法である。直線や平面で分けられる場合は、その最大マージン境界を学ぶだけで高い汎化性能が出やすいが、現実には直線では分けにくい配置も多い。そこで使われるのがカーネル法で、データを高次元の空間に写してから「高次元では線形に分ける」発想を、計算量を抑えるテクニック(カーネルトリック)で実現する。要点をまとめると、SVMは境界近くの重要な点(サポートベクトル)だけに注目して最大マージンの境界を求め、非線形ならカーネルで対応する、という枠組みである。特徴のスケーリングを整えると安定に学習しやすく、適切なカーネルとパラメータを選べば高次元でも強力に機能することが多い。[8][9][10][11][12]
ランダムフォレストは、決定木を多数作り、その出力を多数決(分類)や平均(回帰)でまとめるアンサンブル学習の一種である。各木はデータのサブセット(ブートストラップ標本)と特徴のランダムなサブセットから学習し、木同士の相関を下げる工夫によって、単独木で起きやすい過学習を平均化で抑え、精度と安定性を高める。この「森」は並列計算と相性が良く、大量特徴や雑音が多い場面でも堅牢に働くことが多い。決定木の解釈性を部分的に保ちながら、重要な特徴の寄与を推定できる点も実務上の利点である。[13][14][15][16][17]
三者の違いは、モデルの形とバイアス・バリアンスのバランスに現れる。決定木は単純明快で説明しやすいが、1本ではばらつきが大きくなりやすい。SVMは最大マージン原理により汎化に強く、適切なカーネル選択で非線形にも対応できるが、パラメータ選定やスケーリングに敏感である。ランダムフォレストは多くの木の平均化でばらつきを抑え、設定も比較的安定だが、単一の明快な「ルールの流れ」は森としては読み取りづらい場合がある。実務では、説明性を重視する段階では浅い決定木や部分木の可視化、精度と頑健性を求める段階ではランダムフォレスト、境界がはっきり分かれる特徴空間で高精度を狙うならSVM、という使い分けが現実的である。[2][3][5][6][14][10][12][17][8][13]
故障予知の文脈で具体化する。センサから抽出したRMS、バンドエネルギー、スペクトル重心、ピーク個数などの特徴を用意したとき、決定木なら「どの特徴をどの値で分けると判定が決まるか」をそのまま示せるため、現場説明に強い。SVMは「正常と異常の間に最も余裕のある境界」を作るので、新しいデータにも通りやすい境界になりやすく、非線形ならRBFカーネルなどで対処する。ランダムフォレストは複数指標の組み合わせに頑健で、外れ値やノイズが混ざる環境でも安定しやすいほか、特徴重要度で「どの指標が効いたか」を定量的に示せる。不均衡データではクラス重みや分割の層化が前提となるが、三者とも教師あり学習として適切に評価(PR曲線、F1など)すれば、目的(見逃し抑制か誤警報抑制か)に応じた運用しきい値が決めやすい。[3][4][5][10][15][12][17][8][13]
学習と評価の実務上の勘どころを整理する。決定木は深さ、最小葉サンプル数、分割基準(不純度)などで過学習を抑制し、交差検証で安定点を探す。SVMはスケーリングを標準化し、カーネル(線形、RBFなど)とハイパーパラメータ(正則化、ガンマ)をグリッドやランダムで探索する。ランダムフォレストは木の本数を十分に確保し、特徴サブサンプルや最大深さを調整して汎化を確保、重要度を確認して特徴設計の見直しに活かす。いずれも、データ分割は層化(不均衡対策)や時系列分割(未来情報の混入防止)を徹底し、前処理の統計は訓練集合のみで学び検証・テストへ適用するのが鉄則である。[5][14][15][11][12][17][18][3][8]
最後に選択の道しるべを簡潔にまとめる。- 説明重視、ルール提示が必要なら決定木を出発点にし、過学習抑制を丁寧に行う。- 境界がはっきりしており高次元でも強い分類器がほしいならSVMを検討し、カーネルとパラメータを系統立てて最適化する。- 雑音や相互作用が多い実データで安定性と精度の両立を目指すならランダムフォレストでベースラインを築き、重要度で特徴を磨く。この三本柱を押さえ、評価指標と分割設計を正しく適用すれば、故障予知の現場で「説明でき、通用し、保守しやすい」学習器の選定と改善が進められる。[10][15][12][17][2][3][5][8][13] [1] https://cacoo.com/ja/blog/what-is-decision-tree/
[2] https://qiita.com/g-k/items/9c1307274814d651752a [3] https://www.ibm.com/jp-ja/think/topics/decision-trees [4] https://dc-okinawa.com/ailands/decision-tree/ [5] https://book.st-hakky.com/data-science/learning-decision-trees-python [6] https://zenn.dev/mi_01_24fu/articles/regression-tree [7] https://www.lucidchart.com/pages/ja/tutorial/decision-tree [8] https://ai-kenkyujo.com/artificial-intelligence/algorithm/svm/ [9] https://saycon.co.jp/archives/neta/svm%E3%81%A8%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E6%B3%95%E3%81%AE%E3%80%8C%E5%90%8D%E5%89%8D%E3%80%8D%E3%81%AB%E6%B3%A8%E7%9B%AE%E3%81%97%E3%81%A6%E3%80%81%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92 [10] https://aismiley.co.jp/ai_news/svm/ [11] https://statisticsschool.com/%E3%80%90python%E3%80%91%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%ABsvm%E3%81%A8%E3%81%AF%EF%BC%9Fkernel%E9%96%A2%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E9%9D%9E%E7%B7%9A%E5%BD%A2%E3%83%87/ [12] https://www.ibm.com/jp-ja/think/topics/support-vector-machine [13] https://www.nttcoms.com/service/TIBCO/glossary/random-forest/ [14] https://ai-bo.jp/random-forest/ [15] https://www.ai-souken.com/article/what-is-random-forest [16] https://aismiley.co.jp/ai_news/random-forests/ [17] https://www.ibm.com/jp-ja/think/topics/random-forest [18] https://pro.arcgis.com/ja/pro-app/latest/tool-reference/geoai/how-decision-tree-classification-and-regression-works.htm [19] https://aismiley.co.jp/ai_news/decision-tree-regression-analysis-difference/ [20] https://deus-ex-machina-ism.com/?p=54826※本ページは、AIの活用や研究に関連する原理・機器・デバイスについて学ぶために、個人的に整理・記述しているものです。内容には誤りや見落としが含まれている可能性もありますので、もしお気づきの点やご助言等ございましたら、ご連絡いただけますと幸いです。
※本ページの内容は、個人的な学習および情報整理を目的として提供しているものであり、その正確性、完全性、有用性等についていかなる保証も行いません。本ページの情報を利用したこと、または利用できなかったことによって発生した損害(直接的・間接的・特別・偶発的・結果的損害を含みますが、これらに限りません)について、当方は一切責任を負いません。ご利用は利用者ご自身の責任でお願いいたします。