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(yi∣xi,w)/1−p(yi∣xi,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)=∣∣y−Xw∣∣22/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 클래스로 구현.