[Python 100일 챌린지] Day 91 - 머신러닝이란?
드디어 Phase 10! AI의 세계로! 100일 챌린지의 마지막 관문입니다. 머신러닝이 뭔지, 어떻게 작동하는지 쉽게 알아봅시다. “AI가 어떻게 학습하는가?” 궁금하셨죠? 오늘부터 직접 만들어봅니다!
(20분 완독 ⭐⭐)
🎯 오늘의 학습 목표
📚 사전 지식
- Day 66: Pandas DataFrame 기초
- Day 67: 데이터 읽기
- 기본적인 수학 개념 (평균, 그래프)
🎯 학습 목표 1: 머신러닝이 무엇인지 이해하기
한 줄 요약
머신러닝 = 컴퓨터가 데이터로부터 스스로 배우는 기술
전통적 프로그래밍 vs 머신러닝
전통적 프로그래밍
1
2
3
4
5
6
7
8
9
10
# 전통적 방식: 규칙을 사람이 직접 작성
def is_spam(email):
spam_words = ['광고', '무료', '대박']
for word in spam_words:
if word in email:
return True
return False
print(is_spam("무료 이벤트!")) # True
print(is_spam("안녕하세요")) # False
문제점:
- 모든 규칙을 사람이 직접 작성해야 함
- 새로운 패턴이 나타나면 코드를 수정해야 함
- 복잡한 문제는 규칙을 만들기 어려움
머신러닝 방식
1
2
3
4
5
# 머신러닝 방식: 데이터로부터 학습
# (의사 코드 - 개념 이해용)
model = MachineLearning()
model.learn(training_data) # 과거 데이터로 학습
prediction = model.predict(new_email) # 새로운 데이터 예측
장점:
- 데이터만 주면 알아서 패턴을 찾음
- 새로운 데이터에도 잘 대응
- 복잡한 문제도 해결 가능
실생활 예시
| 분야 | 전통적 방식 | 머신러닝 방식 |
|---|---|---|
| 스팸 필터 | 금지 단어 리스트 | 과거 스팸 메일로부터 학습 |
| 날씨 예측 | 간단한 공식 | 수십 년 날씨 데이터로 학습 |
| 얼굴 인식 | 불가능에 가까움 | 수백만 얼굴 사진으로 학습 |
| 번역 | 단어별 치환 | 수억 개 번역 쌍으로 학습 |
🎯 학습 목표 2: 지도 학습과 비지도 학습 구분하기
지도 학습 (Supervised Learning)
선생님이 가르쳐주는 것처럼 학습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 지도 학습 예시
training_data = [
# (특징, 정답)
([평수:85, 방3, 강남], 가격:10억),
([평수:60, 방2, 강북], 가격:5억),
([평수:100, 방4, 강남], 가격:15억),
]
# 컴퓨터가 학습: "평수가 크고 강남이면 비싸구나!"
model.learn(training_data)
# 예측
new_house = [평수:75, 방3, 강남]
predicted_price = model.predict(new_house) # 약 9억?
특징:
- 정답(레이블)이 있는 데이터로 학습
- “이것이 정답이야”라고 알려주며 학습
- 예: 집값 예측, 스팸 분류, 손글씨 인식
비지도 학습 (Unsupervised Learning)
스스로 패턴을 찾는 학습
1
2
3
4
5
6
7
8
9
10
11
# 비지도 학습 예시
customers = [
[나이:25, 구매금액:10만원],
[나이:26, 구매금액:15만원],
[나이:55, 구매금액:100만원],
[나이:60, 구매금액:120만원],
]
# 컴퓨터가 스스로 그룹을 찾음
groups = model.find_groups(customers)
# 결과: 그룹1(젊은층, 소액), 그룹2(중년층, 고액)
특징:
- 정답 없이 학습
- 데이터 속 숨겨진 패턴을 찾음
- 예: 고객 세분화, 추천 시스템
비교표
| 구분 | 지도 학습 | 비지도 학습 |
|---|---|---|
| 데이터 | 정답 포함 | 정답 없음 |
| 목표 | 예측하기 | 패턴 찾기 |
| 예시 | 집값 예측, 이미지 분류 | 고객 그룹화, 이상 탐지 |
| 난이도 | 상대적으로 쉬움 | 상대적으로 어려움 |
🎯 학습 목표 3: 회귀와 분류의 차이 알기
회귀 (Regression)
숫자를 예측하는 문제
1
2
3
4
5
# 회귀 예시: 집값 예측
features = [평수, 방개수, 위치]
target = 가격 # 연속적인 숫자 (3억, 5.5억, 10억...)
# 결과: 8.7억원 (구체적인 숫자)
특징:
- 결과가 연속적인 숫자
- “얼마나?”를 답하는 문제
- 예: 집값, 주가, 온도, 매출액
분류 (Classification)
범주를 예측하는 문제
1
2
3
4
5
# 분류 예시: 스팸 판별
features = [발신자, 단어, 링크개수]
target = 스팸여부 # 카테고리 (스팸 or 정상)
# 결과: 스팸 (명확한 범주)
특징:
- 결과가 카테고리
- “어느 그룹?”을 답하는 문제
- 예: 스팸/정상, 합격/불합격, 고양이/강아지
비교 다이어그램
graph TD
A[머신러닝 문제] --> B{결과가 숫자?}
B -->|Yes| C[회귀<br/>예: 집값 8.7억]
B -->|No| D[분류<br/>예: 스팸/정상]
C --> E[선형 회귀<br/>다항 회귀<br/>등]
D --> F[로지스틱 회귀<br/>의사결정나무<br/>등]
실전 문제 구분하기
| 문제 | 유형 | 이유 |
|---|---|---|
| 내일 주가는? | 회귀 | 구체적 숫자 예측 |
| 이 이메일은 스팸? | 분류 | 스팸/정상 구분 |
| 학생 성적 예측 | 회귀 | 점수(숫자) 예측 |
| 합격 여부 예측 | 분류 | 합격/불합격 구분 |
| 내년 매출은? | 회귀 | 매출액(숫자) 예측 |
| 고양이 vs 강아지 | 분류 | 동물 종류 구분 |
💻 간단한 개념 확인
예제: 머신러닝 개념 퀴즈
1
2
3
4
5
6
7
8
9
10
11
12
13
# 다음 문제들이 회귀인지 분류인지 맞춰보세요!
problems = {
"아파트 가격 예측": "회귀", # 숫자 예측
"스팸 메일 판별": "분류", # 스팸/정상 구분
"내일 기온 예측": "회귀", # 온도(숫자) 예측
"과일 종류 구분": "분류", # 사과/바나나/오렌지
"주식 가격 예측": "회귀", # 주가(숫자) 예측
"암 진단": "분류", # 양성/음성 구분
}
for problem, answer in problems.items():
print(f"{problem}: {answer}")
출력:
1
2
3
4
5
6
아파트 가격 예측: 회귀
스팸 메일 판별: 분류
내일 기온 예측: 회귀
과일 종류 구분: 분류
주식 가격 예측: 회귀
암 진단: 분류
🎓 머신러닝의 작동 원리
3단계 프로세스
graph LR
A[1. 데이터 수집] --> B[2. 모델 학습]
B --> C[3. 예측]
A1[과거 데이터<br/>집 정보 + 가격] --> A
B1[패턴 찾기<br/>평수↑ = 가격↑] --> B
C1[새 집 가격<br/>예측하기] --> C
실제 예시: 집값 예측
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 데이터 수집
training_data = """
평수 방개수 강남여부 가격(억)
60 2 0 5
85 3 1 10
100 4 1 15
70 3 0 6
"""
# 2. 모델 학습 (다음 시간에 자세히!)
# model.fit(features, prices)
# 컴퓨터: "평수가 10 늘면 가격이 1.2억 오르네!"
# 3. 예측
new_house = [평수:75, 방:3, 강남:1]
predicted_price = model.predict(new_house)
# 예측: 약 9억
📊 머신러닝 알고리즘 지도
Phase 10에서 배울 내용들을 미리 보세요!
graph TD
A[머신러닝] --> B[지도 학습]
A --> C[비지도 학습]
B --> D[회귀]
B --> E[분류]
D --> F[선형 회귀<br/>Day 94]
E --> G[로지스틱 회귀<br/>Day 95]
C --> H[군집화<br/>고급 주제]
C --> I[차원 축소<br/>고급 주제]
style F fill:#90EE90
style G fill:#90EE90
🌟 왜 지금 머신러닝을 배워야 할까?
1. AI 시대의 필수 기술
- ChatGPT, MidJourney 등 모두 머신러닝 기반
- 자동화, 추천, 예측 등 모든 곳에 활용
- 비전공자도 충분히 배울 수 있음!
2. 취업 시장의 수요
1
2
3
데이터 분석가: 평균 연봉 5000만원+
머신러닝 엔지니어: 평균 연봉 7000만원+
AI 연구원: 평균 연봉 1억원+
3. 실무 자동화
1
2
3
4
5
# 머신러닝으로 자동화 가능한 업무들
- 고객 이탈 예측 → 미리 대응
- 매출 예측 → 재고 관리
- 이상 거래 탐지 → 사기 방지
- 문서 분류 → 업무 효율화
💡 실무 활용 사례
1. Netflix 추천 시스템
1
2
3
4
5
# Netflix는 어떻게 추천할까?
user_history = ["액션 영화 10편", "로맨스 2편"]
similar_users = find_similar_users(user_history)
recommended = get_what_they_watched(similar_users)
# "이 사용자도 액션 좋아할 거야!"
2. 은행 대출 심사
1
2
3
4
5
6
7
8
# 대출 승인 자동화
customer_info = {
'소득': 5000만원,
'신용점수': 800,
'대출이력': '양호'
}
approval_probability = model.predict(customer_info)
# 승인 확률: 95%
3. 이미지 인식
1
2
3
4
# 사진 속 물체 인식
image = load_image("photo.jpg")
objects = model.detect(image)
# 결과: ["고양이", "소파", "화분"]
⚠️ 초보자를 위한 팁
Tip 1: 완벽하게 이해하려 하지 마세요
괜찮아요!
- 수학 공식 몰라도 됩니다
- 이론보다 실습이 중요해요
- 코드 돌려보고 결과 확인하면 됩니다
Tip 2: 100% 정확도는 불가능
1
2
3
# 머신러닝 모델은 확률 게임
accuracy = 0.95 # 95% 정확도
# 100%는 거의 불가능! 95%면 매우 좋은 것!
Tip 3: 데이터가 가장 중요
1
2
좋은 알고리즘 + 나쁜 데이터 = 나쁜 결과 ❌
보통 알고리즘 + 좋은 데이터 = 좋은 결과 ✅
📝 오늘 배운 내용 정리
- 머신러닝: 컴퓨터가 데이터로부터 스스로 배우는 기술
- 지도 학습: 정답이 있는 데이터로 학습 (예: 집값 예측)
- 비지도 학습: 정답 없이 패턴 찾기 (예: 고객 그룹화)
- 회귀: 숫자 예측 (예: 집값, 주가)
- 분류: 범주 예측 (예: 스팸/정상)
🤔 자주 묻는 질문 (FAQ)
Q1: 수학을 잘 못하는데 머신러닝을 배울 수 있나요?
A: 네! 충분히 가능합니다. 이 챌린지에서는 복잡한 수학 없이 scikit-learn 라이브러리를 사용해서 머신러닝을 배웁니다. 중학교 수준의 수학(평균, 그래프)만 알아도 괜찮아요. 나중에 딥러닝을 공부할 때 수학이 더 필요하지만, 지금은 걱정하지 마세요!
Q2: 머신러닝과 인공지능, 딥러닝의 차이는 뭔가요?
A:
- 인공지능 (AI): 가장 큰 개념. 컴퓨터가 사람처럼 생각하는 모든 기술
- 머신러닝 (ML): AI의 한 분야. 데이터로 학습하는 방법
- 딥러닝 (DL): 머신러닝의 한 분야. 뇌의 신경망을 모방
쉽게 말하면: AI > 머신러닝 > 딥러닝 순서로 포함 관계입니다!
Q3: Python만 배웠는데 머신러닝을 할 수 있나요?
A: 물론입니다! Python과 scikit-learn만 있으면 충분합니다. 오히려 Python은 머신러닝에 가장 많이 사용되는 언어예요. 여러분은 이미 90일 동안 Python을 배웠으니 준비 완료입니다!
Q4: 이 과정을 마치면 AI 엔지니어가 될 수 있나요?
A: Phase 10은 입문 과정입니다. AI 엔지니어가 되려면 추가로 딥러닝, 컴퓨터 비전, 자연어 처리 등을 더 배워야 해요. 하지만 이 10일이 튼튼한 기초가 됩니다. 집을 지을 때도 기초가 가장 중요하죠! 🏠
🧪 연습 문제
문제 1: 회귀 vs 분류 구분하기
다음 문제들이 회귀인지 분류인지 구분하세요:
- 내일 비올 확률 예측
- 고양이/강아지 구분
- 집값 예측
- 합격/불합격 판정
- 내년 매출액 예측
✅ 정답
- 회귀 - 확률(숫자)을 예측
- 분류 - 고양이/강아지 범주 구분
- 회귀 - 가격(숫자)을 예측
- 분류 - 합격/불합격 범주 구분
- 회귀 - 매출액(숫자)을 예측
문제 2: 지도 vs 비지도 학습
다음 중 지도 학습인 것은?
A) 정답 레이블이 있는 데이터로 학습 B) 정답 없이 스스로 패턴 찾기 C) 고객을 자동으로 그룹화
✅ 정답
A) 정답 레이블이 있는 데이터로 학습
지도 학습은 “이것이 정답이야”라고 알려주며 학습합니다.
📚 다음 학습
Day 92: scikit-learn 설치하기 ⭐⭐
내일은 Python 머신러닝의 대표 라이브러리인 scikit-learn을 설치하고 첫 모델을 만들어봅니다!
“머신러닝은 마법이 아니라 통계입니다. 하지만 충분히 발전한 통계는 마법과 구분할 수 없습니다!” 🚀
Day 91/100 Phase 10: AI/ML 입문 #100DaysOfPython
