기간 : 9/22 ~ 9/26
ML 프로젝트로 하얗게 불태운 한 주
📕 6주차 리뷰
드디어 과정이 딥러닝에 들어갔다. 개요는 적당히 이론적이고 간단한 내용이라 괜찮았지만 이제부터 정신을 팍 차리지 않으면 큰일날 듯하다. 예전에 딥러닝을 재밌게 배웠기 때문에 조금 기대도 된다.
9/24 수요일 인생 두번째 PCCP가 있었다. 핑계라면 핑계겠지만, 지난 달 시험 이후 수업일정과 프로젝트만으로도 너무 바빠서 코테는 사실상 유기하고 있어서 전혀 문제풀이도 하지 못하고 있었다. 그런 상황에서의 2회차 시험은 그냥 첫번째 때의 도돌이표였다. 그나마 고무적인 건 이번엔 3번 문제를 풀었다는 것. 그 대신 1, 2번을 못 풀었다 😒
✅ Keep
틈틈히 선형대수 자료를 계속 들여다보고 있다. 그냥 이건 이렇다, 이건 이러해서 이렇게 된다 정도로만 알아도 실무 기술은 배우겠지만, 단순히 외우는 것과 이해하는 것은 다르니까.
현재 배우는 과정이 머신러닝 이후로는 사실상 수학이나 다름없는 과정이라 수학적 백그라운드를 놓치지 않기 위해 계속해서 선형대수를 붙잡을 생각이다.
볼 때마다 대학에서 이걸 어떻게 영어수업으로 들었지? 싶다. 20대 초반의 나는 천재였나봐.
💥 Problem
1. 차원 축소
데이터의 차원이 너무 높으면 희소성이 높아지고 패턴 탐지가 저하된다. 필요한 만큼 차원을 버릴 필요가 있다.
- PCA : 데이터의 분산을 가능한 보존하면서 데이터를 선형 변환
- 데이터의 공분산(Co-variance) 행렬을 고유분해(= 대각화)
- 고윳값이 큰 순서대로 고유벡터를 선정해 해당 벡터를 주성분으로 선택
- 주성분을 고정하여 새로운 축으로 변환
🚨 PCA를 처음 배울 땐 "분해가 안되는 행렬도 존재할텐데?"라는 생각부터 들었는데, 사실 그럴리는 없다.
공분산 행렬은 그 특성상 대칭행렬이므로, 무조건 분해가 가능하고 고윳값과 고유벡터가 항상 존재한다.
그냥 데이터프레임에서, 서로 상관도가 높은 컬럼들을 추리고 결합해 복합 컬럼을 만든 후, 거기서 데이터 분포가 가장 퍼져있는 순으로 뽑아낸다는 것이다. 필요없는 컬럼을 아예 쳐내고 데이터의 값을 수정하는 EDA와는 비슷한듯 다르다.
그 외에 분류 지도학습에 쓰이는 LDA
비선형 다양체를 저차원으로 변환할 때 쓰는 LLE
등이 있다.
2. DBSCAN
개념은 단순한데 특이사항으로 predict와 transform을 가지지 않는다.
- predict : 새로운 점이 들어오면 가장 가까운곳에 던져넣으면 되는 KNN과 달리, DBSCAN은 명확한 기준점이 없어 새로운 점이 들어왔을 때 그 점만으로 예측이 불가하다.
- 그 새 점을 포함하고 다시 처음부터 계산을 싹 돌려서 예측할 수는 있다. 근데 이러면 그냥 fit이지 predict가 아니다. 그래서 이 역할을 fit_predict가 해준다.
- transform : 공간을 변환하거나 내부적인 행렬을 생성하는 다른 모델들과 달리 DBSCAN은 군집화된 레이블만 산출하므로, 적용할 대상이 없다.
3. 가우시안 혼합(GMM)
데이터가 가우시안 분포(정규분포의 고차원 버전)를 이룬다고 가정하고 군집화
- K-Means : 데이터가 특정 군집에 완전히 속한다고 판정 → Hard Clustering
- GMM : 데이터가 특정 군집에 속할 확률을 기반으로 소극적 군집화 → Soft Clustering
더 유연하고 확률을 기반으로 변수 판단이 가능하지만, 애당초 가우시안 분포를 가정하고 있어서 분포가 이상한 데이터라면 꽝.
4. 교차 검증
K-Fold
데이터를 여러 개 쪼개서 한 덩어리를 테스트, 나머지를 학습용으로 쓰는 것.
train_test_split + fit 여러 번 돌리는 거랑은 무슨 차이일까?
- train_test_split은 무작위성이 너무 커서 샘플링 편향 문제가 있지만, K-Fold는 데이터를 균등하게 나누고, 또 모든 데이터가 학습과 테스트를 거쳐갈 것을 보장한다.
GridSearchCV
모든 파라미터 조합을 그리드처럼 나열해놓고 하나 하나 다 돌려보고 최적의 것을 뽑아내는 모델.
검증이 아니라 하이퍼 파라미터 튜닝에 목적을 두고 있으므로, GridSearch 과정에서 K-Fold 등의 다른 검증 도구를 쓸 수 있음.
5. 정밀도 vs 재현율
과일 바구니에서 '사과' 찾기
정밀도와 재현율의 공통 목표 "사과를 얼마나 잘 찾아내는가?"
- 정밀도 : 사과라고 답한 것 중 진짜 사과인 것 → 모델이 적어도 자기가 주장한 것에 대해 얼마나 보장하는가?
- 바구니에 사과가 얼마나 남았는지는 상관없다. 모델이 뽑은 것 중 사과의 비율.
- 재현율 : 전체 사과 중 모델이 찾은 것 → 모델이 사과에 대해 얼마나 잘 아는가?
- 모델이 사과라고 주장한 게 전부 사과라 해도, 만약 바구니에 사과가 여전히 남아있다면 그건 실패
- 바구니에 들어있는 사과는 모두 찾아야지
- 이 모델에게 사과 찾기 업무를 시켰을 때 항상 믿을만한 결과를 재현할 수 있을까?
🚩 Try
코테를 좀 더 풀어봐야겠다... 라고 생각은 하지만 여전히 막막하다. 대체 시간이 언제 생길까?
딥러닝 관련 영상을 많이 찾아봐야겠다. 수업에서 진도를 나가기 전에 해당 파트에 대한 내용을 미리 머리에 대강이라도 집어넣어 놔야겠다.
이제 또 2차 프로젝트 준비를 해야 한다... 연휴가 길다고 방심하지 말자. 컴퓨터라는 바보상자를 학습시키는 건 하루 아침에 되지 않는다.
'SKN 19기' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 8주차 회고 (0) | 2025.10.18 |
|---|---|
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 7주차 미니 프로젝트 회고 (2) | 2025.10.06 |
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 5주차 회고 (0) | 2025.09.24 |
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 4주차 회고 (0) | 2025.09.14 |
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 3주차 프로젝트 회고 (0) | 2025.09.06 |