忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【機械学習の知識】データマイニングの概要と主要な手法

膨大なデータの中に眠っている、人間では気づけないような貴重なルールやパターンを見つけ出したい。データウェアハウスなどに蓄積されたビッグデータから、ビジネスに役立つお宝(知識)を発掘するための技術が、データマイニングです。

1. 【 概要 】

データマイニングとは、一見何の因果関係もないと思われる膨大なデータの集まりから、統計学や機械学習の手法を用いて規則性や法則性を発見する作業です。

例えば、「特定の食べ物と飲み物の組み合わせが同時に最も購入されやすい」といった隠れたビジネスルールを発見し、組織の業績向上やマーケティング施策に繋げます。一般的には、データウェアハウス(DWH)に蓄積されたクレンジング済みの大量データに対して行われます。


2. 【 基本手順(代表的な4つの手法) 】

(1) 相関関係/類似性分析(アソシエーション分析)
・データ同士の「同時に起こる関係性」に関するルールを発見する。

(2) クラスタリング
・あらかじめ基準を決めず、統計的な類似性によってデータを自然にグループ分けする。

(3) クラシフィケーション(分類)
・明確なルールに基づき、新しいデータを既存の決まったクラスに割り当てる。

(4) 時系列分析
・時間の経過に伴うデータの変化から、未来の予測や時間的な類似性を発見する。

3. 整理:各手法の具体的な処理内容

データマイニングで用いられる4つのアプローチについて、具体的な例を交えてステップごとに深く見ていきましょう。

【 各手法の具体的な処理内容 】

手法(1):相関関係/類似性分析
「商品Aを買う人は、商品Bも一緒に買いやすい」といった購入履歴の傾向を分析します。
ECサイトの「この商品を買った人はこんな商品も買っています」というレコメンド機能のベースとなる技術です。

手法(2):クラスタリング
正解ラベルがない状態のデータに対し、コンピュータが自発的に「似ている者同士」を集めます。
顧客データを購買金額や頻度で「優良顧客」「休眠顧客」などのグループに自動で取り分ける際に使われます。

手法(3):クラシフィケーション
「過去の解約者データ」などを学習させ、新しく入ってきたデータが「継続」か「解約」のどちらに属するかを判定します。
あらかじめ決められた枠組み(クラス)へ綺麗に分類するのが目的です。

手法(4):時系列分析
過去の売上推移やアクセス数の増減パターンをもとに、来月の需要を予測したりします。
「毎年この時期に数値が跳ね上がる」といった、時間軸に紐づく規則性を抽出します。

4. 関連して押さえたい「OLAP(多次元分析)とデータマイニングの違い」

データウェアハウスを活用する手法として、データマイニングと並んでよく登場するのが「OLAP(Online Analytical Processing)」です。これらは「アプローチの出発点」が決定的に異なります。

OLAPは、まず利用者が「男性より女性の方がこの商品を買っているのではないか?」といった仮説を自ら設定します。その仮説が正しいかどうかを、ツールを使ってデータを多角的にグラフ化・集計しながら「検証」していく手法です(人間主導)。

一方、データマイニングは、人間が仮説を持っていなくても、コンピュータ自身が大量のデータを探索し、人間が思いつきもしなかった新しいルールや未知のパターンを自動的に「発見」してくれる手法です(システム主導)。実務では、この両者をバランスよく組み合わせて分析を進めます。


5. 補足:相関分析の有名トピック「ビールと紙おむつ」

データマイニングの「相関関係分析」において、世界で最も有名な事例がアメリカのスーパーマーケットでの逸話である「ビールと紙おむつ」です。

膨大なPOSデータ(レジの販売データ)をマイニングした結果、「金曜日の夕方に紙おむつを買う父親(男性)は、一緒に缶ビールをまとめ買いしていく」という、人間が頭で考えているだけでは絶対に気づけない奇妙な相関ルールが見つかりました。

この発見をもとに、店側が「おむつ売り場のすぐ横にビールを並べて配置した」ところ、両方の売上がさらに跳ね上がったと言われています。これこそが、データマイニングがビジネスに莫大な利益をもたらすことを証明した象徴的なトピックです。


6. まとめ

データサイエンスやビッグデータ活用の核となる「データマイニング」。人間主導で仮説検証を行うOLAPとは異なり、相関分析、クラスタリング、分類、時系列分析といった強力な技術を駆使して、データの中からビジネスの勝機となる隠れたルールを自動で発掘できるのが最大の強みです。DWHに眠るデータを価値ある資産に変えるために、各手法の特徴をしっかり押さえておきましょう!


PR

【機械学習の知識】データ前処理の基本手順

機械学習において、クレンジングによって汚れを取り除いたデータは、そのままではまだAIが効率よく学習できません。データの単位を揃えたり、コンピュータが理解できる形に翻訳したりして、モデルの性能を最大限に引き出すための加工プロセスが「データ前処理」です。

1. 【 概要 】

データ前処理とは、機械学習モデルの学習効率や予測精度を高めるために、データを最適な状態へと変換する一連の手順です。数値の桁数を揃えるスケーリングや、文字データを数値に変えるエンコーディング、データの分割など、実務で必須となる6つの主要なプロセスを整理します。


2. 【 基本手順 】

(1) データのスケーリングを行い、特徴量のスケールを統一する
(2) 特徴量のエンコーディングで、カテゴリデータを数値に変換する
(3) データをモデルの訓練データとテストデータへ分割する
(4) 次元削減を行い、重要な情報を残して特徴量の数を減らす
(5) 特徴量エンジニアリングで、予測に役立つ新しい特徴量を生成する
(6) データの平滑化やノイズ除去を行い、データのブレを抑える

3. 整理:各ステップの具体的な処理内容

データ前処理で行われる具体的な手法とポイントを、ステップごとに深く見ていきましょう。

【 各プロセスの具体的な処理内容 】

ステップ(1):データのスケーリング
「家賃(数万円)」と「面積(数十平米)」のように、単位や桁数が大きく異なる特徴量をそのまま扱うと、AIが桁数の大きな項目ばかりを重視してしまいます。これを防ぐためにスケールを統一します。
1.1 標準化:データの「平均を 0、分散を 1」にする変換です。外れ値の影響を受けにくい特徴があります。
1.2 正規化:データを「0 から 1 の範囲」に収める変換です。最小値が0、最大値が1になります。

ステップ(2):特徴量のエンコーディング
AIは「男性・女性」や「都道府県名」のような文字(カテゴリデータ)をそのまま計算できません。そのため、数値データに翻訳します。
2.1 One-Hotエンコーディング:カテゴリごとに新しい列を作り、該当箇所を 1、それ以外を 0(ダミー変数)にする変換です。
2.2 ラベルエンコーディング:「東京=0」「大阪=1」のように、各カテゴリに一意の整数を割り振る変換です。

ステップ(3):データの分割
作成したモデルの本当の実力を測るために、手元のデータを「学習用の訓練データ」と「検証用のテストデータ」の2つにあらかじめ分割しておきます。

ステップ(4):次元削減
データの項目数(特徴量の次元)が多すぎると、計算時間がかかり予測精度も落ちることがあります(次元の呪い)。主成分分析(PCA)などを用いて、重要な情報を保ったまま項目数をギュッと減らします。

ステップ(5):特徴量エンジニアリング
元のデータをもとに、「日付から『曜日』を取り出す」「購入額と回数から『顧客単価』を作る」といった、モデルの性能向上に直結する新しい項目を人間の知見で生成します。

ステップ(6):データの平滑化やノイズ除去
株価やセンサーデータなどの時系列データに含まれる突発的なギザギザ(ノイズ)を除去します。移動平均などを利用してデータをなめらかにすることで、全体のトレンドを捉えやすくします。

4. 関連して押さえたい「前処理における情報漏洩(データリーケージ)の罠」

データ前処理を行う際、機械学習の初心者が最も注意しなければならないのが「データリーケージ(情報漏洩)」という罠です。

例えば、ステップ1のスケーリング(標準化や正規化)を行う際、データを「訓練データ」と「テストデータ」に分割する前に、データ全体に対して平均値や最大値を計算してスケーリングを適用してしまうケースが多々あります。

これを行ってしまうと、本来はモデルが「知らないはず」のテストデータの情報(平均値など)が、訓練データ側に漏れ出して(リークして)しまいます。その結果、手元での検証スコアは異常に高くなるものの、いざ実戦で未知のデータを予測させると全く当たらないモデルになってしまいます。前処理の計算は、必ず「データを分割した後に、訓練データの基準を使って適用する」という正しい手順を徹底しましょう。


5. 補足:Python(Scikit-learn)での代表的な前処理クラス

実際の機械学習開発(Python)で、データ前処理を行う際によく使われるScikit-learnの代表的なクラスをまとめました。
実務コードを読む際のカンペとしてお役立てください。

# 1. データのスケーリング
from sklearn.preprocessing import StandardScaler # 標準化
from sklearn.preprocessing import MinMaxScaler # 正規化

# 2. 特徴量のエンコーディング
from sklearn.preprocessing import OneHotEncoder # One-Hot
from sklearn.preprocessing import LabelEncoder # ラベル

# 3. データの分割
from sklearn.model_selection import train_test_split # 訓練/テスト分割

# 4. 次元削減
from sklearn.decomposition import PCA # 主成分分析

6. まとめ

データサイエンスや機械学習の現場において、モデル構築の成否を分ける最重要フェーズが、この「データ前処理」です。スケーリング、エンコーディング、分割、次元削減、特徴量エンジニアリング、平滑化という6つの基本手順それぞれの目的と処理内容をしっかりと理解し、機械学習モデルが最も力を発揮できる形へとデータを美しく仕立て上げられるようになりましょう!


【DS検定対策】データが増えると計算が破綻する!?恐怖の「次元の呪い」

予測の精度を上げようとして、データの項目(特徴量・次元)をむやみに増やしていくと、あるところで逆に精度がガタ落ちしたり、計算が終わらなくなったりします。これがデータサイエンス界の怪奇現象「次元の呪い」です。

1. 【 問題 】

機械学習や統計学において、データの変数(特徴量の数・次元)が増えるにつれて、データを表現するために必要な空間の体積が指数関数的に増大し、その結果データが非常に希薄(スカスカ)になって予測モデルの学習が急激に困難になったり、計算量が爆発したりする現象を何と呼ぶでしょうか?

① 次元の呪い
② 勾配消失問題
③ 多重共線性(マルチコ)
④ 局所最適解の罠


2. 【 解答 】

正解: ① 次元の呪い

3. 整理:次元が増えるとなぜ問題が「指数関数的」に難しくなるのか?

「空間がスカスカになる」という現象を、お菓子の箱の中にデータを詰めるイメージで視覚的に整理してみましょう。

1次元(線)の空間
10cmの線の中に、1cmおきに10個のデータを置けば、データがギッシリ詰まった状態を作れます。

2次元(平面)の空間
縦10cm × 横10cmの箱になると、同じ密度でデータを詰めるには「10 × 10 = 100個」のデータが必要です。

3次元(立体)の空間
縦×横×高さが10cmの立方体になると、同じ密度には「10 × 10 × 10 = 1,000個」必要です。

100次元の空間(実務のデータ)
同じ密度を保つために必要なデータ数は 10の100乗(宇宙の全原子数を超える桁数)という途方もない数になります!

ここが呪いの本質:
次元が数万、数十万と増えていくと、手元にある数万件程度のデータでは「広大すぎる空間に対してデータが圧倒的に足りず、どこもかしこもスカスカ」という状態になります。こうなると、データ同士の「近さ・遠さ(距離)」の差がほとんどなくなってしまい、先ほど学んだクラスタリング(距離で分ける)や、K-means、KNNといった「距離を使うアルゴリズム」が全く機能しなくなってしまいます。


5. DS検定形式:実戦4択クイズ

問:機械学習において「次元の呪い」を回避し、過学習を防ぎながら計算コストを抑えるためのアプローチとして、最も不適切なものを一つ選べ。

① 主成分分析(PCA)などの手法を用いて、情報の損失を最小限に抑えつつ低次元の空間に写像する(次元削減)。
② 予測にあまり寄与していない、重要度の低い特徴量(変数)をフィルタリングして削除する(特徴量選択)。
③ モデルの表現力を最大化するために、手元にある限られたデータ数のまま、さらに新しい特徴量を数千個手動で作成して追加する。
④ L1正則化(Lasso回帰)などを用いて、不要な変数の重みを自動的に0にし、実質的な次元を減らす。

【 正解: ③ 】

解説: 次元の呪いを解決するための基本戦略に関する問題です。 データ数が限られている中で、むやみに特徴量を数千個も追加(③)すると、空間がさらにスカスカになり、次元の呪いが加速して猛烈に過学習(オーバーフィッティング)を起こします。①(次元削減)、②(特徴量選択)、④(正則化によるスパース化)は、いずれも次元の呪いを解くための王道の防衛策です。


6. まとめ

DS検定において「次元が増えるにつれて問題が指数関数的に難しくなる」「空間が希薄(スカスカ)になる」という主旨が登場したら、答えは「次元の呪い」です。 データが多ければ多いほど良いわけではなく、適切なサイズに「絞る(次元削減)」ことこそがデータサイエンティストの重要な役割である、という格言のようなコンセプトですので、しっかりと記憶に刻んでおきましょう!


無題

今回は、2つの量子ビットを連動させる「CXゲート(制御NOTゲート)」を導入します。Hゲートと組み合わせることで、量子ビット間に相関を持たせる「量子もつれ(Entanglement)」の基本回路を作成します。

1. サンプルコードの作成

2量子ビットの回路を作成し、0番目の量子ビットにHゲートを、その0番目を制御ビットとして1番目にCXゲートを適用します。これを sample2.py として保存しました。

from qiskit import QuantumCircuit

# 2量子ビットの量子回路を作成
qc = QuantumCircuit(2)

# 0番目にHゲートを適用
qc.h(0)

# 0番目を制御ビット、1番目をターゲットビットとしてCXゲートを適用
qc.cx(0, 1)

# 回路をテキスト形式で描画
print(qc.draw(output='text'))

2. 実行結果

ターミナルでスクリプトを実行すると、以下のように回路が表示されます。

% python sample2.py
     ┌───┐     
q_0: ┤ H    ├──■──
     └───┘┌─┴─┐
q_1: ─────┤  X   ├
               └───┘

3. 回路のポイント

実行結果を見ると、0番目の H ゲートから伸びた線が、1番目の X ゲートへと繋がっているのがわかります。これが「量子もつれ」を生み出すベル状態の基本形です。回路図の表示レイアウトは環境によって多少ズレが生じることがありますが、重要なのは「どのゲートがどの量子ビットに接続されているか」という論理構造です。

回路構築完了:量子もつれの基礎が完成!
複数の量子ビットを連携させることで、量子コンピュータ特有の計算処理への足掛かりができました。

次のステップ

回路の構造を確認できるようになったので、次は「測定(Measure)」を追加して、観測によってこの量子もつれ状態がどう確定するのかを実験してみます。



【DS検定対策】クラスタの「近さ」はどう測る?階層型クラスタリングの距離計算まとめ

データを似たもの同士のグループに分ける「クラスタリング」。その中でも、トーナメント表のような樹状図(デンドログラム)を作る「階層型クラスタリング」では、グループ(クラスター)同士の【距離】をどう定義するかが非常に重要です。手法ごとの違いをスッキリ整理しましょう!

1. 【 問題 】

階層型クラスタリングにおいて、2つのクラスター同士の距離を定義する方法のうち、「それぞれのクラスターに含まれるすべてのデータペア間の距離の平均」をそのクラスター間の距離とする手法の名称として、最も適切なものはどれでしょうか?

① 最短距離法(単連結法)
② 最長距離法(完全連結法)
③ 群平均法
④ ウォード法


2. 【 解答 】

正解: ③ 群平均法

3. 整理:クラスター間距離の5大手法と特徴

試験で問われるのは、各手法の「定義」と「どんなクラスタができやすいかという特徴」です。以下の表で一撃でマスターしましょう!

手法名距離の定義実務上の特徴・性質
最短距離法
(単連結法)
2つのクラスタの中で、最も近いデータ同士の距離を採用する。 データが鎖のようにつながる「鎖状効果(チェーン効果)」が起きやすく、細長いクラスタになりやすい。
最長距離法
(完全連結法)
2つのクラスタの中で、最も遠いデータ同士の距離を採用する。 鎖状効果は起きにくいが、外れ値(異常値)の影響を非常に強く受けやすい。
群平均法 2つのクラスタにあるすべてのデータペアの距離の平均を採用する。 最短と最長の中間的な性質を持ち、比較的バランスの良いクラスタリングができる(外れ値にもやや強い)。
重心法 各クラスターの「重心(平均ベクトル)」同士の距離を採用する。 計算効率が良いが、クラスタが合体したときに「前の段階より距離が短くなる(矛盾が生じる)」現象(逆転現象)が起きることがある。
ウォード法
★試験最頻出!
クラスタを合体させたときの「クラスター内の分散の増加量」が最も小さくなるように選ぶ。 計算量は多いが、サイズが均等で球状の綺麗なクラスタを作りやすいため、実務で最もよく使われる。

4. なぜ使い分けが重要なのか?(DS実務の視点)

階層型クラスタリングは、データ間の距離行列さえあれば計算できるため非常に強力ですが、上記のように「どの距離を採用するか」で結果の解釈が180度変わります。
例えば、マーケティングで「似たような購買傾向の顧客グループ」を綺麗に等分割したいときはウォード法が第一候補になりますし、逆に「不正アクセス検知」や「異常値の検出」のように、孤立した変なデータを見つけ出したいときには最短距離法が役に立つことがあります。データの分布や分析の目的に応じて手法を選択するセンスが、データサイエンティストには求められます。


5. DS検定形式:実戦4択クイズ

問:階層型クラスタリングの距離計算手法において、「クラスターを結合した際の『クラスター内平方和(分散)』の増加量が最小になるものから順に結合していく」という特徴を持ち、ノイズに比較的強く、データの個数が同程度に揃った球状のクラスタを形成しやすい、実務で最も一般的に用いられる手法はどれか。

① 最短距離法   ② 重心法   ③ メドイド法   ④ ウォード法

【 正解: ④ 】

解説: 受験生が絶対に落としてはいけない**「ウォード法」**に関する超頻出問題です。 「分散の増加量を最小にする」「球状の綺麗なクラスタを作る」というキーワードが出てきたら、迷わずウォード法を選べるように頭のインデックスを整理しておきましょう!


6. まとめ

階層型クラスタリングのクラスター間距離は、「最短」「最長」「群平均」はその名の通りの定義なので覚えやすいですが、試験で得点差になるのは「重心法(逆転現象のリスク)」と「ウォード法(分散の増加量最小・実務で最強)」の2つです。それぞれの距離の測り方が持つ「クセ」を理解して、試験の選択肢を確実に撃破しましょう!