머신 러닝, 더 빠르고 정확하게정규화(Regularization)scikit-learn으로 과적합 문제 해결해 보기

Q

Lasso 파라미터 normalize 없어짐

조회 831

좋아요 6

2023년 5월 16일()




댓글 1

2024년 4월 24일
정규화를 할 때 train_test_split을 선적용 한 후 scaler를 적용하면 train data set과 test data set에 동일한 normaliztion이 적용되지 않기 때문에 의도되지않은 aumentation이 발생하는 것 같습니다. 여기서는 test time augmentation을 의도하고 있지 않기 때문에 scaler를 X 전체에 선적용하고 split을 하는게 올바를 것 같습니다.

model = Lasso(alpha=0.001, max_iter=1000)
scaler = MinMaxScaler()
X_scale = scaler.fit_transform(X)
X_scale_train, X_scale_test, y_train, y_test = train_test_split(X_scale, y, test_size = 0.3, random_state=5)

model.fit(X_scale_train, y_train)
y_train_predict = model.predict(X_scale_train)
y_test_predict = model.predict(X_scale_test)

mse = mean_squared_error(y_train, y_train_predict)
print(sqrt(mse))
mse = mean_squared_error(y_test, y_test_predict)
print(sqrt(mse))
A
1개의 답변이 있어요
커뮤니티 파트너 채택



2023년 5월 17일

댓글 3

2023년 6월 1일
그럼 정규화를 할때 X, y 값 모두 normalization을 해줘야 하는게 맞을까요? train and test set 나누기 전부터요
2023년 6월 1일
y값은 normalization이 필요하지 않습니다. 또한 train set의 값으로 normalization하시고, 이후 test set에 적용하시는 것이 맞아 보여요!
2023년 6월 1일
Test set은 마지막까지 못 본 데이터로 남겨 놔야 data leakage 문제가 없습니다!

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇