機械学習とは
Il 機械学習 (ML) コンピュータを可能にする人工知能の分野です 明示的にプログラムせずにデータから学習すること。シナリオごとに手動のルールを作成する代わりに、 大量のデータとそれを抽出できるアルゴリズムをシステムに提供します パターン e 関係 自主的に。その結果、予測を行うことができる数学的モデルが得られます。 これまでに見たことのないデータについて。
ML の先駆者であるアーサー サミュエルは 1959 年に、ML をコンピューターに独自性を与える研究分野と定義しました。 明示的にプログラムされずに学習する能力。それ以来、ML は大きく進化しました。 現在では、検索エンジン、推奨システム、自動医療診断、自動運転車などに利用されています。 仮想アシスタント。機械学習の基礎を理解することはもはや必須ではありません 現代の開発者: これは必須のスキルです。
この記事で学べること
- ML の 3 つの基本的なタイプ: 教師あり、教師なし、強化
- ML プロジェクトの標準的なワークフロー
- 問題に適したパラダイムを選択する方法
- Python を使用した scikit-learn の実践的な入門
- 各パラダイムの実際の使用例
機械学習のワークフロー
選択したアルゴリズムに関係なく、すべての機械学習プロジェクトは構造化されたフローに従います。 特定のアルゴリズムに入る前に、このワークフローを理解することが重要です。プロセス 6 つの主要なフェーズに要約できます。
1. データ収集: 必要なデータを特定して取得します(データベース、API、CSVファイル、Webスクレイピング)。 2.前処理: クリーニング、欠損値の処理、正規化、変換。 3. 特徴量エンジニアリング: 最も有益な変数の選択と作成。 4.トレーニング: アルゴリズムはトレーニング データから学習します。 5. 評価: モデルのパフォーマンスはテストデータで測定されます。 6.展開: モデルは実稼働環境に導入され、実際のデータに対して予測が行われます。
黄金律: ML プロジェクトの時間の 80% はデータの準備に費やされます (ステップ 1 ~ 3)、アルゴリズムの選択ではありません。優れたデータセットは、洗練されたアルゴリズムよりも価値があります。
教師あり学習
学習において 監督された モデルはラベル付きデータセットから学習します: 各入力に対して 正しい出力はすでにわかっています ( ラベル)。アルゴリズムは次の関数を学習しようとします。 入力を出力にマッピングするため、新しい未確認の入力の出力を予測できます。
これは 2 つのマクロ カテゴリに分類されます。 分類 (出力は個別のカテゴリです。 スパム/非スパムとして) e 回帰 (生産量は家の価格のような連続的な値です)。
教師あり学習の実世界の例には、電子メール内のスパムのフィルタリング、病気の診断などがあります。 医療画像から始まり、不動産価格予測、顔認識と分類 製品レビューにおける感情の変化。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 1. Caricare il dataset
iris = load_iris()
X, y = iris.data, iris.target
# 2. Dividere in train e test
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 3. Creare e addestrare il modello
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 4. Predire e valutare
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy:.2f}") # Accuracy: 1.00
教師なし学習
学習において 監視されていない データセットにはラベルがありません。アルゴリズムはそれを見つけ出す必要があります データに隠された構造、パターン、グループを独立して解析します。正解はない デフォルト: 目標は、データの本質的な構造を調査して理解することです。
主なテクニックとしては、 クラスタリング (K-Means や DBSCAN などの類似したデータのグループ化)、 の 次元削減 (PCA と同様に、変数の数を維持しながら変数の数を削減します。 重要な情報)と、 異常検出 (異常なデータまたは外れ値の特定)。
具体的な用途: パーソナライズされたマーケティング キャンペーンのための顧客のセグメンテーション、取引における不正行為の検出 銀行取引、画像圧縮、ソーシャル ネットワーク分析、および大規模なドキュメント コレクション内のトピックの発見。
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import numpy as np
# Dati di esempio: clienti con spesa annua e frequenza acquisti
X = np.array([
[15000, 35], [16000, 40], [14500, 30], # Cluster 1: spesa alta
[3000, 5], [2500, 3], [3500, 8], # Cluster 2: spesa bassa
[8000, 15], [9000, 20], [7500, 18] # Cluster 3: spesa media
])
# Normalizzazione dei dati
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Clustering con K-Means
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
clusters = kmeans.fit_predict(X_scaled)
for i, cluster in enumerate(clusters):
print(f"Cliente {i}: Cluster {cluster}")
強化学習
学ぶ 補強用 (強化学習、RL) は、 エージェント と対話しながら学ぶ 環境。エージェントはアクションを実行し、受信します 報酬 (プラスまたはマイナス)そして時間の経過とともに累積報酬を最大化する方法を学びます。 ラベル付けされたデータはありません。エージェントは試行錯誤を通じて最適な戦略を発見します。
RL は主要な概念に基づいています。 stato (現在の状況)、アクション (エージェントの選択)、 褒美 (環境からのフィードバック) ポリシー (エージェントが学習する戦略)。目標は、報酬を最大化する最適なポリシーを見つけることです。 長時間の待機。
アプリケーション: ビデオゲーム (AlphaGo、OpenAI Five)、ロボット工学 (ドローンおよび機械アームの制御)、取引 アルゴリズム、トラフィック管理、適応型レコメンダー システム、産業リソースの最適化。
主な違い: 教師ありは正しい例から学びますが、教師なしでは 隠されたパターンを発見し、強化は報酬を通じて自身の経験から学習します。の選択 パラダイムは問題の性質と利用可能なデータに完全に依存します。
適切なパラダイムを選択する方法
教師あり、教師なし、強化のいずれを選択するかは、利用可能なデータ、 問題の種類と最終目標。決定フローチャートは選択のガイドとなります。
ラベル付きデータはありますか? 「はい」の場合は、教師あり学習を使用します。出力が次の場合 カテゴリは分類問題です。連続数値の場合は回帰です。
ラベルがありませんか? 監視なしで使用してください。類似したデータをグループ化する場合は、 クラスタリング。複雑さを軽減したい場合は、次元削減を使用します。
エージェントは環境と対話しますか? 補強材を使用します。行動が結果を伴う場合 長期にわたってエージェントがフィードバックを受け取ることができる場合、RL は正しい選択です。
ツールの概要: scikit-learn
scikit-learn これは、古典的な機械学習で最もよく使用される Python ライブラリです。 前処理、トレーニング、評価、モデル選択のための一貫した直感的な API を提供します。彼の強さ そのシンプルさは、数行のコードで生データからトレーニング済みモデルに移行できるということです。
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
import numpy as np
# Creazione di una pipeline completa
pipeline = Pipeline([
('scaler', StandardScaler()), # Preprocessing
('classifier', LogisticRegression()) # Modello
])
# Cross-validation per valutazione robusta
# X e y sono il dataset e le etichette
# scores = cross_val_score(pipeline, X, y, cv=5, scoring='accuracy')
# print(f"Accuracy media: {scores.mean():.3f} (+/- {scores.std():.3f})")
# L'API di scikit-learn segue sempre lo stesso pattern:
# 1. Istanziare il modello: model = Algorithm(params)
# 2. Addestrare: model.fit(X_train, y_train)
# 3. Predire: predictions = model.predict(X_test)
# 4. Valutare: score = model.score(X_test, y_test)
scikit-learn を超えて: Python ML エコシステム
Scikit-learn は古典的な ML をカバーしていますが、Python エコシステムはそれ以上のものを提供します。 TensorFlow e パイトーチ 深層学習の主要なフレームワークです (ディープニューラルネットワーク)。 パンダ e ナムピー それらは取り扱いに不可欠です データの。 マットプロットリブ e シーボーン 表示用に使用されます。 XGブースト e ライトGBM 最先端のアンサンブル アルゴリズムを提供します。
導入にあたっては、 ファストAPI モデルを REST API として公開できます。 MLフロー 実験とバージョン管理を管理します。 ドッカー 実稼働用にパイプライン全体をコンテナ化します。 このシリーズでは、scikit-learn とその付属ライブラリに焦点を当て、徐々にスキルを構築していきます。 完全な ML プロジェクトに必要です。
重要なポイント
- 機械学習により、明示的なプログラミングを行わずにコンピューターがデータから学習できるようになります
- 3 つのパラダイム: 教師あり (ラベル付きデータ)、教師なし (ラベルなし)、強化 (報酬)
- ML ワークフローには、データ収集、前処理、特徴エンジニアリング、トレーニング、評価、導入が含まれます。
- scikit-learn は、一貫した API (適合、予測、スコア) を備えた理想的な出発点です。
- どのパラダイムの選択は、データの種類と問題の目標によって異なります。







