AI - ML

Machine Learning

  • Machine Learning 은 기계나 컴퓨터가 데이터로부터 학습할 수 있도록 하는 인공지능 기술
  • 이 기술을 작동하기 위한 필수 조건은 "데이터"

 

인공지능 분야들을 구분하기 위한 용어 정리

  • 인공지능 : Machine Learning 과 Deep Learning 을 포함한 컴퓨터 과학, 전산학, 통계 및 개발 등 모든 관련 기술
  • Machine Learning : 정형 데이터 (데이터베이스의 정해진 규칙에 맞춰 행과 열로 구성된 데이터)를 활용한 인공지능 분야
  • Deep Learning : 비정형 데이터 (영상, 텍스트, 음성 등)를 활용한 인공지능 분야

 

Machine Learning 도 학습 방법에 따라 3가지로 분류된다. 요즘은 Self-Supervised Learning, Semi-Supervised Learning 이 떠오르고 있다.

 

  • 지도학습 : 정답이 주어진 데이터를 활용하여 알고리즘을 통해 산출된 예측값과 정답을 비교하며 학습하는 방법
  • 비지도학습 : 정답이 주어지지 않은 데이터를 탐색하여 패턴이나 내부 구조를 파악하는 학습 방법
  • 강화학습 : 자신이 한 행동에 대한 보상을 받으며, 그 보상을 최대화할 수 있는 행동을 찾는 학습 방법
  • 준지도학습 : 작은 labeled data 에는 지도학습을 적용하고, 큰 데이터에는 비지도학습을 적용하는 방법
  • 자기지도학습 : label이 없는 데이터로부터 학습하는 방법

Supervised Learning

  • 지도학습은 정답 혹은 Label이 있는 환경에서 Input data에 대한 Output Data를 주어 입, 출력 사이의 관계를 학습하는 것
  • Regression 문제와 Classification 문제로 나눌 수 있음
  • Regression : 출력 변수가 주가, 속도, 키와 같은 연속형 변수를 예측
  • Classifcation : 성별, 동물의 종류처럼 두 개 혹은 그 이상의 클래스일 때
  • Regression 에서 사용하는 대표적인 Loss function : MSE (Mean Squared Error), CEE (Cross Entropy Error) 사용
MSE (Mean Squared Error)
예측값 (yd) 과 실제값 (y) 의 유클라디안 거리 측정

CEE (Cross Entropy Error)
두 확률 분포의 차이를 측정

 

Linear Regression Model

  • y = f(x) + e
  • 입력 변수로 출력 변수를 예측하거나 입, 출력 사이의 관계를 규명할 때 사용
  • e (Epsilon) 은 측정의 한계나 설명될 수 없는 외부 요인에 의해 생긴 Noise
  • 회귀 계수 (Bo, B1)는 y절편과 기울기의 역할을 하며. 우리가 회귀 모델을 통해 알고 싶은 Parameter

  • 입력 변수가 많을수록 좋은 것은 아닌데, 변수가 많아질수록 Overfitting 또는 Multicollinearity (다중공선성) 문제가 발생할 수 있음

<다중 선형 회귀 수식>

  • 입력 변수 사이에 높은 상관관계를 갖는 것을 다중공선성
  • 과적합과 다중공선성은 여러 통계적인 문제를 일으킴

Logistic Regression Model

  • 출력값이 범주형인 경우 적용할 수 있는 회귀 모델 중 하나
  • 선형 회귀 모델은 출력 변수의 범위가 정해져 있지 않기 때문에 0과 1로 이루어진 분류 문제에는 적합하지 않음

  • Log Odds로 변환되어 S자 곡선의 형태를 보이는데 이 형태를 Sigmoid function 이라고 하고, 딥러닝의 분류 모델에도 사용됨
  • Sigmoid 함수는 확률화 하는데 사용되고, 확률의 합이 1을 넘는다.

Lasso와 Ridge

  • 입력 변수가 많으면 과적합과 다중공선성이 발생할 가능성이 커지기 때문에 변수를 줄이거나 변수의 영향도에 적절한 처리를 하는 노력이 필요
  • 모델링 관점에서 이러한 문제를 해결하고 일반화된 모델을 구성하는 기법을 "일반화"
  • 모델의 학습 Parameter를 추정하는 과정에서 Penalty Term 등을 추가하여 모델이 일반화를 도모하는 것을 Regularization 이라고 함
  • 회귀 모델에 정규화를 적용한 방법론은 Lasso (Least Absolute Shrinkage and Selection Operator)와 Ridge 라는 두 개의 모델 존재
  • Loss function 에 Penalty를 추가하여 회귀 계수가 과하게 추정되는 것을 막음
  • Lasso는 전체 변수 중 일부 변수만을 선택하고, Ridge는 전체적으로 0에 가까운 회귀 계수로 감소시켜 과적합과 다중공선성 완화

 

출처 : https://www.google.co.kr/imgres?q=Ridge%20regularization&imgurl=https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FC5112AQGeaIOJ4uR63g%2Farticle-cover_image-shrink_600_2000%2F0%2F1572439564210%3Fe%3D2147483647%26v%3Dbeta%26t%3D5UIsuNZvGgluQ1tgsmBI5pfXE5cxnVg0yTxqjWwsTJw&imgrefurl=https%3A%2F%2Fwww.linkedin.com%2Fpulse%2Fridge-lasso-regularization-gurumaheswara-reddy&docid=1PT16i4a7DjiPM&tbnid=rXYUEdjHHAV8pM&vet=12ahUKEwiWuqyHhcOJAxVbnK8BHZPDDCEQM3oECBgQAA..i&w=893&h=599&hcb=2&ved=2ahUKEwiWuqyHhcOJAxVbnK8BHZPDDCEQM3oECBgQAA

 

 

Decision Tree

  • 의사결정 나무는 입력 변수를 조합한 규칙으로 출력 변수를 예측하는 모델
  • 트리 구조로 되어있음
  • 기본적인 model concept 는 스무고개처럼 "예" 또는 "아니요" 로만 대답
  • 정답의 후보를 줄여가며 최종 정답을 찾아냄
  • 해석이 직관적이라는 장점 존재
  • 단일 모델로 사용하기에는 예측 성능이 낮다는 단점 존재
  • 주로 여러 개의 단일 모델을 통합하여 결과를 도출하는 Random forest 와 같은 Ensemble (앙상블) 모델에 자주 사용됨

Support Vector Machine (SVM)

  • 클래스를 가장 잘 나눌 수 있는 Decision Boundary를 정하는 model
  • 각 클래스에서 결정 경계와 가장 가까운 데이터를 Support vector
  • 두 클래스 사이의 거리를 Margin
  • 마진을 최대화하는 결정 경계를 초평면 (Hyperplane) 이라고 하며 이 초평면을 찾는 것이 목적
  • 결정해야 할 Hyperparameter가 많고 학습 속도가 느리다는 단점 존재
  • 데이터의 형태에 따라 학습이 불가능하기도 함
  • 회귀 모델과 Decision tree 와는 다르게 해석이 힘들기 때문에 설명력 관점에서는 사용하기 어려움

출처 : 위키피디아

 

K-Nearest Neighbors (KNN)

  • 새로운 데이터가 입력되었을 때, 가장 가까운 데이터 k개를 이용하여 해당 데이터를 유추하는 모델
  • 새로 입력되는 데이터와 기존의 데이터 사이의 거리를 모두 계산하고 비교해야 하므로 데이터가 많을 수록 학습 속도가 급격하게 느려지는 단점 존재
  • k는 사용자가 정해야 하는 Hyperparameer로, 만일 k가 너무 작으면 시야가 좁아지면서 overfitting의 가능성이 있으며, 너무 크면 주변 데이터를 고려하는 의미가 사라지게 됨
  • 적당한 k를 고르기 위해 일부 데이터를 검증용 데이터로 분리하고 k에 따른 분류 정확도를 확인하여 가장 정확도가 높은 k 선택

출처 : 위키피디아

Ensemble Model (앙상블 모형)

  • 집단지성과 유사하게 여러 모형의 결과를 종합하여 단일 모형보다 정확도를 높이는 방법
  • 반복 모델링한 여러 결과값을 회귀에서는 평균, 분류에서는 투표를 통한 다수결로 최종 예측값을 결정
  • 대표적인 방법론으로는 Bagging, Boosting, Random Forest 존재
Bagging (배깅)
Bootstrap Aggregating의 줄임말로 이미 존재하는 데이터로부터 같은 크기의 표본을 여러 번 복원추출한 Boostrap Sample에 대해 예측 모델을 생성한 후 그 결과를 조합하는 방법론
Boosting (부스팅)
부트스트랩 표본을 구성하는 과정에서 이전 모델의 결과를 반영하여 잘못 예측된 데이터의 비율을 높여 더욱 집중적으로 학습하는 방법론
Random Forest
배깅의 일종으로 의사결정 나무가 모여 숲을 이룬 것 같은 형태를 말하며, 각 의사결정 나무 모델링 단계에서 변수를 랜덤으로 선택하여 진행하는 방법론

출처 : https://chanjun-kim.github.io/data%EB%B6%84%EC%84%9D/Ensemble.html

 

Unsupervised Learning

  • 정답 혹은 레이블이 주어지지 않은 상태에서의 학습
  • 비슷한 데이터를 그룹화하거나 데이터의 숨겨진 특징 (Feature)을 추출하여 지도학습의 전처리 단계로 사용되기도 함

Clustering

  • 데이터를 분류하기 위한 명확한 기준이 존재하지 않은 상태에서 특징이 유사한 데이터끼리 묶어 여러 개의 군집 (Cluster, part or Group)으로 나누는 방법
  • 개수는 분석 목적에 따라 사전에 정의하거나 군집 정도를 나타내는 지표 (Dunn Index, Sillhouette 등)를 참고하여 정할 수 있음
  • 군집 내 응집도 최대화 : 동일한 군집에 소속된 개체들은 서로 유사할수록 좋음
  • 군집 간 분리도 최대화 : 상이한 군집에 소속된 개체들은 서로 다를수록 좋음
  • 대표적으로 K-means Clustering, Hierarchical Clustering, Density-Based Spatial Clustering of Applications with Noise(DBSCAN) 등

출처 : https://waterprogramming.wordpress.com/2022/03/16/clustering-basics-and-a-demonstration-in-clustering-infrastructure-pathways/

Dimensionallity Reduciton (차원 축소)

  • 입력 변수의 개수는 공간의 차원을 의미
  • 차원이 높아질수록 해당 공간을 채우기 위해서 많은 블록 필요
  • 입력 변수의 개수가 많아질수록 해당 공간을 설명하기 위해서는 학습 데이터가 많이 필요
  • 불필요한 변수가 포함된다면 모델 성능에 악영향을 줄 . 수있고 이러한 현상을 차원의 저주라고 함
  • 차원의 저주를 완화하고자 변수의 개수를 줄이는 변수 선택(Feature Selection)과 변수 추출(Feature Extraction) 방법론 사용
  • 방법론으로는 Principal Component Analysis (주성분 분석, PCA), 다차원 척도법 (Multi-Dimensional Scaling, MDS), Locally Linear Embedding (LLE), t-Stochastic Neighbor Embedding (t-SNE) 등

과적합과 모델 학습법

  • 과적합을 피하는 것이 중요한 이유는 갖고 있는 데이터에 대해서만 너무 완벽하게 모델을 만든다면 우리가 보지 못한 데이터는 잘 맞히지 못할 가능성이 크기 때문임
  • 과적합은 데이터 수가 적은 경우, 입력 변수의 개수가 많은 경우, 복잡한 모델을 사용한 경우로 인해 주로 발생함
  • 데이터가 부족한 경우라면 데이터를 더 많이 취득하거나 비슷한 데이터를 증강시키는 Data augmentation 기술을 통해 인위적으로 늘리면서 극복 가능
  • 복잡한 모델이라는 것은 인공신경망처럼 모델 자체가 복잡한 경우도 있지만, 입력 변수가 많은 경우도 포함됨
  • 모델 복잡도를 낮추기 위해서는 Lasso와 Ridge 처럼 Penalty를 통한 Regularization 과 입력 변수를 줄이는 차원 축소 기법을 활용할 수 있음
  • 일반적으로 모델의 성능을 검증하기 위해 데이터를 학습, 검증, 평가 세 부분으로 나누어 실험을 설계
  • 주로 7:2:1, 또는 6:2:2 비율로 구성
Training Data (학습 데이터)
모델을 학습시키기 위한 데이터

Validation Data (검증 데이터)
모델의 성능을 조정하기 위한 용도로 과적합 판단을 하거나 HyperParameter를 선택하기 위한 데이터
학습 데이터로 학습된 모델을 검증 데이터에 적용하여 정확도를 확인하며, HyperParameter가 적용된 다양한 모델들의 성능을 비교하여 적절한 HyperParameter 를 선정

Test Data (테스트 데이터)
최종적으로 결정된 모델의 성능을 측정하는 데이터
검증 데이터는 HyperParameter에 따른 모델의 성능을 파악하기 위해 정답을 알고 있다는 가정 하에 사용됨
테스트 데이터는 실제로 모델을 적용했을 때 "모델의 성능은 이정도 됩니다" 라는 것을 이야기하기 위한 것이기에 정답을 모르는 상태임을 가정

 

 

출처 : https://076923.github.io/posts/Python-pytorch-11/

 

 

 

  • 과소적합의 경우 학습 데이터를 잘 설명하지 못하기 때문에 검증 데이터 역시 잘 예측할 수 없음
  • 과적합은 학습 데이터에만 과하게 적합된 상태이기 때문에 검증 데이터에서는 오히려 예측력이 떨어지게 됨
  • 모델 복잡도에 따른 학습 데이터와 검증 데이터의 오차를 통해 현재 모델의 상태를 살펴볼 수있음
  • 이상적이며 가장 좋은 모델은 너무 간단하지도 않고 너무 복잡하지도 않은, 검증 데이터의 오차가 가장 낮은 복잡도의 모델

출처 : https://docs.aws.amazon.com/ko_kr/machine-learning/latest/dg/model-fit-underfitting-vs-overfitting.html

 

성능 지표 (Matrix)

  • 손실 함수와 성능 지표는 수식이 같은 경우가 많지만, 사용 목적이 다르기 때문에 구분할 필요가 있음
  • Loss Function은 모델을 학습시킬 때 어떠한 방향으로 학습을 해야 할지 방향성을 제시하고 학습 Parameter를 추정하는 데 영향을 줌
  • 성능 지표는 학습이 완료된 모델의 성능을 평가하고자 검증 및 테스트 데이터로 측정하고 모니터링하는 수단으로, 모델에는 어떠한 영향도 미치지 않음
  • 문제의 목적이 회귀 또는 분류인지에 따라 결정됨

Regression (성능 지표)

  • 연속형 출력 변수를 예측하는 회귀 문제에서 대표적으로 사용되는 성능 지표는 MSE와 MAPE (Mean Absolute Percentage Error) 존재
  • MAPE는 실제값 대비 오차의 정도를 Percent 값으로 나타내기 때문에 출력 변수의 단위에 영향을 받지 않는다는 장점 존재

출처 : https://sy-log.tistory.com/m/entry/%ED%9A%8C%EA%B7%80%EB%AA%A8%EB%8D%B8-%ED%8F%89%EA%B0%80%EC%A7%80%ED%91%9C-R2-score-%EA%B2%B0%EC%A0%95%EA%B3%84%EC%88%98-MAE-MSE-RMSE-MAPE-MPE

Classification (성능 지표)

  • 범주형 출력 변수를 예측하는 분류 문제에서는 Confusion Matrix의 형태로 모델 성능 판단
  • Positive는 우리가 예측하고자 하는 주요 이벤트 발생을 의미하며, Y = 1로 표현
  • 분류 문제에서는 각 클래스가 갖는 데이터량의 차이가 큰 경우 데이터 불균형 문제 발생
Accuracy (정확도)
전체 데이터 중 올바르게 분류한 비율
Accuracy = (TP + TN) / (TP + FN + FP + TN)

Precision (정밀도)
예측값이 Positive라 분류된 것 중 실제값이 Positive인 비율
Precision = TP / (TP + FP)

Recall (재현도)
실제값이 Positive인 것 중 예측값이 Positive라 분류된 비율
Recall = TP / (TP + FN)

F1 score
정밀도와 재현도의 조화평균
F1 score = (2 * Precision * Recall) / (Precision + Recall)

 

출처 : https://h2o.ai/wiki/confusion-matrix/

 

'Data Engineer > AI' 카테고리의 다른 글

AI - Pytorch  (6) 2024.11.14
AI - DL  (0) 2024.11.12
AI - ChatGPT API (Day 2)  (4) 2024.11.11
AI - ChatGPT API (Day 1)  (4) 2024.11.10
ML & DL 실습  (3) 2024.10.30