0Pricing
Learn AI with Python · レッスン

交互作用特徴量と多項式特徴量の作成

PolynomialFeatures、手動での交互作用項、比率特徴量、連続変数のビニングを学びます。

「交互作用特徴量と多項式特徴量の作成」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

新しい特徴量を作る理由

線形モデルは直線的な関係しか捉えられません。交互作用特徴量や多項式特徴量を作成すると、単純なモデルでも変数間の曲線的な関係や組み合わせによる効果を表現できるようになります。

交互作用特徴量とは

交互作用とは、2つの特徴量を掛け合わせることです。たとえばarea = length * widthのように表します。これは、どちらか一方だけでは説明できない、両方の入力に依存する効果を捉えます。

PolynomialFeaturesの基礎

PolynomialFeaturesは、指定したdegreeまでの特徴量のべき乗と積を自動的に生成します。次数2では、二乗と特徴量同士の積が追加されます。

from sklearn.preprocessing import PolynomialFeatures
import numpy as np

X = np.array([[2, 3]])
poly = PolynomialFeatures(degree=2)
print(poly.fit_transform(X))
# 1, x1, x2, x1^2, x1*x2, x2^2

interaction_onlyモード

interaction_only=Trueを設定すると、x1^2のような単独のべき乗を除き、交差積だけを残します。曲線的な関係ではなく、組み合わせによる効果だけを扱いたい場合に便利です。

from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)
X_int = poly.fit_transform(X)

特徴量の爆発に注意

次数を高くすると特徴量が増え、過学習のリスクも高まります。入力が10個の場合、次数3では数百列が生成されます。次数は低く(2または3)保ち、特徴量選択や正則化と組み合わせます。

手動で作る比率特徴量

ドメイン知識が、総当たりの方法に勝ることはよくあります。平方メートルあたりの価格やインプレッションあたりのクリック数など、手作業で作る比率は、多項式展開では見つけられない意味を表現します。

import pandas as pd

df["price_per_sqm"] = df["price"] / df["area"]
df["ctr"] = df["clicks"] / df["impressions"]

pd.cutによるビニング

ビニングは、連続変数をカテゴリに変換します。pd.cutは列を区間に分割し、非線形の効果を捉えたり、年齢や収入などをグループ化したりする場合に便利です。

import pandas as pd

df["age_group"] = pd.cut(
    df["age"],
    bins=[0, 18, 35, 60, 120],
    labels=["minor", "young", "adult", "senior"],
)

等頻度ビニング

pd.qcutは、各ビンの件数がほぼ等しくなるように(分位点で)ビンを作成します。分布が歪んでいて、バランスの取れたグループを作りたい場合に便利です。

import pandas as pd

df["income_quartile"] = pd.qcut(df["income"], q=4, labels=False)

対数変換による歪みへの対処

右に歪んだ特徴量(収入、価格、件数など)は、多くのモデルに悪影響を与えます。対数変換は大きな値を圧縮し、分布をより左右対称にします。

import numpy as np

# log1p handles zeros safely: log(1 + x)
df["log_income"] = np.log1p(df["income"])

平方根変換などのその他の変換

平方根変換も歪みを軽減しますが、対数変換より穏やかです。件数データに適しています。ヒストグラムを最も左右対称にできる変換を選びます。

import numpy as np

df["sqrt_count"] = np.sqrt(df["count"])
# inspect df["sqrt_count"].hist() to confirm reduced skew

すべてを組み合わせる

複数の方法を組み合わせます。歪んだ列には対数変換を行い、しきい値が重要な場合はビニングを使い、ドメイン知識に基づく比率を追加し、交互作用にはPolynomialFeaturesを使います。新しい特徴量によって交差検証スコアが実際に向上することを、必ず検証してください。

確認問題

特徴量エンジニアリングについての知識を確認しましょう。

まとめ

まとめ: 単純なモデルを助けるために特徴量を作成します。PolynomialFeaturesにdegreeとinteraction_onlyを指定すると、積とべき乗を追加できます(特徴量の爆発に注意してください)。ドメイン知識に基づく比率を作り、pd.cut/pd.qcutでビニングを行い、対数変換や平方根変換で歪みを軽減します。改善効果は必ず検証してください。

よくある質問

「交互作用特徴量と多項式特徴量の作成」レッスンは無料ですか?

はい。「交互作用特徴量と多項式特徴量の作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「交互作用特徴量と多項式特徴量の作成」で何を学びますか?

PolynomialFeatures、手動での交互作用項、比率特徴量、連続変数のビニングを学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「交互作用特徴量と多項式特徴量の作成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 特徴量選択の手法
  2. 交互作用特徴量と多項式特徴量の作成
  3. ターゲットエンコーディングと高度なカテゴリ処理
  4. Featuretoolsによる自動特徴量エンジニアリング
← Learn AI with Pythonに戻る