카테고리 없음

[내일배움캠프-본캠프] QA/QC 26/06/22

dudgus4943 2026. 6. 22. 20:57

✏️ 01. 학습 (Training): 모델이 '정답'을 찾아가는 과정

"학습의 핵심은 '내가 얼마나 틀렸는가'를 스스로 아는 것부터 시작합니다."

① 손실 함수 (Loss Function) : "현재 모델이 얼마나 틀렸나?"

모델이 예측한 값과 실제 정답 사이의 차이(오차)를 수치화하는 함수입니다.

  • 공정 비유: 제품 설계 치수와 실제 생산된 치수 사이의 '오차'와 같습니다. 당연히 이 오차 값이 0에 가까울수록 모델의 성능이 좋다는 뜻이겠죠? (대표적인 지표: RMSE, MAE 등)

② 경사 하강법 (Gradient Descent) : "오차를 줄이려면 어느 방향으로 가야 하나?"

손실 함수의 값을 최소화(오차를 최소화)하기 위해 모델의 내부 파라미터(가중치)를 조금씩 업데이트하는 알고리즘입니다.

  • 등산 비유: 마치 안개가 자욱한 산속에서 가장 낮은 골짜기(오차가 0인 지점)를 찾기 위해, 발밑의 경사(Gradient)를 확인하며 한 걸음씩 조심스럽게 내려가는 과정과 같습니다.

🌾 02. 특성 공학 (Feature Engineering): 데이터에 생명력 불어넣기

"Raw Data를 그대로 모델에 넣는 것은, 요리하지 않은 생쌀을 먹으라고 하는 것과 같습니다."

① 스케일링 (Scaling) : 수치 범위 맞추기

데이터의 단위와 범위를 일정하게 맞춰주는 작업입니다.

  • 왜 하나요? 온도(20~30°C)와 압력(1000~2000Pa)처럼 단위 차이가 크면, 모델은 숫자가 큰 압력 데이터가 훨씬 중요하다고 착각합니다. 학습이 한쪽으로 치우치는 것을 막기 위해 단위를 통일해야 합니다.
  • 방법: 0과 1 사이로 맞추는 Min-Max Scaling, 평균 0과 표준편차 1로 만드는 Standardization(표준화) 등이 있습니다.

② 특성 생성 및 선택 (Creation & Selection)

  • 특성 생성 (Creation): 기존 데이터를 조합해 새로운 결정적 단서를 만듭니다. 예를 들어, '가공 온도'와 '가공 시간'을 곱해 '총 투입 열량'이라는 새로운 지표를 만드는 것이죠. 이 새로운 데이터가 불량 예측에 더 결정적인 역할을 하기도 합니다.
  • 특성 선택 (Selection): 불량 예측과 전혀 상관없는 데이터(예: 작업자의 사번 등)는 과감히 삭제하여 모델이 혼란스럽지 않게 만듭니다.

🎛️ 03. 튜닝 (Tuning): 모델의 '체질'을 개선하는 과정

"모델이 공부(학습)를 잘할 수 있도록 최적의 환경을 설정해 주는 단계입니다."

학습을 본격적으로 시작하기 전, 우리는 '파라미터'와 '하이퍼파라미터'의 차이를 알아야 합니다.

  • 파라미터 (Parameter): 모델이 데이터를 공부하면서 스스로 찾아내는 최적의 값 (예: 가중치, 편향)
  • 하이퍼파라미터 (Hyperparameter): 모델이 학습하기 전에 사람(사용자)이 직접 지정해 주는 설정값 (예: 학습률, 배치 사이즈, 트리의 최대 깊이 등)
Python
 
# 랜덤 포레스트 하이퍼파라미터 설정 예시
RandomForestClassifier(
    n_estimators=100,      # 숲에 만들 트리 개수
    max_depth=10,          # 각 트리의 최대 깊이
    min_samples_split=2,   # 분할하기 위한 최소 샘플 수
    max_features='sqrt'    # 분할 시 고려할 특성(Feature) 수
)

🎯 그리드 서치 (Grid Search) : "최적의 레시피 조합 찾기"

사람이 지정해야 하는 하이퍼파라미터 후보군들을 격자(Grid) 형태로 미리 정해두고, 하나씩 전부 대입해 보며 최상의 결과를 찾는 방식입니다.

  • 공정 비유: 현장에서 최적의 열처리 조건인 [온도(100도, 110도, 120도)] x [압력(10, 20, 30기압)] 조합을 모두 실험해 보고 가장 불량률이 낮은 조건을 찾아내는 '노가다(?)' 과정과 똑같습니다.

📝 04. 평가 (Evaluation): 모델의 '실전 실력' 검증

"공부를 마친 모델이 새로운 시험지에서도 문제를 잘 푸는지 확인하는 단계입니다."

  • 검증의 핵심 ⚠️: 반드시 학습(공부)에 사용하지 않은 '테스트 데이터(Test Data)'를 사용해야 합니다. 기출문제를 달달 외워서 백점을 맞은 건지, 진짜 원리를 이해해서 응용문제를 잘 푸는 건지 확인해야 하기 때문입니다.
  • 단순히 정답을 맞힌 개수(정확도)만 보는 것이 아니라, 앞서 언급한 손실 함수(Loss) 값이 충분히 낮아졌는지, 그리드 서치로 찾은 설정값이 다른 새로운 데이터에서도 일관된 성능을 내는지 종합적으로 판단하여 최종 모델을 배포하게 됩니다.

 

🧐 01. 과적합(Overfitting)이란?

"우리 공장 샘플 데이터는 100% 맞히는데, 옆 공장 데이터나 내일 생산 데이터는 하나도 못 맞히는 상황"

과적합은 모델이 학습 데이터에만 너무 과하게(Over) 맞춰져서(Fitting), 실제 현장에서 새로운 데이터를 만났을 때(Generalization) 엉터리 대답을 하는 현상을 말합니다.

⚠️ 과적합이 발생하는 3가지 핵심 이유

  1. 학습 데이터의 부족 및 다양성 결여
    • 데이터가 너무 적으면 다양한 패턴을 배우지 못합니다.
    • 예시: 고양이의 정면 사진만 보고 학습한 모델은, 고양이의 옆모습 사진을 보면 고양이인지 판단하지 못합니다.
  2. 모델의 복잡도가 너무 높을 때
    • 너무 강력하고 복잡한 모델을 사용하면, 데이터의 본질적인 흐름을 읽는 게 아니라 아주 미세한 노이즈(잔볏)까지 전부 반영하려고 구불구불한 복잡한 공식을 만들어 냅니다. 학습 데이터는 완벽히 설명할지 몰라도 조금만 데이터가 달라지면 에러를 뿜어냅니다.
  3. 학습을 너무 오래 했을 때 (원리 이해가 아닌 단순 암기)
    • 모델이 지나치게 오랫동안 학습을 반복하면 데이터의 규칙을 이해하는 게 아니라 데이터 자체를 통째로 외워버리는 상태가 됩니다. 시험공부를 할 때 기출문제의 '원리'를 파악하지 않고 '답'만 외워서 시험장에 들어가는 것과 유사합니다.

🛡️ 02. 과적합 방지(Preventing Overfitting): 암기 과목 탈피하기

인공지능이 융통성 없이 '단순 암기'에 빠지지 않도록 체질을 개선하는 대표적인 기법 3가지를 소개합니다.

① 규제 (Regularization: L1, L2) 👉 모델 가중치에 벌칙 주기

모델이 특정 데이터에 너무 과하게 몰입하지 않도록, 내부 가중치(Weights)가 너무 커지면 벌금(패널티)을 부과하는 방법입니다.

  • L1 규제 (Lasso): 중요하지 않은 특성의 가중치를 아예 0으로 만들어 버립니다. 모델의 뼈대만 남기는 '다이어트' 효과가 있어 핵심 변수만 보게 합니다.
  • L2 규제 (Ridge): 가중치들을 전체적으로 골고루 작게 만듭니다. 특정 데이터에 너무 민감하게 널뛰지 않도록 모델의 선을 '부드럽게' 깎아줍니다.

② 교차 검증 (Cross-Validation) 👉 시험지 돌려막기

데이터를 처음에 딱 한 번만 나누어 학습하면 특정 데이터 조각에만 강한 편식 모델이 될 수 있습니다. 이를 막기 위해 데이터를 여러 번 쪼개어 번갈아 가며 검증합니다.

  • K-Fold 교차 검증: 데이터를 동일한 크기의 K개 조각으로 나눈 뒤, 1번부터 K번 조각까지 돌아가면서 차례대로 '시험지(Validation Set)' 역할을 맡깁니다. 편법이 통하지 않도록 시험지를 계속 바꾸는 셈이죠.

③ 드롭아웃 (Dropout) 👉 일부러 몇 명 재우기 (딥러닝의 경우)

  • 원리: 신경망을 학습시킬 때, 매 단계마다 일부 뉴런(신경망 노드)을 무작위로 쉬게(끄게) 만드는 기법입니다.
  • 효과: 특정 에이스 뉴런(경로)에만 의존하지 않고, 남은 뉴런들이 각자 똑똑해지도록 강제하기 때문에 모델 전체의 자생력과 협동 능력이 커집니다.

 

🧐 00. 왜 머신러닝(ML)을 배워야 할까요?

  • 복잡한 패턴의 발견: 기존 규칙 기반(Rule-based) 방식은 "온도가 80도를 넘으면 불량"이라는 단순한 조건만 봅니다. 반면 머신러닝은 "온도가 75도여도 습도가 90%이고 압력이 낮아지는 '특정 조합'이 발생하면 불량이다"라는 데이터 중심(Data-driven)의 복합적 패턴을 찾아냅니다.
  • 사전 예방(예지 보전): 장비의 미세한 진동을 감지해 고장 전 정비 신호를 보내거나, 공정 중간 데이터로 최종 합격 여부를 미리 예측해 비용을 아낍니다.
  • 비정형 데이터 활용: 비전(Vision) 검사를 통해 숙련공이 눈으로 보던 제품 표면의 결함을 AI가 24시간 일정한 기준으로 정확하게 찾아냅니다.

🧭 Step 1. 문제 정의 및 목표 설정 (Problem Definition)

"어떤 요리를 만들지(한식? 양식?) 결정하고, 손님에게 '맛있다'는 소리를 듣는 성공 지표를 세우는 단계"

프로젝트의 성공 기준을 설정하는 가장 중요한 단계입니다. 단순히 "모델 성능을 높이겠다"가 아니라, 명확한 비즈니스 목표와 평가지표를 일치시켜야 합니다.

  • 예시: "사출 공정에서 발생하는 미성형 불량률을 현재 5%에서 2%로 낮추겠다."

🌾 Step 2. 데이터 수집 및 전처리 (Data Acquisition & Preprocessing)

"Garbage In, Garbage Out (쓰레기가 들어가면 쓰레기가 나온다)"

데이터의 품질이 곧 모델의 성능을 결정합니다. 센서(IoT), DB, API, 웹 크롤링 등으로 수집한 원본 데이터(Raw Data)는 '생쌀'과 같아서 반드시 가공(요리)해야 합니다.

① 데이터 정제 (Cleaning)

  • 누락값(결측치) 처리: 평균, 중간값, 최빈값으로 채우거나 해당 행을 제거합니다.
  • 중복 데이터 제거: 분석 결과의 왜곡을 막기 위해 중복 원인을 파악하고 지웁니다.
  • 이상치(Outlier) 처리: 다른 데이터와 크게 벗어난 값을 식별해 제거하거나 보정합니다.

② 데이터 변환 (Transformation)

  • 피처 스케일링(Scaling): 온도(20~30)와 압력(1000~2000)처럼 단위 차이가 크면 모델이 혼란스러워하므로, 범위를 맞추는 작업입니다. (0~1로 맞추는 정규화 또는 평균 0, 분산 1로 만드는 표준화 사용)
  • 인코딩(Encoding): '남성/여성' 같은 범주형 데이터를 머신러닝이 이해할 수 있도록 숫자(0, 1)나 원-핫 인코딩(One-Hot Encoding) 형태로 변환합니다.

🔍 Step 3. 탐색적 데이터 분석 (EDA)

"냉장고 재료를 꺼내 상한 곳은 없는지, 서로 궁합은 좋은지 뜯어보는 과정"

단순히 통계 수치를 보는 것을 넘어, 데이터 속에서 [Fact 도출] ➡️ [의미 파악(Insight)] ➡️ [모델링 액션(Action)]을 찾아내는 과정입니다.

EDA에서 발견한 사실 (Fact) 도출된 인사이트 (Insight) 모델링을 위한 액션 (Action)
습도가 70% 이상일 때 불량률 급증 "습도가 제품 내구성에 결정적인 변수구나!" 습도 데이터를 핵심 피처로 포함
특정 작업자 A가 근무할 때만 데이터 누락 "결측치가 무작위가 아니라 특정 환경 탓이군." 단순히 평균값으로 채우지 않고 별도 처리
온도가 오르면 불량이 늘다가 특정 온도에선 줄어듦 "온도와 불량률은 직선이 아닌 비선형 관계구나." 선형 회귀 대신 복잡한 결정 트리 계열 모델 선택

🛠️ Step 4. 모델 유형 선택 및 학습 (Model Training)

① 모델 유형 및 데이터 분할

  • 예측하려는 문제가 분류(Classification)인지 회귀(Regression)인지에 따라 알고리즘을 선택합니다.
  • 데이터를 학습 데이터(70~80%)와 테스트 데이터(20~30%)로 분할하여 학습을 시작합니다.
  • 내부 파라미터(가중치와 편향)의 시작점을 정해주는 '초기화' 과정을 거친 뒤, 오차를 줄여나가는 경사하강법을 통해 반복 학습(에포크)을 진행합니다. 과적합 조짐이 보이면 조기 종료(Early Stopping)를 적용합니다.

② 💡 핵심 중의 핵심: 베이스라인(Baseline) 모델 만들기

처음부터 100점짜리 복잡한 딥러닝 모델을 만들려고 하면 안 됩니다. 가장 단순한 알고리즘으로 60점짜리 기준점(Baseline)을 빠르게 구해야 합니다.

  • 이유: 전체 파이프라인이 잘 도달하는지 확인하고, 나중에 복잡한 모델을 도입했을 때 "기본 모델보다 성능이 얼마나 좋아졌는가?"를 증명하는 강력한 커뮤니케이션 도구가 됩니다.

📝 Step 5. 모델 평가 방법 (Evaluation)

손님에게 요리를 내놓기 전 최종 맛검사를 하듯 학습에 쓰이지 않은 시험지(테스트 데이터)로 성능을 평가합니다.

  • 회귀 문제 지표: MSE(오차 제곱 평균), MAE(오차 절대값 평균), $R^2$(결정계수, 설명력)
  • 분류 문제 지표: 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1-Score(정밀도와 재현율의 조화평균), ROC-AUC

🎛️ Step 6. 하이퍼파라미터 튜닝 (Hyperparameter Tuning)

"음식의 맛을 극대화하기 위해 마지막에 명란 한 스푼, 레몬즙 킥을 넣는 미세 조정"

사람이 직접 설정해야 하는 모델의 최적 설정값(트리 개수, 학습률 등)을 찾는 과정입니다.

  • 그리드 서치 (Grid Search): 모든 후보 조합을 격자 형태로 다 대입하는 정석적인 방법 (시간이 오래 걸림).
  • 랜덤 서치 (Random Search): 무작위로 조합을 뽑아 평가 (그리드 서치보다 효율적).
  • 베이지안 최적화 (Bayesian Optimization): 이전 결과를 바탕으로 다음번 튜닝값을 똑똑하게 찾아가는 방법 (가장 효율적).

🚀 Step 7. 모델 배포 및 유지 보수 (Deployment & Monitoring)

정성껏 만든 요리를 드디어 손님 식탁에 올리고 피드백을 받는 최종 단계입니다.

  1. 환경 설정 & 패키징: 모델이 돌아갈 서버 환경을 구축하고, 어디서든 똑같이 실행되도록 라이브러리와 모델을 하나로 묶어 컨테이너화(Docker 등)합니다. (밀키트 포장)
  2. API 개발: 외부 시스템이 모델에게 데이터를 보내면 바로 답변을 받을 수 있도록 통로(RESTful API)를 뚫어줍니다. (주문 키오스크 설치)
  3. 테스트 & 실전 배포: 시식회(최종 테스트)를 거쳐 실전 서버에 올립니다.
  4. 모니터링 및 재학습: 배포 후에도 시간이 지나며 공정 환경이 변하면 모델의 성능이 떨어집니다. 지속적으로 모니터링을 하며 데이터를 모아 주기적으로 모델을 다시 학습(Retraining)시키는 유지 보수가 필수적입니다.