コンテンツにスキップ
X

機械学習とは

機械学習(Machine Learning、略称: ML)とは、データから自動的にパターンを学習するコンピュータサイエンスの手法です。明示的なルールをプログラマーが記述する代わりに、大量のデータを与えることでコンピュータ自身がルールを導き出します。

対象読者: AI・機械学習に興味があるプログラミング入門者の方

学習時間の目安: 読了 20分

前提知識: 特になし

従来のプログラミングとの違い

Section titled “従来のプログラミングとの違い”

機械学習の本質は、従来のプログラミングとのアプローチの違いにあります。

従来のプログラミング機械学習
入力ルール(人間が記述)+ データデータ+ 正解ラベル
出力答えルール(モデル)
得意なこと明確なロジックのある処理複雑なパターン認識
消費税の計算画像が猫かどうかの判定

子どもに「猫」を教える場面を想像してください。

  • 従来のプログラミング: 「耳が尖っていて、ひげがあり、4本足で…」とすべてのルールを言語化して教える
  • 機械学習: 猫の写真を何千枚も見せて「これは猫、これは犬」と繰り返し教える。子どもはやがて自分で「猫らしさ」を判断できるようになる

機械学習を使う場面は主に、複雑なルールを明示的に記述することが難しい問題に対してです。メールがスパムかどうかの判定、画像の中の物体認識、音声のテキスト変換などがその例です。

1. 教師あり学習(Supervised Learning)

Section titled “1. 教師あり学習(Supervised Learning)”

教師あり学習とは、正解ラベル付きのデータを使って学習する手法です。「正解(教師)」がある状態でモデルを訓練します。

  • 具体例: スパムフィルター(メールを「スパム」または「正常」に分類)、住宅価格予測(面積・築年数などから価格を予測)
  • 代表アルゴリズム: 線形回帰(Linear Regression)、ロジスティック回帰(Logistic Regression)、決定木(Decision Tree)、ランダムフォレスト(Random Forest)、SVM(サポートベクターマシン)
graph LR
    D["ラベル付き\nデータ"] --> M["学習\n(訓練)"]
    M --> P["予測モデル"]
    P --> R["新しいデータへの予測"]

2. 教師なし学習(Unsupervised Learning)

Section titled “2. 教師なし学習(Unsupervised Learning)”

教師なし学習とは、正解ラベルなしのデータからパターンや構造を自動的に発見する手法です。「答え」が与えられていないため、データの中から自律的にグループや特徴を見つけ出します。

  • 具体例: 顧客セグメンテーション(類似した購買傾向の顧客をグループ分け)、異常検知(通常パターンから逸脱した挙動の発見)
  • 代表アルゴリズム: KMeans クラスタリング、PCA(主成分分析)、DBSCAN

3. 強化学習(Reinforcement Learning)

Section titled “3. 強化学習(Reinforcement Learning)”

強化学習とは、エージェント(AI)が環境と相互作用しながら、報酬を最大化する行動を試行錯誤で学習する手法です。明示的な正解ラベルはなく、行動の結果として得られる報酬がシグナルになります。

  • 具体例: ゲームAI(囲碁・チェス・ビデオゲームで人間を超える強さを習得)、ロボット制御(歩行や物体把持の動作学習)
  • 比喩: 子どもがゲームを覚える過程に似ています。最初はランダムに操作し、スコアが上がれば「良い行動」として記憶し、ゲームオーバーになれば「避けるべき行動」として学習します。

機械学習を使う場面の判断基準

Section titled “機械学習を使う場面の判断基準”

以下の条件が当てはまる場合、機械学習が有効な選択肢になります。

  1. 大量のデータが存在する: 機械学習はデータが多いほど精度が上がる
  2. 明示的なルールを書くのが困難: 人間が言語化できないパターンがある
  3. 環境が変化する: ルールを手動で更新し続けるコストが高い

主要アルゴリズムの時間計算量

Section titled “主要アルゴリズムの時間計算量”

機械学習の実装には scikit-learn などのライブラリを使えば数行のコードで実行できます。しかし、アルゴリズムの内部を理解せずに使うと、パフォーマンスのボトルネック特定が難しくなり、ハイパーパラメータの意味を把握できず、モデルのデバッグに多大な時間を要することになります。

各アルゴリズムがどの程度の計算量を持つかを把握しておくことは、適切なアルゴリズム選択のために重要です。

アルゴリズム学習の時間計算量推論の時間計算量備考
線形回帰(OLS)O(nm² + m³)O(m)n: サンプル数, m: 特徴量数
線形回帰(SGD)O(epoch × nm)O(m)epoch: 学習回数
ロジスティック回帰O(epoch × nm)O(m)
決定木O(n log(n) × m)O(depth)depth: 木の深さ
ランダムフォレストO(trees × n log(n) × m)O(trees × depth)trees: 木の本数
SVMO(n²m + n³)O(n_sv × m)n_sv: サポートベクター数
k近傍法(kNN)O(1)(学習なし)O(nm)
ナイーブベイズO(nm)O(m)
PCAO(nm² + m³)O(m²)
KMeansO(i × k × nm)O(km)i: イテレーション数, k: クラスタ数

Q: 機械学習とAIは同じものですか?

A: 異なります。AI(人工知能)は人間の知能をコンピュータで再現する技術全般を指します。機械学習はその実現手法の一つです。AIにはルールベースのシステムなど機械学習を使わないアプローチも含まれます。

Q: 機械学習を使うのにプログラミングの経験は必要ですか?

A: 実装する場合はPythonの基礎知識が必要です。ただし、概念を理解するだけであればプログラミング経験は不要です。概念を理解してから実装に進む順序が学習効果を高めます。

Q: 教師あり学習と教師なし学習はどちらが多く使われますか?

A: 実務では教師あり学習の方が広く使われています。明確な目標(予測したい値やクラス)がある問題が多く、データに正解ラベルを付けるコストをかけても成果が出やすいためです。


次のステップ: ディープラーニングとは

このページへのリンク(英語): What Is Machine Learning?