Kaggle: Machine Learning Competitions (Version 02)
저번 포스팅에서 데이터 예측 모델의 결과가 좋지 않다는 결론을 내렸습니다. (아래 그림은 결과를 나타냅니다.)
결과가 좋지 않은 이유를 아래와 같이 생각을 했습니다.
- train dataset 변형후 모델학습을 진행했는데, test dataset은 그대로 사용
따라서, 이번 포스팅에서는 test dataset을 train dataset을 변형한 것처럼 처리한 후 모델의 성능을 측정해보려합니다.
기존 코드와 달라진 부분은 테스트 데이터를 처리하는 부분 밖에 없습니다. 따라서 바뀐 부분만 작성했습니다.
test dataset 변형
# Log transformation
test_X['GrLivArea'] = np.log(test_X['GrLivArea'])
test_X[test_X['TotalBsmtSF']>0]['TotalBsmtSF'] = np.log(test_X[test_X['TotalBsmtSF']>0]['TotalBsmtSF'])
-
학습데이터 중에서
GrLivArea
,TotalBsmtSF
features를 변형했습니다.- log transformation으로 변형했습니다.
-
위의 두 feature 값에 log transformation을 적용합니다.
예측 데이터 변형
테스트 데이터를 변형해서 예측 데이터를 생성했습니다.
따라서 예측 데이터는 반대로 exponential을 활용해서 원래대로 돌려주어야합니다.
(testset -> log(testset) -> model(log(testset)) -> prediction -> exp(prediction))
왜냐하면 학습에 사용된 SalePrice
(label)도 log transformation을 적용했기 때문입니다.
즉 모델에 학습에 사용한 데이터는 간단하게 말해서 아래와 같았습니다.
-
feature: log(featuers)
-
label: log(
SalePrice
)
# make predictions which we will submit.
test_preds = rf_model.predict(test_X)
test_preds = np.exp(test_preds)
결과
위의 내용을 적용한 결과는 아래와 같습니다.
182906 -> 30380 으로 더 나은 결과를 보여주고 있습니다.
하지만 결과가 아직도 많이 부족합니다.
feature 제대로 선택하지 못한 부분도 있고, random forest 기법을 적용하는게 맞는지 등 더 발전 가능한 부분들이 있을 것으로 예상됩니다. (제가 아직 공부중이라 많은 부분이 미숙한 부분이 많습니다.)
다음 포스팅에서는 다른 사람들은 어떻게 해결했는지 혹은 더 나은 방법을 찾아서 공유할 수 있도록 하겠습니다.
감사합니다 :-)
Author And Source
이 문제에 관하여(Kaggle: Machine Learning Competitions (Version 02)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@daeungdaeung/Kaggle-Machine-Learning-Competitions-Version-02저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)