Skip to content

kimdahyeon977/kaggle-study

 
 

Repository files navigation

👑 캐글 대회 참가 스터디 👑

김다현, 천준석, 소범기, 권소현, 신가현, 홍일도, 이유진, 정현정


Intro


❗Master branch가 아닌 dev branch에서 팀원들의 코드와 진행 사항을 알 수 있습니다!!!!

캐글 대회 참가 스터디 내용을 정리한 레포입니다.
맨 아래 일정표에서 스터디에서 리뷰한 내용이 무엇인지, 현재 진행중인 프로젝트에 대해서 간단하게 알 수 있습니다.
더불어, 팀스터디로 진행한 내용과 개인적으로 학습한 내용들을 DEV 브랜치에서 확인할 수 있습니다.


● 대회

  1. kaggle : House Prices - Advanced Regression Techniques

첫 프로젝트로 회귀 문제인 집값 예측 대회를 참여하기로 결정했습니다.

  • 첫 프로젝트인 만큼 데이터 분석에 집중합니다.
  • 언어는 python, 개발 환경은 머신러닝/딥러닝 적용을 위해 google colab 또는 kaggle notebook으로 진행합니다.
  • 프로젝트에 대해 깊이 학습하고, 예정보다 빨리 끝날 시 다른 프로젝트도 진행할 예정입니다.

● 스터디 방식

해당 스터디는 크게 데이터 탐색 / 데이터 분석 / 모델 학습 / 모델 검증 단계로 구성되어 있고, 1~2주 시간을 할애하여 각 파트별 학습을 진행할 예정입니다.

  1. 스터디 만남 전까지 학습(데이터 탐색 / 데이터 분석 / 모델 학습 / 모델 검증 중 하나) 완료합니다.
  2. 정해진 날짜에 엘리스 플랫폼에서 모든 인원이 화면 공유와 함께 학습한 내용을 발표합니다.
  3. 단순히 코드만 돌려보지 않고 이론도 같이 설명함으로써 학습 효율도 향상시킵니다.
  4. 프로젝트 형식이라 주 1회 모임을 갖지만 각자 자신의 성과를 보여주고 질문을 해소하기 위하여 소규모 스터디도 즉흥적으로 모집될 수 있습니다.

● 스터디 계획

★ 2022/04/01(금) ~ 2022/05/28(토))

  1. kaggle : House Prices - Advanced Regression Techniques 대회 참여
  2. numpy, pandas, scipy, matplotlib에 대한 선행 학습 또는 복습 진행
  3. 엘리스에 제공해주는 데이터 분석 강의 병행
  4. 통계에 대한 원론적인 지식 탐구
  5. 학습한 라이브러리를 실제 대회에 적용하여 결과에 영향을 미치는 features 추출
  6. 해당 features들로 여러 가지 모델을 학습해보고 검증하여 대회 제출
  7. "어떤것들을 사용만 해봤다" 보다는 "해당 원리를 이해하여 활용했다" 방향으로 진행
  8. 첫 프로젝트가 일찍 끝날 시 다른 프로젝트 탐구

● 스터디 모임 시간 & 기한

매주 토요일 오전 10시
프로젝트 기간은 월요일 저녁으로 변경!
★ 즉흥적으로 소규모 스터디도 진행할 수도 있습니다. ★


● 목표

저희의 목표는 kaggle : House Prices - Advanced Regression Techniques 좋은 성적과 코드 밑단까지 이해하기를 목표로 진행합니다.
단순히 남의 코드를 클론 코딩하는 것을 넘어서 응용할 수 있는 수준을 원하고, 시간이 남는다면 다른 정형 데이터 대회나 딥러닝 분야에서의 데이터들을 다루는 대회에 참여하겠습니다!!!!


주차 목표 학습 내용
1 (2022/04/01(금)) 🚩kaggle 대회를 위한 사전 준비 및 데이터 분석 사전 학습, 앞으로의 계획 및 일정 수립 - 정기 모임 지정, 대회 주제 확정, 개발 환경과 언어 확정, 사전 학습 내용 공유, 앞으로의 계획 수립
1 (2022/04/09(토)) 🚩House Prices : Exploratory Data Analysis(EDA) 학습 및 데이터 분석 학습 병행 - 화면 공유를 통한 각 EDA 발표/Q&A 진행, 자신만의 insight 발표
2 (2022/04/13(수)) 🚩corr 공부, 결측값 처리 방법, 범주형 변수 상관성 찾는법, 다중공선성 처리 방법 고민하기 -> 오피스아워 리뷰 -Year 변수에 대한 처리, 범주형 변수에 대한 상관성 방법 탐구, 다중공선성 처리, 파생 변수 처리
2 (2022/04/16(토)) 🚩feature engineering 진행, corr 공부, 결측값 처리 방법, 범주형 변수 상관성 찾는법, 다중공선성 처리 방법 고민하기 - 각자의 insight 공유, 의문점 토론 / 프로젝트 기간으로 인한 일정 토의
3 (2022/04/18(월)) 🚩각자의 insight 의문점 같이 해결해보고, 타겟과 연관이 깊은 수치형 변수와 범주형 변수 파악하거나 끝낸 분들은 모델링까지 진행하여 정확도 확인 - 이전 스터디와의 날짜 차이 때문에 휴식
4 (2022/04/25(월)) 🚩모델링 중간 점검 pycaret 사용해보기 , 쓸모없는 변수 골라내기
5 (2022/05/09(월)) 🚩제출해보고 결과 확인 이상치 처리, 결측값 처리, 데이터 타입변경 좀 더 세심하게 변경하였음. , 파생변수 더 많이 생성 , 앙상블 모델 (Extra tree, Bagging, Gradient) 사용
6 (2022/05/16(월)) 🚩 다음 프로젝트 TOPIC 정하기 , CV 와 NLP공부해오기 데이콘 수화 MNIST 분류 대회로 다수결로 결정 https://dacon.io/competitions/official/235896/overview/description
7 (2022/05/23(월)) 🚩 수화 이미지 train set : 0.83 까지 기록 모델을 좀 더 가볍게 성능 더 올리기, submission해보기
8 (2022/05/28(토)) 🚩


1주차

● 2022/04/01(금): 스터디 소요 시간 30분(디스 코드 30분)

- 언어, 개발환경 : python, google colab&kaggle notebook
- 대회 주제 : kaggle : House Prices - Advanced Regression Techniques
- 사전 학습 내용

  1. 엘리스 플랫폼 데이터 분석 강의
  2. 캐글 대회 강의(T아카데미) :https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=189
  3. 데이터 분석/머신러닝/딥러닝 info : https://github.com/teddylee777/machine-learning

- 전체적인 계획 : 해당 대회에 대해 크게 데이터 탐색 / 데이터 분석 / 모델 학습 / 모델 검증 단계로 구성되어 있고, 1~2주 시간을 할애하여 각 파트별 학습을 진행할 예정
- 숙제 : House Prices : Exploratory Data Analysis(EDA) 학습 및 데이터 분석 학습 병행


2022/04/09(토) : 스터디 소요 시간 2시간(엘리스 플랫폼 2시간)
- 학습 내용

  1. House Prices : Exploratory Data Analysis(EDA) 발표 및 추가 학습
  2. data load, data comprehend
  3. features meaning 파악하기
  4. 타켓 변수 : SalePrice 분포 확인(왜도(shewness), 첨도(kurtosis) 확인)
  5. 이상치 탐색
  6. 결측치 확인
  7. numerical_features와 categorical_feature 살펴보기

- github : 스터디원 모두가 해당 저장소 github에 commit 가능하고 큰 뿌리마다 merge 할 예정
- 숙제&고민사항

  1. corr 공부하기 : 데이터 특성에 맞게 어떤 corr을 사용할지 고민하기
  2. 결측값 처리 방법 공부하기 : 의미있는 NaN은 어떻게 처리해야하는가?
  3. 범주형 변수 상관성 찾는법 : 범주형 변수는 시각화에 제한이 많음 : 카이제곱 검정 , 비슷한 특징들 지닌것은 하나로 묶어주는 기법 등... 고민해보기
  4. 이번주까지 했던 내용 왜? 그렇게 했는지 고민해보고 feature engineering까지 끝내기
  5. 다중공선성가진 변수 한쌍이 둘다 의미있는 변수일때 어떻게 처리해야하는가? 고민하기

- 특이사항

  1. github 각 팀원의 폴더에 학습 과정을 commit하고 큰 뿌리(데이터 탐색 / 데이터 분석 / 모델 학습 / 모델 검증 단계)마다 합치는 것으로 결정
  2. 단순 클론 코딩이 아닌 해당 원리를 이해하고 작성&응용하는 방향으로 추진
  3. 진도가 막힌 상태거나 모르는 것이 있으면 언제든지 즉흥 스터디

2주차

● 2022/04/13(수) : 스터디 소요 시간 1시간30분(엘리스 플랫폼 1시간30분)

<오피스아워>
★ 정기 스터디가 아닌 고민에 대한 오피스아워 정리 내용을 리뷰하고 앞으로의 방향성 결정하는 시간

- 학습 내용

  1. Year-- 변수들을 현재 날짜 기준으로 age로 바꿔주기. 왜냐하면 얼마나 오래된 집인지는 house price에 중요한 변수이기 때문이다.
  2. 범주형 변수의 상관성은 보통 table을 모두 교차분석해서 하나하나 보는게 정석이지만 현재 데이터셋은 너무 크다. 그러면 어떻게 해야할까?
    범주형 변수 중 서열척도 인것과 , 진짜 범주형 인것 구분한다.
    서열척도인것은 poor= 1 , Good =2 이런식으로 인코딩해서 바꿔서 수치형으로 바꾼다.
    진짜 범주형 인것들은 더미화 시켜야한다. 더미화 시켜서 각 변수별로 Year를 x축에 saleprice를 y축에 놓고 시각화해서 상관성 해석하기
    시각화해서 모든 변수가 동일한 연관성(정비례 , 반비례)를 보이면 상관없는데 어떤거는 반비례 어떤거는 정비례 하는 연관없는 상관성을 보이면 쓸 수 없는 변수라고 판단하자
  3. 다중공선성 있는 것들을 무조건 하나 버리는게 좋을까?
    1. 관련데이터들 (BsmtFullBath, BsmtHalfBath ) 이런것들은 당연히 연관되어있으니까 묶어줘서 하나의 변수로 취급하기 , 단, 정확도 약간 떨어질수도 있다.
    2. 보통은 더미기법을 쓰는게 맞는데 범주형도 40개가 넘는데 더미기법쓰면 더 많아지니까(과적합문제) 이럴때 보통은 버리거나 모델링할때 paramter 조정한다.
  4. 파생변수 만들기
    2ndFlrSF : 2층 평방피트가 0이면 1층집이라는 뜻임. 따라서 파생변수로 2층집인지 1층집인지 변수만드는것도 아주 중요함!
  5. 범주형 데이터는 무조건 상자그림으로 보면 안됨. 상자그림에서 상관성이 높게 나온것도 다른 변수의 영향있을수도-> 다중공선성(x) 교호효과 (o) 구글링해서 찾아보기
  6. 행수, 열수가 너무 많은 것은 XGBoost로 하기
    XGBoost 에서 lidge , lasso parameter 조정하면 중요한변수들은 가중치 더주고 중요하지 않은 변수들은 가중치 더 주지 않는 방식으로 변수선택할 수 있음.
  7. [추가 사항] 범주형 데이터는 어떻게 처리할까?
    보통은 PCA로 해서 중요한 변수들을 묶어준다. 그런데 범주형은 PCA를 못하니까 Group lasso 라고 범주형데이터들이 너무 많을때 사용하는 기법인데 이것은 석사과정임.
    파이썬에 라이브러리있긴있는데 해보고 싶으면 해볼것.

- 결론
다음 정기 스터디인 4/16(토)까지 해당 학습 내용을 적용해보고, 더 응용하여 다른 feature engineering 적용해보기


● 2022/04/16(토) : 스터디 소요 시간 2시간(엘리스 플랫폼 2시간)

- 학습 내용

  1. 공통 내용
  • 수치형 변수와 범주형 변수 구분하고 의미있는 데이터 파악
  • 결측값 해결
  • 다중공선성에 관련에서 아에 없애거나 묶어주거나 그냥 두거나 등 많은 방법이 나왔는데 이는 모델링 후에 적절하게 조정 필요
  1. 평방피트 피처를 주거유형으로 대체할 수 있는지 확인해보기(현정님 참고)
  2. 일반적인 IQR 이상치 제거가 아닌 isolationforest를 통해 이상치 제거하기(일도님 참고)
  3. one-hot encoding을 사용하면 피처들이 기하급수적으로 많아지기 때문에 binary encoding 사용하기(준석님 참고)
  4. 수치형 변수를 활용하여 파생변수 만들기(1층 평방피트 + 지하실 평방피트 => total평방피트)(준석님 참고)
  5. 위 내용과 비슷하지만 여러개의 변수(scale이 다른것도 포함)를 하나로 묶어주는 조건부 추출/표준화/정규화로 파생변수 만들기(다현님 참고)
  6. 시계열 데이터를 만들어서 더 깊게 분석해보기 (YearBuilt 대신 YrSold를 활용하여 계약 시 집의 나이를 파악 가능)(일도님 참고)
  7. one-hotencoding 후 MSSubClass 는 encoding되지 않아서 타입 object로 변경하기(가현님 참고)

- 결론

  1. 프로젝트 기간으로 현재 정기 모임 토요일이 프로젝트 시간이므로 변경 필요 -> 토의
  2. 다음 스터디 까지 위 내용을 실험하고, 타겟과 연관이 깊은 수치형 변수와 범주형 변수 파악하거나 끝낸 분들은 모델링까지 진행하여 정확도 확인

3주차

● 2022/04/25(월)

- 학습 내용

  1. 모델링 중간 점검

- 결론

  1. pycaret 오류떠서 못하는 issue
  2. Ridge, Rasso 회귀 모형으로 적합하였으나 accuracy 0.91 이상을 넘지못하였음. -> 1500등 기록
  3. 앙상블 모델 적용 필요
  4. 웹사이트 프로젝트 기간으로 4월 19일~ 5월 7일까지 스터디 휴식

- <04-21 오피스아워 내용 정리>

  1. <학습시킬때 주의사항> label이 있는 train을 예를 들어 8:2로 나누어 train-val 로 나누어 한번만 검사해볼것이 아니라 cross validation(5,8번검사 후 평균내기)을 통해 가장 잘맞는 모델을 찾아봐야할것임.

  2. <과적합 어떻게 판단?> train 데이터의 saleprice는 관계자만 알고 있으니 과적합되었는지 확인할 수 없음. 그래서 idea는 train, test 의 saleprice가 분포가 비슷하면 비슷한 특징을 가진 데이터라는 뜻이니 두개의 분포를 비교하면 되지만 캐글에서는 정답을 공개하지 않으니 우리는 이 아이디어를 이용해서 피처들의 분포를 봐야함. 즉, train 피처들의 분포 , test 피처들의 분포가 비슷하다면 과적합이 발생하지 않을것임

  3. <평가지표를 어떻게 보는지> ex) Ridge - train_score : 0.940791, test score : 0.914768

으로 나오면 train_score은 별로 안중요함. 우리가 봐야할것은 여러번 검사(CV)후 평균낸 test_score값!!

  1. 범주형의 시각화 barplot, boxplot말고 mosaicplot으로 대체하기, 다른 방법도 있으니 구글링

  2. 년도별로 범주형자료들을 시각화하기 x축을 년도로 놓고 히트맵으로 그리기

4주차

● 2022/05/9(월)

- 학습 내용

  1. 이상치 처리, 결측값 처리, 데이터 타입변경 좀 더 세심하게 변경하였음.
  2. 파생변수 더 많이 생성
  3. 앙상블 모델 (Extra tree, Bagging, Gradient) 사용

- 결론

  1. 1500등 -> 1200등 -> 107등까지 기록
  2. House-price prediction 프로젝트는 여기서 마무리하기로
  3. 다음 시간까지 데이콘+캐글 합해서 computer vision 또는 NLP 대회 나갈 것 한 개씩 골라오기

5주차

● 2022/05/16(월)

- 학습 내용

  1. NLP 와 CV 중 CV를 하기로 함. -> 3차 프로젝트를 대비해서
  2. 데이콘 수화 MNIST 분류 대회로 다수결로 결정 https://dacon.io/competitions/official/235896/overview/description

- 결론

  1. 다음 시간까지 엘리스 학습 내용을 바탕으로 모델링 해볼 수 있는데까지 최대한 해오기

6주차

● 2022/05/23(월)

- 학습 내용

  1. 과적합이 너무 심하게 일어남. 이미지 화질을 28by28로 줄이기로 결정
  2. test set의 정확도가 0.16밖에 나오지 않는데 split을 할때 버그를 발견함. 직접 데이터를 split하지 말고 keras validation_split사용하기!
  3. validation_split에서 자꾸 오류발생 conv2d에서 array형태를 못 받아오는 것같음. tensor로 형식 바꾸거나 Dense로 바꾸기

- 결론

  1. 다음 시간까지 submission까지 해보기

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published