Til 230613
Today I Learned 2023-06-13
- 목차 -
오늘 공부한 것은 다음과 같습니다.
1. CatBoost 간단한 개념
2. 데이터 파이프라인에 대해
3. KNN Imputation
4. 머신러닝 코드 실습
5. 만들다 스터디
6. 머신러닝 어드밴스 복습
1. CatBoost 간단 개념
- 머신러닝의 맥을 잃어버린 상태이고, 그렇다고 완전히 수업을 안들을 수가 없어서 우선 수업을 들었습니다.
- TIL 적으려고 보니 아무것도 기억나지 않네요. 녹강을 통해서 다시 한 번 리마인드 했습니다.
- CatBoost는 카테고리컬 피처에 대한 학습 잘되어 카테고리 많을 수록 성능 좋다는 것, 하이퍼 파라미터 튜닝이 잘 되어 있어서 튜닝에 공을 덜 들이고 쓸 수 있다. GPU에 최적화 잘 되어 있다는게 가장 큰 특징으로 보입니다.
- 실습을 통해 하이퍼 파라미터 튜닝을 함께 해볼 수 있을거라고 했는데, 우선 실습은 어려울듯 하고, Pdf자료를 중심으로 실제 사용을 해보는 것으로 학습하면 될 것 같습니다.
- CatBoost의 경우 cat feature가 50% 이상일때 사용하면 좋다!
- CatBoost, XGBoost, LightGBM같은 Ensanble 모델은 많이 써보고 결국 Hyper Parameter Tuning을 할 줄 알아야 한다!
2. 데이터 파이프라인에 대해
- TOSS의 IT conference SLASH22에서 발표된 데이터 수집 - 정제 과정을 배웠습니다. 이는 머신러닝의 진행 과정에서 가장 첫번째 과정으로, 어쩌면 머신 러닝에서 가장 중요한 과정이고, 학습과 회귀/분류를 통한 예측치의 SSE를 가장 줄이는 데에 가장 큰 영향을 미치는 과정입니다.
- Data Lake, Data Warehouse, Data Mart라는 개념이 재미있게 느껴졌습니다. (데이터의 수집과 활용의 흐름을 물류 유통의 물리적 흐름을 본따 표현했다는 점에서)
- 나중에 영상을 한번 볼 수 있으면 좋겠네요.
3. KNN Imputation
- K-Nearest Neighbor : 하나의 기준 값에서 가장 가까운 값을 찾아내는 계산법.
- KNN Regression : 하나의 쿼리(요청) (ex) 나랑 가까운 스타벅스 5곳. 에 답하는 회귀모델
- KNN Imputation : 데이터에서 결측치를 처리할 수 있는 여러 방법 중 하나. KNN Regression을 통해 결측치 Imputation할 값을 찾는 작업
- KNN에서 두 값의 거리를 찾는 두 가지 방법 : Euclidean distance vs Cosine similarity : 들을때는 대략 이해 되었는데 다시 들어야 할것 같습니다. - 다른 정의 (블로그 등) 통해 이해해보기
4. 머신러닝 코드 실습
- 실습 수업을 못들었다 보니 모르는게 너무 많았습니다.
- 그래도 중간 중간 구글링을 통해 evaluation metric의 사용 방법 등은 찾아서 결과값을 돌려보는 것까지는 가능했습니다.
- 그러나 XGBoost는 돌려보지 못했습니다.
- 선생님이 공유해주신 파일을 참고로 다시 실습해 볼 예정입니다.
5. 만들다 스터디
- 약품명을 구글링을 통해 엑셀로 받을수 있는 찾았습니다. 식품의약품안전청에서 운영하는 사이트였던것 같습니다. 현재 허가된 의약품 정보 5만개 정도를 얻을 수 있었습니다.
- 선민님의 도움으로 5개로 나누어진 엑셀 파일을 판다스를 통해 하나로 합치고, 여기에서 약품명만을 추출하고, value를 python의 split, strip function을 통해 전처리하였습니다.
- for문에 대한 이해, 판다스, 파이썬에 대한 내용이 뒤죽박죽이 되어 이해하는데 시간이 걸렸습니다. 선민님의 가이드를 통해 감을 잡을 수 있었습니다. 선민님꼐 다시 한 번 감사를…
- 선민님의 추천 : 매일 프로그래머스 코테 4개씩! 코드를 쓰면서도 판다스와 파이썬의 기능을 잘 구별해서 사용해야 한다!
6. 머신러닝 어드밴스 복습
- 겨우 첫 수업 리뷰를 마쳤습니다. 내일은 두 번째 수업 리뷰에 들어갈 예정!
- 우선 필기도 하지 않고, 선생님 설명을 이해하는데 집중했습니다.
- 배운 것 : 머신 러닝의 목표는 종속변수 y와 독립변수 X의 관계를 찾아 y hat을 예측하는 것. 여기에서 weight는 독립변수 X와 종속변수 y의 관계를 설명할 수 있는 가중치. 우리의 목표는 Error를 줄이는 것. SSE(Sum-of-Squared Error)의 값을 최소화 하는 w를 찾는게 우리의 목표. Linear Regression은 머신러닝에서 가장 쉽게 사용할 수 있는 회귀분석 방법. Gradient Descent Algorithm을 통해 SSE(Loss Function)을 최소화하는 W를 찾을 수 있다. Gradient Descent Algorithm은 w에 w를 편미분한 값과 Learning rate를 곱한 값을 계속 찾아나가 그 값이 최소가 되는 값을 찾는 알고리즘. 그래프로 보면 w가 x축이고 y축이 y인 그래프에서 y값이 최소인 w를 편미분을 통해 방향을 잡아 탐색하는 방법.
- 수식으로 복습해야 한다는데 도무지 감이 안잡힙니다. 그렇다고 수학으로 돌아가기에는 너무 먼길. 우선은 고통스럽더라도 넘어가고 반복하고 넘어가고 반복하고 받아들여질때까지…
앞으로 과제
1. 이어드림 과정
* 미니프로젝트 두번째 IC을 잘 해보자! (EDA, 머신러닝 라이브러리 사용(하이퍼 파라미터 튜닝)을 중심으로)
* 플러스 알파로 자동차 가격 측정 사이드 프로젝트로 진행 (마찬가지로)
* 무분별하게 복습하기 보다는 위 두 프로젝트를 하면서 앞 과정에서 필요한 것을 반복 학습하는 것을 전략으로
* 수학에 발목 잡혀서도 안되지만 수학을 스킵하는 것도 불가능 하므로, 저녁시간 중 1-2시간을 수학에 할애하기로 하고 책을 구매했습니다.
2. 만들다
* 코딩테스트 하루 4개
3. 기타
* 6시 출근 : 1시간 독서, 2시간 논문 리서치