K-평균은 군집 중심점(centroid)라는 특정한 임의의 지점을 선택해 해당 중심에 가장 가까운 포인트들을 선택하는 군집화 기법.

 

군집 중심점

선택된 포인트의 평균 지점으로 이동하고 이동된 중심점에서 다시 가까운 포인트를 선택, 다시 중심점을 평균 지점으로 이동하는 프로세스를 반복적으로 수행. 모든 데이터 포인트에서 더 이상 중심점의 이동이 없을 경우에 반복을 멈추고 해당 중심점에 속하는 데이터 포인트들을 군집화하는 기법.

 

1. k개의 군집 중심점 설정

2. 각 데이터는 k개의 중심점들 중 가장 가까운 중심점에 소속

3. 중심점에 할당된 데이터들의 평균 중심으로 중심점 이동

4. 중심점을 이동하였지만 데이터들의 중심점 소속 변경이 없으면 군집화 완료

 

K-평균의 장점

- 일반적인 군집화에서 가장 많이 활용되는 알고리즘

- 알고리즘이 쉽고 간결

 

k-평균의 단점

- 거리 기반 알고리즘으로 속성의 개수가 매우 많을 경우 군집화 정확도가 떨어진다.

(이를 PCA로 차원 감소를 적용해야할 수도 있다.)

- 반복을 수행하는데 반복 횟수가 많을 경우 수행시간이 매우 느려진다.

- 몇 개의 군집(cluster)을 선택해야 할지 가이드가 어렵다.

'데이터를 기반으로 알고리즘이 스스로 학습한다'는 머신러닝의 개념을 가능하게 만들어준 핵심 기법 중 하나.

 

회귀에서 비용 함수가 최소가 되는 W 파라미터 값을 구하기 위해 비용 함수의 반환 값, 즉 예측값과 실제 값의 차이가 작아지는 방향으로 W 값을 계속 업데이트 해 나간다.

이때 작아지는 방향을 미분을 통해 구한다.

 

비용 함수 = R(w), 미분된 비용함수 = R'(w), 기존 변수 = w1, 갱신된 변수 = w2, 학습율 = n 라고 가정한다.

w2 = w1 -n*R'(w1)

위 식을 통해 w2가 점점 비용 함수의 최소값을 구할 수 있는 변수로 줄어들 것이다.

 

학습률(Learning Rate)

n(에타)는 변수가 갱신되는 정도를 나타내며 학습률에 따라 최소값을 찾지 못하는 경우가 있다.

R(w) = w^11, w1=1, n=0.1로 가정한다면 손실 함수 값이 위로 튀어버리는 오버슈팅(Overshooting)현상이 발생한다.

이는 학습률이 너무 크기 떄문에 발생하는 현상이고, 반대로 학습률이 너무 작다면 최소값을 찾지 못하고 지역 최소값(Local minimum)에 도달한다.

 

비용 함수가 다변수 함수라면 편미분을 통해 변수들을 갱신해 나간다.

 

업데이트 되는 변수의 모양(shape)에 고려하며 행렬 연산을 해야한다.

 

일반적으로 경사 하강법은 모든 학습 데이터에 대해 반복적으로 비용 함수 최소화를 위한 값을 업데이트 하기 때문에 시간이 매우 오래 걸린다는 단점이 있다.

 

그렇기 때문에 확률적 경사 하강법(SGD, Stochastic Gradient Descent)를 이용한다.

SGD는 전체 데이터가 아닌 일부 데이터만 이용해 w를 업데이트한다. 그렇기에 속도가 일반 경사 하강법 보다 빠르다.

대용량 데이터에 대해선 미니 배치 확률적 경사 하강법을 이용하여 최적 비용함수를 도출한다.

 

 

 

실무에서 어떻게 사용할지에 대한 내용을 위주로 수업 진행

 

데이터 분석 절차

데이터 수집 -> 데이터 전처리 -> 탐색적 데이터 분석- > 모델 선택 -> 평가 및 적용

Data Collection -> Data Preprocessing -> EDA : Exploratory Data Analysis -> Model Selection -> Evaluation & Depolyment

 

데이터 전처리 + 탐새적 데이터 분석

- 데이터 정제

- 결측치 / 이상치 처리

- 극단치 분석

- 데이터 스케일 맞추기(Feature Scaling)

- 더미 변수화(Dummification)

- 차원 축소(Dimensionality Reduction)

 

모델 선택 + 평가 및 적용

- 학습/검증셋 분리

- Normalization ,Standardization, Regularization

- Cross Validation, GridSearchCV, 차원 축소

- 모델학습 model.fit

- 모델 예측 model.predict

- 모델 평및 검증

 

데이터 전처리를 어떻게 하느냐에 따라 성능이 갈리는 경우가 많다.

 

데이터 전처리, Feature Engineering

Feature Converting (변수 변환)

Feature Scaling (변수 스케일링)                    ->           Data Preprocessing

Feature Extraction (변수 추출)                                     Feature Engineering

Feature Selection (변수 선택)

 

데이터 분석 결과를 크게 좌우

 

데이터 기본 개요

 

 

 

1일차

데이터에 따른 구분 분석

데이터와 분석 간의 관계 독립 변수(Features)
범주형 수치형
종석 변수(Y) 범주형 교차 분석 분류(Classificatinos)
로지스틱 회귀 분석
수치형 t-test
ANOVA(분산분석)
상관분석
회귀(Regression)

 

정형, 비정형 데이터

  정형 데이터 반정형 데이터 비정형 데이터
특징 데이터 스키마 지원 스키마에 해당하는 메타 데이터가 데이터 내부에 존재 - 데이터 세트가 아니라 하나의 데이터가 객체화 되어 있음
- 구조화 되어 있지 않아 해석이 어려움
탐색 방법 - 스키마 구조를 통해 탐색  가능
- 스키마 정보를 관리하는 DBMS를 통해 탐색
데이터 내부에 있는 규칙성을 파악해 파싱 규칙 적용 이진 파일 형태의 데이터일 때 데이터 탐색 방법은 종류별로 응용 소프트웨어를 이용하여 탐색
예시 - RDBMS의 테이블들
- 스프레드 시트
- HTML - URL 형태로 존재
- XML, JSON - 오픈 API 형태
- 로그 형태 - 웹 로그, IOT에서 제공하는 센서 데이터
- 이진 파일 형태 : 동영상, 이미지
- 스크립트 파일 형태 : 소설 데이터의 텍스트
데이터 차원 행, 열 구성 2차원 파싱 적용 후 행, 열 2차원 3차원 이상

 

1. 데이터 기본 구조 이해 : 차원과 벡터

Vector : 연속 또는 이산 숫자 배열

Vector Space : 벡터로 구성된 공간

x와 y방향으로 평면에서 움직이는 각 각 속도 Vx, Vy

 

Sclar : 1차원 벡터로 크기만 있고 방향성이 없는 양

 

선형대수학(Linear Algebra)은 벡터 공간, 벡터, 선형 변환, 행렬, 연릭 선형 방정식 등을 연구하는 대수학의 한 분야.

벡터 공간이 주 연구대상.

 

 

DataFrame 상호변환

darray, 리스트 딕셔너리 dataframe 생성 : 2차원 (행,열)이하, 컬럼명 지정

df.values() -> ndarry 반환

df.values.tolist() -> 리스트 반환

df.to_dict() -> 딕셔너리 반환

 

OpenCV는 RGB 대신에 BGR 컬러 포맷 사용

 

 

3차원 데이터는 텐서?

이미지는 텐서로 이해하면 되나?

 

 

딥러닝은 연산이 많기 때문에 경량화를 해야한다.

예) dtype : unit8

 

 

2. Feature Enginerring : 데이터 전처리

 

3. Machine Learning 개요

Machine learning allows computers to learn and infer from data.

 

머신러닝과 딥러닝의 차이 정확히 찾아보기

 

Types of Machine Learning

Supervised : Datapoints have known outcome

unSupervised : Data points have unknown outcome

 

지도학습과 비지도학습의 차이 정확히 찾아보기

 

 

Machine Learning 핵심 Factor

1. Loss function( Cost function)

2. Paramteter, Hyperparameter

3. Regression Performace measure

- MSE, MAE, RMSE, R-square

4. Classification Performace

- Confusion matrix, f1-score, AUC/ROCN

5. Bias - Variance trade-off

- Overfitting, underfitting

6. Bootstrap aggregating(Bagging)

 

parameter : 데이터를 통해, 데이터에 의존하여 나온 파라미터

Hyperparameter : 사람이 직접 값들을 부여하는 파라미터

 

1. Hyperparameter Search

2. Feature Enginerring

3. Model Evaluation

 

 

 

비지도학습? semi supervised?, anomaly detection 보안감지??

 

 

4. Regression : 회귀

 

Regression시 스캐터를 사용하는 것이 좋다.

 

사이킷런 Regression에서 하급시 독립변수를 하나 넣으면 안된다.

데이터가 하나인 경우 새로운 값을 추가 해야 한다. 

그렇지 않다면 해당 데이터를 Series 에서 Dataframe을 바꿔준다.

예 ['feature'] -> [['feature']], 대괄호 추가

 

 

RFE(Recursive Feature Elimination)

통계에서 T value를 보고 필요없는 피처들은 지워버리고 학습하는 방식

R-Square와 T value의 관계?

 

 

 

 

2일차

Classification

KNNs

Naive Bayes

Logistic Regression

Optimization 최적화 방법

 

 

 

 

회귀 : 한 바퀴 돌아 제자리로 돌아오거나 돌아감(네이버 어학사전)

하나의 종속 변수와 두 개 이상의 독립 변수 사이에 나타나는 관계를 치소 제곱법을 추정하는 방법(네이버 어학사전)

 

 

회귀 분석 : 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한 뒤 적합도를 측정해내는 분석(위키백과)

 

사전적 정의에 맞게 이해하기가 힘들다.

 

 

데이터 값이 평균으로 회귀하려는 경향을 가진다.

 

데이터가 추세선으로 회귀한다는 것은 어색하다.

추세선이 데이터를 따라 간다는 것이 더 맞는 것 같다.

 

회귀

'잔차(residual: 데이터의 실측치와 모델의 예측치 사이의 차이, 즉 회귀시겡서 오차항에 대한 관측치)가 평균으로 회귀한다'는 것을 의미

잔차가 평균으로 회귀하도록 만든 모델

회귀 모델링은 오차의 합이 최소가 되도록 만드는 작업.

(출처 : https://brunch.co.kr/@gimmesilver/17)

 

통계학에서 휘귀는 여러 개의 독립변수와 한 개의 종속변수 간의 상관관계를 모델링하는 기법을 통칭

 

 

Y = W1*X1 + W2*X2 + W3*X3...Wn*Xn

위의 식에서 Y = 종속변수, X = 독립변수, W = 회귀 계수라고 가정한다면 머신러닝에서 피처(X)와, 결정값(Y) 데이터 기반에서 학습을 통해 최적의 회귀 계수를 찾아내는 것이다. 

회귀 계수의 선형/비선형 여부, 독립변수의 개수, 종속변수의 개수에 따라 여러 유형으로 나뉜다.

가장 중요한 것은 회귀 계수이다.

 

독립변수 개수   회귀계수의 결합

1개: 단위회귀

여러 개 : 다중 회귀

독립 변수 개수 회귀 계수의 결합
1개 : 단일 회귀 선형 : 선형 회귀
여러 개 : 다중 회귀 비선형 : 비선형 회귀

 

지도 학습은 분류와 회귀로 나뉘는데 분류는 예측값이 카테고리와 같은 이산형 클래스 값이고 회귀는 연속형 숫자 값이라는 차이가 있다.

 

선형 회귀 : (실제 값 - 예측 값)^2 값을 최소화 하는 직선형 회귀

규제 : 일반적인 선형 회귀의 과적합을 막기 위해 회귀 계수에 패널티 값을 적용하는 것

 

일반 선형 회귀 : 예측 값과 실제 값의 RSS(Residual Sum of Squares)를 최소화 할 수 있도록 회귀 계수를 최적화하며, 규제(Regularization)를 적용하지 않는 모델

릿지(Ridge) : 선형 회귀에 L2 규제를 추가한 회귀 모델

L2 규제는 상대적으로 큰 회귀 계수 값의 예측 영향도를 감소시키기 위해 회귀 계수값을 더 작게 만드는 규제 모델

 

라쏘(Lasso) : 선형 회귀에 L1 규제를 적용한 방식, L2 규제는 회귀 계수 값의 크기를 줄이지만 L1규제는 예측 영향력이 작은 피처의 회귀 계수를 0으로 만들어 회귀 예측 시 피처가 선택되지 않도록 하는 것

L1 규제는 피처 선택 기능으로도 불린다.

 

엘라스틱넷(ElasticNet) : L2, L1 규제를 결합한 모델, 피처가 많거나, L1규제로 피처를 줄이고, L2 규제로 계수 값이 크기를 조정

 

로지스틱 회귀(Logistic Regression) : 분류에 사용되는 선형 모델, 텍스트 분류와 같은 영역에서 뛰어난 예측 성능을 보인다.

 

단순 선형 회귀에서 최적의 회귀 모델을 만든다는 것은 전체 데이터의 잔차(오류값)이 최소가 되는 모델을 만들겠다는 의미. 동시에 오류값 합이 최소가 될 수 있는 최적의 회귀 계수를 찾는 것.

 

오류의 합은 절댓값을 취해서 더하거나(MAE ,Mean Absolute Error) 제곱을 구해서 더한다(RSS, Residual Sum of Square).

일반적으로 미분 등의 계산을 편리하게 하기 위해 RSS 방식으로 오류합을 구한다.

회귀에서 RSS는 비용(Cost)이며 w변수(회귀 계수)로 구성되는 RSS를 비용함수라고 한다.

 

 

레이블이 불균형한 분포를 가진 데이터 세트는 학습 시 예측 성능에 문제가 발생할 수 있다.

이는 이상 레이블을 가지는 데이터 건수가 정상 레이블을 가진 데이터 건수에 비해 너무 적기 때문이다.

이를 해결하기 위해 오버 샘플링과 언더 샘플링을 주로 사용한다.

 

언더 샘플링

많은 데이터셋을 적은 데이터셋으로 감소시키는 방법

많은 레이블을 가진 데이터 세트를 적은 레이블을 가진 데이터 세트 수준으로 감소

너무 많은 정상 레이블 데이터를 감소 시킬 경우 제대로 된 학습이 안 될 수 있다.

 

오버  샘플링

이상 데이터와 같이 적은 데이터를 충분한 학습이 되도록 증식하는 방법

적은 레이블을 가진 데이터 세트를 많은 레이블을 가진 데이터 세트 수준으로 증식

단순히 데이터를 증식하는 것은 과적합을 유발하므려 원본 데이터의 피처 값들을 아주 약간만 변경하여 증식

 

대표적으로 SMOTE(Synthetic Mirnority Over-Sampling Technique) 방법이 있다.

SMOTE는 적은 데이터 세트에 있는 개별 데이터들의 K 최근접 이웃(K Nearest Neighbor)을 찾아 이 데이터와 K개 이웃들의 차이를 일정 값으로 만들어서 기존 데이터와 약간 차이가 나는 새로운 데이터들을 생성하는 방식

과정 : 원본 데이터 -> K 최근접 이웃으로 데이터 신규 증식 대상 설정 -> 신규 증식하여 오버 샘플링 완료

 

오버 샘플링이 예측 성능상 더 유리한 경우기 많다.
SMOTE 수행 절차

데이터 일차 가공 및 모델 학습예측/평가
Stratified 방식 테스트로 데이터 세트 추출하여 학습 데이터와 테스트 데이터 세트의 레이블 값 분포도를 서로 동일하게 만든다.

 

Stratifeid Sample(계층적 샘플링)
샘플링시 데이터의 비율을 모집단과 같이 하는 것

모집단의 데이터 분포 비율을 유지하면서 데이터를 샘플링(취득)하는 것

예) 전체 데이터에서 정상 레이블과 이상 레이블의 비율이 65%, 35%라면 시험 데이터 역시 정상 레이블과 이상 레이블의 비율이 65%, 35%가 되도록 샘플링하는 것.

 

Light GBM
XGBoost와 함께 부스팅 계열 알고리즘에서 가장 각광 받고 있다.
LightGBM의 가장 큰 장점은 XGBoost보다 학습에 걸리는 시간이 훨씬 적다.
또한 메모리 사용량도 상대적으로 적다.
LightGBM과 XGBoost의 예측 성능은 별 차이가 없다.
한 가지 단점으로 알려진 것은 적은 데이터세트에서(약 10,000건이하)는 과적합이 발생하기 쉽다.(공식문서에 기술)

GBM계열의 트리 분할 방법과 다르게 리프 중심 트리 분할(Leaf Wise)을 사용.
기존의 대부분 트리 기반 알고리즘은 트리의 깊이를 효과적으로 줄이기 위한 균형 트리 분할(Level Wise)방식을 사용
Level Wise : 균형 잡힌 트리 생성 -> 오버피팅에 강함, 균형 맞추는 시간이 필요
Leaf Wise : 최대 손실값을 가지는 리프노드 분할 -> 트리가 깊어짐 -> 예측 오류 손실 최소화

LightGBM의 XGBoost 대비 장점
더 빠른 학습과 예측 수행 시간
더 작은 메모리 사용량
카테고리 형 피처의 자동 변환과 최적 분할(원-핫 인코딩 등을 사용하기 안혹도 카테고리형 피처를 최적으로 변환하고 이에 따른 노드 분할 수행)
GPU 지원

앙상블 계열 알고리즘에서 하이퍼 파라미터 튜닝으로 성능 수치 개선이 급격하게 되는 경우는 많지 않다. 앙상블 계열 알고리즘이 과적합이나 잡음에 기본적으로 뛰어난 알고리즘이기 때문.

오버 샘플링, 언더 샘플링
오버 샘플링이 예측 성능상 더 유리한 경우기 많다.

언더 샘플링
많은 레이블을 가진 데이터 세트를 적은 레이블을 가진 데이터 세트 수준으로 감소

오버 샘플링
적은 레이블을 가진 데이터 세트를 많은 레이블을 가진 데이터 세트 수준으로 증식
STOME(Synthetic Minority Over-samping Technique) 활용
SMOTE는 적은 데이터 세트에 있는 개별 데이터들의 K 최근접 이웃(K Nearest Neighbor)을 찾아 이 데이터와 K개 이웃들의 차이를 일정 값으로 만들어서 기존 데이터와 약간 차이가 나는 새로운 데이터들을 생성하는 방식

SMOTE 수행 절차
원본 데이터 -> K 최근접 이웃으로 데이터 신규 증식 대상 설정 -> 신규 증식하여 오버 샘플링 완료

데이터 일차 가공 및 모델 학습예측/평가
stratified 방식 테스트로 데이터 세트 추출하여 학습 데이터와 테스트 데이터 세트의 레이블 값 분포도를 서로 동일하게 만든다.

트리 기반의 앙상블 학습에서 가장 각광 받고 있는 알고리즘 중 하나

 

GBM에 기반하고 있지만 GBM이 가진 '느린 수행 시간' 및 '과적합 규제(Regularization) 부재' 등의 문제를 해결

 

병렬 CPU환경에서 병렬 학습이 가능해 GBM대비 빠른 학습 시간을 가진다.

 

Early Stopping 기능

기본 GBM의 경우 지정된 횟수(n_estimator)를 다 채워야 학습이 종료 되지만 XGBoost의 경우 부스팅 반복 횟수에 도달하지 않아도 예측 오류가 더 이상 개선되지 않는다면 반복을 끝까지 수행하지 않고 중지하여 수행시간을 개선할 수 있다.

 

독자적인 XGBoost 프레임 워크 기반의 XGBoost와 사이킷런과 연동되는 모듈로 나뉜다.

 

과적합 문제가 심각하다면 다음과 같이 적용할 것을 고려할 수 있다.

eta 값을 낮춘다.(0.01 ~ 0.1). eta 값을 낮출 경우 num_round(n_estimators)는 반대로 높여줘야 하낟.

max_depth 값을 낮춘다.

min_child_weight 값을 높인다.

gamma 값을 높인다.

subsample과 colsample_bytree를 조정하는 것도 트리가 너무 복잡하게 생성되는 것을 막아 과적합에 도움이 될 수 있다.

 

XGBoost 자체적으로 교차검증, 성능 평가, 피처 중요도 등의 시각화 기능을 가지고 있다.

 

 

 

랜덤 포레스트(Random Forest)

 

랜덤 포레스트는 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있고, 다양한 영역에서 높은 예측 성능을 가지고 있다.

 

여러 결정 트리(트리들이 모여 숲(forest)이 된다)가 배깅 방식으로 전체 데이터를 샘플링하여 개별적으로 학습해 보팅을 통해 예측 결정을 하게 된다.

 

부트스트래핑(bootstrapping) 분할 방식 : 여러 개의 데이터 세트를 중첩되게 분리하는 것

Bagging = Bootstrap aggregating

 

GBM(Gradient Boost Machine)

Ada boost과 동작 과정이 유사하나 가중치 갱신에 경사 하강법을 사용한다는 것이 큰 차이이다.

 

일반적으로 GBM이 랜덤 포레스트보다 예측 성능이 조금 뛰어난 경우가 많다.

그러나 수행시간이 오래 걸리고, 하이퍼 파라미터 튜닝 노력도 더 필요하다.

 

GBM은 과적합에도 강한 뛰어난 예측 성능을 가진 알고리즘이지만 수행 시간이 오래 걸린다.

 

 

+ Recent posts