본문 바로가기

끄적 끄적 AI 공부 여정기

섹션 2 브리핑 (섹션1 톺아보기 포함)

섹션 2에 대해 적기 전, 섹션 1에 대해 간단한 생각을 적어보겠다. 일단 휘황찬란한 소설을 쓰기에 앞서서... 지금 공부하고 있는 것이 무엇인지, 어느정도의 이해도와 어떤 방향의 시각이 존재하고 필요한지를 알아보고, 그것이 무엇인지 대하여 조금 더 명확하게 하기위해서 이 글을 적음을 다시한번 확인한다.

 

[섹션 1.]

<스프린트 1>

n111-eda

-eda란 데이터의 전처리를 말한다. 이는 data cleaning, data mining 등을 할 수 있음을 의미한다.

n112-feature-engineering

-new feature를 domain knowledge 를 활용하여 만들어낸다. 혹은 기존 feature를 변경해 볼 수 있다.

n113-data-manipulation

-literaly, data를 조정한다. 

n114-data-visualization

-데이터의 시각화. (인간의 직관적인 사고와 판단을 하게 하기위하여 데이터의 설명을 돕기위한 도구)

 

아래는 데이터를 손질하고 준비하는 과정이다.

  • EDA

  • Feature Engineering

  • 데이터의 정규화

  • 노이즈 제거

  • 결측치 제거 혹은 대체

  • 데이터 밸런스

  • 그 외

와 같은 방법들이 있다. 이는 kaggle을 통하여 연습할 수 있다.

 

<스프린트 2>

n121-hypothesis-test

-가설검정. 통계적 기본지식을 활용하여 어떤 질문을 가지고 데이터에 접근하여 어떤 확률 기대치를 얻을 것인지.

n122-chi-square-test

-카이스퀘어 테스트. 이 개념에 대하여 다시한번 공부 할 필요가 있다. 과제 및 렉쳐노트 참조.

n123-confidence-intervals

-신뢰구간에 대하여 배우는것. 이는 데이터 분포 및 아웃라이어와 관련성이 깊고 이를 이해함으로써 시각화 및 모델링을 적용 해 볼 수 있다.

n124-bayesian

- naive bayesian 등의 통계 이론 등이 존재하며, 이에 대한 이해도는 곧 데이터에 적용하여 효율적인 모델을 구축하는데 활용 해 볼 수 있어서 공부해야할 중요성이 있다. (당연한 말이지만 모든 기본적인 원리에 대한 '제대로 된 이해'가 필수이긴 하다. ex) 수학, 코딩... in order to implement best model or make algorithms

 

<스프린트3>

 

n131-vectors-and-matrices

-벡터와 매트릭스 가장 기본적인 개념 (feature들의 residuals 및 회귀를 위한 다항식에 있어서 수학적 계산 및 증명에 필요한 개념이 있고 데이터의 array를 통하여 dimension을 구분 할 수 있다. 이는 3차원을 넘어서 다차원들의 계산과 다항식 계수와의 상관관계(회귀문제)를 확인하는데 필수이며, 분류문제에서는 shapley value 및 PDP 등의 시각화를 통하여 black box 내부를 들여다볼 수 있기에, 계수의 상관관계를 직관적으로 알 수없는 분류문제에서는(회귀문제에서는 가능) 시각화를 통하여 알아 볼 수 있다.

 

n132-intermediate-linear-algebra

-선형대수에 대한 기본적 개념. 

 

n133-dimensionality-reduction-techniques

-다차원을 저차원으로 감소시킬 수 있는 방법론들에 관련된 내용들이며, 다차원의 저주를 해결하기위한 solution이 존재한다. ex) k-means, k-nearest neighbor etc.

 

n134-clustering

-클러스터링 unspervised learning으로 비지도학습의 대표적 방법 중 하나. label이 없음에도 데이터의 서로 다름의 특징을 이용하여, 그 차이를 기준삼아 분류해 놓는 방식. PCA와 같은 개념에 대해 알아보자.

 

 

 

[섹션 2.]

 

<스프린트 1>

 

n211-simple-regression

-간단한 선형회귀

 

n212-multiple-regression

-다중 회귀

 

n213-ridge-regression

-릿지 리그레션

 

n214-logistic-regression

-로지스틱 리그레션

 

각 회귀방법에대하여 좀 더 공부해 필요가 있다. 일단 회귀모델에 대한 정의를 정리해보자면,

 

회귀 모델이란?

회귀 모델은 어떤 연속형 데이터 Y와 이 Y의 원인이 되는(엄밀히 말해 원인이라고 추정되는)X간의 관계를 추정하기 위해 만든 아래와 같은 형식의 관계식을 말합니다.

 

Y=f(X)

 

그런데 실제 데이터는 측정상의 한계나 기타 여러 가지 원인으로 인해 데이터 자체에 잡음이 들어가거나 유실이 발생합니다. 따라서 실제로는 수학이나 물리학의 수식들처럼 정확한 관계식(equation function)을 만들 수 없기 때문에 다음과 같이 확률 변수인 오차항을 두게 됩니다.

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

#refered to 'brunch.co.kr/@gimmesilver/17'

 

 

<스프린트2>

*스프린트 2는 대부분 분류문제에 대한 모델링 방법론들을 다루었다고 본다.*

 

n221-decision-trees

-결정트리는 해당 데이터 features들 사이에서 impurity를 최소화 하는 방식으로 nods를 뻗어나감. 이 과정에 주의 할 것은 overfitting 이 있고

이를 해결하기 위하여 depth parameter, weight balanced와 같이 조정들을 해 줄 수 있고 한쪽 가지로만 뻗어나가는

트리방식도 존재하는데 이에 대한것은 섹션2프로젝트 혹은 스프린트3-4 assignment 에 포함되어있을것이다. 

트리방식이 회귀방식과 다른 가장 큰 차이는 특성들과 레이블과의 선형관계에 영향을 받지 않는다는 것.

 

 

n222-random-forests

-랜덤포레스트와 결정트리와의 차이에 대해 명확히 알기위해서는 각 개념에대한 정리가 다시 필요함.

  *어떤 모델이건 파라미터 조정이 중요하고 파라미터조정을 위한 RandomizedSearchCV, GridSearchCV와 같이 

   방식도 존재함. 

 *K-best-selection은 다차원의 특성들 중 가장 상관관계가 깊은 특성들을 순서대로 선택 할 수 있는데 

  이는 feature importance시각화를 통하여 구현해 낼 수 있다.

 *Hold-out 검증방식 ( train+val+test or train +test), K-fold 검증방식( train + test)

  일반적으로 hold-out 은 train+val+test 로 나뉘고 K-fold 검증방식은 train+test로 나뉘어서 교차검증(Cross Validation) 을 진행

**참조: hold-out은 데이터셋을 훈련셋과 테스트셋으로 분리합니다. 예를들어, 데이터셋의 80%를 훈련셋으로 삼아 모델을 훈련시키고, 나머지 20%를 테스트셋으로 이용해서 성능을 평가하는 것이죠. 그런데 훈련셋과 테스트셋으로만 나눠서 모델의 성능을 평가하다보면, 테스트셋이 모델의 파라미터 설정에 큰 영향을 미치게 됩니다. 모델이 테스트셋에 오버피팅될 가능성이 있게 되는 것이죠.

#refered to 'bskyvision.com/720'

 

n223-evaluation-metrics-for-classification

각 모델을 평가하는데에는 평가지표가 존재한다. 분류문제에서는 recall과 precision의 비율과 수치가 

중요하고, 이를 임계값 조정을하여 (ROC curve) threshold optimized하여 한쪽으로 편향되어진 타겟의 밸런스를 맞춰줄 수있다. (class weight = balanced 를 통하여도 ratio를 조정할 수 도 있다.) 이는 accuracy가 모든 문제에서의 평가지표로 삼아질 수 없음을 의미하며, 이에 대한 명확한 이해가 필요하다.

 

n224-model-selection

-Hyper parameter tuning 및 교차검증(Randomized Search CV, Grid Search CV)

 

 

<스프린트3>

 

n231-choose-your-ml-problems

-넷플릭스 데이터를 기반으로 시나리오 선정 -> 데이터 래글링 및 전처리 ->모델선정 -> 하이퍼파라미터 튜닝 -> 평가지표 분석 및 이에 대한 조정 -> 시각화를 통한 결과해석

 

n232-data-wrangling

-데이터 래글링은 데이터전처리를 제외한 데이터탐색(EDA) 및 feature engineering 의 일련의 과정들을 포함하는 용어 일 것이다.(헷갈리니 다시 확인해보자...) 특성 공학, 탐색, 래글링, 전처리, 마이닝, 클리닝 등에대한 기본적인 개념들을 잘 정립해야 나만의 데이터 처리 기술을 정립하는데 용이할 것이다. 물론 도메인 지식과 반복적인 훈련으로 인한 노하우 스킬들도 데이터를 접근하는데에 도움이 될 것이다. (Kaggle 활용)

 

n233-permutation-importances-boosting

순열중요도는 어떤 모델을 사용하던 데이터의 각 특성들이 가지고 있는 변하지 않는 순수한 중요도를 나타내준다. 

이는 feature importance와는 다른 의미를 나타내준다. (feature importance는 모델 종류에서마다 특성들의 중요도가 각 각 다를 수 있다)

가장 강력한 모델인 부스팅에 대하여 알아 볼 수 있는데, 이는 XGBClassifier(분류문제) 모델 혹은 XGBRegressor(회귀문제) 모델로 나뉠 수 있다. 

 

n234-interpreting-ml-model

-머신러닝 모델(특히 부스팅과같이 회귀계수로 그 모델을 설명할 수 없는 경우)을 해석하는데에 사용할 수 있는 방법들로 PDP 및 shapley value 와 같은 시각화 라이브러리를 활용 할 수 있다.

PDP는 한가지 특성 혹은 두가지 특성의 상호작용 관계에 대해 설명할 수 있다면, shap은 데이터의 하나의 샘플에 대해 설명 할 수 있다. 좀 더 자세히 들여다보자면, shap은 한 특성 안에서의 관측치 하나를 고정하고 나머지 값들의 모든 랜덤한 변화준것에 대하여 해당 특성을 무력화하여 그 과정속에서 타겟의 변화에대해 알아 볼 수 있다.

PDP는 특정 특성을 정해서 고정시키고 나머지 특성들에 변화를 줄 때 타겟값의 변화를 보고, 해당 특성이 가지는 영향에 대하여 알아 볼 수 있다.

위 의 설명이 각 시각화 라이브러리에 대한 제대로 된 개념을 적었는지가 의심스럽기에 다시한번 살펴보고 이해해야할 필요성을 느꼈다.

---------------------------------------------------------------------------------------------------------------------------------

 

 

위와 같이 섹션 1 - 2 까지 배운 내용을 간략히 정리해서 적어보았는데, 어디까지나 느낀부분, 부족한 부분, 이해한 부분을 적었고 완전한 부분은 없다. 그렇기에 여러번, 다양한 방법들을 가지고 해당 주제들에 대하여 접근하여 복습하는것은 필수이고 아주아주 중요하다.

 

고등수학, 대학수학 및 통계에 대한 심도깊은 이해도는 현재 존재하고 있는 알고리즘들과 지금도 끊임없이 논문으로 올라오는 새로운 알고리즘들을 이해하기위한 기본적인 백그라운드 지식일 것이다. 하지만.. 말이 쉽지 이러한 수학이론 정리 및 증명등을 다 이해하기는 정말 쉽지 않을 것이다. 그렇기에 어떠한 방법이던 조금 더 각자에게 쉽게 이해되는 방법이나 방향으로 이해하는것이 중요할 것이다. 사람마다 수학에 대한 이해도가 각기 다를 것이고 이해하는 시각도 다를 것이다. 개인적으로는 배경지식뿐만 아니라 생각을 특이하게 하기도 하여서 이러한 부분에 대하여 이해하는 시간이 더 많이 걸릴 것이라고 생각한다. 그리고 이러한 수학들을 이해하기위하여 수학적인 감각이나 영감도 어느정도 필요할지도 모른다.(그래도 할수 있는데까지는 노력해보아야 하지 않을까..)

그렇지만 지금은 수학적인 부분의 이해에 대한 욕심보다는  AI > ML > DL(Deep Learning) 에 대하여 큰 틀부터 잡아가고 그 스토리를 이해하는게 중요할 것이다. 큰 숲부터 보고 숲에 있는 나무들의 종류에 대하여 알아가는것이 더 나은 순서일 수 있다.(물론 정해진 답은 존재하지 않는다) 

 

아무것도 모르는 상태에서 AI를 먼저 알아가려는 생각은 어려운 접근일 수 있다. 가장 첫 단계부터 한 계단씩 순차적인 과정을 지나서 도달해야하는 학문이라고 생각해서이기도 한데, 그렇지 않다면 이러한 접근은 어쩌면 첫 시작부터 너무나 큰 과제에 압도당해 첫발을 내딛는것조차 어려워질 수 있기 때문이다. 그렇기에 파이썬 프로그래밍에대한 기초부터 시작하여 머신러닝 소개에 대한 전체적인 구조를 살펴본 후에, 데이터 사이언스 기본 커리큘럼을 순차적으로 밟아 나가는것이 현재로서는 최선의 방법이라 생각한다.

'끄적 끄적 AI 공부 여정기' 카테고리의 다른 글

F 검정  (0) 2021.10.14
Confidence Interval  (0) 2021.10.14
컴퓨타 공부를 하며...  (0) 2021.01.12
for - in 구문 함수  (0) 2021.01.06
1월 1일 들어..  (0) 2021.01.03