ABC부트캠프

[16일차] 인공지능 머신러닝 딥러닝 개요

수야! 2025. 7. 14. 18:00

 

DAY-1

인공지능 머신러닝 딥러닝 개요

오늘부터는 인공지능 활용에 대한 내용을 배운답니다!

전 사실 이날만을 기다렸답니다~

진짜진짜 궁금하고 배워보고 싶었던 내용이거든요.

그럼 오늘고 뽜샤!

 

인공지능(AI), 머신러닝, 딥러닝(Deep Learning) 소개

🧠 

■ 일반적인 프로그래밍 vs 머신러닝

  • 일반 프로그래밍: 사람이 명확한 규칙을 정해주고 컴퓨터가 그 규칙을 실행
  • 머신러닝: 사람이 **데이터와 정답(label)**만 주면 컴퓨터가 규칙을 스스로 학습

■ 머신러닝(Machine Learning)

  • 사람이 데이터를 주고, 기계는 스스로 패턴이나 규칙을 찾아내는 방식
  • 데이터에 기반하여 모델을 훈련시키고 예측 가능하게 함

■ 딥러닝(Deep Learning)

  • 머신러닝의 하위 개념으로, 인공신경망(Neural Network) 구조를 통해 학습
  • 데이터에서 복잡한 관계를 자동으로 학습하며, 레이어가 깊음
  • 이미지 인식, 음성 인식, 자연어 처리 등에서 매우 강력한 성능을 보임

■ 관계 요약

인공지능(AI)
 └── 머신러닝(ML)
      └── 딥러닝(DL)

■ 머신러닝의 주요 유형

유형 설명 예시
분류 데이터를 범주로 구분 스팸메일 분류, 질병 진단
회귀 숫자값을 예측 집값, 매출 예측
군집화 유사한 데이터를 그룹화 고객 세그먼트
연관 규칙 항목 간의 관련성 찾기 장바구니 분석

 

머신러닝 프로세스

🔁

1️⃣ 문제 정의

  • 해결하고자 하는 문제를 명확히 정의
  • 예시:
    • 당뇨병 여부 판단 → 이진 분류
    • 다음 분기 매출 예측 → 회귀
    • 문자 스미싱 여부 판단 → 이진 분류
    • 고객을 그룹으로 나누기 → 군집화

2️⃣ 데이터 전처리

  • EDA (탐색적 데이터 분석): 데이터를 시각화하고 이해하는 과정
  • 결측치 처리: 평균, 중앙값 등으로 채우거나 삭제
  • 스케일링 및 정규화: 모델 성능 향상을 위해 필수
  • 데이터 분할: 보통 train:test = 8:2 또는 7:3

3️⃣ 모델 학습

  • 학습 데이터를 기반으로 모델이 최적의 파라미터를 찾도록 학습 진행
  • 에폭(epochs), 배치 크기(batch size) 설정

4️⃣ 모델 평가

  • 테스트 데이터를 활용하여 예측 정확도 평가
  • 평가 지표: 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1-score, ROC-AUC

 

케라스 개발 과정 - 당뇨병 발병 유무 예측 실습

1️⃣ 문제 정의: 이진 분류 문제

  • 예측 대상: 5년 이내 당뇨병 발병 여부 (Outcome: 0 = 미발병, 1 = 발병)
  • 학습 데이터: 총 768건
  • 목적: 8개의 건강 관련 데이터를 기반으로 당뇨병 발병 유무를 예측하는 모델 개발

2️⃣ 데이터 준비

■ 데이터셋 정보

  • 출처: Kaggle - Pima Indians Diabetes Database
  • 주요 변수 (8개 독립변수):
    1. 임신 횟수 (Pregnancies)
    2. 2시간 포도당 수치 (Glucose)
    3. 이완기 혈압 (BloodPressure)
    4. 피부 두겹 두께 (SkinThickness)
    5. 2시간 인슐린 수치 (Insulin)
    6. 체질량지수 (BMI)
    7. 당뇨병 직계 가족력 (DiabetesPedigreeFunction)
    8. 나이 (Age)
  • 종속변수 (1개): Outcome (0 또는 1)

3️⃣ 데이터 전처리

■ 탐색적 데이터 분석 (EDA)

  • 각 변수의 분포 확인
  • 당뇨병 발병 여부에 따라 변수별 차이 시각화 (예: Glucose 수치가 높을수록 발병 확률 증가)
  • 이상값 및 결측치 확인

■ 결측치 처리

  • 일부 변수에 0 값이 포함되어 있지만, 실제로는 측정 누락으로 간주 (ex. BMI가 0은 비정상)
  • 평균, 중앙값 등으로 대체하거나 삭제 (선택적)

■ 데이터 분할

from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
  • 훈련셋 : 테스트셋 = 80 : 20
  • stratify=y로 클래스 비율 유지

4️⃣ 모델 구성 (Keras)

■ 모델 아키텍처

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(64, input_shape=(8,), activation='relu'))   # 입력층
model.add(Dense(32, activation='relu'))                      # 은닉층
model.add(Dense(1, activation='sigmoid'))                    # 출력층 (이진 분류)
  • 입력층: 8개의 feature → input_shape=(8,)
  • 은닉층: Dense 64, 32 유닛 구성, ReLU 활성화 함수
  • 출력층: sigmoid → 확률 값(0~1)을 출력 → 0.5 이상이면 당뇨병 판정

5️⃣ 모델 설정 (컴파일)

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
  • 손실 함수: binary_crossentropy (이진 분류 문제에 적합)
  • 옵티마이저: adam (빠르고 효율적인 경사하강법)
  • 평가지표: accuracy (정확도)

6️⃣ 모델 학습

model.fit(X_train, y_train, epochs=1500, batch_size=128)
  • epochs: 전체 데이터셋을 1500회 반복 학습
  • batch_size: 학습할 때 한 번에 128개 데이터를 사용하여 모델 업데이트

학습 도중 손실(loss)과 정확도 추이를 통해 모델 학습 상태를 확인 가능

7️⃣ 모델 평가

loss, acc = model.evaluate(X_test, y_test)
  • 테스트 데이터를 이용해 모델 정확도 평가
  • 추가적으로 precision, recall, f1-score, ROC-AUC 등 정밀한 지표도 분석

■ 혼동행렬 기반 주요 평가 지표

지표 설명
Accuracy 전체 예측 중 맞춘 비율
Precision 당뇨병이라고 예측한 것 중 실제 당뇨병인 비율
Recall 실제 당뇨병인 사람 중에서 예측이 맞은 비율
F1-score Precision과 Recall의 조화 평균
ROC-AUC 모델의 민감도와 특이도를 종합적으로 평가하는 지표

8️⃣ 결과 해석 및 한계

  • 모델의 정확도는 중간 수준 (~70%)
  • 하지만 Recall이 낮게 나오는 문제가 있음 → 실제 당뇨병 환자를 놓칠 가능성
  • 따라서, 재현율을 중심으로 모델 개선 필요
    • 방법: threshold 조정, 오버샘플링(SMOTE), 모델 구조 변경, 앙상블 적용 등

 

마무리

드디어 기다리던 인공지능 수업!!!

그동안 ‘AI’, ‘머신러닝’, ‘딥러닝’이라는 단어는 뉴스나 유튜브에서 익숙하게 접했지만, 정작 이것들이 정확히 어떤 개념인지, 어떻게 쓰이는지는 잘 몰랐는데요. 그런데 오늘 수업을 통해 그 개념들이 아주 명확해졌습니다.

AI는 인간처럼 사고하고 행동하는 기술이고, 머신러닝은 데이터를 기반으로 학습하는 방법이며, 딥러닝은 인공신경망을 활용한 고도화된 학습이라는 구조적 관계가 아직도 기억에 남군요~ 특히 ‘사람은 데이터를 주고 기계가 스스로 규칙을 찾는다’는 설명이 머신러닝의 본질을 너무 잘 표현한 문장이라 기억에 오래 남을 것 같습니다!

머신러닝 프로세스를 배우며 ‘문제 정의 → 전처리 → 학습 → 평가’라는 순서가 체계적으로 정리되어 있어 더 이해하기 편했던 것 같습니다. 평소 데이터 분석을 막연하게만 생각했는데, 수업을 통해 실제로 어떤 단계들을 거치는지, 어떤 판단을 내려야 하는지를 구체적으로 알 수 있는 시간이었다는...!

 

무엇보다 실습으로 진행된당뇨병 예측 모델 만들기는 AI가 어떻게 사람의 건강 문제를 예측하는 데 쓰이는지를 직접 체험해볼 수 있는 좋은 기회였습니다. 데이터셋을 불러오고, 전처리하고, 모델을 구성해서 학습과 평가까지 하는 전 과정을 따라가며, 내가 만든 모델이 어느 정도의 정확도로 ‘당뇨병 유무’를 예측한다는 것 자체가 신기했고 성취감을 느꼈습니다.

물론 결과는 완벽하지 않았습니다. 모델의 성능이 낮았고, recall 값도 충분히 높지 않았습니다.... 대충 recall 값이 0.03도 나왔다는 굉장한 사실(참고로 수가 낮을수록 안 좋습니당)... 하지만 이 또한 AI 모델이 완벽하지 않으며, 데이터를 잘 다듬고 모델을 어떻게 설계하느냐에 따라 성능이 달라진다는 점에서 굉장히 실용적인 교훈이 되었습니다. 다음에는 꼭 높은 성능이 나오도록 다시 도전해볼 예정입니다.

 

이번 수업을 통해 단순히 AI에 대한 이론을 배운 것이 아니라, 데이터의 흐름을 경험하면서 AI 기술이 얼마나 유용하고 실생활에 가까운지 체감할 수 있었습니다. 앞으로 더 많은 실습과 프로젝트를 통해 이 기술을 더 깊이 이해하고 활용해보고 싶습니다. 다음 수업이 벌써 기대되네요~

 

아 그리고 내일부터는 조원들이 교체된다는데...! 두근두근 누까될지 궁금하네요!!!

그럼 20000~