에이블 스쿨 4주차(8.28 ~ 9.1) - 4기 AI트랙
에이블 스쿨 시작한지 한 달이 다 되가는 4주차 !!
벌써 9월이라니,,😑
머신러닝
5일동안 진행된 머신러닝 수업이다.
학교다닐 때 한 학기동안 머신러닝 수업을 수강한 적이 있었는데 처음부터 어렵게 느껴져서 갈피를 못잡고 질질 끌려다녔던(?) 경험이 있다. 그래서 약간 겁 먹은 상태였지만 강사님이 천천히 너어무 잘 가르쳐주셔서 걱정할 필요가 없단 생각을 첫 날 느꼈다🤭
아, 졸지 말고 열심히 해야지 ~~
강사님께서 머신러닝을 소개해주 실 때, 드라마에 나온 대사를 보여주셨다.
대사 첫 마디 보자마자 드라마광인 나는 바로 스타트업인걸 알았다 ( ˙◞˙ )
컴공과 천재인 도산이가 멋있었다.. 그리고 드라마에서 해커톤 대회도 나오고 달미가 발표하는 부분도 인상 깊게 볼 수 있었다. 전공 관련 드라마인지 모르고 보기 시작했었는데 나름 흥미롭게 시청했다 !! 추천 드립니다.
간단한 내용 정리
학습 방법에 따른 분류
- 지도학습
- 비지도학습
- 강화학습
과제에 따른 분류
- 분류 문제 - 지도 학습
- 회귀 문제 - 지도 학습
- 클러스터링 - 비지도 학습
이번 과정은 지도학습인 분류문제와 회귀 문제를 다루었다.
문제 유형이 분류 문제 인지 회귀 문제인지 유형 파악 ➝ 알고리즘과 평과 방법 선택 ➝ 관련함수로 모델링 진행
# 1단계: 불러오기
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
# 2단계: 선언하기
model = LinearRegression()
# 3단계: 학습하기
model.fit(x_train, y_train)
# 4단계: 예측하기
y_pred = model.predict(x_test)
# 5단계: 평가하기
print('MAE:',mean_absolute_error(y_test, y_pred))
↪ 모델링 코드 구조
5일동안 지겹도록 작성한 코드!! 이젠 눈 감고도 작성 가능(?)
회귀 모델 성능 평가
➭ 값이 작을수록 모델 성능이 좋음
➭ 0 ~ 1 사이의 값, 1이면 모델 완벽히 학습한 것
분류 모델 성능 평가
Confusion Matrix
Confusion Matrix 형태 | Predicted Value | ||
Negative 0 | Positive 1 | ||
Actual Value | Negative 0 | TN | FP |
Positive 1 | FN | TP |
- 정확도(Accuracy) = (𝑇𝑁 + 𝑇𝑃) / (𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁 + 𝑇𝑃)
- 정밀도(Precision) = 𝑇𝑃 / (𝐹𝑃 + 𝑇𝑃) ➫ 예측관점
- 재현율(recall) = 𝑇𝑃 / (𝐹𝑁 + 𝑇𝑃) ➫ 실제관점
Classfication Report
알고리즘
- Linear Regression - 회귀 모델에만 사용, 변수가 많아지면 모델이 복잡해짐
- KNearest Neighbor - 회귀모델, 분류모델 사용, k값이 적을수록 모델이 복잡해짐, 스케일링 필요(정규화)
- Decision Tree - 회귀모델, 분류모델 사용, 트리 깊이가 클수록 모델이 복잡해짐(가지치기 필요!)
- Logistic Regression - 분류모델에만 사용
K- Fold Cross Validation
k개의 분할에 대한 성능 예측 ➟ 더 일반화된 모델
모델 선언 후 cross_val_score()으로 사용 가능(기본 분할 개수 cv = 5)
# 1단계: 불러오기
frombsklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
# 2단계: 선언하기
model = DecisionTreeClassifier(max_depth=3)
# 3단계: 검증하기
cv_score = cross_val_score(model, x_train, y_train, cv=10)
# 확인
print(cv_score)
print(cv_score.mean())
튜닝
Hyperparameter : 모델 성능을 최적화하기 위해 조절할 수 있는 매개변수
- KNN : k값(n_neighbors) 에 따라 성능이 달라진다
- Decision Tree : max_depth(트리 최대 깊이 제한), min_samples_leaf, min_samples_split 파라미터 값 조정
Grid Search : 파라미터 값 범위를 모두 사용하여 모든 경우의 성능 확인 ➤ 가장 좋은 성능을 보인 파라미터값으로 학습
Random Search : 파라미터 값 범위에서 몇 개 선택할지 지정하여 지정한 개수의 임의의 값에 대한 성능 확인
➤ 가장 좋은 성능을 보인 파라미터값으로 학습
앙상블
1) 보팅 : 모델들의 예측 결과를 투표를 통해 최종 예측 결과를 결정
2) 배깅 : 데이터로부터 부트스트랩한 데이터로 모델들을 학습 → 모델들의 예측 결과를 집계
* Random Forest
- 랜덤하게 데이터 샘플링
- 개별 모델이 트리 구성 시 Feature 랜덤하게 선정
- 트리 여러개가 모여 Forest 숲 구성
3) 부스팅 : 같은 유형의 알고리즘 기반 모델 여러 개에 대해 순차적으로 학습
* XGBoost
- 회귀, 분류 문제를 모두 지원
4) 스태킹 : 여러 모델의 예측 값을 최종 모델의 학습 데이터로 사용하여 예측, 캐글같은 미세한 성능 차이로 승부를 결정하는 대회에서 사용
'교육 > KT 에이블스쿨' 카테고리의 다른 글
[KT AIVLE School(에이블스쿨)] - 6주차 후기(미니 프로젝트 2차, 시각지능 딥러닝) (2) | 2023.09.19 |
---|---|
[KT AIVLE School(에이블스쿨)] - 5주차 후기(딥러닝) (4) | 2023.09.09 |
[KT AIVLE School(에이블스쿨)] - 3주차 후기(미니프로젝트 1차, 웹 크롤링, 1차 코딩마스터스) (20) | 2023.08.28 |
[KT AIVLE School(에이블스쿨)] - 2주차 후기(데이터 처리, 데이터 분석) (15) | 2023.08.27 |
[KT AIVLE School(에이블스쿨)] - 1주차 후기(Opening Day, Git, Python) (0) | 2023.08.27 |