Categories: 機械学習

機械学習の基本フローをサンプル付きでわかりやすく解説!

近年、AI技術の発展により「機械学習(Machine Learning)」という言葉をよく耳にするようになりました。
しかし「実際にどうやって機械学習が行われているのか?」という具体的な流れは、少し難しく感じるかもしれません。

この記事では、初心者の方でも理解しやすいように、サンプルデータを用いた機械学習の一連の流れを、以下のステップに沿って丁寧に解説していきます。

  • データ収集
  • データ前処理
  • モデル選択
  • 学習(トレーニング)
  • 評価
  • 改善

「なんとなく知っていた」から「自分でもできそう!」と思ってもらえるような構成で進めていきます。


データ収集:目的に応じた大量のデータを集める

機械学習において最も重要なのは「データ」です。
例えば、ある花の種類を分類したい場合、「花の特徴(がくの長さ、花びらの幅など)」と「それがどの種類の花か」という情報が必要です。

今回は、機械学習の練習でよく使われる「Iris(アイリス)」という有名なサンプルデータを使います。
このデータには、以下のような項目が含まれています。

  • sepal length(がくの長さ)
  • sepal width(がくの幅)
  • petal length(花びらの長さ)
  • petal width(花びらの幅)
  • species(花の種類)

Irisデータは150件のデータがあり、3種類の花(Setosa、Versicolor、Virginica)が均等に含まれています。

このように、目的(ここでは花の種類を分類する)に合ったデータを十分な量集めることが、最初のステップです。


データ前処理:欠損値の補完や正規化、特徴量の抽出などを行う

集めたデータをそのまま使えるとは限りません。
現実のデータには「欠損値(空白の値)」や「単位の違い」「外れ値(極端に大きい・小さい値)」などが含まれていることも多く、これらを処理して使いやすくする必要があります。

今回のIrisデータはきれいなデータですが、前処理の例として次の作業が考えられます。

  • 欠損値の補完:平均値や中央値で補ったり、削除したりする
  • 正規化:すべての数値を0~1の範囲にすることで、学習アルゴリズムが公平に扱えるようにする
  • 特徴量の抽出:必要に応じて、複数の列を組み合わせた新しい指標を作る(例:面積=長さ×幅)

このような作業は、「モデルが正確に学習するための土台作り」といえます。


モデル選択:タスクに適したアルゴリズムを選ぶ

次に行うのが「どのアルゴリズムで学習させるか」というモデルの選択です。

今回のタスクは「花の種類を分類すること」ですから、「分類問題」に適したアルゴリズムが選択肢となります。
代表的なものには以下があります。

  • 決定木(Decision Tree):ルールベースでわかりやすく可視化も可能
  • サポートベクターマシン(SVM):高精度で汎化性能も高い
  • ニューラルネットワーク:非線形な複雑な関係も学習可能だが、ややブラックボックス的

今回は、初心者でもわかりやすく、可視化もできる決定木モデルを選んで学習してみましょう。


学習(トレーニング):データを使ってモデルを構築する

次に、前処理済みのデータを使ってモデルに学習させます。
ここでは、データを「訓練用」と「テスト用」に分けて、訓練用データで学習を行います。

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

# データを読み込み
iris = load_iris()
X = iris.data
y = iris.target

# データを訓練用とテスト用に分割(8:2)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# モデル作成と学習
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

このコードで、Irisデータを基にした「花の分類モデル」が完成します。


評価:新しいデータで精度をチェックする

学習したモデルがどれだけ正確なのかを確かめるのが「評価」です。
訓練に使わなかった「テスト用データ」を使って、予測精度を確認します。

以下は、正解率(Accuracy)を評価する例です。

from sklearn.metrics import accuracy_score, classification_report

# テストデータで予測
y_pred = clf.predict(X_test)

# 評価
print("正解率:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred, target_names=iris.target_names))

実行すると、正解率や「Precision(適合率)」「Recall(再現率)」「F1スコア」などが確認できます。
たとえば「正解率が95%」であれば、かなり良い精度のモデルといえます。


改善:必要に応じてパラメータ調整、データ追加などで精度を上げる

評価結果が期待より低かった場合、いくつかの改善方法があります。

改善方法の例

  • パラメータチューニング:決定木の深さ(max_depth)などを調整する
  • 別のアルゴリズムを使う:SVMやランダムフォレストなども試す
  • データの増強:データ量が足りない場合は、より多くのデータを収集
  • 特徴量の見直し:不要な特徴を削除する、または新しい特徴を追加する

例えば、決定木の「最大深さ」を制限することで、過学習を防ぎ、より汎化性能の高いモデルを目指せます。

# 深さを制限したモデル
clf2 = DecisionTreeClassifier(max_depth=3)
clf2.fit(X_train, y_train)

このように、評価と改善を繰り返すことで、モデルの精度を高めていくのが機械学習の基本です。


まとめ:機械学習は試行錯誤の繰り返し

この記事では、機械学習の一連の流れを以下のステップで解説しました。

  1. データ収集
  2. データ前処理
  3. モデル選択
  4. 学習
  5. 評価
  6. 改善

そして、サンプルデータ(Iris)を用いた実例も交えながら、初心者にもわかりやすく説明しました。
機械学習は「一発で正解を出す技術」ではなく、「データと対話しながら精度を高めていくプロセス」です。
小さく試しながら、徐々に理解を深めていくのがポイントです。

これから学習を始める方も、ぜひPythonやScikit-learnを使って、実際に手を動かして体験してみてください!

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。