카테고리 없음

캐글 도전기 (2) - 7/5 ~ 7/14

dongsunseng 2023. 7. 18. 17:49

캐글에 대해 알게된 점: 1.0은 불가능하다

일단 캐글에 대해 새롭게 알게 된 점 한 가지가 있는데 캐글 뉴비들에게는 나름 헷갈릴 수 있을 것 같아서 짚고 넘어가려 한다. 캐글을 시작하면 타이타닉이나 주택가격예측 대회를 자연스럽게 거쳐가게 된다. 각 대회에 리더보드를 확인해보면 1.0의 정확도를 받은 사람들이 굉장히 많다는 것을 확인 할 수 있다. 이를 보고 글쓴이는 1.0의 정확도를 받는 것이 이 대회를 완벽하게 이해하고 더 정교한 데이터 전처리와 모델링을 통해서 나오는 이상적인 결과라고 생각했고 이를 위해 한참을 다른 사람들의 코드를 보며 연구했다. 그러던 중 놀라운 결과를 알게 되었는데 1.0의 정확도가 나오는 것은 불가능할 뿐만 아니라 이 대회의 목적이 아니라는 것이었다. 정확도라고 함은 학습 데이터로 모델을 학습시켜서 테스트 데이터를 예측해서 나오는 정확도를 뜻하는데 이것이 1.0이 된다는 것 자체가 말이 안되는 것이었다. 이성적으로 생각해보면 당연한 것이지만 리더보드에 무수히 쏟아지는 1.0 점수들은 뉴비들에게 혼란을 준다. 

 

따라서 저번 포스트에서 정했던 공부 방향성 중에서 타이타닉 대회와 주택가격예측 대회에 제출했던 코드의 정확도를 높이려고 숫자에 집착하는 공부보다는 데이터 사이언스(DS)를 공부한다는 느낌으로 방향성을 바꿨다. 

 

캐글 도전기 (1) - 6/23 ~ 7/1

캐글에 도전하겠다고 마음을 먹었지만 공부를 어디서부터 얼마나 해야 될지 굉장히 막막했다. 그동안 다른 개발공부를 해오며 터득한 해결 방법은 무작정 비싸고 양이 많은 책이나 강의를 결제

dongsunseng.com

공부 방향성

7월 1일 이후에 공부를 계속 하며 느낀 점은 아직 이 분야에 입문한지 얼마 되지 않은 뉴비가 느끼기에 ML, DL, 통계의 기초를 공부하는 것이랑 대회에서 성적을 내기 위해 하는 공부랑 방향성이 다른 것 같았다(7월 1일부터 4일 까지는 쉬기도 했지만 방향성을 잡지 못해서 헤맨 시간이었음). 물론 구글링을 조금 해보면 DS를 공부하다보면 기초, 기본 개념을 파야겠다 싶은 순간이 온다고 말하는 사람들을 쉽게 찾아볼 수 있지만 지금의 나는 물론 기초도 공부해야겠지만 대회에 출전하며 배우는 것이 빠르지 않을까 하는 생각 때문에 방향성을 정하기 어려웠고 일단 두 가지 공부를 병행해보기로 했다(글쓴이 본인은 목표/목적이 확실해지면 폭발적으로 일을 처리하거나 공부를 하는 습성?을 지니고 있다).

 

이제부터 언급한 두 가지 공부를 1. 기초 학습 2. 실전 학습 이라고 하자

7월 5일 이후 진행한 공부 

1. Doit! 정직하게 코딩하며 배우는 딥러닝 입문(기초 학습)

2. 캐글 대회 파악 및 출전할 대회 선정하기(실전 학습)

1. Doit! 정직하게 코딩하며 배우는 딥러닝 입문(기초 학습)

  • 300페이지가 조금 넘는 책으로 아래와 같은 내용들을 수식, 코딩으로 직접 구현하며 다룬다.
    • 선형 회귀
    • 경사 하강법(확률적, 배치, 미니 배치)
    • 손실함수
    • 로지스틱 회귀
    • 활성화, 임계 함수(시그모이드 함수)
    • 일반화 성능(generalization performance) - 홀드 아웃, 교차 검증
    • 단일층 신경망
    • 데이터 전처리(특성 feature의 스케일 조정)
    • 학습률(learning rate)
    • 과대적합과 과소적합(모델 복잡도, 편향-분산 트레이드오프, 훈련 조기 종료 early stopping)
    • 가중치 규제(regularization) - L1, L2 규제
    • 다층 신경망
    • 벡터 연산 - 점 곱(스킬라 곱), 행렬 곱셈
    • 다중 분류 (소프트맥스 함수, 크로스 엔트로피 손실 함수)
    • 합성곱 신경망 (합성곱, 교차 상관, 패딩, 스트라이드, 풀링 연산, ReLU 함수)
    • 드롭 아웃
    • 순환 신경망 (BPTT, word embedding, LSTM)
    • 사이킷런, 텐서플로, 케라스 활용
  • '쉽게 시작하는 캐글 데이터 분석'을 보기 전에 앤드류 응님의 심층학습 특화과정을 2주 분량 정도 들었었는데 학교에서 관련 전공을 하며 배운 배경 지식이 그래도 조금 있어서 아예 이해가 안 간 것은 아니었지만 강의만으로는 충분히 제대로 배우는 느낌이 안들어서 찝찝하게 넘어가거나 구글링을 한참 하거나 챗지피티를 이용해서 이해를 하는 경우가 많았는데 그런 가려운 부분을 긁어주는 책이었다. 
  • 물론, 이 책은 내 개인적인 의견으로는 초보자들이 코딩을 따라하고 수식을 이해하며 ML, DL을 배워간다는데에 포커스가 맞춰진 책이어서 자세한 부연 설명이 없어서 리서치를 더 해야 확실하게 이해가 되는 부분들도 적진 않았지만 이 분야의 입문자가 기초 개념을 훑기에는 이 책을 고른 것에 대한 후회가 없을 정도로 훌륭한 책이었다. 
  • 더 리서치를 해야 이해가 갔던 부분들은 따로 포스트에 정리해뒀으니 참고하면 좋을 것 같다 :)

2023.07.09 - [분류 전체보기] - ML/DL - Code CheatSheet

2023.07.08 - [분류 전체보기] - ML/DL(1) - 로지스틱 회귀의 활성화 함수로 비선형 함수를 사용하는 이유

2023.07.08 - [분류 전체보기] - ML/DL(2) - 오차 역전파(backpropagation)

2023.07.08 - [분류 전체보기] - ML/DL(3) - 손실 함수와 경사 하강법의 관계

2. 실전 학습

  • 전 포스트에 언급했던 '쉽게 시작하는 캐글 데이터 분석'이라는 책에서 추천했던 대회들은 얼핏 보기에 충분히 초보자들이 바로 도전할 수 있는 느낌은 아니었다. 
  • 대회 자체가 어렵다기 보다는 높은 정확도를 얻기 위해서 알아야 할 개념이 생각보다 깊은 느낌이었다. 또한, 대회를 파악하고 책에서 언급한 예시 답안(노트북)을 보며 익히기에 시간이 생각보다 오래 걸릴 것 같다는 느낌을 받았다. 
  • 하지만, 필자에게 이번 방학(8월 21일까지)에 대회를 나가서 확실한 동기를 얻은 채 공부를 하는 것이 중요했고 언급했던 대회들을 나가본 뒤에 진행중인 대회를 참가하기에는 시간이 너무 많이 소요될 것 같았기 때문에 일단 대회를 출전하기로 결정했다. 
  • 현재 진행중인(2023.07.18 기준) 대회들을 보면 주로 시퀀스 데이터를 다루는 NLP 관련 대회들이 핫한만큼 관련 대회들이 많았고 코딩을 처음 시작했을 때부터 자연어 처리는 해보고 싶었던 분야였기 때문에 남은 방학동안 집중해서 이 분야를 파보기로 결정했다. 
  • 그렇다고 진로 자체를 자연어 처리로 결정했다는 말은 아니다. 본인은 머신러닝 딥러닝을 모두 캐글을 통해 경험하고 싶고 하나의 분야에 아직은 나를 가두고 싶지 않다. 공부도 자연어 처리에 한정 짓지 않고 전반적인 머신러닝 딥러닝 공부를 이어갈 생각이다.

3. 앞으로 공부 계획

  1. 실전 학습: 대회 출전(https://www.kaggle.com/competitions/commonlit-evaluate-student-summaries/overview 혹은 https://www.kaggle.com/competitions/kaggle-llm-science-exam/overview)
  2. 기초 학습: 핸즈온 머신러닝 --> 앤드류 응님의 심층 학습 특화 과정(Coursera)
  3. 자연어 처리 학습: 파이토치로 배우는 자연어 처리 --> 트랜스포머를 활용한 자연어 처리
  4. 파이썬으로 백준: 파이썬 활용 능력 키우기 
 

캐글 도전기 (1) - 6/23 ~ 7/1

캐글에 도전하겠다고 마음을 먹었지만 공부를 어디서부터 얼마나 해야 될지 굉장히 막막했다. 그동안 다른 개발공부를 해오며 터득한 해결 방법은 무작정 비싸고 양이 많은 책이나 강의를 결제

dongsunseng.com

블로그를 몇 개 써보며 나름 적성에 잘 맞다는 생각이 들어서 꾸준히 할 생각이고 데이터 사이언스에 입문한 사람들에게 내 블로그가 러닝 메이트가 되어주면 좋겠다는 큰 목표가 생겼다. 

 

캐글 랭커가 될 때까지!