特徴量の選択
メニューを表示するにはスワイプしてください
多くの特徴量を扱う場合、どれが重要か分からないことが多い。すべての特徴量でモデルを訓練し、役に立たない特徴量を確認した後、影響の大きいものだけを使って再訓練する方法がある。
モデルから特徴量を除外する理由
目的変数と無関係な特徴量を追加するとノイズが増え、予測精度が低下する。多くの不要な特徴量が重なることでノイズが蓄積し、モデルの品質がさらに低下する。
特徴量が良いか悪いかを判断する方法
OLSは訓練時に統計的検定を提供する。各特徴量にはt検定の結果が与えられ、summary()テーブルに表示され、目的変数に有意な影響を与えているかどうかを示す。
123456789import 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
各特徴量のp値が注目点。
p値が低いほど、その特徴量が影響力を持つという信頼度が高いことを示す。
統計学では、通常0.05の有意水準を設定します。特徴量のp値がこの閾値を超える場合、その特徴量は影響がないと見なされます。
実際には、やや高いp値(0.05を少し超える程度)でもモデルに役立つ場合があります。そのような特徴量については、モデルに含めた場合と除外した場合の両方をテストするのが安全です。ただし、p値が非常に高い(>0.4)場合は、自信を持って除外できます。
p値は0から1の範囲であり、低いp値とは0.05未満、高いp値とは通常0.3〜0.5より大きい値を指します。
この例では、母親の身長と定数のp値がそれぞれ0.087と0.051となっています。p値が0.05を超える特徴量を除外すると、下記(左側)の結果になります。
見た目にも、定数を含むモデル(右側)の方が優れていることが分かるため、モデルから除外しない方が良いです。
小規模なデータセットでは、有意な特徴量であっても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. 誤っている記述を選択してください。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください