CS/딥러닝

[딥러닝] 비선형 회귀 분석(2)

nowkoes 2023. 9. 26. 00:00

Non-linear regression

본문

구현

import numpy as np
import matplotlib.pyplot as plt
from sklearn.kernel_ridge import KernelRidge

# 1. 비선형 데이터 생성
rng = np.random.default_rng(0)
X = rng.uniform(0, 10, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])

# X 값을 정렬
X_sorted = np.sort(X, axis=0)

# 플로팅
plt.figure(figsize=(10,6))
plt.scatter(X, y, color='blue', label='Generated Data')  # 데이터 포인트를 표시
plt.plot(X_sorted, np.sin(X_sorted) + np.sin(6 * X_sorted), color='red', label='y = sin(x) + sin(6x)')  # 정렬된 X 값을 사용
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()

 

 어떤 데이터가 주어졌을 때, 해당 데이터를 가장 잘 설명하는 그래프가 다음과 같이 비선형 그래프인 y = sin(x) + sin(6x)라고 해보자. 해당 함수는 비선형성이 높기 때문에 과적합(overfitting)이 일어날 가능성이 매우 높다. 여기서 X 값들이 무작위로 생성되었기 때문에, 그래프를 명확하게 표현하기 위해 X 값을 정렬한 X_sorted 변수를 사용하였다.

 

# 2. 커널 리지 회귀를 사용하여 데이터에 맞춤
krr = KernelRidge(kernel="rbf", alpha=0.1, gamma=0.1)
krr.fit(X, y)
X_plot = np.linspace(0, 10, 1000)[:, np.newaxis]
y_krr = krr.predict(X_plot)

 

 이제 과적합을 방지하기 위해 커널 트릭을 사용해 보자. 이때 사용하는 커널은 RBF 함수고, 수식에서 없는 alpha는 과적합을 방지하기 위한 규제 파라미터다. 

 

# 3. 결과 시각화
plt.figure(figsize=(10,6))
plt.scatter(X, y, color='blue', label='Generated Data')  # 원래 데이터 포인트를 표시
plt.plot(X_sorted, np.sin(X_sorted) + np.sin(6 * X_sorted), color='red', label='y = sin(x) + sin(6x)')  # 정렬된 X 값을 사용한 원래 함수
plt.plot(X_plot, y_krr, color='green', label='Kernel Ridge Regression')  # 커널 리지 회귀로 예측한 값 표시
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()

 마지막으로 해당 데이터를 플로팅하면 비선형성이 줄어든 초록색 그래프가 그려진다는 것을 알 수 있다.


요약

비선형 회귀
1. 정의: 데이터의 복잡한 또는 비선형 패턴을 모델링하기 위해 사용되는 회귀 분석 방법
2. 문제점
 a. 과적합:
        - 데이터의 복잡한 패턴을 일률적으로 설명할 수 있지만, 새로운 데이터에 대한 예측 성능 저하를 초래
        - 규제를 추가하여, 특히 L2 norm을 사용하여 모델의 가중치가 너무 큰 값을 갖는 것을 제한하여 해결
 b. 계산 비용: 모델의 복잡도가 증가할수록, 해당 식을 계산하는 데 필요한 연산 비용이 증가
 c. 해석의 어려움: 어떤 특성이 결과에 어떤 영향을 미치는지 파악하기 어려움
3. 해결책
 a. 데이터를 높은 차원의 특성 공간으로 매핑하여 선형적으로 해석
 b. 커널 트릭
  - 커널 함수를 이용하여 높은 차원에서의 내적 연산을 계산, 이를 통해 원래의 공간에서 선형적으로 근사
  - 종류: RBF, sigmoid 등
반응형

'CS > 딥러닝' 카테고리의 다른 글

[딥러닝] Data Clustering  (0) 2023.10.09
[딥러닝] 선형 판별 분석(LDA)  (2) 2023.10.04
[딥러닝] 주성분 분석(PCA)  (2) 2023.09.30
[딥러닝] 비선형 회귀 분석(1)  (1) 2023.09.25
[딥러닝] 머신러닝과 1차 선형 회귀  (0) 2023.09.11