회귀 분석은?
데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학 기법이다.
여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링하는 기법을 통칭한다.
머신러닝 외귀 예측의 핵심은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 회귀 계수를 찾아내는 것이다. (p.309)
회귀 계수가 중요한 만큼 회귀 계수에 따라 선형, 비선형으로 나뉘고, 독립변수 개수에 따라 단일, 다중 회귀로 나뉜다.
대표적인 선형 회귀
단순 선형 회귀 - 독립변수, 종속변수가 하나인 선형 회귀이다.
최적의 단순 선형 회귀 모델을 만든다는 것은 실제 값과 회귀 모델의 차이에 따른 오류, 즉, 남은 오류(잔차)를 최소화 하는 것이다.
오류 합 계산시에는 Mean Absolute Error나 Residual Sum of Square을 사용한다. 미분 등의 계산을 편리하게 하귀 위해 RSS 방식으로 오류 합을 구한다. 즉, 이다.
사이킷런의 linear_models 모듈은 다양한 선형 기반 회귀를 클래스로 구현해 제공한다.
그 중에 LinearRegression 클래스를 사용해서 보스턴 주택 가격을 예측해본다. (p.324)
LinearReression 클래스는 예측값과 실제 값의 RSS를 최소화해 OLS(Ordinary Least Squares) 추정 방식으로 구현한 클래스이다.
회귀의 평가는 실제값과 예측값의 차이를 그냥 더하면 오류가 상쇄 된다. 이 때문에 여러 평가 지표가 있다. (수식과 설명은 p.322 참고, 사이킷런 API 또한 p.323에 있다.)
회귀 평가 지표
위에 설명한 회귀는 1차 방정식(직선)으로 표현된 회귀였다.
독립변수의 방정식이 2차, 3차, 즉 다항식으로 표현되면 다항 회귀라고 한다. (비선형 회귀랑은 다르다.)
회귀를 나누는 기준은 회귀 계수의 선형/비선형 여부이고, 독립변수의 선형/비선형이 아니다.
사이킷런에서 다항 회귀에 대한 클래스는 명시적으로 제공하지 않아 여러 다른 클래스를 사용해, 선형 회귀함수에 넣는 방식으로 사용해야 한다.
다항 회귀 실습 (p.330)
회귀 모델은 과적합, 과소적합이 쉬어 이를 개선하기 위해 규제(regularization)해야 한다. (p.339)
과적합을 개선하귀 위한 비용 함수 목표를 봐보자
비용 함수 목표
규제는 크게 L2 방식과 L1 방식으로 구분된다. L2 규제는 대표적으로 릿지(Ridege)가 있고, 와 같이 의 제솝에 대해 패널티를 부여하는 방식이다. L1 규제는 대표적으로 라쏘(Lasso)가 있고, 와 같이 의 절댓값에 대해 페널티를 부여한다.
릿지 클래스의 주요 생성 파라미터는 이고, 이는 릿지 회귀의 규제 계수에 해당한다. (실습 p.339)
라쏘 클래스는 L2 규제가 회귀 계수의 크기를 감소시키는데 반해, L1 규제는 불필요한 회귀 계수를 급격하게 감소시켜 0으로 만들고 제거한다. (실습 p.343)
엘라스틱넷 회귀는 L2 규제와 L1 규제를 결합한 회귀이다. 즉, 이 회귀 비용함수의 목표는
식을 최소화 하는 를 찾는 것이다. 실습(p.345)
로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘이다. 즉, 분류에 사용된다. 회귀가 선형/비선형 인지는 가중치 변수에 따른다.
선형 회귀와 다른 점은 학습을 통해 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(Sigmoid) 함수 최적선을 찾고 시그모이드 함수의 반환 값을 확률로 간주해 확률에 따라 분류를 결정한다.
사이컷런의 LogisticRegression 클래스를 활용해 위스콘신 유방암 데이터 세트 기반 암 여부 판단 실습(p.352)
트리 기반의 회귀를 즉, 회귀 트리를 이용해 회귀를 할 수 있다.
함수로 봤을 떄 X 값의 균일도를 반영한 지니 계수를 따라 분할하여 규칙을 만들고, 노드를 만들 수 있다.
리프 노드 생성 기준에 부합하는 트리 분할이 완료됐다면 리프 노드에 소속된 데이터 값의 평균값을 구해서 최종적으로 리프 노드에 결정 값으로 할당한다.
RandomForestRegressor 클래스를 이용한 보스턴 주택 가격 예측 실습 (p.357)
자전거 대여 수요 예측 (p.362)
캐글 주택 가격: 고급 회귀 기법 (p.375)
ML의 큰 두 줄기를 훑어 봤다. 아직 까지는 무난 한듯 하다.