サポートベクターマシン(SVM)を探求する。最適超平面、カーネルトリックについて学び、Ultralytics のような現代的なモデルとどのように比較されるかを理解する。
サポートベクターマシン(SVM)は、分類と回帰課題に広く用いられる堅牢で汎用性の高い教師あり学習アルゴリズムである。単に訓練誤差を最小化することを目指す多くのアルゴリズムとは異なり、SVMはデータポイントを異なるクラスに最適に分離する決定境界(超平面と呼ばれる)の探索に焦点を当てる。主な目的は、この決定境界と各カテゴリの最も近いデータポイントとの間の距離であるマージンを最大化することである。 可能な限り広い分離を優先することで、このモデルは新規の未見データに対する汎化性能を向上させ、標準的な線形回帰などの単純な手法と比較して過学習のリスクを効果的に低減します。
SVMの機能を理解するには、各次元が特定の特徴を表す多次元空間にプロットされたデータを視覚化すると役立つ。アルゴリズムはこの空間を移動し、グループ間の最も効果的な分離を発見する。
SVMを他の機械学習手法と区別することは、実践者が予測モデリングプロジェクトに適切なツールを選択するのに役立つ。
サポートベクターマシンは、その精度と高次元データの処理能力により、様々な産業分野で依然として高い関連性を保っている。
現代のUltralytics エンドツーエンドモデルが頻繁に利用される一方、SVMはこれらのモデルから抽出された特徴量を分類する上で依然として強力な手法である。例えば、YOLO を用いてdetect 特徴量を抽出した後、特定のタスク向けにclassify 特徴ベクトルをclassify SVMを訓練することが可能である。
以下は、よく使われる scikit-learn ライブラリを使用して、合成データ上で単純な分類器を訓練する。
from sklearn import svm
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# Generate synthetic classification data
X, y = make_classification(n_features=4, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Initialize and train the Support Vector Classifier
clf = svm.SVC(kernel="linear", C=1.0)
clf.fit(X_train, y_train)
# Display the accuracy on the test set
print(f"Accuracy: {clf.score(X_test, y_test):.2f}")
大規模なデータセットの管理や、SVMワークフローを代替・拡張できる深層学習モデルのトレーニングを検討しているチーム向けに、 Ultralytics シームレスなデータアノテーションとモデルデプロイメントを実現するツールを提供します。 数学的基礎に関心のある方は、CortesとVapnik(1995)による原論文を参照ください。 同論文では、ノイズの多い実世界のデータを効果的に処理するSVMを可能にするソフトマージン最適化について詳述されています。
未来の機械学習で、新たな一歩を踏み出しましょう。