機械学習の種類 | 機械学習とは何か | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

機械学習の種類(教師あり学習、教師なし学習、強化学習)

機械学習は、学習に使うデータの性質や目的によって、主に教師あり学習教師なし学習強化学習の3つに分けられます。

教師あり学習は正解ラベルを使って予測モデルを作り、教師なし学習はラベルのないデータから構造やグループを見つけます。強化学習は、エージェントが行動と報酬を通じて最適な行動を学習する方法です。

機械学習の種類を図で理解する

機械学習の種類を図で理解する

教師あり学習とは

教師あり学習は、入力データと正解ラベルの組み合わせを使ってモデルを学習させる方法です。

モデルは、特徴量と正解の関係を学習し、新しいデータに対して分類や予測を行います。

  • 分類: データを決められたクラスに分ける
  • 回帰: 連続した数値を予測する
タスク 内容
分類 カテゴリを予測する スパムメール判定、画像分類
回帰 数値を予測する 住宅価格予測、売上予測

教師あり学習のPython実装例

以下は、scikit-learnを使ってSVMによる分類モデルを作成する例です。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# データセットの読み込み
iris = datasets.load_iris()

X = iris.data
y = iris.target

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

# SVMモデルの作成と学習
model = SVC()
model.fit(X_train, y_train)

# 予測と評価
y_pred = model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f'Accuracy: {accuracy:.3f}')

この例では、Irisデータセットを使って花の種類を分類しています。

教師なし学習とは

教師なし学習は、正解ラベルのないデータから、データの構造やパターンを見つける方法です。

あらかじめ正解が与えられていないため、モデルはデータ同士の類似性や分布をもとにグループ分けや次元削減を行います。

  • クラスタリング: 似ているデータをグループ化する
  • 次元削減: 高次元データを低次元に圧縮する
タスク 内容
クラスタリング 似たデータをグループに分ける 顧客セグメンテーション
次元削減 特徴量を少ない次元に圧縮する PCA、t-SNEによる可視化

教師なし学習のPython実装例

以下は、KMeansを使ったクラスタリングの例です。

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# データセットの読み込み
iris = load_iris()
X = iris.data

# KMeansクラスタリング
kmeans = KMeans(
    n_clusters=3,
    random_state=42,
    n_init='auto'
)

kmeans.fit(X)

# クラスタリング結果を可視化
plt.scatter(
    X[:, 0],
    X[:, 1],
    c=kmeans.labels_
)

plt.title('KMeans Clustering of Iris Data')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

この例では、Irisデータを3つのクラスタに分類しています。

強化学習とは

強化学習は、エージェントが環境の中で行動し、その結果として得られる報酬をもとに学習する方法です。

エージェントは、より高い報酬を得られる行動を選べるように、試行錯誤を繰り返します。

用語 意味
エージェント 行動を選択する主体
環境 エージェントが行動する対象
状態 現在の状況
行動 エージェントが選ぶ操作
報酬 行動の良し悪しを示すフィードバック

強化学習の基本的な流れ

  1. エージェントが現在の状態を観察する
  2. 次に取る行動を選択する
  3. 環境が報酬と次の状態を返す
  4. エージェントが報酬をもとに行動方針を更新する
  5. より良い行動を選べるように学習を繰り返す

強化学習のPython実装例

強化学習では、環境を用意するためにgymnasiumなどのライブラリが使われます。

import gymnasium as gym

# 環境の作成
env = gym.make("CartPole-v1")

# 初期状態を取得
state, info = env.reset()

# ランダムな行動で試行
for _ in range(1000):
    action = env.action_space.sample()

    next_state, reward, terminated, truncated, info = env.step(action)

    if terminated or truncated:
        state, info = env.reset()
    else:
        state = next_state

env.close()

この例では、CartPole環境を使い、エージェントがランダムに行動する流れを示しています。

3つの学習方法の違い

種類 使うデータ 目的 代表例
教師あり学習 正解ラベル付きデータ 分類・予測 スパム判定、価格予測
教師なし学習 正解ラベルなしデータ 構造やグループの発見 クラスタリング、次元削減
強化学習 状態・行動・報酬 報酬を最大化する行動の学習 ゲームAI、ロボット制御

学習方法の使い分け

  • 正解データがある場合: 教師あり学習を使います。
  • データのグループや構造を知りたい場合: 教師なし学習を使います。
  • 行動の結果に報酬がある場合: 強化学習を使います。

主な活用例

  • 教師あり学習: メール分類、需要予測、医療診断支援
  • 教師なし学習: 顧客分類、異常検知、データ可視化
  • 強化学習: ゲームAI、自動運転、ロボット制御