inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 파이썬 머신러닝 완벽 가이드

5.9 bike sharing demand에서 standardScaler

397

이승재

작성한 질문수 2

0

bike sharing demand예제에서 LinearRegression모델이 다른 모델에 비해 RMSLE가 큰 것이 Scaler문제는 아닌가 해서 StandardScaler를 다음과 같이 적용시켜 봤습니다만, 성능이 좋아지질 않는 것 같습니다.

X_train, X_test, y_train, y_test = train_test_split(X_features_ohe, y_target_log, test_size = 0.3, random_state = 0)
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
def get_model_predict(model, X_train, X_test, y_train, y_test, is_expm1 = False, sts = False):
    if sts:
        ct = ColumnTransformer([
            ('standard', StandardScaler(), ['temp', 'atemp', 'humidity', 'windspeed'])
        ], remainder = 'passthrough')
        model = Pipeline([
            ('ct', ct), 
            ('model', model)
        ])
    model.fit(X_train, y_train)
    pred = model.predict(X_test)
    if is_expm1:
        y_test = np.expm1(y_test)
        pred = np.expm1(pred)
    print(model.__class__.__name__)
    evaluate_regr(y_test, pred)

선형 모델임에도 불구하고 이게 통하지 않는것이 좀 의문입니다. 게다가 다른 모델에서는 성능이 나빠지기도 합니다.

그리고 StandardScaler를 적용하기 전과 후의 coef_가 많이 다릅니다. 다음 그래프는 StandardScaler를 적용했을 때 LinearRegression의 coef_입니다.

feature중요도 측면에서, StandardScaler를 적용한 후의 coef_가 더 믿을만 한지, 아니면 적용하지 않은게 더 믿을만 하다고 봐야하는지 궁금합니다.

그래프 출력하는 코드는 다음과 같습니다.

# X_features_ohe_sts 
ct = ColumnTransformer([
            ('standard', StandardScaler(), ['temp', 'atemp', 'humidity', 'windspeed'])
        ], remainder = 'passthrough')
model = Pipeline([
    ('ct', ct), 
    ('model', LinearRegression())
])
# model = LinearRegression()
model.fit(X_train, y_train)
series = pd.Series(np.abs(model[-1].coef_), index = X_features_ohe.columns)
series = series.sort_values(ascending = False)[:20]
sns.barplot(series.values, series.index)

python 머신러닝 통계

답변 1

0

권 철민

안녕하십니까,

강의에서도 얼핏 말씀드리지만, 선형 모델에서 StandardScaler를 적용한다고, 무조건 성능이 좋아지지는 않습니다.

경험적으로 말씀하신대로 성능이 약간 떨어지는 경우도 있습니다. 충분한 학습 데이터와 테스트 데이터를 적용해 보면 성능이 약간 떨어지는 경우는 없을 것 같습니다만 정확한 원인은 저도 잘 모르겠습니다.

원칙적으로는 선형 모델에 StandardScaler이든 MinMaxScaler이든 데이터에 적용을 하는 것이 좋습니다. 하지만 적용하지 않고 모델 성능을 한번 판정해 보는 것도 방법입니다.

선형 모델의 경우 StandardScaler, MinMaxScaler, Scaler 미 적용등의 경우를 각각 적용해서 최적 모델을 판단하는 것도 방법입니다.

감사합니다.

모델 서빙과 관련된 강좌가 출시되는지 질문드립니다.

0

14

2

안녕하세요 열심히 수강중인 학생입니다

0

63

2

정수 인덱싱

0

68

2

넘파이 오류

0

85

2

11강 numpy의 axis 축 질문 드립니다.

0

85

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

79

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

70

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

75

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

64

2

5강 강의 오류가 있어요.

0

84

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

72

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

69

3

파이썬 다운그레이 후 사이킷런 재설치

0

117

2

좋은 강의 감사합니다.

0

74

2

scoring 함수 음수값

0

67

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

100

2

분류 평가 정확도 예측

0

79

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

99

1

카카오톡 채널 있나요

0

108

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

190

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

172

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

148

2

실루엣 스코어..

0

86

2