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

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

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

この記事では、機械学習の代表的な3つの種類である「教師あり学習」「教師なし学習」「強化学習」について、それぞれの定義と特徴、Pythonでの簡単な実装方法を解説します。これらのアルゴリズムは、学習させるデータの性質や目的によって使い分けられます。

教師あり学習(Supervised Learning)

教師あり学習は、正解ラベル(ターゲット)が与えられたデータセットを使ってモデルを学習させる手法です。特徴量(入力データ)とラベル(正解データ)のペアをモデルに与え、ラベルを予測できるようにモデルを訓練します。分類問題や回帰問題でよく使われます。

教師あり学習の特徴

  • 分類: データをあらかじめ決められたクラスに分類する(例: スパムメール分類)。
  • 回帰: 連続的な数値を予測する(例: 家の価格予測)。

教師あり学習の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}')

このコードでは、scikit-learnSVCを使用して分類モデルを作成し、irisデータセットで訓練しています。最後に、モデルの精度(accuracy)を計算して表示します。

教師なし学習(Unsupervised Learning)

教師なし学習は、データにラベルがない場合に適用されます。データのパターンや構造を自動的に見つけ出すことが目的です。代表的なアルゴリズムには、クラスタリングや次元削減があります。

教師なし学習の特徴

  • クラスタリング: データを自然なグループに分類する(例: 顧客セグメンテーション)。
  • 次元削減: 高次元データを少ない次元に圧縮する(例: 主成分分析によるデータの可視化)。

教師なし学習のPythonでの実装例(クラスタリング)

以下は、scikit-learnKMeansを使用したクラスタリングの例です。


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)
kmeans.fit(X)

# クラスタリング結果を可視化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.title('KMeans Clustering of Iris Data')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

このコードでは、KMeansを使ってirisデータを3つのクラスタに分類し、その結果をグラフにプロットしています。

強化学習(Reinforcement Learning)

強化学習は、エージェントが環境と相互作用し、報酬を最大化するように学習する手法です。エージェントは、状態を観察して最適な行動を選択し、得られた報酬に基づいて学習を繰り返します。ゲームAIやロボティクス、自動運転車の分野でよく使われます。

強化学習の特徴

  • エージェント: 環境と相互作用する主体(例: ロボット、AIキャラクター)。
  • 環境: エージェントが行動する世界やシミュレーション(例: ゲームのフィールド)。
  • 報酬: エージェントが行動に対して受け取るフィードバック(例: 点数、勝敗)。

強化学習の基本的な流れ

  1. エージェントが現在の状態を観察する。
  2. エージェントが次の行動を選択する。
  3. 環境が行動に対する報酬と次の状態を返す。
  4. エージェントが報酬に基づいて学習を行い、次の行動を決定する。

Pythonでの強化学習の実装例

強化学習をPythonで実装するためには、gymというライブラリがよく使われます。以下は、gymを使ったシンプルな強化学習の例です。


import gym

# 環境の初期化
env = gym.make("CartPole-v1")
state = env.reset()

# ランダムな行動で試行
for _ in range(1000):
    env.render()
    
    # ランダムな行動を選択
    action = env.action_space.sample()
    
    # 行動を実行し、次の状態、報酬、終了フラグを取得
    next_state, reward, done, _ = env.step(action)
    
    # 終了条件
    if done:
        state = env.reset()

env.close()

このコードでは、gymCartPole-v1環境を使って、ポールを倒さないように制御する強化学習を行っています。ランダムな行動を取るエージェントを設定し、各試行を繰り返し行動と報酬を学習します。

まとめ

この記事では、機械学習の3つの主要な学習方法について紹介しました。

  • 教師あり学習: ラベル付きデータを使って予測や分類を行う。
  • 教師なし学習: ラベルのないデータを使い、データのパターンやグループを見つける。
  • 強化学習: エージェントが環境からのフィードバックを基にして行動を学習する。

これらの学習方法を適切に使い分けることで、さまざまなタスクに応じた最適なモデルを構築できます。