코드카타(https://essay2892.tistory.com/88)
통계학&머신러닝 개인과제 제출(https://essay2892.tistory.com/89)
머신러닝 심화 강의 마무리
- 머신러닝의 기초
- 머신러닝의 기본, 개념
- 회귀분석
- 가장 설명을 잘하는 직선을 그리는 법 - 선형회귀
- 실제 값과 예측 값의 오차를 계산하라 - Mean Squared Error
- 분류분석
- 특정 범주에 대한 확률 예측하기 - 로지스틱회귀
- 맞춘 것에 대한 지표: 정확도, f1_score
- 데이터 분석 프로세스
- 데이터 수집 → 전처리 → 모델링 → 평가
- 회귀, 분류 모델링 심화
- 의사결정을 기반으로 한 모델 - 의사결정나무
- 나무를 여러 개 만들어서 다수결 원칙을 사용하자 - 랜덤포레스트
- 유유사종의 원리로 예측하자 - KNN
- 약한 학습기를 여러 개 합치자 - 부스팅 모델
- 비지도학습
- 만약 Y(정답이 없다면) 특성을 이용해 그룹화 하자 - K-means 군집화
- 인공 신경망
- 사람의 신경세포를 모방한 네트워크 - 인공 신경망
베이직 & 챌린지 & 머신러닝 라이브 세션
표본 추출방법 : 층화 추출이 중요
특정 상품군에서 샘플링 하는 방법. 집단 내 동질, 집단 간 이질
통계적 - ARIMA, 정상화, 차분, 로그, ACF, PACF
비통계적 - XGboost, randomforest, 딥러닝 모델
시계열 데이터는 정상성을 띠고 있어야 ARIMA 분석을 통해 예측이 가능
비정상성이면 평균/분산이 다르기 때문에 임의 시점에서 얻은 모델을 이후 시점에 사용할 수 없음
정상화
1. 차분
data.diff()
한번만으로 트렌드가 제거 안되면 한번 더 진행
2. 로그 변환
np.log(data)
3. 로그 차분
np.log(data).diff()
ARIMA모델
1. ACF(자기상관 함수)
특정 시점과 이전 시점 간의 상관관계 나타냄
전체 패턴 파악에 유용, 주기 파악 가능
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(data, lag = , ax = )
lags = 1 : 현재 시점과 바로 이전 시점(1단계 이전)
lags = 20 : 현재 시점과 20단계 이전까지의 자기상관 계산
2. PACF(부분 자기상관 함수)
상관에 더해 특정 시점 값이 이전 값들과 어떻게 관계가 있는지 고려하여 직접적인 상관만을 추출
3. ARIMA모델
자기상관성(AR), 차분(D), 이동 평균(MA)을 이용해 미래 값을 예측하는 모델
from statsmodels.tsa.arima.model import ARIMA
ARIMA(data, order(p, d, q))
model.fit()
model.forecast(steps=) steps = 단계
d : 시계열 plot을 보고 정상성 여부 파악 후 차분 진행, 차분 후의 plot을 보고 확인하는 프로세스로 진행
차분을 몇번 했는가? = d
p, q의 경우 보통 PACF, ACF보고 정함
p : PACF에서 첫 번째 유의미한 지점(자기상관이 급격히 0으로 떨어지는 시점)
q : ACF에서 ~~~
통계적 모델, 비통계적 모델 언제 사용?
통계 - 데이터 양 적을때 - 6시그마
비통계 - 데이터 양 많을때 - 빅데이터(스마트팩토리)
요즘은 비통계적 모델 많이 사용
통계적 모델은 성능이 떨어짐
부스팅 : 약한 학습기들을 순차적으로 학습시켜 강한 학습기를 만드는 방법
약한 학습기 : 단순한 모델, 하나의 간단한 기준으로 판단. 랜덤한 예측보다 조금 더 나은 수준
강한 학습기 : 강력한 모델, 여러 조건을 복합적으로 고려하여 판단. 정확도 높음
순차적 학습(Sequential)이 핵심.
첫 모델이 잘못 분류한 데이터에 집중, 이전 모델의 실수를 보완, 각 모델이 서로 다른 관점에서 문제 해결
AdaBoost(Adaptive Boosting) : 부스팅 알고리즘 중 가장 초기 알고리즘. 핵심 알고리즘은 잘못 분류된 데이터에 더 높은 가중치를 부여. 첫 번째 모델이 예측을 수행하면, 잘못 분류된 데이터 포인트들의 가중치 증가 두 번째 모델은 이 가중치가 반영된 데이터로 학습하므로, 이전 모델이 잘못 예측한 사례들에 더 집중. 이러한 과정이 반복되면서, 각 모델은 이전 모델들의 약점을 보완하게 되고, 최종적으로 이 모델들의 가중 평균을 통해 예측을 수행
Gradient Boosting Machine(GBM) : AdaBoost를 더욱 일반화 시킨 알고리즘. 경사하강법의 원리를 적용. 이전 모델의 잔차를 직접적으로 학습. 분류/회귀 모두 뛰어난 성능. 복잡한 비선형 관계 잘 포착함.
손실 함수의 음의 기울기 방향으로 모델을 최적화하면서, 각 단계마다 전체 예측의 오차를 줄여나감
회귀 : SSE sum of squared error (실제값 - 예측값)^2
에러 최소화 → cost function 최소화 → 함수의 미분 → 1차 미분을 했을 때 0인 값의 해
음의 기울기 → 양수 방향
양의 기울기 → 음수 방향
기울기의 반대 방향으로
XGBoost(eXtreme Gradient Boosting) : GBM의 성능과 속도 대폭 개선. 정규화 항을 도입하여 과적합 방지. 병렬 처리를 통한 학습 속도 향상. 트리 가지치기를 통한 모델 복잡도 제어. 결측치 처리 자동화. 2차 미분(Hessian)을 활용하여 더 정확한 방향으로 모델 최적화
LightGBM : 리프 중심 트리 분할 방식을 사용(효율성, 속도), 가장 큰 손실 감소를 가져올 수 있는 리프 노드를 찾아 분할하여 더욱 효율적인 트리 구조 만듦
메모리 사용량이 적고 학습 속도가 빠름
데이터가 적을 경우, 과적합되기 쉽다는 단점
*AdaBoost를 선택해야 할 때:
- 데이터셋이 비교적 작고 노이즈가 적을 때
- 모델의 작동 원리를 명확하게 설명해야 할 때
- 이진 분류 문제에서 특히 효과적
*GBM을 선택해야 할 때:
- 예측 성능이 가장 중요한 고려사항일 때
- 데이터의 비선형성이 강할 때
- 충분한 학습 시간을 확보할 수 있을 때
*XGBoost를 선택해야 할 때:
- 대규모 데이터셋을 다룰 때
- 결측치가 많은 데이터를 다룰 때
- 과적합 방지가 중요할 때
- 높은 예측 성능과 적절한 학습 속도가 모두 필요할 때
*LightGBM을 선택해야 할 때:
- 매우 큰 데이터셋을 다룰 때
- 빠른 학습 속도가 필수적일 때
- 메모리 자원이 제한적일 때
- 단, 데이터셋이 너무 작을 경우 과적합 위험이 있으므로 주의
실제 적용 시에는 여러 모델을 실험해보고, 교차 검증을 통해 최적의 모델을 선정하는 것이 좋음
부모 노드, 자식 노드
노드 : 동그라미 (집합)
엣지 : 선 (관계)
Filter Methods
- 상관계수 : 계산이 빠르고 이해하기 쉬움. 복잡한 비선형 관계는 찾지 못한다는 단점
- 통계 검정 : 통계적 유의성을 바탕. 통계적 가정 만족해야하며, 변수 간 상호작용 고려 안됨
- 분산 기반 : 변동성이 낮은 변수를 제거하는데 유용. target 변수와의 관계 고려 반영 안됨
X_i와 Y의 상관계수를 보고 상관계수가 일정 임계점을 넘으면 통과, 아니면 탈락
어떤 방법을 선택할지는 데이터 특성과 문제 상황에 따라 달라질 수 있음. 여러 방법을 함께 사용해보고 가장 좋은 결과를 내는 방법을 선택하는 것도 좋은 전략
Wrapper Methods
실제 모델을 학습시키면서 변수를 선택
전진 선택법 (Forward Selection) : 변수가 하나도 없는 상태에서 시작하여, 가장 좋은 성능을 보이는 변수를 하나씩 추가하는 방법
a. 빈 모델에서 시작
b. 남은 변수들 중 하나씩 추가하면서 성능을 측정
c. 성능이 가장 좋을 때까지 변수를 추가하며, 성능이 더 개선되지 않으면 stop
후진 제거법 (Backward Elimination) : 모든 변수를 가지고 시작하여 가장 영향력이 적은 변수를 하나씩 제거해나가는 방법
a. 모든 변수를 포함한 모델에서 시작
b. 각 변수를 하나씩 제거해보면서 성능을 측정
c. 성능이 가장 좋을 때까지 변수를 제거하며, 더 이상 성능 향상이 없다면 stop
단계별 선택법 (Stepwise Selection) : 변수가 하나도 없는 상태에서 시작하여, 전진선택법과 후진선택법을 번갈아가며 수행. 새로운 변수를 추가할 때마다 이미 선택된 변수들 중에서 제거할 변수가 있는지도 검토하는 방식
a. 변수를 하나 추가(전진 선택)
b. 기존 변수 중 제거할 것이 있는지 검토(후진 제거)
c. 성능이 가장 좋을 때까지 a~b를 반복하며, 더 이상 성능 향상이 없다면 stop
머신러닝 요약본
1. 부스팅(Boosting) 알고리즘 종류와 원리
부스팅은 약한 학습기들을 순차적으로 학습시켜 강한 학습기를 만드는 앙상블 방법입니다. 부스팅의 대표적인 알고리즘으로는 AdaBoost, Gradient Boosting Machine, XGBoost, LightGBM이 있습니다.
- AdaBoost는 잘못 분류된 데이터에 더 높은 가중치를 부여하는 방식으로 학습하며,
- Gradient Boosting Machine은 경사하강법을 활용하여 이전 모델의 잔차를 학습합니다.
- XGBoost는 GBM을 개선한 알고리즘으로, 2차 미분을 활용하여 더 정확한 방향으로 모델을 최적화하며, 병렬 처리와 정규화 기능을 추가했습니다.
- LightGBM은 기존 GBM 모델이 균형 중심 트리 분할 방식을 이용하는 것과 달리, 리프 중심 트리 분할 방식을 사용하여 학습 속도를 크게 향상시켰습니다.
2. 변수 선택 방법론
변수 선택에 있어서는 Filter Methods와 Wrapper Methods라는 두 가지 주요 접근 방식이 있습니다.
- Filter Methods는 변수 자체의 특성을 보고 선택하는 방법으로, 상관계수 기반, 통계 검정 기반, 분산 기반, 상호정보량 기반 선택 등이 있습니다.
- Wrapper Methods는 실제 모델을 만들어보면서 변수를 선택하는 방법으로, 전진 선택법, 후진 제거법, 단계적 선택법이 있습니다. 전진 선택법은 빈 모델에서 시작하여 변수를 하나씩 추가하고, 후진 제거법은 모든 변수로 시작하여 하나씩 제거하며, 단계적 선택법은 이 두 방식을 번갈아가며 수행합니다.
차원의 저주와 변수 선택의 필요성
이러한 변수 선택이 필요한 이유는 차원의 저주 때문입니다. 차원이 증가할수록 데이터가 희박해지고, 계산 복잡도가 증가하며, 과적합의 위험이 커지는 문제가 발생합니다. 따라서 적절한 변수 선택을 통해 모델의 성능을 향상시키고 계산 효율성을 높일 수 있습니다. 실제 적용 시에는 데이터의 특성과 문제 상황에 따라 적절한 방법을 선택하거나 여러 방법을 조합하여 사용하는 것이 효과적입니다.
'TIL(Today I Learned)' 카테고리의 다른 글
[2025/02/04]내일배움캠프 QA/QC 1기 - 31일차 (0) | 2025.02.04 |
---|---|
[2025/02/03]내일배움캠프 QA/QC 1기 - 30일차 (0) | 2025.02.03 |
[2025/01/27]내일배움캠프 QA/QC 1기 - 28일차 (0) | 2025.01.27 |
[2025/01/24]내일배움캠프 QA/QC 1기 - 27일차 (0) | 2025.01.24 |
[2025/01/23]내일배움캠프 QA/QC 1기 - 26일차 (0) | 2025.01.23 |