You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
12 KiB
125 lines
12 KiB
# 머신러닝 기법
|
|
|
|
머신러닝 모델과 그 모델이 사용하는 데이터를 구축하고 사용하며 유지하는 과정은 다른 많은 개발 워크플로우와 매우 다른 과정입니다. 이번 수업에서는 이 과정을 쉽게 이해할 수 있도록 하고, 알아야 할 주요 기법들을 설명합니다. 여러분은 다음을 배우게 됩니다:
|
|
|
|
- 머신러닝의 기본 프로세스를 높은 수준에서 이해하기
|
|
- '모델', '예측', '훈련 데이터'와 같은 기본 개념 탐색하기
|
|
|
|
## [수업 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
[](https://youtu.be/4NGM0U2ZSHU "초보자를 위한 머신러닝 - 머신러닝 기법")
|
|
|
|
> 🎥 위 이미지를 클릭하면 이번 수업 내용을 다루는 짧은 영상을 볼 수 있습니다.
|
|
|
|
## 소개
|
|
|
|
높은 수준에서, 머신러닝(ML) 프로세스를 만드는 작업은 여러 단계로 구성됩니다:
|
|
|
|
1. **질문 정하기**. 대부분의 머신러닝 과정은 단순한 조건문 프로그램이나 규칙 기반 엔진으로 답할 수 없는 질문을 던지는 것에서 시작합니다. 이 질문들은 보통 여러 데이터를 기반으로 한 예측과 관련됩니다.
|
|
2. **데이터 수집 및 준비**. 질문에 답하려면 데이터가 필요합니다. 데이터의 품질과 때로는 양이 초기 질문에 얼마나 잘 답할 수 있는지를 결정합니다. 데이터 시각화는 이 단계의 중요한 부분입니다. 또한 데이터를 훈련용과 테스트용으로 나누어 모델을 구축하는 것도 포함됩니다.
|
|
3. **훈련 방법 선택**. 질문과 데이터의 성격에 따라, 데이터를 가장 잘 반영하고 정확한 예측을 하기 위해 모델을 훈련시키는 방법을 선택해야 합니다. 이 단계는 특정 전문 지식과 많은 실험이 필요한 부분입니다.
|
|
4. **모델 훈련**. 훈련 데이터를 사용해 다양한 알고리즘으로 데이터를 인식하는 모델을 훈련시킵니다. 모델은 데이터의 특정 부분을 우선시할 수 있도록 내부 가중치를 조정하여 더 나은 모델을 만들 수 있습니다.
|
|
5. **모델 평가**. 수집된 데이터 중 모델이 아직 본 적 없는 테스트 데이터를 사용해 모델의 성능을 평가합니다.
|
|
6. **파라미터 조정**. 모델의 성능을 기반으로 다양한 파라미터, 즉 모델 훈련 알고리즘의 동작을 제어하는 변수를 바꿔가며 과정을 반복할 수 있습니다.
|
|
7. <strong>예측</strong>. 새 입력값을 사용해 모델의 정확성을 테스트합니다.
|
|
|
|
## 어떤 질문을 할까
|
|
|
|
컴퓨터는 데이터 속 숨겨진 패턴을 발견하는 데 특히 뛰어납니다. 이는 조건부 규칙 엔진으로는 쉽게 답할 수 없는 도메인 내 연구자들이 질문에 매우 유용합니다. 예를 들어 보험계리 업무에서, 데이터 과학자는 흡연자와 비흡연자의 사망률에 관한 수작업 규칙을 만들 수도 있습니다.
|
|
|
|
하지만 여러 변수가 포함되면 과거 건강 기록에 기반한 미래 사망률 예측에 머신러닝 모델이 더 효율적일 수 있습니다. 더 밝은 예로는 위도, 경도, 기후 변화, 바다와의 거리, 제트기류 패턴 등의 데이터를 활용해 특정 지역 4월 날씨 예측을 하는 경우입니다.
|
|
|
|
✅ 이 [슬라이드 데크](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)는 기상 모델에 관한 역사적 관점에서 머신러닝을 활용한 사례를 제공합니다.
|
|
|
|
## 사전 준비 작업
|
|
|
|
모델 구축을 시작하기 전에 완료해야 할 여러 작업이 있습니다. 질문을 테스트하고 모델 예측에 기반해 가설을 형성하려면 여러 요소를 식별하고 구성해야 합니다.
|
|
|
|
### 데이터
|
|
|
|
질문에 확실히 답하려면 적절한 유형의 충분한 데이터가 필요합니다. 이 시점에 해야 할 두 가지는:
|
|
|
|
- **데이터 수집**. 이전 수업에서 다룬 공정한 데이터 분석을 염두에 두고 조심스럽게 데이터를 수집하세요. 데이터 출처와 내재된 편향, 출처를 문서화하십시오.
|
|
- **데이터 준비**. 데이터 준비 과정에는 여러 단계가 있습니다. 서로 다른 출처에서 온 데이터를 정리하고 정규화할 필요가 있을 수 있습니다. 문자열을 숫자로 변환하는 등 다양한 방법으로 데이터 품질과 양을 개선할 수 있으며([클러스터링](../../5-Clustering/1-Visualize/README.md) 수업 참조) 원본 데이터를 기반으로 새 데이터를 생성할 수도 있습니다([분류](../../4-Classification/1-Introduction/README.md) 수업 참조). 데이터를 정리하고 편집할 수도 있으며([웹 앱](../../3-Web-App/README.md) 수업 전 작업), 훈련 기법에 따라 무작위화하고 섞을 수도 있습니다.
|
|
|
|
✅ 데이터를 수집하고 처리한 후, 데이터의 형상(shape)이 질문에 잘 답할 수 있을지를 잠시 확인해 보세요. 데이터가 주어진 작업에 잘 작동하지 않을 수도 있다는 점은 [클러스터링](../../5-Clustering/1-Visualize/README.md) 수업에서 다룹니다!
|
|
|
|
### 특성과 타깃
|
|
|
|
[특성(feature)](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)은 데이터의 측정 가능한 속성입니다. 많은 데이터셋에서는 'date', 'size', 'color'와 같은 열 제목으로 표현됩니다. 특성 변수는 코드상 보통 `X`로 표기하며, 모델을 훈련시키기 위한 입력 변수를 나타냅니다.
|
|
|
|
타깃(target)은 예측하려는 것입니다. 타깃은 코드 내에서 보통 `y`로 표시되며, 예를 들어 12월에 어떤 <strong>색깔</strong> 호박이 가장 저렴할지, 샌프란시스코에서 어느 동네가 가장 좋은 부동산 <strong>가격</strong>을 가질지 등 데이터에 묻고자 하는 질문에 대한 답입니다. 때때로 타깃은 레이블(label) 속성이라고도 합니다.
|
|
|
|
### 특성 변수 선택
|
|
|
|
🎓 **특성 선택과 특성 추출** 모델을 만들 때 어떤 변수를 선택할지 어떻게 알까요? 최적의 성능을 위해 적절한 변수를 찾기 위해 특성 선택(feature selection) 또는 특성 추출(feature extraction) 과정을 거칩니다. 두 개념은 같지 않습니다: "특성 추출은 원래 특성의 함수에서 새로운 특성을 만드는 것이고, 특성 선택은 원래 특성의 서브셋을 선택하는 것입니다." ([출처](https://wikipedia.org/wiki/Feature_selection))
|
|
|
|
### 데이터 시각화
|
|
|
|
데이터 과학자의 툴킷에서 중요한 부분은 Seaborn이나 MatPlotLib 같은 훌륭한 라이브러리를 사용해 데이터를 시각화하는 기능입니다. 데이터 시각화는 사용할 수 있는 숨겨진 상관관계를 발견할 수 있게 도와줍니다. 또한 시각화를 통해 편향이나 불균형한 데이터도 찾아낼 수 있습니다([분류](../../4-Classification/2-Classifiers-1/README.md) 수업 참조).
|
|
|
|
### 데이터셋 분할
|
|
|
|
훈련 전에 데이터셋을 크기가 다르지만 데이터를 잘 대표할 수 있도록 두 개 이상의 부분으로 나누어야 합니다.
|
|
|
|
- **훈련(training)**. 데이터셋의 이 부분은 모델을 훈련시키는 데 적합하며 원본 데이터셋의 대부분을 차지합니다.
|
|
- **테스트(testing)**. 테스트 데이터셋은 독립적이고, 보통 원본 데이터에서 가져온 데이터 그룹이며, 구축된 모델의 성능을 확인하는 데 사용합니다.
|
|
- **검증(validating)**. 검증 세트는 하이퍼파라미터나 모델 구조를 조정하기 위한 작은 독립적 데이터 그룹입니다. 데이터 크기나 질문에 따라서는 검증 세트를 만들지 않아도 됩니다([시계열 예측](../../7-TimeSeries/1-Introduction/README.md)에서 참고).
|
|
|
|
## 모델 구축
|
|
|
|
훈련 데이터를 사용해 여러 알고리즘으로 모델을 <strong>훈련</strong>시켜 데이터의 통계적 표현인 모델을 만드는 것이 목표입니다. 모델 훈련은 모델이 데이터 속의 패턴을 인식하고 가정하며 이를 검증하고 수용하거나 거부하는 과정을 포함합니다.
|
|
|
|
### 훈련 방법 결정
|
|
|
|
질문과 데이터 성격에 따라 훈련 방법을 선택합니다. 이 과정에서 본 강의에 사용되는 [Scikit-learn 문서](https://scikit-learn.org/stable/user_guide.html)에 따라 여러 훈련 방법을 탐색할 수 있습니다. 경험에 따라 최고의 모델을 구축하기 위해 여러 방법을 시도해야 할 수도 있습니다. 데이터 과학자들은 모델에 본 적 없는 데이터를 먹여 정확도, 편향, 기타 품질 저하 문제를 확인하고 가장 적절한 훈련 방법을 찾는 과정을 거칩니다.
|
|
|
|
### 모델 훈련
|
|
|
|
훈련 데이터를 바탕으로 모델을 '적합(fit)'시키도록 준비합니다. 많은 ML 라이브러리에서 'model.fit' 코드를 볼 수 있는데, 이때 특성 변수(X 배열)와 타깃 변수(y 배열)를 전달합니다.
|
|
|
|
### 모델 평가
|
|
|
|
훈련 과정이 완료되면(대형 모델은 여러 반복 또는 '에포크'가 필요) 테스트 데이터를 사용해 모델 성능을 평가할 수 있습니다. 테스트 데이터는 모델이 본 적 없는 원본 데이터의 일부입니다. 모델 품질에 관한 지표를 표로 출력할 수 있습니다.
|
|
|
|
🎓 **모델 적합**
|
|
|
|
머신러닝 맥락에서 모델 적합은 익숙하지 않은 데이터를 분석하는 모델의 기본 함수 정확도를 의미합니다.
|
|
|
|
🎓 <strong>과대적합(overfitting)</strong>과 <strong>과소적합(underfitting)</strong>은 모델 품질을 떨어뜨리는 흔한 문제입니다. 과대적합은 모델이 훈련 데이터의 세부사항과 잡음을 너무 잘 학습해 너무 밀접하게 맞춘 상태이고, 과소적합은 훈련 데이터나 본 적 없는 데이터를 모두 정확하게 분석하지 못하는 상태입니다.
|
|
|
|

|
|
> 인포그래픽 by [Jen Looper](https://twitter.com/jenlooper)
|
|
|
|
## 파라미터 조정
|
|
|
|
초기 훈련이 끝나면 모델 품질을 관찰하고 '하이퍼파라미터'를 조정해 성능을 개선할 수 있습니다. 관련 과정은 [문서](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)에서 더 읽어보세요.
|
|
|
|
## 예측
|
|
|
|
이제 완전히 새로운 데이터를 사용해 모델 정확도를 테스트할 차례입니다. 실제 ML 환경에서는 사용자 입력(예: 버튼 클릭)을 받아 변수를 설정하고 모델에 전송해 추론 또는 평가를 수행할 수 있습니다.
|
|
|
|
이번 수업 과정에서 여러분은 데이터 과학자가 하는 모든 과정—준비, 구축, 테스트, 평가, 예측—을 배우고, ‘풀스택’ ML 엔지니어로 가는 여정을 이어갑니다.
|
|
|
|
---
|
|
|
|
## 🚀도전 과제
|
|
|
|
ML 실무자의 단계별 플로우차트를 그려보세요. 지금 현재 자신은 어느 단계에 있다고 생각하나요? 어디서 어려움을 느낄 것 같나요? 어디가 가장 쉽다고 생각하나요?
|
|
|
|
## [수업 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
## 복습 및 자기 주도 학습
|
|
|
|
데이터 과학자가 일상 업무에 대해 이야기하는 인터뷰를 온라인에서 찾아보세요. 여기에 [하나](https://www.youtube.com/watch?v=Z3IjgbbCEfs) 있습니다.
|
|
|
|
## 과제
|
|
|
|
[데이터 과학자 인터뷰](assignment.md)
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**면책 조항**:
|
|
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인한 오해나 잘못된 해석에 대해서는 책임지지 않습니다.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |