▽ 머신러닝
1. 지도학습
: 학습 대상이 되는 데이터에 정답을 주어 규칙성, 즉 데이터의 패턴을 배우게 하는 학습 방법
- 분류 : 어떤 그룹에 속하게 될 것인지를 판단함
- 회귀 : 어떤 값이 될 것인지 예측
2. 비지도 학습
: 정답이 없는 데이터 만으로 배우게 하는 학습 방법
- 군집화 : 비슷한 것들을 찾아서 그룹으로 묶음
- 변환 : 쉽게 이해할 수 있는 형태로 데이터를 표현
- 연관 : 서로 연관된 특징을 찾아냄 (장바구니 분석)
3. 강화학습
: 선택한 결과에 대해 보상을 받아 행동을 개선하면서 배우게 하는 학습 방법
지도학습 - 분류와 회귀
: 회귀는 연속적인 숫자를 예측하는 것
※ 예측해야 할 값에 연속성이 있는지 확인하면 분류와 회귀를 쉽게 구분할 수 있음
모델(Model)
데이터로부터 패턴을 찾아 수학식으로 정리해 놓은 것
모델링(Modeling)
오차가 적은 모델을 만드는 과정
→ 머신이 적적한 학습을 통해 최선의 모델을 만들 수 있도록 노력하는 우리들의 행동을 모델링이라고 함
모델의 목적
: 샘플을 가지고 전체를 추정하기 위함...

열(Column)
- 특성
- 속성
- 변수
- 필드
행(Row)
- 개체
- 관측치
- 기록
- 사례
- 경우
독립변수(원인)
: 서로가 서로에게 영향을 주지 않는 관계
종속변수(결과)
비, 습도, 기온, 요일 등
↓
판매량에 영향을 미치는지..
평균
: 통계학에서 사용되는 가장 단순한 모델 중 하나
관측값과 모델의 차이 → 이탈도(Deviance) → 오차
데이터 분리
: 데이터 셋을 학습용, 검증용, 평가용 데이터로 분리함
| 학습용 (Training) |
검증용 (Validation) |
평가용 (Testing) |
- 평가용 데이터는 별도로 제공되는 데이터일 경우가 많음
- 검증용 데이터로 평가 전에 모델 성능을 검증해 볼 수 있음
과대적합(Overfiting)
: 학습 데이터에서 점수가 매우 높았는데, 평가 데이터에서 점수가 매우 낮은 경우
학습 데이터에 대해서만 잘 맞는 모델 → 실전에서는 예측 성능이 좋지 않음
과소적합(Underfiting)
: 학습 데이터보다 평가 데이터 점수가 더 높거나 두 점수 모두 너무 낮은 경우
모델이 너무 단순하여 학습 데이터에 적절히 훈련되지 않은 경우
Scikit-Learn
지도/비지도 학습 알고리즘을 제공하는 대표적인 파이썬 라이브러리
<회귀 모델 평가>
: 회귀 모델이 정확한 값을 예측하기는 사실상 어려움
예측한 값과 실제 값의 차이(=오차)로 모델 성능을 평가 → 오차를 줄이기

: 실제값

: 예측값

: 평균값
회귀 평가 지표 정리
| MSE | Mean Squared Error | ![]() |
| RMSE | Root Mean Squared Error | ![]() |
| MAE | Mean Absolute Error | ![]() |
| MAPE | Mean Absolute Percentage Error | ![]() |
오차를 바라보는 다양한 관점

SST : Sum Squared Total,전체 오차(우리에게 허용된오차)
SSR : Sum Squared Regression, 전체 오차 중에서 회귀식이 잡아낸 오차
SSE : Sum Squared Error, 전체 오차 중에서 회귀식이 여전히 잡아내지 못한 오차
결정계수


모델 성능을 잘 해석하기 위해서 만든 MSE의 표준화된 버전이 결정 계수 !
결정계수가 1이면 𝑀𝑆𝐸 = 0이고 모델이 데이터를 완벽하게 학습한 것
※ MSE, RMSE, MAE, MAPE는 오류(Error) 이므로 작을 수록 좋음
R2 Score는 클 수록 좋음
<분류 모델 성능 평가>
: 분류 모델은 0인지 1인지를 예측하는 것
정확히 예측한 비율로 모델 성능을 평가 → 정확도를 높이기

정확도(accuracy) : 1과 0을 정확히 예측한 비율
(TN + TP) / (TN+ FP + FN + TP)
정밀도(Precision) : 1이라 예측한 것 중에서 정말 1인 비율
(TP) / (FP + TP)
재현율(Recall) : 실제 1인 것을 1이라고 예측한 비율
(TP) / (FN + TP)
특이도(Specificity) : 실제 0인 것을 0이라고 예측한 비율
(TN) / (TN + FP)
F1-Score
: 정밀도와 재현율의 조화평균 → 정밀도와 재현울이 적절하게 요구 될 때 사용

<기본 알고리즘>
• Linear Regression
: 다양한 형태를 가진 데이터들을 최선의 직선으로 표현
함수 y = ax + b에서 최선의 기울기 a와 y절편 b를 결정하는 방법이 필요
독립변수 개수로 회귀분석을 단순 회귀와 다중 회귀로 분류
- 단순회귀 : 독립변수 하나와 종속변수 하나가 일대일 대응 관계를 갖는 선형 회귀
- 다중 회귀 : 여러 독립변수가 종속변수에 영향을 미치는 선형 회귀
• K-Nearest Neighbor
: 회귀와 분류에 사용되는 매우 간단한 지도학습 알고리즘, 다른 알고리즘에 비해 이해하기 쉽지만 연산 속도가 느림
k(이웃 개수)에 따라 데이터를 다르게 예측할 수도 있음
일반적으로 k를 1로 설정 안하고, 홀수로 설정함
검증 데이터로 가장 정확도가 높은 k값을 찾아 KNN알고리즘의 k로 사용
※ Scaling의 필요성
KNN 모델 성능을 높이기 위해서는 스케일링 작업을 진행
→ 모든 데이터가 같은 범위의 데이터를 가질 때 좋은 성능을 보여줌
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
• Decision Tree
: 의사 걸정 나무, 결정 트리
분류와 회귀 모두에 사용되는 지도학습 알고리즘
분석 과정이 직관적이며 이해와 설명이 쉬움
스케일링 등의 전처리 영향도가 크지 않지만 과적합으로 모델 성능이 떨어지기 쉬움
불순도를 수치화 할 수 있는 지표
- 지니 불순도 : 0~0.5 사이의 값, 순수하게 분류되면 0, 완벽하게 섞이면 0.5 / 지니 불순도가 낮은 속성으로 의사결정 트리 노드 결정
- 엔트로피 : 0~1 사이의 값, 순수하게 분류되면 0, 완벽하게 섞이면 1


가지치기
: 가지치기를 하지 않으면 모델이 학습 데이터에는 매우 잘 맞지만, 평가 데이터에는 잘 맞지 않음
여러 하이퍼파라미터 값을 조정해 가지치기 할 수 있음 → max_depth, min_samples_leaf, min_samples_split 등
• Logistic Regression
: 학습을 통해 선형 회귀선을 찾는 것이 아니라 로지스틱 함수에 의해 반환되는 값을 확률로 간주하여 그 확률에 따라 분류 를 결정함

(0,1) 범위의 확률 값을 얻게 됨
• Support Vector Machine
: 분류를 위한 기준선, 즉 결정 경계선을 찾는 알고리즘
SVM 성능을 높이기 위해 정규화 작업이 필요
분류 문제와 회귀 문제 모두에 사용 가능(SVC, SVR)
결정 경계(Decision Boundary)
: 서로 다른 분류값을 결정하는 경계
벡터(Vector)
: 2차원 공간 상에서 나타난 데이터 포인트
서포트 벡터(Support Vector)
: 결정 경계선과 가장 가까운 데이터 포인트
마진(Margin)
: 서포트 벡터와 결정 경계 사이의 거리
마진을 최대로 하는 결정 경계를 찾는 것이 SVM의 목표
마진이 클수록 새로운 데이터에 대해 안정적으로 분류할 가능성이 높음
비용(C)
: 학습 시 에러가 적은 모델보다 운영 시 에러가 적은 모델 이 더 좋은 모델
약간의 오류를 허용하기 위해 비용(C)이라는 변수를 사용
비용을 낮게 잡으면 → 마진을 높이고 에러를 증가시키는 결정 경계선을 만듦(Soft Margin) → 과소적합 위험
비용을 높게 잡으면 → 마진은 낮추고 에러를 감소시키는 결정 경계선을 만듦(Hard Margin) → 과대적합 위험
적절한 비용 값을 찾는 과정이 매우 중요....
선형적으로 분류할 수 없는 데이터 셋이 더 많다!
→ 커널 트릭
: 데이터를 실제로 고차원으로 옮기지 않지만 옮긴 것과 같은 효과를 줘서 매우 빠르게 결정 경계선을 찾는 방법

가장 널리 쓰이는 커널은 rbf 커널
Cost가 증가할 수록 마진의 폭이 줄어들고, 오차를 줄이기 위한 모델이 생성
→ 마진 폭이 줄어들 수록 모델이 복잡해짐
비선형 SVM에서의 감마(gamma)
: 모델이 생성하는 경계가 복잡해지는 정도
• K-Fold Cross Validation
Random Split의 문제
: 검증용 데이터가 모델의 일반화된 성능을 추정할 수 있게 도와주지만 이것 역시 단 하나의 데이터 셋에 대한 추정일 뿐...
→ 더욱 정교한 평가 절차가 필요
k-Fold Cross Validation : 모든 데이터가 평가에 한 번, 학습에 k-1번 사용
k개의 분할(Fold)에 대한 모든 성능 추정치 → 평균과 표준편차 계산
<Hyperparameter 튜닝>
Hyperparameter : 알고리즘을 사용하여 모델링할 때 최적화하기 위해 조절할 수 있는 옵션
ex) KNN 알고리즘의 n_neighbors, Decision Tree 알고리즘의 max_depth 등
▽ 이웃의 개수인 k 값, 즉 n_neighbors 옵션 값을 어떻게 설정하는 가
방법 1
① 1~n 구간의 정수를 n_neighbors 값으로 해서 모델 성능 정보 수집
② 수집된 정보에서 가장 좋은 성능이 좋았던 때의 n_neighbors 값을 찾음
방법 2
① 1~n 구간의 정수 중 무작위로 m개 골라 n_neighbors 값으로 해서 모델 성능 수집
② 수집된 정보에서 가장 좋은 성능이 좋았던 때의 n_neighbors 값을 찾음
Hyperparameter 튜닝 시 주의할 사항
파라미터의 세밀한 조정으로 최적화된 성능을 얻었을 지라도… 운영환경에서 성능이 보장되지 않음..!!
과적합 될 수 있음..미래에 발생할 데이터는 과거와 다를 수 있음
<앙상블(Ensemble)>
: 약한 모델이 올바르게 결합하면 더 정확하고 견고한 모델을 얻을 수 있다!
→ 여러 개의 모델을 결합하여 훨씬 강력한 모델을 생성하는 기법
- 보팅(Voting)
:여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식
- 배깅(Bagging)
: 데이터로부터 부트스트랩 한 데이터로 모델을 학습시킨 후, 학습된 모델의 결과를 집계하여 최종 결과를 얻는 방법
※ 같은 유형의 알고리즘 기반 분류기 사용
- 랜덤 포레스트(Random Forest)
: 배깅(Bagging)의 가장 대표적인 알고리즘
여러 Decision Tree 모델이 전체 데이터에서 배깅 방식으로 각자의 데이터 샘플링
모델들이 개별적으로 학습을 수행한 뒤 모든 결과를 집계하여 최종 결과 결정
- 부스팅(Boosting)
: 같은 유형의 알고리즘 기반 분류기 여러 개에 대해 순차적으로 학습을 수행
이전 분류기 예측이 틀린 데이터에 대해서 올바르게 예측할 수 있도록 다음 분류기에게 가중 치(Weight)를 부여하면서 학 습과 예측을 진행
- 스태킹(Stacking)
: 여러 모델의 예측 값을 최종 모델의 학습 데이터로 사용하여 예측하는 방법
'AIVLE' 카테고리의 다른 글
| AI모델 해석 (0) | 2023.03.09 |
|---|---|
| 딥러닝 (0) | 2023.03.05 |
| Web Crwaling ⑥ - selenium (0) | 2023.02.21 |
| Web Crwaling ⑤ - 네이버 연관 검색어 수집 (1) | 2023.02.21 |
| Web Crwaling ④ - Zigbang 원룸 매물 데이터 수집 (0) | 2023.02.20 |



