【初心者向け】機械学習の精度を左右する「特徴量」とは?わかりやすく解説

特徴量とは?

特徴量(Feature)とは、機械学習モデルが予測や分類を行う際に入力として使用する、対象データの特徴を数値化したものです。平たく言えば、AIが何かを判断するための「判断材料」や「着眼点」のことです。

例えば、人間がある人物の写真を見て「若い人だ」と判断するとき、無意識に「肌のハリ」や「髪の量」「シワの有無」といった複数の特徴を見ています。機械学習モデルも同様に、データの中から特定の特徴を数値として与えられることで、初めて意味のある予測が可能になります。そのため、特徴量は機械学習のモデルの性能に直接影響を与える、非常に重要な要素です。

このデータから特徴量を数値として取り出すプロセスを「特徴抽出」と呼びます。

特徴量の具体例

言葉だけでは分かりにくいので、具体的な例を見てみましょう。

例:迷惑メール(スパムメール)の判定
あるメールが「迷惑メール」か「通常のメール」かをAIに判定させたい場合、以下のような情報が特徴量として利用できます。
  • メール本文に含まれる「セール」「無料」「当選」といった単語の数
  • メールに含まれるURLリンクの数
  • 送信元メールアドレスのドメイン(@以降の部分)
  • メールの件名に記号(【】や★など)が含まれているか否か
  • 過去に同じ送信者からメールを受け取ったことがあるか

AIはこれらの特徴量を複合的に分析し、「『セール』という単語が多く、URLの数も多いから、このメールは迷惑メールの可能性が高い」といった判断を下します。どの特徴量を選ぶかによって、AIの判定精度が大きく変わることが想像できるでしょう。

特徴量の種類

特徴量は、その性質によって大きく2つに分類されます。それは「定量的特徴量」と「定性的特徴量」です。

大分類小分類説明具体例
定量的特徴量
(数値データ)
連続量値が連続的で、小数点以下も意味を持つ数値。身長、体重、気温、価格、時間
離散量値が整数で、数えられる数値。人数、サイコロの目、商品の在庫数、Webサイトの訪問回数
定性的特徴量
(カテゴリデータ)
名義尺度順序や大小関係のない分類。性別(男性/女性)、血液型(A/B/O/AB)、国名、色
順序尺度順序や大小関係に意味がある分類。成績(S/A/B/C)、満足度(高/中/低)、服のサイズ(S/M/L)

機械学習モデルは基本的に数値計算しかできないため、「定性的特徴量」はそのままでは扱えません。そのため、後述する特徴量エンジニアリングによって、数式で扱える数値データに変換する必要があります。

予測精度を上げる鍵「特徴量エンジニアリング」

機械学習プロジェクトの成功は、使用するアルゴリズムだけでなく、それに与えるデータの質に大きく依存します。良い特徴量を設計し、モデルの精度を高めるための一連の作業を特徴量エンジニアリング(Feature Engineering)と呼びます。

特徴量エンジニアリングは、しばしば「職人技」と表現されるほど奥が深く、データサイエンティストの経験やドメイン知識(対象分野の専門知識)が問われる重要なプロセスです。主な手法には以下のようなものがあります。

1. 特徴量の作成(Feature Creation)

既存のデータから、予測に役立ちそうな新しい特徴量を計算して作り出すことです。

  • 例1:「身長」と「体重」のデータから、肥満度を示す「BMI指数」を計算して新しい特徴量として追加する。
  • 例2:「購入日時」のデータから、「曜日」や「午前/午後/夜」といった情報を抽出して特徴量にする。

2. 特徴量の変換(Feature Transformation)

データをモデルが学習しやすい形式に変換することです。

  • ワンホットエンコーディング:「血液型(A/B/O/AB)」のような定性的特徴量を、それぞれのカテゴリを持つか持たないかを示す「0」と「1」の組み合わせに変換します。(例:「A型」なら `[1, 0, 0, 0]`、「B型」なら `[0, 1, 0, 0]`)
  • 正規化・標準化:「年齢」と「年収」のように、数値のスケール(単位や大きさ)が全く異なる特徴量を、同じような範囲に収まるように変換します。これにより、特定の変数の影響が大きくなりすぎるのを防ぎます。

3. 特徴量の選択(Feature Selection)

数多くある特徴量の中から、予測に本当に貢献しているものだけを選び出す作業です。不要な特徴量や、予測のノイズになる特徴量を除外することで、モデルの精度向上や計算コストの削減につながります。

Pythonによる簡単なコード例

ここでは、Pythonのライブラリpandasscikit-learnを使って、カテゴリデータを数値に変換する「ワンホットエンコーディング」の簡単な例を見てみましょう。

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
# サンプルデータを作成
df = pd.DataFrame({ 'fruit': ['apple', 'orange', 'apple', 'grape'], 'price':
})
print("元のデータ:")
print(df)
# 'fruit'カラムをワンホットエンコーディング
# sparse_output=Falseにすることで、結果を密な配列で受け取る
encoder = OneHotEncoder(sparse_output=False)
encoded_fruit = encoder.fit_transform(df[['fruit']])
# エンコードされたデータをDataFrameに変換
encoded_df = pd.DataFrame(encoded_fruit, columns=encoder.get_feature_names_out(['fruit']))
# 元のDataFrameと結合
df_encoded = pd.concat([df.drop('fruit', axis=1), encoded_df], axis=1)
print("\nエンコード後のデータ:")
print(df_encoded) 

このコードを実行すると、’fruit’カラムの’apple’, ‘orange’, ‘grape’という文字列が、それぞれ独立したカラムになり、「0」か「1」で表現されていることがわかります。これにより、機械学習モデルは果物の種類を数値として扱うことができるようになります。

まとめ

特徴量は、機械学習モデルの「目」となり「耳」となる、予測性能の土台となる非常に重要な要素です。

  • 特徴量とは、データの特徴を数値で表現したもので、AIの判断材料となる。
  • 特徴量の種類には、数値で表される「定量的特徴量」と、カテゴリで分類される「定性的特徴量」がある。
  • 特徴量エンジニアリングによって、より良い特徴量を作成・選択することが、モデルの精度を大きく向上させる鍵となる。

近年では、ディープラーニングのように特徴量を自動で学習する技術も発展していますが、多くのビジネスデータ分析の現場では、依然としてこの特徴量エンジニアリングがモデル開発の成否を分ける重要なステップとなっています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です