개발일지4
학교에서 진행한 데이콘 스쿨에서 2022년 6월 29일부터 2022년 8월 8일까지의 교육 중 4번째(마지막) 대회의 일지를 쓰겠다.
마지막 대회는 와인 품질 분류 예측 대회였다.
지금까지 대회와는 다르게 회귀가 아닌 분류 문제였기에 더 기대가 됐다.
분류를 예측하는 방법에 대한 많은 배움을 얻고 가야겠다고 생각했다.
교육시간에 분류 대회라서 그런가 새로운 부분들을 많이 배웠다.
분류 문제에 이용할 수 있는 하드보팅, 소프트보팅을 배웠다.
하드보팅은
pred['pred'] = pred.mode(axis=1)[0].astype(int)
소프트보팅은
pred0 = models[0].predict_proba(test[features])
pd.DataFrame(np.argmax(np.array(pred), axis=1))
소프트보팅은 확률을 이용하여 구해주기 때문에 나 같은 경우는 소프트보팅의 값이 더 좋게 나왔다.
GridSearchCV로 교차검증과 하이퍼파라미터 튜닝하기
이번 교육시간에 가장 흥미로웠던 부분이다.
GridSearchCV로 교차검증과 하이퍼파라미터 튜닝을 함께 할 수 있다니 너무 놀라웠다.
자주 써먹게 된다ㅎㅎ
from sklearn.model_selection import GridSearchCV
best_models={}
best_params={}
score={}
params = [{'n_estimators' : [100, 150, 200],'criterion' : ['gini']},{'n_estimators' : [150,200],"max_depth": [10,12],"learning_rate" : [0.1]},{}]
for i, model in enumerate(models):
model = GridSearchCV(model, param_grid=params[i], cv=5, return_train_score=True, verbose=2)
model.fit(X,y)
best_models[i] = model.best_estimator_
best_params[i] = model.best_params_
score[i] = model.best_score_
자신이 적은 여러 모델들을 교차 검증해준다.
여러 모델의 score을 구하고 하이퍼파라미터 튜닝까지 함께 해주고 서로의 모델들을 비교하여 최적의 값을 찾아낸다는 것이 정말 대단하고 멋진 일이다. 앞으로 꼭 이 방법을 사용할 것 같다.
그다음으로 교육을 토대로 스케일링을 했다. MinMaxScaler을 이용하여 구했는데 이상치가 많아 보여 이상치가 많은 것들에는 RobustScaler을 사용하여 구했다.
찾아보니 RobustScaler은 이상치가 많을 때 사용하는 스케일링이라고 하여 사용했다.
내가 아직 RobustScaler을 이용하는 방법에 서툰 것인지 RobustScaler을 이용해 스케일링을 했더니 값이 너무 안 좋게 나왔다. 그래서 MinMaxScaler로 통합하여 스케일링해주었다.
그리고 나만의 인사이트를 도출하고 싶었지만 실패했다.
가설 1: 총 이산화황 - 독립 이산화황을 빼준 값을 파생변수로 만들면 와인 품질 분류에 영향을 주지 않을까?
상관관계가 좋지 않았고 예측력이 더 안 좋았다. - 실패
가설 2: pH가 작을수록 산도가 높다. 반비례 관계이니 서로를 나눠준 값을 파생변수로 만들면 영향을 주지 않을까?
이것 역시 예측력이 더 안 좋게 나왔다. 안좋게 나온 이유를 산도와 pH가 와인의 품질과의 상관관계가 좋지 않아서이지 않을까 생각한다.
이렇게 마지막 대회까지 끝났다. 완전히 교육이 끝나고 나는 이 교육에 참여하길 잘했다는 생각을 했다. 정말 많은 배움을 얻었고 이렇게 많은 대회에 참여해볼 기회와 교육과 대회를 통해 값진 경험을 얻을 수 있었던 수업이기에 많은 성장을 했다. 대회에서 좋은 점수를 받기 위한 방법들에 대한 부분들을 알게 되어 좋았다. 내년에도 시간이 된다면 다시 참여하고 싶을 만큼 보람참 교육이었다. 코딩능력을 강화할 수 있어서 좋았다.
2022년 6월 29일부터 2022년 8월 8일까지의 교육 끝!!