부분 최소제곱 회귀(PLS)란? AI에서 정답과 함께 변하는 축으로 수치를 예측하는 방법
TL;DR
부분 최소제곱 회귀(PLS)는 입력 특징과 수치 정답이 함께 변하는 방향을 찾아 적은 성분으로 예측하는 지도 회귀 방법입니다. 입력의 분산만 보는 PCA와 달리 축을 만드는 과정에서 정답도 사용합니다. 서로 비슷한 측정값이 많거나 입력 열이 많은 문제에서 비교할 만하지만, 성분 수를 늘린다고 새 자료의 성능까지 좋아지지는 않습니다. 데이터 분할 뒤 훈련 자료로 축과 스케일을 학습하고 검증 오차로 성분 수를 고릅니다.
핵심 3줄 요약
- 핵심 1
정답을 보면서 축을 만듭니다. 입력의 큰 변동보다 입력과 정답의 공분산을 함께 살핍니다. - 핵심 2
성분은 원본 열의 조합입니다. 몇 개 열을 그대로 선택하는 작업과 구별합니다. - 핵심 3
성분 수는 검증으로 정합니다. 축 학습까지 분할 안에서 수행해야 평가 누수를 막습니다.
이 글에서 다룰 내용
- 부분 최소제곱 회귀의 한 문장 정의
- 작은 분산 방향에 정답이 있는 실제 합성 예시
- 입력과 정답의 공분산·투영·잔차 갱신의 작동 순서
- 성분 수·스케일링·점수·로딩·계수 읽는 법
- PCA·PCR·특징 선택·PLSCanonical·CCA와의 차이
- 많은 측정값과 다중 수치 정답의 사용처
- 자료 분할·독립 평가·새 입력 점검 순서
부분 최소제곱 회귀를 한 문장으로 정의하면 무엇인가요?
부분 최소제곱 회귀는 입력과 정답의 공분산을 반영한 잠재 성분을 차례로 만들고, 그 성분으로 하나 이상의 수치 정답을 예측하는 선형 회귀 방법입니다.
PLS는 Partial Least Squares의 약어입니다. 부분최소제곱법, 부분 최소 제곱 회귀처럼 띄어쓰기를 달리 쓰기도 합니다. 이 글에서는 scikit-learn의
PLSRegression
을 기준으로 설명하며, PLS 계열의 모든 변환기를 같은 예측 모델로 묶지는 않습니다.
공분산은 두 값이 함께 커지거나 작아지는 정도를 나타냅니다. 입력 X와 정답 y를 각각 낮은 차원의 표현으로 옮기면서 둘 사이의 공분산을 크게 담는 방향을 찾습니다. 잠재 성분은 원본 측정값 여러 개를 가중합한 새 좌표이며 실제 숨은 원인을 발견했다는 뜻은 아닙니다.
한 줄 정리: 입력만 잘 요약하는 축을 고르는 데서 한 걸음 더 나아가, 정답과 함께 변하는 축을 학습해 숫자를 예측합니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 비슷한 센서 두 개로 품질 수치를 예측한다고 가정해 보겠습니다. 센서값이 크게 함께 움직이는 방향보다 두 센서의 작은 차이가 품질과 더 관계 있을 수 있습니다. 공식 PCR·PLS 비교 예제는 이런 상황을 합성 자료로 보여 줍니다. 실제 장비의 성능을 측정한 결과는 아닙니다.
- 특징 두 개의 합성 표본 500개를 만들고, 분산이 작은 두 번째 PCA 방향에 잡음을 더해 수치 정답을 생성합니다. 난수 시작값은 0입니다.
- 공식 예제와 같은 분할로 375개는 훈련, 125개는 테스트에 사용합니다. PCA 축 하나 뒤에 선형 회귀를 붙인 PCR과 성분 하나의 PLS를 비교합니다.
- scikit-learn 1.9.1에서 직접 실행한 테스트 R²는 PCR이 -0.026, PLS가 0.658입니다. 같은 자료에서 성분 두 개의 PCR은 0.673이었습니다.
축 하나만 남긴 PCR은 분산이 큰 방향을 택하면서 정답과 관계 있는 작은 분산 방향을 놓쳤습니다. PLS는 축을 만들 때 정답을 사용하므로 이 예시에서는 그 관계를 더 잘 담았습니다. 다만 PCR도 두 방향을 모두 남기자 성능이 좋아졌으므로 PLS가 언제나 PCA 기반 회귀보다 낫다는 결론은 맞지 않습니다.
이 합성 예제는 전체 X에서 정답 생성용 PCA 방향을 먼저 정합니다. 생성 규칙을 만들기 위한 단계이고, 평가할 PCR과 PLS는 훈련 자료에서만 학습했습니다. 실제 업무에서는 전체 자료와 정답으로 PLS 축을 미리 만든 뒤 테스트를 나누는 방식으로 바꾸면 안 됩니다.
쉬운 예시: 입력에서 크게 흔들리는 방향과 정답을 예측하는 방향은 다를 수 있습니다. 공식 예제의 숫자는 이 차이를 보여 주는 한 번의 합성 결과입니다.
왜 AI에서 부분 최소제곱 회귀가 중요한가요?
서로 비슷한 측정값을 적은 성분으로 모읍니다
많은 센서나 측정 채널이 같은 현상을 반복해서 담으면 입력 열 사이 상관이 강해집니다. PLS는 여러 열을 적은 성분으로 결합해 수치 정답과의 관계를 살핍니다. 원본 열 전체를 쓴 회귀나 릿지 같은 기준 모델과 비교해 실제 이득을 확인합니다.
입력의 요약과 예측 목적을 연결합니다
PCA는 입력 분산을 요약하는 데 유용하지만 분산이 큰 방향이 정답 예측에도 유용하다는 보장은 없습니다. PLS는 정답을 축 학습에 포함합니다. 정답 신호를 반영하는 만큼 잘못된 라벨이나 평가 자료가 들어가면 축 자체도 그 오류를 배웁니다.
성분 수로 모델의 복잡도를 조절합니다
PLSRegression은 적은 성분을 사용하는 선형 회귀의 한 형태입니다. 성분 수가 표현의 크기와 규제 정도를 조절합니다. 입력 열이 표본보다 많아도 검토할 수 있지만 충분한 관측값이나 독립 평가가 필요 없어진다는 뜻은 아닙니다.
핵심 인사이트: PLS는 큰 변동을 남기는 일과 정답을 예측하는 일을 같은 목표로 보지 않습니다. 어떤 축이 유용한지는 보지 않은 자료에서 확인합니다.
부분 최소제곱 회귀는 어떤 순서로 작동하나요?
1. 입력과 수치 정답의 중심과 척도를 맞춥니다
같은 행이 같은 사례를 뜻하도록 입력 X와 정답 y를 정렬합니다. 확인한 구현은 훈련 평균을 빼서 중심화하고, 기본
scale=True
에서는 X와 y의 열을 스케일링합니다. 정답이 여러 개라면 각 수치 정답의 척도도 성분 학습에 영향을 줍니다.
2. 함께 변하는 방향을 찾아 점수로 투영합니다
현재 입력과 정답의 교차 공분산을 보고 성분 방향을 구합니다. 각 사례를 그 방향으로 투영한 값이 성분 점수입니다. 점수는 사례의 새 좌표이고 방향을 만드는 가중치와 다릅니다. 입력 열의 평균값 하나를 대표 성분으로 쓰는 방식은 아닙니다.
scikit-learn의 PLSRegression은 NIPALS 방식의 거듭제곱 반복으로 필요한 방향을 추정합니다. 사용자 가이드에는 PLSCanonical 알고리즘이 먼저 나오지만 회귀 변형에서는 정답을 입력 점수로 근사합니다. 정준형의 모든 단계를 그대로 옮기지 않습니다.
3. 설명한 부분을 빼고 다음 성분을 찾습니다
얻은 입력 점수로 입력과 정답을 근사한 뒤 설명한 부분을 제거합니다. 이런 잔차 갱신을 디플레이션이라고 부릅니다. 남은 부분에서 다음 성분을 찾으며 최종적으로 새 입력을 수치 예측으로 연결할 계수와 절편을 얻습니다.
새 사례를 예측할 때는 그 사례의 실제 정답이 필요하지 않습니다. 훈련에서 저장한 평균·스케일·투영 및 회귀 계수를 사용합니다. 정답이 필요한 축 학습 단계와 입력만 사용하는 예측 단계를 구별하세요.
주요 설정과 결과는 어떻게 읽나요?
성분 수와 스케일링의 역할을 구분합니다
n_components
는 남길 성분 수이고
scale
은 입력과 정답의 스케일링 여부입니다. 기본 성분 수는 2지만 모든 자료에 맞는 답은 아닙니다. 같은 분할에서 성분 수별 검증 오차와 실행 시간을 비교합니다.
현재 구현은 회귀 성분 수의 상한을 표본 수와 특징 수 중 작은 값으로 검사합니다. 중심화나 열의 선형 의존 때문에 실제 쓸 수 있는 방향은 더 적을 수 있습니다. API의 특징 수 범위 안내만 읽고 표본 수보다 큰 값을 허용한다고 판단하지 않습니다.
점수·가중치·로딩·회전은 다른 값입니다
x_scores_
는 훈련 사례의 성분 좌표,
x_weights_
는 방향을 구할 때의 가중치,
x_loadings_
는 성분으로 입력을 근사할 때의 로딩입니다. 새 입력 변환에 쓰는 투영 행렬은
x_rotations_
입니다. 이름이 비슷해도 서로 바꿔 끼우지 않습니다.
transform(X_new)
는 저장한 중심과 척도를 적용한 성분 좌표를 반환합니다.
predict(X_new)
는 수치 정답 예측을 반환합니다. 산점도 좌표와 예측값을 같은 출력으로 표시하지 말고, 계수와 원래 열 이름의 대응도 함께 저장합니다.
반복 종료와 테스트 점수를 나누어 봅니다
max_iter
와
tol
은 방향을 찾는 반복의 한도와 종료 기준입니다.
n_iter_
는 성분마다 수행한 반복 횟수입니다. 손실이 작아질 때까지 전체 신경망을 학습하는 에폭 수나 검증 지표의 조기 종료와는 다릅니다.
score(X_test, y_test)
는 결정계수 R²입니다. 분류 정확도나 예측이 맞을 확률이 아니며 음수도 나옵니다. 원래 정답 단위의 절대오차와 큰 오차 사례도 확인해야 업무에서 감당할 손실을 알 수 있습니다.
부분 최소제곱 회귀와 헷갈리는 용어는 무엇이 다른가요?
PCA·주성분 회귀와의 차이
기존 주성분 분석(PCA) 글은 정답 없이 입력 분산이 큰 축을 찾는 방법을 다룹니다. 그 뒤에 회귀를 붙이면 PCR입니다. PLS는 정답을 사용해 축을 학습하므로 축의 기준과 학습 입력이 다릅니다. PCA 글의 분산 주의점만으로 PLS의 공분산·잔차 갱신·예측 절차가 설명되지는 않습니다.
특징 선택·일반 회귀와의 차이
특징 선택은 원본 열 가운데 일부를 남기는 작업입니다. PLS의 적은 성분은 여러 열의 조합이므로 성분 두 개를 썼다고 센서 두 개만 읽는 모델이 되는 것은 아닙니다. 회귀는 숫자 예측이라는 넓은 과제이고 PLS는 그 과제를 푸는 구체적인 선형 모델입니다.
PLSCanonical과의 차이
PLSCanonical은 두 자료 블록을 정준형으로 다루며 정답의 근사 방식과 성분 수 제한이 PLSRegression과 다릅니다. 실제 합성 시험에서 수치 정답 하나로 회귀 성분 두 개를 학습했지만, 같은 조건의 PLSCanonical은 성분 상한이 1이라 오류를 반환했습니다.
algorithm="svd"
는 PLSCanonical의 문서화된 선택지입니다. 확인한 PLSRegression 생성자에는
algorithm
인자가 없습니다. 관련 API 페이지에서 본 설정을 이름이 비슷한 다른 추정기에 그대로 복사하지 않습니다.
정준 상관 분석과의 차이
정준 상관 분석(CCA)은 두 블록의 선형 조합 사이 상관을 찾는 방법으로, PLS 문헌에서는 Mode B와 연결됩니다. 가중치 계산 방식이 정준 PLS와 다릅니다. 입력이나 정답 열 수가 표본보다 많을 때 공식 가이드는 CCA 계산의 불안정성도 경고합니다. 두 블록을 함께 다룬다는 이유로 같은 결과를 기대하지 않습니다.
비교 정리: PCA는 입력 분산, PCR은 PCA 뒤 회귀, PLS 회귀는 정답과의 공분산을 이용한 예측입니다. 정준형 PLS와 CCA는 목적과 계산 계약을 따로 확인합니다.
실전에서는 어디에 쓰이나요?
서로 연관된 센서·측정 채널의 수치 예측
여러 채널이 겹치는 신호를 담는 표 데이터에서 결과 수치를 예측하는 후보가 됩니다. 같은 대상의 반복 측정은 평가 분할에서 서로 섞이지 않게 관리합니다. 성분 로딩을 살펴보더라도 특정 채널의 인과 효과를 확정한 것으로 보고하지 않습니다.
입력 열이 많은 작은 표 데이터의 비교 모델
특징이 표본보다 많거나 상관된 열이 많은 상황에서 릿지·엘라스틱넷 등과 비교합니다. 성분 수를 제한해 표현을 줄이되 표본 부족을 자동 해결한 것으로 보지는 않습니다. 결측 처리, 단위, 이상치와 분할별 결과의 흔들림을 같이 확인합니다.
여러 연속형 정답을 함께 예측합니다
PLSRegression은 정답 하나일 때 PLS1, 여러 정답일 때 PLS2로도 부릅니다. 품질 지표 여러 개 같은 수치 정답을 하나의 행에 연결할 수 있습니다. 각 정답의 단위와 중요도가 다르면 전체 평균 점수뿐 아니라 정답별 오차도 따로 남깁니다.
부분 최소제곱 회귀를 적용할 때 어떤 순서로 확인하나요?
1. 행의 단위와 예측 시점을 고정합니다
어떤 사례의 어떤 숫자를 언제 예측하는지 적습니다. 예측 시점에 없는 정보는 입력에서 제외합니다. 시간 순서나 대상 그룹에 맞춰 훈련·검증·최종 테스트를 나누고 입력과 정답의 행 대응을 확인합니다.
2. 성분 학습을 훈련 분할 안에서 수행합니다
결측값 대체와 PLS 학습은 각 훈련 폴드에서 다시 수행합니다. 전체 정답으로 축을 만든 뒤 나누면 정답 누수가 생깁니다. 검증 폴드에는 훈련에서 배운 변환만 적용하며 스케일링을 중복 적용하지 않는지도 봅니다.
3. 같은 자료로 성분 수와 기준 모델을 비교합니다
성분 수 후보는 실제 훈련 폴드의 표본 수와 유효 차원 안에서 정합니다. 원본 특징의 선형 회귀·규제 회귀·PCR을 같은 분할에 평가합니다. 최종 테스트 결과를 보고 성분 수를 반복 조정하지 않습니다.
4. 저장된 변환과 새 입력을 대조합니다
모델과 함께 입력 열 순서, 측정 단위, 결측 처리, 정답 이름을 저장합니다. 새 입력에서 성분 좌표와 예측값이 예상 모양으로 나오는지 시험합니다. 큰 오차 사례와 분포 변화도 남겨 재학습 후 결과를 비교할 수 있게 합니다.
실전 팁: 모델 이름보다 자료 분할·성분 수·스케일링·정답별 오차·열 순서를 한 묶음으로 보관하는 일이 중요합니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 전체 자료로 축을 먼저 만들지 않습니다. PLS는 정답까지 학습하므로 테스트 정답을 넣어 만든 축으로 테스트를 평가하면 성능을 믿을 수 없습니다. 축과 전처리 모두 훈련에서 배웁니다.
둘째, 성분을 늘리는 일을 성능 개선과 같게 보지 않습니다. 더 많은 방향은 잡음도 담을 수 있습니다. 훈련 점수가 좋아져도 검증 오차와 분할별 안정성은 나빠질 수 있으므로 같은 조건으로 비교합니다.
셋째, 성분이나 계수를 실제 원인으로 읽지 않습니다. 상관된 열의 기여는 함께 바뀔 수 있고 측정 단위도 계수에 영향을 줍니다. 모델 내부의 가중치, 업무 설명과 인과관계는 별도 확인 항목입니다.
넷째, 출력 숫자를 확률이나 보장 범위로 표시하지 않습니다. 기본 PLSRegression은 수치 예측을 반환합니다. 분류 확률, 예측 표준편차나 자동 신뢰구간을 반환하는 기능으로 소개하지 않습니다.
주의: 적은 성분으로 잘 맞췄다는 사실은 새 환경의 정확성이나 안전성을 보장하지 않습니다. 독립 평가와 입력 계약 점검을 생략하지 않습니다.
자주 묻는 질문
Q1. PLS는 정답 없이 차원을 줄이는 방법인가요?
이 글의 PLS 회귀는 입력과 수치 정답으로 성분을 학습하는 지도 방법입니다. PCA처럼 정답 없이 입력 분산만 보는 변환과 다릅니다. 새 입력을 변환하거나 예측할 때는 이미 학습한 모델을 사용합니다.
Q2. 정답이 하나면 성분도 하나만 쓸 수 있나요?
PLSRegression은 수치 정답 하나라도 여러 회귀 성분을 사용할 수 있습니다. 실제 시험에서도 두 성분을 학습했습니다. PLSCanonical의 정답 수 제한을 회귀 모델에 그대로 적용하지 않습니다.
Q3. 성분 수를 특징 수만큼 쓰면 항상 더 좋나요?
그렇지 않습니다. 계산 가능한 범위와 예측에 유용한 범위는 다릅니다. 중복 열이나 잡음이 많으면 성분 수를 늘려도 이득이 없으며 최종 개수는 훈련 분할 안의 검증으로 정합니다.
Q4. scale=False이면 중심화도 하지 않나요?
확인한 구현에서는 스케일링을 끄더라도 훈련 평균을 빼는 중심화는 수행합니다. 중심화와 표준편차에 따른 척도 조정은 다른 연산이므로 설정 이름만 보고 둘 다 꺼졌다고 판단하지 않습니다.
Q5. PLS의 점수는 모델 정확도인가요?
성분 점수는 사례를 투영한 좌표입니다. score 메서드가 반환하는 테스트 R²와 다른 뜻입니다. 좌표, 로딩, 회귀 계수와 평가 지표를 같은 점수 열에 섞어 저장하지 않습니다.
Q6. PLS가 PCA 기반 회귀보다 항상 낫나요?
아닙니다. 공식 합성 예시에서는 한 성분의 PLS가 한 성분의 PCR보다 좋았지만, 두 성분의 PCR도 좋은 결과를 냈습니다. 정답 신호와 잡음, 성분 수, 분할에 따라 달라지므로 실제 자료로 비교합니다.
출처
마무리
부분 최소제곱 회귀는 입력과 정답이 함께 변하는 방향을 적은 성분에 담아 숫자를 예측하는 방법입니다. 정답 없이 분산이 큰 축을 찾는 PCA, 원본 열을 남기는 특징 선택, 정준형 PLS와 각각 구분해 읽습니다.
처음 적용한다면 작은 자료에서 성분 좌표와 예측값의 차이부터 확인하세요. 이후 훈련 분할 안에서 축과 스케일을 학습하고 성분 수별 검증 오차를 기준 모델과 비교합니다. 입력을 얼마나 줄였는지뿐 아니라 새 자료에서 무엇을 놓치는지까지 보는 것이 마지막 점검입니다.
