Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 特徴量の選択 | 重回帰分析
Pythonによる線形回帰

book特徴量の選択

メニューを表示するにはスワイプしてください

多くの特徴量を扱う場合、どれが重要か分からないことが多い。すべての特徴量でモデルを学習し、役に立たない特徴量を確認した後、影響の大きいものだけを使って再学習する方法がある。

モデルから特徴量を除外する理由

ターゲットと無関係な特徴量を追加すると、ノイズが増え予測精度が低下する。多くの不要な特徴量が重なることで、さらにノイズが増え、モデルの品質が悪化する。

特徴量が良いか悪いかを判断する方法

OLSは学習時に統計的検定を提供する。各特徴量にはt検定の結果が与えられ、summary()テーブルで確認でき、ターゲットに有意な影響を与えているかどうかが示される。

123456789
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
copy

注目すべき点は、各特徴量の p 値である。

要するに、p 値が低いほど、その特徴量が影響力を持つという信頼度が高い。

統計学では、通常 0.05 の有意水準を設定します。特徴量の p 値がこの閾値を超える場合、その特徴量は影響力がないと見なされます。

実際には、わずかに高い p 値(0.05 を少し超える程度)でもモデルに役立つ場合があります。このような特徴量については、モデルに含めた場合と除外した場合の両方をテストするのが安全です。ただし、p 値が非常に高い(>0.4)場合は、自信を持って除外できます。

Note
注意

p 値は 0 から 1 の範囲であり、低い p 値とは 0.05 未満、高い p 値とは通常 0.3~0.5 より大きい値を指します。

この例では、母親の身長と定数項のp値がそれぞれ0.087と0.051となっています。p値が0.05を超える特徴量を除外すると、下記(左側)の結果となります。

視覚的にも、定数項を含むモデル(右側)の方が優れていることが分かるため、モデルから除外しない方が良いといえます。

Note
注記

小規模なデータセットでは、有意な特徴量であってもp値が高く(0.05~0.2)なることがよくあります。p値は信頼度を示しており、データ量が増えるほど、本当に影響のある特徴量とノイズの多い特徴量を区別しやすくなります。

不適切な特徴量の削除方法

X_tilde から該当する特徴量の列を削除。以下のコードを使用。

X_tilde = X_tilde.drop(___, axis=1)

例えば、'const' と 'Mother' 列を削除する場合は次のように記述。

X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)

その後、更新された X_tilde を用いて新しいOLSオブジェクトを作成。

regression_model=sm.OLS(y, X_tilde)

1. どの特徴量を残すべきですか?

2. 誤っている記述を選んでください。

question mark

どの特徴量を残すべきですか?

すべての正しい答えを選択

question mark

誤っている記述を選んでください。

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  4
some-alt