[TIL] Feature Generation

wandajeong·2023년 5월 9일
0

TIL with chatGPT

목록 보기
4/5

1. 아래 코드에서 'interaction_only=True'의 의미는 무엇일까?

from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(interaction_only=True) #교호작용 효과만 보겠다. 

poly = PolynomialFeatures(2, include_bias=False)
X_train_sc3_poly = poly.fit_transform(X_train_sc3)
X_test_sc3_poly = poly.transform(X_test_sc3)
print(X_train_sc3_poly.shape, X_test_sc3_poly.shape)

svm.fit(X_train_sc3_poly, y_train).score(X_test_sc3_poly, y_test)

#다시 feature selection 
select2 = SelectKBest(k=20)
X_train_sc3_poly_fs2 = select2.fit(X_train_sc3_poly, y_train).transform(X_train_sc3_poly)
X_test_sc3_poly_fs2 = select2.transform(X_test_sc3_poly)
print(X_train_sc3_poly_fs2.shape)

svm.fit(X_train_sc3_poly_fs2, y_train).score(X_test_sc3_poly_fs2, y_test)

mask = select2.get_support()
np.array(poly.get_feature_names())[mask]

interaction_only=TruePolynomialFeatures에서 생성되는 다항식 특성 중 교호작용(interaction)항만을 만들도록 지정하는 인자입니다.
예를 들어, 2차 다항식을 만들 경우 x1,x2x_1, x_2라는 두 개의 특성이 있을 때 interaction_only=True를 지정하면 x12x_1^2, x22x_2^2 항은 생성되지 않고 x1x2x_1x_2 항만 생성됩니다.
따라서, 이 코드에서 interaction_only=True가 지정되면 교호작용 항이 아닌 다항식 특성은 만들지 않습니다. 이후 feature selection을 수행하면서 선택되는 특성도 교호작용 항만 고려됩니다.

2. 위 코드에서 'include_bias=False'로 한 이유는 무엇일까? 만약 True로 바꾼다면 어떤 효과가 있어?

include_bias=FalsePolynomialFeatures에서 생성되는 다항식 특성 중 상수항을 생성하지 않도록 지정하는 인자입니다. 즉, 상수항을 추가하지 않습니다.
이유는 일반적으로 모델링 과정에서 상수항이 자동으로 추가되기 때문입니다. 예를 들어, 선형 회귀 모델의 경우 상수항은 절편(intercept)을 나타내며, 모델링 과정에서 자동으로 추가됩니다.
따라서, include_bias=False를 지정하면 상수항이 중복으로 추가되는 것을 방지할 수 있습니다. 만약 include_bias=True로 지정한다면 상수항을 추가합니다. 이 경우 다항식 특성의 차수에 관계없이 모두 상수항이 포함됩니다.
하지만, 만약 상수항이 모델링 과정에서 자동으로 추가된다면 include_bias=True를 지정하더라도 상수항이 중복으로 추가되지는 않습니다.

3. PolynomialFeatures와 InteractionFeatures의 특징과 차이점 활용 방법 등을 알려줘

PolynomialFeatures와 InteractionFeatures는 모두 feature generation 방법 중 하나로, 변수 간의 상호작용 효과를 활용하여 새로운 feature를 생성하는 방법입니다. 하지만, 그 특징과 차이점이 있습니다.
PolynomialFeatures는 변수들을 이용하여 다항식을 생성하고, 이를 통해 새로운 feature를 생성합니다. 예를 들어, x1x_1x2x_2라는 두 개의 변수가 있다면, PolynomialFeatures를 이용하여 x12,x22,x1x2x_1^2, x_2^2, x_1x_2 등의 새로운 feature를 생성할 수 있습니다. 이 방법의 장점은 비선형적인 관계를 포착할 수 있다는 점입니다. 하지만, 변수의 수가 많아질수록 생성되는 feature의 수가 기하급수적으로 늘어나는 문제가 있습니다. 이러한 문제는 모델의 복잡도를 증가시키고, 과적합을 유발할 수 있습니다.
반면, InteractionFeatures는 두 변수 간의 상호작용 효과를 새로운 feature로 생성합니다. 예를 들어, x1x_1x2x_2라는 두 개의 변수가 있다면, InteractionFeatures를 이용하여 x1x2x_1x_2라는 새로운 feature를 생성할 수 있습니다. 이 방법은 변수의 수가 많아지더라도 생성되는 feature의 수가 적어지므로, 모델의 복잡도를 낮출 수 있습니다. 또한, 변수 간의 상호작용을 명시적으로 나타내므로, 모델의 해석력을 높일 수 있습니다.
따라서, PolynomialFeatures는 비선형적인 관계를 포착하고자 할 때 유용하며, InteractionFeatures는 변수 간의 상호작용을 반영하고자 할 때 유용합니다. 이들 방법을 활용하여 모델의 성능을 개선하고자 할 때는, 변수들의 특성과 데이터셋의 크기를 고려하여 적절한 방법을 선택하여 활용해야 합니다

profile
ML/DL swimmer

0개의 댓글