特徴量の選択
メニューを表示するにはスワイプしてください
多くの特徴量を扱う場合、どれが重要か分からないことがよくあります。すべての特徴量でモデルを学習し、役に立たない特徴量を確認した後、影響の大きいものだけを使って再学習します。
モデルから特徴量を除外する理由
ターゲットと無関係な特徴量を追加すると、ノイズが増え、予測精度が低下します。多くの不要な特徴量がノイズを蓄積し、モデルの品質をさらに低下させます。
特徴量が良いか悪いかを判断する方法
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つを試してチャットを始めてください
特徴量の選択
多くの特徴量を扱う場合、どれが重要か分からないことがよくあります。すべての特徴量でモデルを学習し、役に立たない特徴量を確認した後、影響の大きいものだけを使って再学習します。
モデルから特徴量を除外する理由
ターゲットと無関係な特徴量を追加すると、ノイズが増え、予測精度が低下します。多くの不要な特徴量がノイズを蓄積し、モデルの品質をさらに低下させます。
特徴量が良いか悪いかを判断する方法
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)
フィードバックありがとうございます!