머신러닝 알고리즘(선형회귀, 결정트리 등) 이해하기
- 이번 글에서는 다양한 머신러닝 알고리즘 중 몇가지들을 배워보도록 하겠다.
1. 선형회귀
* 회귀분석이란
- 일단 회귀분석을 왜 하는지 알아야 앞으로 내용들도 섞이지 않을 것이다. 회귀분석은 총 4단계의 프로세스가 있다.
1단계 : 두 변수 사이에 선형적 관계가 있다고 강력히 의심될 때, 회귀분석을 실시한다. 아래 식으로 표현되는 선형관계가 존재하는 것으로 이미 가정한다.

2단계 : 적절한 방식으로 수집된 적절한 데이터를 통해서 두 변수 간 선형관계를 가장 잘 설명해주는 직선, 즉 회귀직선을 찾는다.

실제로 두 변수 간에 관계가 있는지는 지금 알 수 없기 때문에, 표본을 추출한다. 표본을 적절하게 추출하는 방식과 회귀직선을 긋는 방법인 최소자승법은 이 글에서는 생략하도록하고 언급만하도록 하겠다.
3단계 : 우리가 알고 싶은 것은 결국 식 1의 베타 제로, 베타 원, 엡실론 값이다. 주어진 표본을 통해 계산한 식 2의 b0, b1, e 를 통해 추정하도록 한다.
4단계 : 더 나아가 회귀분석을 통해 예측까지 할 수 있다. 예측이란 표본에는 주어져 있지 않은 X 값을 대입하여 Y값을 예측해보는 것을 의미한다.
1-1 단순선형회귀
- 오차 : 모집단 회귀식 예측값 - 실제값
- 잔차 : 표본회귀식 예측값 - 실제값
1-2 단순선형회귀의 가정사항
- 아래 가정사항을 다 만족해야만 아래 E(Y) 의 회귀식을 쓸 수 있다.
1-3 결정계수(R2)
- SST (Sum of Squares Total): SST는 종속 변수의 전체 변동을 측정한 값이다. 즉, 종속 변수 값들이 평균에서 얼마나 퍼져있는지를 나타낸다.
SST = Σ(yᵢ - ȳ)² 여기서 yᵢ는 각 관측치의 종속 변수 값이고, ȳ는 모든 관측치의 종속 변수 값의 평균
- SSR (Sum of Squares Regression): SSR은 회귀 모델이 종속 변수의 변동을 얼마나 설명하는지를 나타내는 값이다. 즉, 회귀 모델이 종속 변수의 변동 중에서 설명 가능한 부분을 얼마나 잘 설명하고 있는지를 측정한다.
SSR = Σ(ŷᵢ - ȳ)² 여기서 ŷᵢ는 회귀 모델을 통해 예측한 종속 변수 값이며, ȳ는 모든 관측치의 종속 변수 값의 평균
- SST는 종속 변수의 전체 변동을 나타내며, SSR은 회귀 모델이 종속 변수의 변동을 설명하는 부분을 나타냅니다. R²는 0부터 1까지의 값을 가지며, 1에 가까울수록 회귀 모델이 종속 변수의 변동을 더 잘 설명하고 있다는 의미.
R² = SSR / SST, 회귀 모델이 종속 변수의 변동 중 얼마나 설명하는지의 비율을 나타내는 지표이다.
2. 다중선형회귀
: 2개 이상의 독립변수가 종속변수에 영향을 미치는가?
2-1 가설설정
- 귀무가설 : 가설설정 B0, B1, B2 ... Bp 모든 기울기는 0이다.
- 대립가설 : 모든 독립변수의 기울기가 0은 아니다(= 적어도 1개의 독립변수는 0이 아니다)
* 각 변수별 계수이며, 이들 변수에 대해 각각 검정해야한다.
2-2 가정사항
2-3 중요변수 찾기
- A 변수와 B 변수 각각 사용될 때 어느 변수가 더 중요한가?
= 상관계수 측정하여 더 높은 변수 채택
- A 변수, B 변수, C변수 함께 사용될 때(교호작용) 어느 변수가 더 중요한가?
- 특정 변수 포함 시 결정계수 증가량 파악
* PCC (Part Correlation Coefficient : 부분상관계수)
* PrCC(Partial Correlation Coefficient : 편상관계수)
* 교호작용이란?
<교호작용 interaction>
교호작용(interaction)이란, 설명변수간의 상호작용에 의해 각각의 설명변수와 반응변수의 관계만으로는(산술적으로 단순히 두 변수가 미치는 영향의 합으로는), 두 설명 변수에 의해 일어나는 반응변수를 예측 할 수 없는 경우를 말합니다.
예를들어, 고혈압은 유전적 요인과 비만 등 여러가지 요인에 의해 발생합니다.
비만과 유전적 요인에 의해, 고혈압이라는 질병의 유무를 예측한다고 하였을때, 비만과 유전적 요인에서 양의 교호작용이 일어나, 비만과 유전적 요인이 동시에 나타나는 경우, 고혈압의 위험성이 배 이상으로 더 늘어나는 경우 입니다.
비만인 경우 고혈압 발생 정도가 2배로 늘어난다고 하고, 부모 중 한명에게서 고혈압이 나타나는 경우, 자녀의 고혈압 발생정도가 4배로 늘어난다고 하였을때, 비만을 가지고 있고 동시에 부모에게서 고혈압이 관측된다면, 고혈압 발생정도가 8배가 된다고 예측할 수 있습니다.
하지만, 부모의 고혈압과 비만 사이에 양의 교호작용이 존재한다면, 두 요소가 모두 만족되었을때, 양의 교호작용에 의해 고혈압 발생정도가 8배를 넘게 됩니다.
반대로 설명변수간에 음의 교호작용이 존재한다면, 고혈압 발생정도가 8배 미만이 되겠죠.
설명변수 X와 지시변수 I 간의 교호작용이 일어난다면, XI라는 새 변수를 도입한 회귀모형이 적합합니다.
따라서 두 변수간의 교호작용이 존재하는지에 대해서는, XI앞의 회귀계수가 유의한지에 대한 검정을 통해 알 수 있겠죠.
교호작용을 포함한 모형이 Y = B0 + B1*X + B2*I + B3*XI + ε 라고 할때,
XI 변수의 회귀계수 B3이 유의한지에 대한 검증을 통해 X와 I 사이의 교호작용이 일어나는지 검정 할 수 있는것이죠.
H0 : B3 = 0
따라서, H0이 기각되는 경우, X와 I 사이의 교호작용이 일어난다고 결론 내릴 수 있습니다.
*교호작용에 대한 예시 (from Wikipedia)
교호작용에 대한 확실한 이해를 돕기 위해 몇가지 예시를 더 찾아보았습니다.
- 커피에 설탕을 첨가하는 것과 커피를 젓는 것 사이의 상호 작용. 두 개별 변수 중 어느 것도 단맛에 큰 영향을 미치지 않지만 두 변수의 조합은 효과가 있습니다.
- 기후 변화에 대한 일반 대중의 인식에 영향을 미치는 교육과 정치적 지향 간의 상호 작용. 예를 들어, 미국의 설문 조사에 따르면 인위적 기후 변화의 현실에 대한 수용은 온건하거나 자유주의적인 설문 조사 응답자들 사이에서 교육을받을수록 증가하지만 가장 보수적인 설문 조사 응답자들은 교육을받을수록 감소합니다.
- 강철에 탄소 첨가와 담금질 간의 상호 작용. 두 가지 모두 힘에 큰 영향을 미치지는 않지만 두 가지를 조합하면 극적인 효과가 있습니다.
<교호작용을 포함한 하나의 특성, 두개의 범주>
하나의 설명변수와, 두개의 범주로 나누어지는 하나의 지시변수, 그리고 설명변수와 지시변수 사이의 교호작용이 표함되는 모형은 다음과 같습니다.
Y = B0 + B1*X + B2*I + B3*XI + ε
-특성이 존재하는 경우 : I = 1 ----> Y = (BO + B2) + (B1 + B3)*X + ε
-특성이 존재하지 않는 경우 : I = 0 -----> Y = BO + B1*X + ε
<교호작용을 포함한 하나의 특성, 세개 이상의 범주>
하나의 설명변수와, 세개의 범주로 나누어지는 지시변수를 포함한 회귀모형은 다음과 같습니다.
Y = B0 + B1*X + B2*I(1) + B3*I(2) + B4*XI(1) + B5*XI(2) + ε
- 첫번째 범주에 속하는 존재하는 경우 : I(1) = 1, I(2) = 0 ---->Y = (B0 + B2) + (B1+B4)*X + ε
- 두번째 범주에 속하는 경우 : I(1) = 0, I(2) = 1 ----> Y = (B0 + B3) + (B1+B5)*X + ε
- 세번째 범주에 속하는 경우 : I(1) = 0, I(2) = 0 ----> Y = B0 + B1*X + ε
<교호작용을 포함한 두개이상의 특성>
하나의 설명변수와, 각각 두개, 4개의 범주로 나누어지는 두개의 지시변수(특성)을 포함한 회귀모형은 다음과 같습니다.
Y = B0 + B1*X + B2*I + B3*XI + B4*D(1) + B5*D(2) + B6*D(3) + B7*XD(1) + B8*XD(2) + B9*XD(3) + B10*ID(1) + B11*ID(2) + B12*ID(3) +ε
* PCC를 다중선형회귀에서 사용하는 이유?
- 다중공선성 확인: 다중공선성은 변수들 간에 강한 상관관계가 있을 때 발생하는 문제입니다. 이로 인해 모델의 안정성이나 해석력이 떨어질 수 있습니다. PCC를 통해 변수들 간의 상관관계를 분석하고, 높은 PCC 값을 가지는 변수들 중에서 하나를 선택하여 다중공선성을 해결할 수 있습니다.
- PCC와 목표 변수 간의 관계: PCC를 사용하여 목표 변수(종속 변수)와 각 독립 변수 간의 관계를 분석합니다. 목표 변수와의 부분상관계수가 높은 변수들은 모델링에 중요한 역할을 할 수 있습니다. 이러한 변수들은 예측 모델의 설명력을 높이는 데 도움이 될 수 있습니다.
- 변수 제거: PCC를 계산하여 변수들 간의 관계를 분석한 후, 덜 중요하다고 판단되는 변수들을 제거하는 방식으로 변수 선택을 수행할 수 있습니다. 높은 PCC를 가진 변수들은 중요한 관계를 나타낼 가능성이 높기 때문에 이러한 변수들을 유지하고, 낮은 PCC를 가진 변수들을 제거하여 모델을 단순화할 수 있습니다.
- 순차적 변수 선택: PCC를 사용하여 변수를 하나씩 추가하거나 제거하면서 모델의 성능을 평가하는 방식으로 순차적 변수 선택을 수행할 수 있습니다. 이 방법은 변수가 모델에 추가되거나 제거됨에 따라 PCC 값이 어떻게 변하는지 관찰하며 모델의 최적 구성을 찾는 데 도움을 줄 수 있습니다.
- 교차 검증과 결합: 변수 선택 과정에서 교차 검증을 사용하여 모델의 성능을 실제 데이터에 대해 평가하며, 다양한 변수 선택 기법과 결합하여 최상의 결과를 얻을 수 있습니다.
- 도메인 지식 활용: PCC를 통한 변수 선택은 통계적 기법 외에도 도메인 지식을 활용하는 데 도움이 됩니다. 도메인 전문가의 지식을 바탕으로 특정 변수의 중요성을 판단하고 변수 선택을 수행할 수 있습니다. 요약하면, PCC를 변수 선택에 활용하는 방법은 다중회귀 분석과 모델링에서 변수들 간의 상관관계를 분석하고 모델을 단순화하거나 중요한 변수를 선택하는 데 활용됩니다. PCC를 통해 변수들 간의 독립적인 관계와 목표 변수와의 관련성을 파악하여 의미 있는 변수 선택을 수행할 수 있습니다.
출처 : Chat-GPT 230821
3. 로지스틱 회귀 모델
- 로지스틱 회귀는 선형 회귀 방식을 응용해 분류에 적용
- 이진 분류 문제에 주로 로지스틱 회귀 사용
* 시그모이드 함수(Sigmoid Function)를 활용하여 타깃값에 포함될 확률 예측
- 0 ~ 1 사이 값, x 값이 작을수록 0에 가깝고, 클수록 1에 가까움, x가 0일 땐 0.5
- 이 값을 그대로 확률로 해석하여 타깃값에 포함될 확률을 구함.
- 0.5보다 작으면 0(음성), 0.5이상이면 1(양성)
4. 결정 트리(Decision Tree)
- 분류와 회귀 문제에 모두 사용 가능한 모델
4-1 분류에서의 결정 트리 특징
- 위 노드의 gini 계수가 아래 노드보다 항상 같거나 크다.
- gini 계수가 0이 된 이후로는 트리가 더 이상 뻗어나가지 않는다.(별표시)
4-2 결정 트리 구성 요소
구분 | 설명 |
뿌리노드(Root Node) | 구조가 시작되는 노드로 전체 자료로 구성 |
결정노드(Decision Node) | 규칙 조건 생성하여 규칙 노드 자식 노드가 있는 브랜치 노드(적절하게 질문하는 것이 중요) |
끝노드(Treminal Node) | 자식노드가 없는 노드 = 가지노드(Branch Node) = 리프노드(Leaf Node) |
서브 트리(Sub Tree) | 새로운 규칙 조건마다 생성되는 트리 |
4-3 결정 트리 장점 및 단점
4-4 결정트리 형성 과정
- 분리규칙 추가 설명 : 자세한 알고리즘과 소스 코드는 알 수 없으나, 결정트리 알고리즘이 판단했을 때! 불순도 감소량을 가장 크게 하는 기준을 찾은 것이 해당 기준이라는 의미다.
- 가지치기 추가 설명 : 가지치기란 어느정도 여유를 두자는 의미라고 생각할 수 있다. 결정 트리 모델의 복잡도를 제어하고 과적합(Overfitting)을 방지하기 위한 기술이다(ex : 검정 네모와 빨간 네모 분류에서 색이 반반인 네모가 들어왔을 때, 검정 세모가 들어왔을 때 새로운 가지로 뻗어나갈수 있도록 하는 느낌).
결정 트리는 데이터의 작은 변화에도 민감하게 반응할 수 있으며, 이로 인해 과도하게 복잡한 모델을 생성하여 일반화 성능이 저하되는 과적합 문제가 발생할 수 있다. 가지치기는 결정 트리의 노드를 적절하게 제거하거나 병합하여 모델의 복잡도를 줄이는 과정을 말한다. 이를 통해 모델의 일반화 능력을 향상시킬 수 있다.
4-5 불순도(Impurity)
: 한 범주안에 서로 다른 데이터가 섞여 있는 정도
- 불순도 측정(c : 종속변수의 범주 수, p : 범주 비율)
- 지니지수 : 지니지수가 0.5에 가까울소록 불순도가 높고, 0에 가까울수록 불순도 낮음
엔트로피 : 엔트로피 값이 1에 가까울수록 불순도가 높으며, 0에 가까울수록 불순도 낮음
정보이득 : 결정트리는 정보 이득을 최대화하는 방향(지니지수 또는 엔트로피 최소화)으로 노드를 분할함
4-6 주요 파라미터(Scikit Learn)
5. 앙상블 학습
- 다양한 모델이 내린 예측 결과 결합
- 과적합 문제에 대한 극복방법으로서 고안됨.
- 전체적인 예측값의 분산을 감소시켜 정확도 향상
5-1 보팅
- 하드 보팅 : 다수결 방식
- 소프트 보팅 : 개별 예측 확률들의 평균을 최종 확률로 정함
5-2 배깅 : 개별 모델이 서로 다른 샘플링 데이터 활용(컬럼도 많고, 데이터셋이 클 때)
5-3 부스팅★ : 가중치를 활용해 약한 모델을 강하게 만듦
- 배깅은 결정트리 1과 결정트리 2가 서로 독립적으로 결과를 예측하지만, 부스팅은 모델간 협력이 이루어짐
- 이전 모델이 잘못 예측한 데이터에 더 집중해서 훈련(가중치 부여)
=> XGBoost , LigthGBM , CatBoost 등에 적극 반영됨(2023 현재 분석가들이 가장 많이 사용하는 주요 알고리즘)
5-4 랜덤포레스트 : 결정 트리를 배깅 방식으로 결합한 모델
- 이론적인 내용은 잠시 접어두고, 다음 글에서는 실습을 통해 실제 이 내용을 활용할 수 있도록 학습해보겠다.