250415
🌠오늘 느낀 점
👉 데이터 분리의 중요성과 타당성 : 수능에 있어서는 모의고사 잘보는 것도 중요하지만 그건 트레이닝일 뿐 모의고사와 동일하게 나오는 수능은 없으니 결국 여러 수능을 일반화한 지식을 갖춰야한다. 모의고사 학습을 통해서는 교훈을 얻어야 한다. 모의고사를 잘보는 건 목표가 아니다. 수능에 적합한 뇌구조를 확보하는 게 목표다. — 머신러닝 모델에게도 똑같이 적용되는 것 같다.
👉 데이터 전처리 통일의 중요성 in 공동 프로젝트 & 학습데이터와 테스트 데이터 : 지금까지 프로젝트 할 때 각자의 프로그램으로 실습하다보니 전처리는 모두 달랐고 함수화(?)한 것은 아무것도 없었는데, 앞으로는 vscode나 conda를 다같이 통일해서 이용하면서 해야겠구나 싶었다.
👉 모듈화 가능한 작업을 하자: 모듈화, 재사용, 간소화가 가능한 코드를 써야 여러 면에서 좋다. 데이터 분석을 위한 파이썬 작업의 기본 원칙인 것 같다. 저번 '파이썬 기초 프로젝트' 결과물에 튜터님들께서 피드백 달아주신 거를 아침에 확인했다 (코드 함수화 하라는 팁). 오늘 수업에서 프로젝트 전에 미리 전처리 코드나 환경 통일하라는 말씀 주셨는데, 공교롭게도 오늘 아침에 확인한 피드백에도 유사한 내용이 있었어서 인상 깊었다. 조언 중 함수화를 하면 좋겠다고 언급해주신 걸 생각하고 있었기 때문이다ㅎㅎ ( 자주쓰는거랑 통일해야할거는 def 해서 함수로 만들으라는 말씀인 걸로 이해하고 있다.) 앞으로 있을 팀프로젝트에서는 이런 환경설정 부분에서부터 현업에서처럼 팀웍 하는 연습을 해야지! 결심하였다.
(그러고보니 함수 라이브세션 복습해야하는데 . ㅎ 지금 머신러닝의 바다를 타고 멀리 나와버려서 어려울지도.. 나 지금 태평양으로 나와버렸는대..)
그 외, 피드백 결과가 내 생각보다 (??) 좀 좋았다. 친절하게 써주신게 아닌가? 싶긴 하다. 최종결과에서 더 나아갈 수도 있다고 생각했기 때문이다. 그래도 몇 부분을 수정하면 현업에서도 쓸 수 있는 목표가 명확하고 과정이 투명한 데이터 분석이었다~라는 느낌으로 보신 것 같아서... 다행이라고 생각했다!! 왜냐면 그 부분에 이상없게 프로젝트 하려고 노력했기 때문이다. 보람이 느껴지는 부분이었다. 그리고 나또한 약간 문제라고 생각했던 부분에 해결책을 얻었다. 모든 팀원의 환경이 달라 기초코드가 다를 수밖에 없었었다. 맞춰야되나? 고민은 다들 했을 것 같다. 그치만 각자 익숙한 방식이 있는데 너무 새로운 환경에 노출되면 또 적응하는 시간이 걸리다보니 마음이 조급해서? 나는 어쩔수 없다 생각하고 넘겼는데, 그렇게 해보니까 초반부 코드 작성할 때 일사불란하고 통일성있게 진행하기 어렵다는 걸 체감했다. 이 부분 어떻게 해결하면 되는지 알려주셔서 감사했다. '함수화를 이러라고 하는거군!' 싶게 경험을 통해 와닿게 알 수 있는 좋은 기회였다.

🎯 오늘 우선순위 3개
머신러닝 라이브세션 분류(Classification)특강 듣고 복습 ✔️
> SQL 스터디✔️
> 머신러닝 인강 4강까지✔️
오늘 공부의 QnA
| 훈련과 테스트 데이터의 차이? | 훈련은 학습용, 테스트는 평가용 (절대 fit() X) |
| 테스트 데이터에도 EDA와 전처리 해야 하나? | 훈련 데이터와 동일한 방식으로 전처리 적용해야 함. 같은 조건 세팅. |
| validation 후 학습 데이터와 합쳐서 훈련해도 되나? | 원래 그렇게 함(?). 최종 모델을 만들 때 validation 합쳐서 학습 가능. |
| 다항 회귀는 왜 필요? | 데이터가 곡선처럼 휘어져 있는 경우, 선형 회귀보다 예측을 잘해서. |
⌛오전 시간활용 기록
| 09:00~09:30 | 📝 SQL 코드카타 문제 풀이 | 낼부터는 ☠️💎 3,7,30일 전 주기적 복습 🪢 ☠️ 고정! 이때 어차피 스크럼도 하고 계획표도 쓰니까, TIL읽고 개요 작성과 주기적 복습도 한번에 하면 되겠다. |
| 09:30~10:00 | 🙋🏼♀️ SQL 오답 체크, 오전스크럼 10분 | ☠️💎 3,7,30일 전 주기적 복습 🪢 ☠️안하면 죽음 뿐이라는 의미의 이모지다. |
| 10:00~11:00 | 🤖 머신러닝 라이브세션 분류(Classification)특강 | |
| 11:00~12:30 | 🧠 수업 요약 정리 + 시각적 도식화 정리 | |
| 12:30~1:00 | lunch 걷기 |
⌛오후 시간활용 기록
| 13:30~14:30 | 🤖 머신러닝 강의 3강 듣기 | 개념 핵심만 필기 정리 왕빠르게 |
| 14:40~16:00 | 🤖 머신러닝 강의 4강 듣기 | 낼부터 2:00-3:00📝SQL 문풀 스터디 고정! |
| 16:00~16:40 | 📰 아티클 스터디 | A/B테스트 목적적합하고 정확하게 하는 법 |
| 16:50~17:30 | dinner 이른 저녁식사 | |
| 17:30 ~19:00 | 🧠 강의 내용 백지 복습 + TIL 초안 메모 | |
| 19:00~ 20:00 | 🐍 파이썬basic반 라이브세션 (판다스, 빅분기 문풀) | |
| 20:00~20:20 | ✍️ TIL 정리 | |
| 20:20~20:45 | 🙋🏼♀️ SQL 스터디, 오후스크럼 | |
| 20:45 ~22:30 | 🧠 주기적 복습 🧘일자일일 준비하고 잠 |

🧠공부메모
📚 1. 머신러닝 라이브세션 분류 특강 🤖
📌 핵심:
- 여러 모델 학습시켜보고 결과 비교 후 가장 나은 걸 골라도 된다.
- 데이터 EDA 부터 잘 해야 이후에도 차질이 없다.
- 실제로 쓸 수 있는 모델이어야지 공부만 열심히 해서 과적합 된 모델이면 안된다.
- 전체 데이터를 나눈다: 학습용, 검증용, 테스트용
- 훈련용 데이터 (train set) 로 모델 학습 시키고 --> 중간 점검용 데이터(Validation Set)로 중간 테스트 본 후 재학습을 하여 향상시키고--> 테스트 데이터 (test set) 로 유일무이 단 한번의 실전 테스트를 한다. (이건 공개되면 안 되는 올해 수능이라 볼 수 있음..(그래서 fit을 쓰면 안됨. fit은 오직 학습용...)
- Validation에서 성능이 가장 좋은 모델을 선택하는 것. 이때 최적의 하이퍼파라미터를 찾고, 모델 구조도 정착함.
📌 새로 안 것:
- 모델 개발 시 데이터 분리 철저히 해야 함.
- 전처리 기준도 일관성을 지켜야 함.
- 데이터 분리를 '수능' 비유로 정리보고 이해가 잘 됐다.
🔵1. 분류파트 새로 안 기초개념
🧩 분류란?
지도학습의 한 종류.
입력 데이터(X)와 정답(Y)이 있는 학습 방식.
그중에서도 분류(Classification)는 범주형 값을 예측함.
🧩 하이퍼파라미터란?
:머신러닝이 공부할 때 쓰는 설정값
🧩 튜닝이란?
:이 설정값을 조금씩 바꿔보면서 제일 좋은 조합 찾기
🔵2. 분류에서 쓰는 알고리즘 숙지하기
| 알고리즘 | 기본개념 | 특징 |
| 로지스틱 회귀 | 선형결합 + 시그모이드 | 해석 쉬움, 정규화 필수 |
| KNN | 가장 가까운 K개 이웃의 다수결 | 느리지만 직관적, 정규화 필수 |
| SVM | 마진 최대화 + 커널 트릭 | 복잡한 경계, GridSearch 추천 |
| 결정트리 | if-else 분기, 정보이득 | 해석 쉬움, 과적합 주의 |
| 랜덤포레스트 | 여러 결정트리의 앙상블 | 성능 우수, 중요도 추출 가능 |
| Gradient Boosting / XGBoost | 순차적 오류보완 학습 | 성능 최고, 과적합 주의 |
- 스케일링 필수: KNN, SVM 등 거리 기반 모델은 정규화나 표준화 해줘야함.
- 범주형 인코딩: 원핫 인코딩이나 레이블 인코딩으로 적절하게 바꿔주자.
- 불균형 데이터 처리: 언더샘플링, 오버샘플링, 가중치 부여 등 작업해줘야 함.
🔵 4. 모델 성능 평가 기준
머신러닝이 잘 작동하는지 알려면 아래 항목들을 잘 봐야한다.
| 지표 | 의미 | 사용예시 |
| 정확도 (Accuracy) | 전체 중 맞춘 비율 | 시험에서 90점이면 90% 정확도인 것 |
| 정밀도 (Precision) | 양성 예측 중 진짜 양성 비율 | 스팸메일이라고 했는데 진짜 스팸일 확률 |
| 재현율 (Recall) | 실제 양성 중 잘 맞춘 비율 | 아픈 사람 중에서 아픈 걸 잘 찾았는지 |
| F1 Score | 정밀도-재현율 조화 평균 ( 정밀도 + 재현율 둘 다 잘한 정도) | 둘 다 중요할 때 ( 똑똑하고 착한 사람 점수처럼 둘 다 중요) |
| AUC-ROC | 모든 threshold에서 종합 성능 | 모델 비교에 유용 |
🔵5. 훈련과 테스트의 중요한 차이점❣️
훈련 잘했다고 해서 테스트도 잘 되는 건 아님!
왜?? 과적합 이슈가 있을 수 있다. 따라서 테스트는 꼭! 훈련과 별도로 해야함!!!
🧩❣️실무 예시 순서.
- 데이터셋 분리 먼저 (Train, Val, Test용으로)
- 다양한 모델 실험하고 → Validation으로 최고 성능 모델 선택
- 그 모델 구조 그대로
- Train + Validation 전체로 학습 → 최최종 모델 생성
- Test Set으로 마지막 한 번만 성능 평가 함
⚠️ ❣️ 주의! 위와 같이, 훈련과 평가를 명확히 구분해야 함. 학습과 테스트 시에 순서 지켜야 함.
- Test Set은 절대 학습에 사용하지 않음! 마지막 단 1번만! 성능 확인용!
- Validation은 튜닝과 중간확인용이라, 나중엔 학습 데이터로 다시 포함시켜도 됨...
🧩❣️ 데이터셋 분리 이해를 위한 나만의 예시.
- 해본적이 없으니 안와닿아서 사람의 공부라고 생각하고 수능 공부에다가 찰떡콩떡으로 비유해서 상상해봄...ㅋㅋㅋ
(하다보니 너무 하이퍼 리얼 비유를 하게되는데...ㅋㅋ)
| 훈련데이터 | 모델이 공부하는 단계. 정답을 보면서 훈련한다. | 모의고사 풀면서 아 이게 수능이란 것의 형식이구나 하면서 학습한다. 구조와 유형을 익힌다. |
| 검증데이터 | 훈련 도중 성능을 점검하고, 하이퍼파라미터를 튜닝한다. 이를 통해 과적합은 아닌지 미리 좀 힌트를 얻을 수 있음. | 시험 전에 성적 예측하는 과정이다! 전년도 수능점수, 해당년도 6월과 9월 평가원 모의고사 결과를 잘 살펴보면 약 두달 후 수능 점수가 어떨지 대충 예측이 된다. (내가 학생이던 당시에 수능은 6평보다는 같거나 높게 나오고 9평보다는 덜나온다...라는 미확인가설이 떠돌았는데 말이다..) over... 과적합인지 못미치는지 확인: 현재 내가 평가원의 의도를 잘 간파하면서 하고 있는지, 어떤 사설 모의고사 혹은 지엽적이고 고난도 문제에만 편향된 방향으로 가고 있지 않은지, or less...: 아님 그냥 공부가 넘 부족하진 않은지를 점검해야 한다! |
| 테스트데이터 | 모델 최종 실력 평가 (공정하고 의미있는 평가를 위해 임포트 구문, 전처리 과정은 모두 동일하게 해줘야하며, '달라야 하는 부분'만 달라야함!) |
올해 실제 수능 시험보기. 문제는 새거지만 형태는 수능그자체여야 함. 공지 없이 수능에서 원칙을 바꿔서 낸다? 그건..사기다! 학생들 단체로 저항! 봉기! ㅋㅋㅋㅋㅋ 👉 모의고사 형식처럼 수능이 나오지 않으면, 훈련했던 의미가 없다. 이런 느낌!!! |
이렇게 하고 나서 또 튜닝이 계속 반복되지 않을까 싶음....
아무쪼록 과적합을 벗어나 일반화를 잘 하는 모델이 되어야 함.
🧩 이때 코드 주의 ⚠️
옳은 방법: 훈련 데이터로 fit(), 테스트 데이터엔 transform()만 → 비유하자면 모의고사 방식 그대로 실제 시험을 보는 것임
잘못된 접근: ⚠️ 테스트 데이터에 fit() 써버리기~ ⚠️ → 왜?
시험지 미리 훔쳐본 것처럼 됨. 학습해버림. 진짜 실력 테스트 아님. 테스트 결과또한 나와봤자 무의미함.
🔵6. 혼동행렬 (Confusion Matrix)
예측 결과를 네모 칸으로 나눠서 보는 표
| 예측 ↓ 진짜 → | 사실은 yes | 사실은 no |
| yes 로 예측 | TP (굿) 살 것을 옳게 예측함. 마케팅 성공. | FP (잘못들어옴) 안살 사람한테 광고를 하는 등 예산이 낭비됨 |
| no로 예측 | FN (놓침) 살 사람이었는데 못 알아챔. | TN (굿) 잘 제외해서 예산 잘 아낌 |
🧩 예측에 근거해 예산을 투자한 타겟 고객들 중에 실제로 산 사람들 비율은 어느정도인가? => 재현율
🧩 실제로 산 사람들 중에서 모델이 맞게 캐치한 비율이 어느정도인가? => 정밀도

📚 2. SQL 스터디
🔵오늘은 안했음. 어쩌다보니 다른게 급해서 또 안해버렸네!!
📚3. 머신러닝 인강 4강까지
내용이 엄청 많아서 일단 어떤 챕터에서 무엇을 다루는가를 이해하는 데 집중하면서 빠르게 들었다.
요약은 3강까지.. 4강 듣다가 말았다.
🔵2강 머신러닝 전처리 실습한거 요약
1. 기본 준비
- numpy, pandas: 데이터 생성 및 조작
- sklearn, imblearn: 스케일링, 인코딩, 불균형 처리
- statsmodels: 다중공선성 확인용 VIF 계산
2. 더러운 데이터 일부러 만들기 (?)
- 가상 데이터 생성
- 숫자형: num1, num2
- 범주형: cat_col
- 날짜형: date_col
- 타깃: target (불균형하게... 1이 10%, 0이 90%)
- 본격 더럽히기!
- 결측치: 랜덤 행에 NaN 삽입
- 이상치: 평균 + 8~10배 표준편차로 극단값 삽입
3. 결측치 처리
- 행 제거: df.dropna()
- 평균, 최빈값으로 채우기: .fillna(df.mean()), .fillna(mode)
4. 이상치 제거
- 표준편차 방식: 평균 ± 3*표준편차 벗어나면 제거
- IQR 방식: 사분위수인 q1, q3 범위 벗어나면 제거
5. 스케일링 (정규화, 표준화)
- StandardScaler: 평균 0, 표준편차 1
- MinMaxScaler: 0 ~ 1 사이로 맞추기
- 거리 기반 알고리즘(KNN, SVM 등)에서 필수!
6. 범주형 데이터 처리
- LabelEncoder: A, B, C → 0, 1, 2
- get_dummies: 원핫 인코딩 (열을 여러 개로 쪼개서 0/1)
7. 파생 변수 만들기
- 날짜 → year, month, 요일, 주말 여부
- 수치 조합 → num1 + num2
8. 다중공선성 확인 (중복 변수 제거 판단용)
- corr(): 상관관계 확인
- VIF: 10 이상이면 공선성 의심
9. 불균형 데이터 처리 (SMOTE)
- target의 소수 클래스(예: 불량 상품)가 너무 적을 경우 사용
- SMOTE()로 인위적 데이터 생성하여 클래스 균형 맞춤
🧩 전처리하는 목적 (잘 안되면 결과 이상하게 나오거나 오류 나옴)
| 결측치 처리 | 데이터 손실 방지 / 왜곡 방지 |
| 이상치 제거 | 극단값으로 인한 오차 방지 |
| 스케일링 | 거리 기반 모델 정확도 향상 |
| 인코딩 | 문자열 → 숫자로 모델이 이해하게 바꿔주기 |
| 파생 변수 | 모델 성능 개선용 피처 추가 |
| 불균형 처리 | 소수 클래스 분류 성능 향상 |
🔵3강 : 회귀
다항 회귀란?
직선으로는 안 되는 걸, 곡선으로 해결하는 것.
📈 1. 선형 회귀
- 공부 시간이 늘수록 점수도 오르는 경향 → 직선으로 표현함
🎢 2. 그런데 현실은 다를 수 있음
- 처음엔 공부 시간 늘면 점수가 확 올랐지만
- 중간 이후에는 정체기가 올 수 있음.
- 그래서 곡선이 필요함
--> 이럴 때 필요한 게 다항 회귀
1차 말고, 2차나 3차 함수같이... 여러 번 꺾이는 곡선임.
🧩 규제 (Regularization) 기법🔒
필요 없는 정보는 줄여주자! 너무 외워서 오답이 많아지면 릿지/라쏘로 규제
✅ Ridge
- 모든 변수는 쓰되 너무 큰 가중치는 주지 말자
- 모든 특성을 조금씩만 쓰는 모델
✅ Lasso
- 쓸모없는 변수는 그냥 0으로 만들어버리자
- 변수 선택 기능이 있음!
🧩 예 예측이 얼마나 잘 됐는지 확인하는 지표임
| MSE | 평균 제곱 오차 | 예측이 실제보다 얼마나 많이 틀렸는지 (틀린 정도 × 틀린 정도) |
| MAE | 평균 절대 오차 | 예측이 실제보다 평균적으로 얼마나 벗어났는지 |
| RMSE | MSE의 루트라는 뜻 | MSE보다 좀 더 부드러운 오차 평가 |
| R² | 설명력 | 1에 가까울수록 모델이 잘 예측하고 있다는 뜻임 |

📚 5. 🐍 파이썬basic반 라이브세션 (판다스, 빅분기 문풀)
간만에 판다스 메서드들 복습할 수 있는 기회였음. 그래도 몇번 봤다고 이제 눈에는 익는 것 같다.
튜터님이 문제푸는 사고방식을 보면서 배우는 게 있었다.
언젠가 나도 빅분기 시험을 보게 되겠지?

📚 4. 주기적 복습
어제 노션을 해당 일자 앞뒤로도 좀 많이 봤고 대신 til에 적어놓은거는 별로 못읽었었기 때문에 오늘은 주기별 til을 읽고 왔다.

🐱👤생활관리
날씨 : 2025년 이구역 최고의 날씨였다...☀️🪟
컨디션 : 좋음, 어제보단 안좋음. 어제 할 거 많아서 늦게 자가지고 피곤하다...
고민: 할게 많아서 일찍 자는게 어렵다. 첫날의 수면량을 줄이더라도 오전에 일어나서 햇빛 규칙적으로 보고, 할일을 오전에 싹 쳐내야 취침시간을 앞당길 수 있다.

끝.