[AIVLE] Week 04 정리

누디·2023년 2월 27일
0

AIVLE

목록 보기
4/8

무엇을 배웠나

머신러닝

머신러닝 이해

데이터 분석 때 변수를 분류와 회귀로 판단하는 것이 중요했는데 머신러닝도 똑같았다.
그리고 모델링에 대해 배웠다.
모델링이 별게 아니구 그냥 식을 만들어내는 것이었다!
앞에서 배웠던 numpy, pandas 등 모두 다 이어지는 내용이었다.
그리고 모델링 코드의 구조를 익힐 수 있었다.
그냥 무작정 깃헙에서 가져와 쓰기만 했었는데, 이렇게 이론적으로 배울 수 있어서 감동...
import -> 모델 선언 -> 학습 -> 예측 -> 모델 평가
아주 단순한 구조였다.

성능평가

모델을 만들었으면 성능을 평가해야 하는데, 여기서도 회귀 모델과 분류 모델이 나뉜다.
분류 모델의 관건은 정확도를 높이는 것이고, 회귀 모델은 실제 값에 가깝도록 오차를 줄이는 것이 중요했다.
그리고 각 모델의 평가 지표를 배웠다.
특히 RMSE는 회귀모델에만 사용된다는 것을 이제 알았다.......
아무튼 회귀모델은 R2로 평가하고, 높을수록 좋다.

분류모델은 정확도, 정밀도, 재현율을 따지는데 f-1 score로 평가한다고 한다.

기본 알고리즘

Linear Regression (선형회귀)

y = ax + b로 표현될 수 있는 가장 기본적인 회귀 알고리즘이었다.
회귀에만 사용된다!

K-Nearest Neighbor (K-최근접 이웃)

회귀와 분류 모두 사용되는 간단한 지도학습 알고리즘이다.
이 알고리즘은 적절한 k 값을 찾는 것이 관건이었다.
거리 기반 알고리즘으로 거리를 구하는 방식에 Euclidean과 Manhattan을 사용했다
그리고 이 알고리즘의 성능을 높이기 위해서는 스케일링 작업이 필요하다.
스케일링 작업에는 Normalization과 Standardization이 필요하다.

Decision Tree (결정 트리)

회귀와 분류 모두 사용되는 지도학습 알고리즘으로 트리 모양의 자료구조를 사용한다.
눈으로 확인할 수 있어 이해하기 쉽다는 장점이 있다.
하지만 의미 있는 질문을 먼저 하는 것이 중요하고, 오버피팅 위험이 있다.

Logistic Regression (로지스틱 회귀)

확률로 변환하여 분류를 결정하는 알고리즘으로,
확률로 변환하는데에 sigmoid함수가 사용된다.
확률 값 0.5를 기준으로 이진분류가 가능하다.

Support Vector Machine (SVM)

분류를 위해 기준선을 찾는 알고리즘
예전에 과제로 코드를 구현해본 적이 있는데 다시 살펴보니 새로웠다
정말 아무것도 모르고 코드만 짜려니 어려웠구나 싶고..
아무튼 SVM 성능을 높이기 위해서는 정규화 작업이 필요하다.
분류 문제와 회귀 모두 사용 가능함(SVC, SVR)

K-Fold Cross Validation

평가 과정에 관한 내용이다.
cross_val_score를 사용하여 데이터를 나누고 검증한다.

Hyperparameter 튜닝

하이퍼 파라미터란, 최적화된 모델링을 위해 조절할 수 있는 옵션을 말한다.
예를 들어, knn의 k값, 결정 트리의 max_depth 같은 것들이다
이걸 할 수 있는 방법으로 두 가지를 배웠다.

이것도 모델이다!!
성능을 테스트 할 파라미터 값의 범위를 딕셔너리 형태로 지정한 후 그 범위를 사용하는 grid search 모델을 선언하여 학습한다.

이건 범위 지정까진 똑같은데 몇 개 선택할지를 정해서 random search 모델로 학습한다.

앙상블(Ensemble)

쉽게 말해 모델을 합치는 것
약한 모델을 결합하면 더 나은 모델을 얻을 수 있다

보팅(Voting)

모델들의 투표 결과를 합치는 알고리즘
다른 유형의 알고리즘으로 예측한 결과를 합산해서 최종 결과를 낸다.
다만, 여기서 다수결로 하는 걸 하드보팅이라 하고 평균을 구하는 것을 소프트보팅이라 한다.

배깅(Bagging)

이름만 보고 구걸하는 알고리즘인가 했는데 아닌듯...
암튼 이건 같은 유형의 알고리즘 기반 분류기를 사용하고,
학습된 모델의 결과를 합쳐서 최종 결과를 얻는다.
범주형 데이터는 보팅을 사용하고, 연속형 데이터는 평균으로 집계한다.
보팅과 다른 점은 같은 유형의 알고리즘을 사용하기 때문에 샘플링된 데이터셋이 모델마다 다르다는 것이다.
배깅의 가장 대표적인 알고리즘으로 랜덤포레스트가 있다.
여기서 포레스트의 의미는 나무가 모여 숲을 이루듯 결정트리가 여러개 모이면 포레스트가 된다는 것이라고 한다..
랜덤포레스트도 진짜 많이 들어봤는데 이제야 정확하게 알았다...

부스팅(Boosting)

같은 유형의 알고리즘 기반 분류기를 사용하고 여러 개에 대해 순차적으로 학습을 수행한다.
순차적으로 학습하기 때문에 다음 분류기로 넘어갈 때 가중치(w)를 부여한다는 특징이 있다.
예측 성능이 뛰어나다고 한다!
가장 대표적인 부스팅 방법으로는 XGBoost, LightGBM이 있다.

스태킹(Stacking)

여러 모델의 예측 값을 최종 모델의 학습 데이터로! 사용해서 예측한다.
잘 안쓰이는데 캐글에서는 작은 성능도 중요해서 이런데에 쓰이는듯 하다.
기본 모델과 최종 모델이 다른것임

무엇을 느꼈나

Git 때와 마찬가지로... 난 정말 머신러닝 겉핥기만 했음을 깨닫게 되었다...
나 선형회귀 몰랐네....

0개의 댓글