[AIVLE AI 6기] 무엇을 배우나요? 4주차-머신러닝2

·2024년 11월 26일
0

AIVLE

목록 보기
8/9
post-thumbnail

모델 정리

  • Linear Regression
  • K-Nearest Neighbor
  • Decision Tree
  • Logistic Regression
  • Random Forest
  • XGBoost
  • Light GBM

Linear Regression

  • 이름과 같이 회귀만 가능!
  • 선형 직선을 이용하여 값을 예측하는 방식

단순 회귀

  • 독립변수 개수로 회귀분석을 단순 회귀와 다중 회귀로 분류
  • 독립변수 하나가 종속변수에 영향을 미치는 선형 회귀
  • 𝑥 값 하나만으로 𝑦값을 설명할 수 있는 경우
  • 독립변수의 최선의 가중치와(w1)와 편향(w0)을 찾음

다중 회귀

  • 여러 독립변수가 종속변수에 영향을 미치는 선형 회귀
  • 𝑦 값을 설명하기 위해서는 여러 개의 𝑥 값이 필요한 경우
  • 각 독립변수의 최선의 가중치와(w1, w2, w3, w4…)와 편향(w0)을 찾음

code

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score

K-Nearest Neighbor

  • k-Nearest Neighbor: k 최근접 이웃(가장 가까운 이웃 k개)
  • 학습용 데이터에서 k개의 최근접 이웃의 값을 찾아 그 값들로 새로운 값을 예측하는 알고리즘
  • 회귀와 분류에 사용되는 매우 간단한 지도학습 알고리즘
  • 다른 알고리즘에 비해 이해하기 쉽지만, 연산 속도가 느림

k값의 중요성

  • k(탐색하는 이웃 개수)에 따라 데이터를 다르게 예측할 수도 있음
  • k 값에 따라 예측 값이 달라지므로 적절한 k 값을 찾는 것이 중요(기본값=5)
  • 검증 데이터로 가장 정확도가 높은 k를 찾아 KNN 알고리즘의 k로 사용

Scaling

  • 거리를 사용하기 때문에 정규화가 성능에 영향을 미침
# 함수 불러오기
from sklearn.preprocessing import MinMaxScaler
# 정규화
scaler = MinMaxScaler()
# scaler.fit(x_train)
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

code

# 회귀모델
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_absolute_error, r2_score
# 분류모델
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, classification_report
# 선언하기
model = KNeighborsRegressor(n_neighbors=5)

Decision Tree

  • 특정 변수에 대한 의사결정 규칙을 나무 가지가 뻗는 형태로 분류해 나감
  • 분류와 회귀 모두에 사용되는 지도학습 알고리즘
  • 분석 과정이 직관적이며, 이해와 설명하기가 쉬움
  • 스케일링 등의 전처리 영향도가 크지 않음
  • 과적합으로 모델 성능이 떨어지기 쉬움
  • 트리 깊이를 제한하는(=가지치기) 튜닝이 필요

가지치기

  • 가지치기를 하지 않으면 모델이 학습 데이터에는 매우 잘 맞지만, 평가 데이터에는 잘 맞지 않음
  • 여러 하이퍼파라미터 값을 조정해 가지치기 할 수 있음
    • max_depth, min_samples_leaf, min_samples_split 등
  • 학습 데이터에 대한 성능은 낮아지나, 평가 데이터에 대한 성능을 높일 수 있음
  • 가장 적절한 하이퍼파라미터 값을 찾도록 노력해야 함

code

# 회귀모델
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_absolute_error, r2_score
# 분류모델
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix, classification_report

# 선언하기
model = DecisionTreeRegressor(max_depth=5)

Logistic Regression

  • Sigmoid를 활용하여 분류만 가능한 모델!

로지스틱 함수

  • 시그모이드(sigmoid) 함수라고도 부름
  • 확률 값 𝑝 는 선형 판별식 값이 커지면 1, 작아지면 0에 가까운 값이 됨
  • (-∞, ∞) 범위를 갖는 선형 판별식 결과로 (0, 1) 범위의 확률 값을 얻게 됨
  • 기본적으로 확률 값 0.5를 임계값(Threshold)로 하여 이보다 크면 1, 아니면 0으로 분류함
  • 𝑥 데이터가 주어졌을 때 확률을 예측하는 로지스틱 회귀분석은 학습 데이터를 잘 설명하는 선형 판별식의 기울기(𝑎)와 절편(𝑏)을 찾는 문제

code

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, classification_report
# 선언하기
model = LogisticRegression()

앙상블(Ensemble)

  • 통합은 힘이다(Unity is strength)
  • 약한 모델이 올바르게 결합하면 더 정확하고 견고한 모델을 얻을 수 있다!
  • 여러 개의 모델을 결합하여 훨씬 강력한 모델을 생성하는 기법

배깅(Bagging)

  • Bootstrap Aggregating의 약자
  • 데이터로부터 부트스트랩 한 데이터로 모델들을 학습시킨 후, 모델들의 예측 결과를 집계해 최종 결과를 얻는 방법
  • 같은 유형의 알고리즘 기반 모델들을 사용
  • 데이터 분할 시 중복을 허용(복원 랜덤 샘플링 방식이라고 함)
  • 범주형 데이터(Categorical Data)는 투표 방식(Voting)으로 결과를 집계
  • 연속형 데이터(Continuous Data)는 평균으로 결과를 집계
  • 대표적인 배깅 알고리즘: Random Forest

부스팅(Boosting)

  • 같은 유형의 알고리즘 기반 모델 여러 개에 대해 순차적으로 학습을 수행
  • 이전 모델이 제대로 예측하지 못한 데이터에 대해서 가중치를 부여하여 다음 모델이 학습과 예측을 진행하는 방법
  • 계속하여 모델에게 가중치를 부스팅하며 학습을 진행해 부스팅 방식이라 함
  • 예측 성능이 뛰어나 앙상블 학습을 주도함
  • 배깅에 비해 성능이 좋지만, 속도가 느리고 과적합 발생 가능성이 있음
  • 대표적인 부스팅 알고리즘: XGBoost, LightGBM

code

# 회귀모델
from sklearn.ensemble import RandomForestRegressor
from xgboost import XGBRegressor
from sklearn.metrics import mean_absolute_error, r2_score

# 분류모델
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.metrics import confusion_matrix, classification_report


# 선언하기
model = RandomForestRegressor(max_depth=5, n_estimators=100, random_state=1)
model = XGBRegressor(max_depth=5, n_estimators=100, random_state=1)
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보