복잡한 기계 학습 모델로 시작하는 것이 좋지 않은 이유: 개인적인 경험
이 게시물에서는 첫 번째 데이터 과학 도전에 대한 초보자로서의 경험과 학생 및 데이터 과학자로 성장하는 데 어떻게 도움이 되었는지 안내합니다. 간단한 선형 회귀 모델의 힘을 결코 잊지 못할 것입니다!
도전
Condenation은 때때로 다양한 영역에서 가속을 향한 첫 번째 단계로 도전 과제를 구성하는 웹 사이트입니다. 그 중 하나는 데이터 과학에 관한 것입니다. 마지막 데이터 과학 챌린지는 ENEM(공립 대학 입학을 위한 브라질 시험) 학생의 수학 점수 예측에 관한 것이었습니다.
너무 신나게 시작했어요! 그러나 수학 점수를 예측하기 위해 Random Forest 및 Neural Network가 아닌 다른 모델을 시도하지 않았기 때문에 저는 눈이 멀었습니다. 일부 NaN 값을 대체하기 위해 전처리를 수행하고 상관 관계가 높은 일부 기능을 선택했습니다. 그 후, 나는 RandomizedSearchCV으로 최선의 매개 변수를 선택하기 위해 열심히 노력했습니다. 그 동안의 노력에도 불구하고 90%에 도달하지 못하고 Codenation에 합류하지 못했습니다. 그래서 나는 좌절했고 나를 포기했습니다.
변장한 축복..
최근에 나는 Kaggle에서 같은 데이터베이스를 만났다. 오랜만에 도전을 받아들여 다시 도전했습니다. 아래에서 읽을 수 있듯이 도전에 대한 새로운 접근 방식과 간단한 모델을 사용하지 않고 약한 것으로 판단하는 방법을 보여 드리겠습니다. 그것은 큰 실수이자 훌륭한 학습 경험이었습니다.
새로운 접근법
여기서는 예를 들어 데이터 전처리와 관련하여 내가 수행한 모든 작업을 설명하지는 않습니다. 하지만 내 노트북을 보고 싶다면 kaggle에서 액세스할 수 있습니다.
먼저 데이터베이스를 확인하고 NaN 값이 있는지 확인했습니다. 이 값은 학생 중도 탈락으로 처리해야 했기 때문에 0으로 대체되었습니다. 나중에 나는 이 특징들 사이에 약간의 상관관계가 있다는 것을 깨달았다. 내 아이디어는 가장 높은 기능을 가져와 수학 점수를 예측하는 데 사용하는 것이 었습니다. 아래 히트맵은 Pearson 계수를 사용하여 이러한 상관관계를 보여줍니다.
보시다시피 상관관계가 높습니다. 그래서 아래와 같이 간단한 선형 회귀 모델에서 예측 변수로 사용하기로 했습니다.
X = df_train_filled.drop(columns=['NU_NOTA_COMP5', 'NU_NOTA_MT'])
y = df_train_filled['NU_NOTA_MT']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
lr = LinearRegression(normalize=True)
lr.fit(X_train, y_train)
lr.score(X_test, y_test)
간단한 훈련과 테스트 분할을 사용하여 90%의 정확도를 얻었습니다. 이 정확도는 랜덤 포레스트 및 신경망 모델보다 낫습니다. 그러나 아마도 "데이터베이스의 일부를 방금 사용했습니까? 완전한 이해를 위해 교차 유효성 검사를 사용해야 합니다!"라고 궁금해할 수 있습니다. 알았어 알았어.. 맞아! 아래에서 볼 수 있듯이 저도 그렇게했습니다.
# making scores
mae = make_scorer(mean_absolute_error)
r2 = make_scorer(r2_score)
cvs = cross_validate(estimator=LinearRegression(normalize=True), X=X, y=y, cv=10, verbose=10, scoring={'mae': mae, 'r2':r2})
나는 평균 절대 오차를 사용했고
R2R^2R2
점수를 매겨 모델을 평가합니다. 평균 점수는 각각 50.027과 0.902였습니다. 아마도 이 모델은 테스트 데이터베이스 점수의 90%로 수학 점수를 예측할 수 있습니다. 그래서 나는 행복하고 제출하려고 노력할 수 있습니다! 아니 아니..
아쉽게도 Kaggle이나 원래 웹사이트에서는 제출할 수 없습니다. 코데네이션은 오래전에 마감되었으니 앞으로 새로운 기회를 기다려야겠네요.
그러나 우리는 그것으로부터 무엇을 배울 수 있습니까?
랜덤 포레스트 및 신경망 모델을 사용하더라도 전처리를 개선하거나 다른 기능을 선택하여 좋은 점수를 얻을 수 있다는 점에 주목하는 것이 중요합니다. 네, 맞습니다! 하지만 이 경험은 저에게 중요했습니다. 더 나은 데이터 과학자가 되고 배울 수 있었기 때문입니다.
그 모델이 어려운 작업을 하기에는 너무 간단하다고 생각하더라도 기회를 주어야 합니다. 높은 점수나 결과를 얻지 못할 수도 있습니다. 그러나 다른 모델이 스코어러 향상에 도움이 되는지 확인하는 출발점이 될 수 있습니다.
이 포스팅이 도움이 되었으면 좋겠습니다!!
Reference
이 문제에 관하여(복잡한 기계 학습 모델로 시작하는 것이 좋지 않은 이유: 개인적인 경험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/juniorcl/why-it-s-not-a-good-idea-start-with-complex-models-244i
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여기서는 예를 들어 데이터 전처리와 관련하여 내가 수행한 모든 작업을 설명하지는 않습니다. 하지만 내 노트북을 보고 싶다면 kaggle에서 액세스할 수 있습니다.
먼저 데이터베이스를 확인하고 NaN 값이 있는지 확인했습니다. 이 값은 학생 중도 탈락으로 처리해야 했기 때문에 0으로 대체되었습니다. 나중에 나는 이 특징들 사이에 약간의 상관관계가 있다는 것을 깨달았다. 내 아이디어는 가장 높은 기능을 가져와 수학 점수를 예측하는 데 사용하는 것이 었습니다. 아래 히트맵은 Pearson 계수를 사용하여 이러한 상관관계를 보여줍니다.
보시다시피 상관관계가 높습니다. 그래서 아래와 같이 간단한 선형 회귀 모델에서 예측 변수로 사용하기로 했습니다.
X = df_train_filled.drop(columns=['NU_NOTA_COMP5', 'NU_NOTA_MT'])
y = df_train_filled['NU_NOTA_MT']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
lr = LinearRegression(normalize=True)
lr.fit(X_train, y_train)
lr.score(X_test, y_test)
간단한 훈련과 테스트 분할을 사용하여 90%의 정확도를 얻었습니다. 이 정확도는 랜덤 포레스트 및 신경망 모델보다 낫습니다. 그러나 아마도 "데이터베이스의 일부를 방금 사용했습니까? 완전한 이해를 위해 교차 유효성 검사를 사용해야 합니다!"라고 궁금해할 수 있습니다. 알았어 알았어.. 맞아! 아래에서 볼 수 있듯이 저도 그렇게했습니다.
# making scores
mae = make_scorer(mean_absolute_error)
r2 = make_scorer(r2_score)
cvs = cross_validate(estimator=LinearRegression(normalize=True), X=X, y=y, cv=10, verbose=10, scoring={'mae': mae, 'r2':r2})
나는 평균 절대 오차를 사용했고
R2R^2R2
점수를 매겨 모델을 평가합니다. 평균 점수는 각각 50.027과 0.902였습니다. 아마도 이 모델은 테스트 데이터베이스 점수의 90%로 수학 점수를 예측할 수 있습니다. 그래서 나는 행복하고 제출하려고 노력할 수 있습니다! 아니 아니..
아쉽게도 Kaggle이나 원래 웹사이트에서는 제출할 수 없습니다. 코데네이션은 오래전에 마감되었으니 앞으로 새로운 기회를 기다려야겠네요.
그러나 우리는 그것으로부터 무엇을 배울 수 있습니까?
랜덤 포레스트 및 신경망 모델을 사용하더라도 전처리를 개선하거나 다른 기능을 선택하여 좋은 점수를 얻을 수 있다는 점에 주목하는 것이 중요합니다. 네, 맞습니다! 하지만 이 경험은 저에게 중요했습니다. 더 나은 데이터 과학자가 되고 배울 수 있었기 때문입니다.
그 모델이 어려운 작업을 하기에는 너무 간단하다고 생각하더라도 기회를 주어야 합니다. 높은 점수나 결과를 얻지 못할 수도 있습니다. 그러나 다른 모델이 스코어러 향상에 도움이 되는지 확인하는 출발점이 될 수 있습니다.
이 포스팅이 도움이 되었으면 좋겠습니다!!
Reference
이 문제에 관하여(복잡한 기계 학습 모델로 시작하는 것이 좋지 않은 이유: 개인적인 경험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/juniorcl/why-it-s-not-a-good-idea-start-with-complex-models-244i
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(복잡한 기계 학습 모델로 시작하는 것이 좋지 않은 이유: 개인적인 경험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/juniorcl/why-it-s-not-a-good-idea-start-with-complex-models-244i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)