조합 회귀를 위한 오픈소스 C 프로그램 Regressor
초록
본 논문은 변수 간 곱셈 항을 포함하는 ‘조합 회귀’ 모델을 구현한 C 기반 오픈소스 프로그램 Regressor를 소개한다. 기존 다항 회귀와 비교해 조합 항을 추가함으로써 모델 적합도가 크게 향상되며, 실험에서는 LibreOffice Calc의 다중 회귀보다 R² 값이 최대 5배 높게 나타났다. 프로그램은 CSV 입력을 받아 지정된 차수의 조합 회귀 모델을 생성하고, QR 분해를 이용해 계수를 안정적으로 추정한다.
상세 분석
본 연구는 전통적인 다항 회귀가 변수의 독립적인 거듭 제곱 항만을 사용한다는 한계를 지적하고, 변수 간 곱셈 항을 포함하는 조합 회귀(combinatorial regression) 개념을 제안한다. 1차 다항 회귀에서 두 변수 X₁, X₂를 사용하면 β₀+β₁X₁+β₂X₂ 형태가 되지만, 조합 회귀는 추가 항 β₃X₁X₂를 도입해 비선형 상호작용을 모델링한다. 이로 인해 R² 값이 0.34에서 0.61으로 약 80% 향상되는 등 데이터 적합도가 눈에 띄게 개선된다.
알고리즘은 일반 다항 회귀와 동일하게 최소제곱 해를 구하지만, 설계된 행렬 M의 열 수가 (d+1)ᵛ 로 급격히 증가한다는 점이 핵심이다. 여기서 d는 차수, v는 변수 수이며, 열 수가 지수적으로 늘어나면서 메모리와 계산량이 크게 증가한다. 이를 완화하기 위해 저자는 행렬 M을 전치 형태(Mᵀ)로 저장하고, 열 우선 접근을 통해 캐시 효율성을 높였다. 또한, (MᵀM)⁻¹MᵀY 형태의 직접 역행렬 계산이 부동소수점 오차에 취약함을 인식하고, QR 분해 기반의 q r B etacalcul ator 함수를 구현해 수치적 안정성을 확보하였다.
C 코드 구현에서는 입력 데이터 행 수가 열 수보다 작을 경우 차수를 자동 감소시켜 과도한 차수 선택을 방지한다. 열 생성 루프에서는 로그 연산을 이용해 현재 열이 나타내는 변수 조합을 해석하고, 각 변수에 대해 pow 함수를 호출해 해당 차수의 거듭 제곱을 계산한다. 이 과정에서 limit 변수는 조합 항에 포함될 변수 개수를 제한해 불필요한 연산을 억제한다.
성능 평가에서는 45,000×625 크기의 행렬을 4코어 DDR3 시스템에서 기존 Jama 구현이 650초 걸리는 반면, 수정된 열 기반 QR 분해는 150초로 4배 가량 가속화되었다. 실험 데이터는 UCI의 단백질 구조, 심부전, 암 예측, COVID‑19 검사 결과 등 네 가지 데이터셋을 사용했으며, 각 데이터셋에 대해 LibreOffice Calc의 다중 회귀, RegressorPolynomial(다항 회귀 변형), 그리고 제안된 조합 회귀 모델을 비교하였다. 결과는 대부분의 경우 조합 회귀가 R² 값을 크게 앞섰으며, 특히 이진 종속 변수(심부전 사망, COVID‑19 양성)에서는 정확도가 5배 이상 향상되었다.
하지만 조합 회귀는 변수 수가 늘어나면 열 수가 급증해 메모리 요구량이 비현실적으로 커지는 문제와, 차수가 높아질수록 경계에서 발산(divergence) 현상이 나타나는 단점을 가지고 있다. 저자는 현재 구현이 삼각함수와 같은 복잡한 비선형 패턴에 대해 낮은 적합도를 보이며, 이는 실무에서 큰 제약이 되지는 않지만 향후 연구 과제로 제시하였다.
요약하면, 본 논문은 변수 간 상호작용을 명시적으로 모델링하는 조합 회귀를 구현하고, QR 분해를 통한 수치 안정화와 메모리 접근 최적화를 통해 실용적인 오픈소스 도구를 제공한다. 이 도구는 기존 선형·다항 회귀보다 높은 예측 정확도를 제공하지만, 차수와 변수 수에 따른 계산 복잡도 증가 문제를 해결하기 위한 추가 연구가 필요하다.
댓글 및 학술 토론
Loading comments...
의견 남기기