[실전머신러닝] 둘째마당: 선형 모델을 이용한 지도 학습

z00m__in·2023년 12월 10일
0
post-thumbnail

CHAP02. 최소 제곱법 모델

OLS의 정의

: 피처행렬 X가 주어졌을 때, 비용함수가 MSE(평균제곱오차)인 모델
⇒ |예측값-목푯값|이 최소이도록 예측값을 만드는 파라미터 w 찾는 것

정규 방정식으로 OLS 구현

: OLS를 푸는 가장 기본적이고 직관적인 방법
→ 연립방정식에 가까운 형태로,
→ 역행렬 계산에서 과다한 메모리 사용 문제 & 행렬이 특이행렬에 가까울 수록 수치적인 불안전성
⇒ 정규방정식보다 SVD 사용

특잇값 분해를 이용한 OLS 구현

: X = UΣVt의 세 행렬의 곱으로 분해하는 것
(U, V는 직교행렬, Σ는 대각행렬

TSVD-OLS를 이용한 OLS 구현

: k 개의 가장 큰 특이값만 선택한 뒤 SVD
파라미터 크기를 규제함으로서 피처 행렬을 안정적인 형태로 근사하기 위함
⇒ 최적해가 아닌 편향된 해이나, 불안정한 피처 행렬에도 강건한 성질

패키지로 표현

sklearn.linear_model.LinearRegression 클래스 사용하며,
해당 패키지는 OLS 기반.

CHAP 03. 로지스틱 회귀 모델

사전 지식

  • 경사 하강법
    : 지역 혹은 전역 최솟값을 구하는 수학적 최적화를 수행하는 방법
    : 경사의 역방향으로 입력값을 이동하며 목푯값을 달성
    - 최대하강법 : iter마다 grad 구해서 역방향으로 상수배만큼 이동
    - 뉴턴법, BFGS 등…
  • 컨벡스 함수 : 지역최솟값이 전역최솟값이 되는 함수

로지스틱 회귀 모델이란?

log(p(yixi,w)/1p(yixi,w))log(p(y_i|x_i, w)/1-p(y_i|x_i, w))

: 분류 문제를 해결하는 가장 기본적인 ML 모델

로지스틱 회귀 모델 구현하기

  • 이진 목푯값 y에 대해 1일 확률 p(y)과 x사이 관계를 모델링
  • 비용함수 또한 컨벡스
  • 단변수 로지스틱 회귀 모델
    → 비용함수의 편미분값을 구한 뒤 경사 하강법 적용해 최적화 구할 수 있음
  • 뉴턴법 이용한 다중 로지스틱 회귀 모델
    → iter 폭이 너무 커 발산할 수 있음

패키지로 표현하기

sklearn.linear_model.LogisticRegression 클래스 사용.
⇒ 이진, 다중 클래스 분류 뿐만 아니라 L1, L2, 엘라스틱 넷 규제 적용 가능

CHAP 04. 라쏘 모델

사전 지식

  • 피처 선택법
    : 전체 피처가 아닌 일부 피처를 정형화된 방법을 통해 예측 모델에서 제외하는 것
    (sklearn.feature_selection 모듈 사용)
    - 필터 기반 (sklearn.feature_selection.SelectKBest)
    : 단일 피처 대상으로, 설정한 기준을 만족하는 피처만 모델에 포함.
    ⇒ 목표변수와 대상피처가 수치형/범주형인지에 따라 선택법의 종류 달라짐
    - 래퍼 기반 (sklearn.feature_selection.RFE)
    : 적절한 필처 집합을 그리디 알고리즘을 이용해 찾는 방법
    ⇒ iter마다 피처를 추가하는 전진 선택법과 줄여가는 후진 소거법이 있음.
    ⇒ 정지 조건 : 피처의 갯수 / 성능값의 변화량 의 두가지 방법.
    - 임베디드 기반
    : 모델링 결과와 함께 피처 선택을 같이 진행.
  • 하방미분
    : 절댓값 함수를 미분할 때 사용하는 개념
    → 다변량 데이터셋에서는 닫힌 형태의 해를 가질 수 없어, 좌표 하강법을 함께 적용함
    ⇒ 한 피처에서만 업데이트가 일어나며 나머지 피처는 상수로 고정

라쏘 모델이란?

: 모델에 “피처 선택법”을 적용해 과적합 현상을 방지한 모델

JL(w)=yXw22/2n+αw1J_L(w) = ||y-Xw||^2_2/2n + α||w||_1

⇒ 수학적으로는 OLS 비용함수에 L1 규제항을 더한 형태
⇒ α값이 커질수록 피처 계수가 0으로 감쇄

라쏘 모델 구현하기

  • 하방미분과 좌표 하강법으로 최적화.
  • 라쏘모델 또한 컨벡스 함수
  • α값이 커집에 따라 점점 많은 파라미터가 0으로 감쇄해ㅏ므로,
    적당한 α를 선택한 후 감쇄되는 파라미터는 영향이 적다 가정하고 배제

패키지로 표현하기

sklearn.linear_model.Lasso 클래스에서 좌표 하강법을 통해 최적화

  • sklearn.linear_model.LassoLars 클래스를 해용하면 좌표 하강법이 아닌 lars 모델을 이용한 최적화

CHAP 05. 릿지 회귀 모델

사전 지식

  • BFGS 알고리즘 : 비제약 비선형 최적화 문제 푸는 iter 기반 기법
    → 2계 도함수인 헤시안 행렬과 그 역행렬을 사용해 파라미터 업데이트
    ⇒ scipy.optimize.minimize() 함수
  • L-BFGS 알고리즘: BFGS에서 제한된 메모리만 사용하도록 변형
  • L-BFGS-B 알고리즘: L-BFGS를 확장
    ⇒ sklearn에서 solver 하이퍼 파라미터 값을 lbfgs로 언급해 알고리즘 호출
  • SAG알고리즘: 특정 조건 만족하는 여러 컨벡스 함수의 유한 합을 최적화
    :: BFGS는 작은 데이터셋. SAG는 큰 데이터에서 사용
    → 피처 스케일의 전처리를 먼저 수행해야 함.
    ⇒ sklearn패키지의 solver 하이퍼파라미터의 값을 sag으로 설정해 호출
  • SAGA알고리즘: SAG에서 편향을없애고 보완한 변형 알고리즘
    ⇒ sklearn패키지의 solver 하이퍼파라미터의 값을 saga로 설정해 호출

릿지 회귀 모델이란?

L2 규제 페널티를 적용하는 모델
⇒ L2 규제항은 미분 가능하므로 최적화 방법은 OLS와 유사
⇒ 규제의 의미는 라쏘 모델과 유사
→ 라쏘에 비해 파라미터가 점진적으로 감쇄하는 경향.

  • OLS에 비해 분산은 줄지만 편향성은 증가하는 효과
  • OLS는 샘플 개수가 적을 때 학습한 모델 파라미터의 변동성에 큰 영향
  • 릿지는 규제를 통해 파라미터의 크기를 감쇄시켜 변동성을 줄임
  • 데이터의 선형성이 매우 높다면 릿지는 OLS보다 성능이 떨어짐.

패키지로 표현하기

sklearn.linear_model.Ridge 클래스로 구현.

profile
우당탕탕 기록지

0개의 댓글