View
1. 배운 내용
(1) GridSearchCV를 사용하여 Decision Tree 모델의 하이퍼파라미터를 최적화하는 방법을 학습했습니다.
(2) K-Fold 교차 검증을 활용하여 데이터를 안정적으로 평가하고, 최적의 하이퍼파라미터 조합을 도출했습니다.
(3) 하이퍼파라미터(max_depth, min_samples_split, min_samples_leaf)의 의미와 설정이 모델 성능에 미치는 영향을 이해했습니다.
2. 세부 설명
GridSearchCV
- 하이퍼파라미터를 탐색할 수 있는 Scikit-learn 도구로, 모든 조합을 평가하여 최적의 모델을 선택합니다.
- 사용한 하이퍼파라미터
parameters = {'max_depth': [2, 3, 5, 10], 'min_samples_split': [2, 3, 5], 'min_samples_leaf': [1, 5, 8]}
- 최적의 조합
{'max_depth': 5, 'min_samples_split': 3, 'min_samples_leaf': 1}
- 최고 교차 검증 정확도: 0.8412
- K-Fold 교차 검증
- 데이터를 5개 Fold로 나누어 교차 검증을 수행.
- 데이터 분할로 인한 편향을 줄이고, 안정적인 성능을 평가 가능.
- Decision Tree의 과적합 방지
- max_depth : 트리의 깊이를 제한하여 과적합 방지.
- min_samples_split와 min_samples_leaf : 노드 분할과 리프 노드의 최소 샘플 수를 조정하여 모델의 일반화 성능 향상.
3. 직면한 문제와 해결 방법
1) 문제 : GridSearchCV 수행 시 하이퍼파라미터 조합이 많아 학습 시간이 길어졌습니다.
2) 해결 방법
- RandomizedSearchCV로 대체하여 일부 조합만 탐색.
- 교차 검증 Fold 수를 5에서 3으로 줄여 학습 속도 향상.
- 병렬 처리(n_jobs=-1) 옵션을 추가하여 학습 시간을 단축.
4. 느낀 점과 개선 방안
1) 느낀 점
- 하이퍼파라미터 설정이 모델 성능에 중요한 영향을 미친다는 것을 다시 한 번 깨달았습니다.
- GridSearchCV는 편리하지만, 데이터나 하이퍼파라미터 조합이 많을 경우 실행 시간이 길어질 수 있다는 점도 배웠습니다.
2) 개선 방안
- 다른 모델(Random Forest, XGBoost 등)에 대해서도 GridSearchCV와 RandomizedSearchCV를 적용해 비교.
- 성능 비교를 위해 ROC-AUC와 같은 추가적인 평가 지표를 학습 과정에 포함.
- 대규모 데이터셋에서 실행 속도를 개선하기 위한 추가적인 방법 탐구.
Django 실습
1. Django - 배운 내용
1) Django 프로젝트 구조 이해
- settings.py, urls.py, views.py의 역할과 관계를 학습.
- 앱 단위로 프로젝트를 관리하는 방식 익히기.
2) 모델과 데이터베이스
- models.py에서 모델 정의 및 데이터베이스 마이그레이션 과정 실습.
- Admin 페이지에서 모델 데이터 관리 방법 이해.
3) Django ORM : Django ORM을 사용하여 데이터 생성, 조회, 수정, 삭제(Create, Read, Update, Delete) 연습.
2. 학습한 내용에 대한 세부 설명
1) 프로젝트와 앱 구성
- 프로젝트는 여러 앱으로 나뉘며, 각 앱은 특정 기능에 초점을 맞춰 설계.
- python manage.py startapp [app_name] 명령어로 앱 생성.
2) URL 및 View 연동
- urls.py에서 URL 패턴을 정의하고, views.py에서 요청을 처리하는 함수 작성.
- URL과 View의 연계를 통해 사용자 요청 처리 흐름을 이해.
3) Admin 페이지 활용 : Admin 페이지에 모델을 등록하여 데이터 관리 인터페이스 활용
from .models import MyModel
admin.site.register(MyModel)
3. 직면한 문제와 해결 방법
1) 문제: 모델 변경 후 마이그레이션을 적용하지 않아 데이터베이스 구조가 갱신되지 않음.
2) 해결 방법
- python manage.py makemigrations와 python manage.py migrate 명령어 사용하여 문제 해결.
- 모델 수정 후 마이그레이션 과정을 항상 확인하기로 다짐.
1) 문제: Django ORM 쿼리 작성이 익숙하지 않아, 복잡한 데이터 조회에 어려움이 있었음.
2) 해결 방법
- 공식 문서와 Django 쉘(python manage.py shell)을 활용하여 ORM 쿼리 테스트.
- 예제 쿼리
from myapp.models import MyModel data = MyModel.objects.filter(name="John")
4. 느낀 점과 개선 방안
1) 느낀 점
- Django는 직관적인 설계로 초보자도 쉽게 웹 애플리케이션을 만들 수 있지만, 모델 정의와 마이그레이션 과정이 익숙해질 때까지 반복 학습이 필요하다는 점을 느꼈습니다.
- ORM은 SQL보다 직관적이지만, 복잡한 쿼리 작성에는 추가적인 학습이 필요합니다.
2) 개선 방안
- Django 공식 문서의 튜토리얼을 따라 CRUD 작업을 더 익숙하게 만들기.
- Django ORM의 활용 예제를 더 찾아보며 실습을 통해 익히기.
- 추가적으로 Django의 사용자 인증, 템플릿 시스템 학습 계획 세우기.
'TIL' 카테고리의 다른 글
내일배움캠프 본캠프 29일차 - 혼동행렬 (0) | 2025.01.06 |
---|---|
내일배움캠프 본캠프 28일차 - KFold 교차검증 (2) | 2025.01.03 |
내일배움캠프 본캠프 27일차 (0) | 2025.01.02 |
내일배움캠프 본캠프 26일차 - GPT에게서 온 편지 (2) | 2024.12.31 |
내일배움캠프 본캠프 25일차 - 파이썬은 헷갈려 / 쟝고 투두리스트만들기 (0) | 2024.12.30 |
reply