티스토리 뷰

IT

주요 데이터 분석기법 정리

goodmean 2022. 11. 28. 14:07
반응형

1.지도학습

지도학습형 알고리즘으로 잘 학습한 기계는, 손으로 쓴 '나다' 라는 손글씨를 보고 예측을 해낼 것이다.

이처럼 문제와 답을 함께 주고 기계를 지도해서 학습시켜 예측하게 하는 기계 학습을 지도학습이라고 하며, 머신러닝에서 가장 흔하게 사용되는 문제형이다.

 

지도학습 문제들은 그 안에서 또 다시 회귀(Regression)형과 분류형(Classification)으로 나눌 수 있다. 회귀형은, 데이터 레이블의 자료 형태가 실제 숫자일 때이다. 가령 키나, 몸무게 같은 변수를 생각해보자. 0부터 100까지의 숫자가 각각 그 의미를 가지는 실제 숫자형 데이터이므로 회귀형이다. 분류형 문제는, 데이터 레이블의 자료 형태가 '카테고리'형 변수 일 때이다. 예를 들어 음악 장르라는 변수를 생각해보자. 이 변수는 '힙합', '알앤비', '클래식' 같은 값을 가질 것이다. 이 값들은 수치적으로 아무 의미가 없고, 그저 분류적으로 의미를 가지는 값들이다. 풀어야 하는 문제가, 회귀형 지도학습이냐, 분류형 지도학습이느냐에 따라, 선택할 수 있는 알고리즘이 달라진다.

 

위에서 언급한 손글씨 판별 모델에서 각각의 데이터들은 '가', '나', '다' 등의 레이블을 가진다. '가', '나', '다' 는 수치적으로 의미가 있는 변수가 아니라 분류형 데이터이므로, 분류적 알고리즘을 선택하여 모델을 구축해야 할 것이다.

Regression ; 회귀분석

Regression 문제는 결과값이 연속성을 가지고 있을때 Regression 문제라고 한다. 즉 택시의 주행거리에 따른 요금과 같은 문제인데, 변수 택시 주행 거리에 대해서, 결과 택시 값이 기대 되는 경우로 변수와 결과값이 연속적으로 이루어 지는 경우를 말한다.

SVM ; 서포트 벡터 머신

자료 분석을 위한 지도 학습 모델이며, 주로 분류 회귀 분석을 위해 사용한다. 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할지 판단하는 비확률적 이진 선형 분류 모델을 만든다.

선형 서포트 벡터 머신의 결정 경계(파선)를 특징으로 하는 산점도

SVM은 다음과 같은 현실 세계의 문제들을 해결하는데 사용된다:

  • SVM은 텍스트와 하이퍼텍스트를 분류하는데 있어서, 학습 데이터를 상당히 줄일 수 있게 해준다.
  • 이미지를 분류하는 작업에서 SVM을 사용할 수 있다. SVM이 기존의 쿼리 개량 구조보다 상당히 높은 검색 정확도를 보인 것에 대한 실험 결과가 있다.
  • SVM은 분류된 화합물에서 단백질을 90%까지 구분하는 의학 분야에 유용하게 사용된다.
  • SVM을 통해서 손글씨의 특징을 인지할 수 있다.

DEcision Tree ; 의사결정나무

의사결정나무는 데이터를 분석하여 이들 사이에 존재하는 패턴을 예측 가능한 규칙들의 조합으로 나타내며, 그 모양이 ‘나무’와 같다고 해서 의사결정나무라 불립니다.

운동경기가 열렸다면 PLAY=1, 그렇지 않으면 PLAY=0으로 하는 이진분류(binary classification) 문제

새로운 데이터가 특정 terminal node에 속한다는 정보를 확인한 뒤 해당 terminal node에서 가장 빈도가 높은 범주에 새로운 데이터를 분류하게 됩니다. 운동경기 예시를 기준으로 말씀드리면 날씨는 맑은데 습도가 70을 넘는 날은 경기가 열리지 않을 거라고 예측합니다.

회귀의 경우 해당 terminal node의 종속변수(y)의 평균을 예측값으로 반환하게 되는데요, 이 때 예측값의 종류는 terminal node 개수와 일치합니다. 만약 terminal node 수가 3개뿐이라면 새로운 데이터가 100개, 아니 1000개가 주어진다고 해도 의사결정나무는 딱 3종류의 답만을 출력하게 될 겁니다.

Random Forest

Source:  Analytics Vidhya

Decision Tree는 overfitting될 가능성이 높다는 약점을 가지고 있습니다. 가지치기를 통해 트리의 최대 높이를 설정해 줄 수 있지만 이로써는 overfitting을 충분히 해결할 수 없습니다. 그러므로 좀더 일반화된 트리를 만드는 방법을 생각해야합니다. 이는 Random Forest(랜덤 포레스트)의 기원이 되는 아이디어입니다. Random forest는 ensemble(앙상블) machine learning 모델입니다. 여러개의 decision tree를 형성하고 새로운 데이터 포인트를 각 트리에 동시에 통과시키며, 각 트리가 분류한 결과에서 투표를 실시하여 가장 많이 득표한 결과를 최종 분류 결과로 선택합니다. 랜덤 포레스트가 생성한 일부 트리는 overfitting될 수 있지만, 많은 수의 트리를 생성함으로써 overfitting이 예측하는데 있어 큰 영향을 미치지 못 하도록 예방합니다.

AdaBoost, Gradient Boost

앙상블 방법론에는 부스팅과 배깅이 있습니다. (머신러닝 - 11. 앙상블 학습 (Ensemble Learning): 배깅(Bagging)과 부스팅(Boosting)) 배깅의 대표적인 모델은 랜덤 포레스트가 있고, 부스팅의 대표적인 모델은 AdaBoost, Gradient Boost등이 있습니다. Gradient Boost의 변형 모델로는 XGBoost, LightGBM, CatBoost가 있습니다. XGBoost, LightGBM, CatBoost은 캐글에서 Top Ranker들이 많이 사용하고 있는 모델입니다.

 

AdaBoost 의 핵심은 다음과 같다.

  1. Stump 중, Gini Impurity 가 낮은 Stump 를 택하여, 먼저 예측한 뒤,
  2. 데이터셋의 Sample Weight 를 업데이트 시키고,
  3. 이 Sample Weight 을 고려하여 새로운 데이터셋을 만든 후,
  4. 다시 이 데이터셋으로, 트리가 완성될 때까지 1~3을 반복한다.

Gradient Boost 의 핵심은 다음과 같다.

  1. 초기에는 평균값으로 모든 예측 값을 예측한다.
  2. 실제 값과 오차를 구해, 해당 오차를 예측하는 Tree 를 만든다.
  3. 기존 예측 값에 오차 * learning rate 를 더해서, 새로운 예측 값으로 업데이트 한다.
  4. 이 과정을 일정 Loop 동안 반복한다.

 

2. 비지도학습

비지도 머신러닝은 기계에게 레이블이 없는 데이터를 학습시키는 것으로, 주로, 데이터 안에 내재된 숨겨진 패턴이나 분포를 알고 싶을 때에 사용한다. 

 

당신이 드디어 '에어리언 종 판별모델'을 구축하는데 쓰일 에어리언 100마리의 데이터를 습득했다고 가정하자. 하지만 당신은 이 에어리언들이 어떻게 어떤 특징으로 구별되는지 모르기 때문에, 레이블을 달아줄 수가 없다. 그래서 기계에게 비지도 머신러닝을 시킬 것이다.

 

비지도학습 문제들은 그 안에서 또 클러스터링(Clustering)문제와 연관규칙(Association) 문제로 나눌수 있다. 클러스터링 문제란, 데이터를 고유의 특성을 가진 그룹들로 분류하는 문제이다. 위의 에어리언 종 판별모델의 경우 클러스터링 문제형 알고리즘을 사용해서, 그룹으로 분류한 것이다.

연관규칙 알고리즘은 데이터가 띄는 경향성, 즉 규칙(Rule)을 발견하기 위한 것이다. 대형 편의점에서, 머신러닝을 통해 컵라면을 사는 사람들은 대부분 콜라도 같이 사는 경향성을 발견해서, 콜라를 컵라면 옆에 배치했더니 콜라의 매출이 급상승했다고 한다. 이 문제를 풀 때 개발자들은 비지도학습 연관규칙형에 최적화된 알고리즘을 사용했을 것이다.

 

2-1. 군집화

K-means ; K-평균 알고리즘

몇 개의 클러스터를 분할할지, 사전에 정해둔 경우 추천하는 클러스터링분석방법이다.

대규모 데이터의 경우, MiniBatch라고 해서 데이터를 나누면서 학습시키는 방법을 취한다.

이는 K-means 알고리즘에서 K가 3인 경우에 속한다.

DBSCAN ; 밀도 기반 클러스터링

쉽게 설명하면, 어느점을 기준으로 반경 x내에 점이 n개 이상 있으면 하나의 군집으로 인식하는 방식이다.

기하학적인 구조를 군집화한 예 (출처 : https://en.wikipedia.org/wiki/DBSCAN )

DBSCAN 알고리즘의 장점은

  • K Means와 같이 클러스터의 수를 정하지 않아도 되며,
  • 클러스터의 밀도에 따라서 클러스터를 서로 연결하기 때문에 기하학적인 모양을 갖는 군집도 잘 찾을 수 있으며 Noise point를 통하여, outlier 검출이 가능하다.

3. 준지도학습

지도 학습(Semisupervised Learning)에서는 레이블이 일부만 있어도 데이터를 다룰 수 있습니다.

대부분의 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합으로 이루어져 있습니다.

 

 

DNN ; 심층신경망(딥러닝)

DNN의 목적 ?

분류 및 수치 예측. 영상처리, 음성인식, 자연어 처리와 같은 분야에서 자주 쓰이나 특히, 이미지 트레이닝이나 문자 인식 같은 분야에서 매우 유용하게 사용

DNN의 구조

lightGBM

Light GBM은 Kaggle 데이터 분석 경진대회에서 우승한 많은 Tree기반 머신러닝 알고리즘에서 XGBoost와 함께 사용되어진것이 알려지며 더욱 유명해지게 되었습니다.

 

GBM(Gradient Boosting Machine) 이란? 틀린부분에 가중치를 더하면서 진행하는 알고리즘

 

Gradient Boosting 프레임워크로 Tree기반 학습 알고리즘입니다. 기존의 다른 Tree기반 알고리즘과 다른점은 Tree구조가 수평적으로 확장하는 다른 Tree기반 알고리즘에 비해 수직적으로 확장을 하는것에 있습니다.  

 

즉, Light GBM은 leaf-wise인 반면 다른 알고리즘은 level-wise입니다. 

 

leaf-wise의 장점은 속도가 빠르다는 것이 가장 큰 장점입니다. 데이타의 양이 많아지는 상황에서 빠른 결과를 얻는데 시간이 점점 많이 걸리고 있습니다. Light GBM은 큰 사이즈의 데이타를 다룰 수 있고 실행시킬 때 적은 메모리를 차지합니다. 

Naive Bayes ; 나이브 베이즈 분류

나이브 베이즈 분류는 텍스트 분류에 사용됨으로써 문서를 여러 범주 (예: 스팸, 스포츠, 정치)중 하나로 판단하는 문제에 대한 대중적인 방법으로 남아있다. 또한, 자동 의료 진단 분야에서의 응용사례[2]를 보면, 적절한 전처리를 하면 더 진보된 방법들 (예: 서포트 벡터 머신 (Support Vector Machine))과도 충분한 경쟁력을 보임을 알 수 있다.

성별 분류하기

문제 : 주어진 사람들을 측정 된 특성 에 따라 남성(male) 또는 여성(female) 인지 여부를 분류한다. 특성은 신장(height), 체중(weight), 발의 크기(foot size)가 포함된다.

문서 분류(스팸 메일 분류)

문제 : 문서의 내용에 따라서, 문서를 분류한다. 메일의 경우 문서에 적힌 내용에 따라서 스팸 및 비스팸 메일로 구분할 수 있다. 또한 여러 개의 클래스가 있을 경우에도 사후 확률이 가장 높은 클래스를 알아 낼 수 있다. 주어진 클래스 C에 대하여 문서의 단어 중에서 i 번째의 해당하는 경우 다음과 같이 나타낼 수 있다.

LSTM(Long-Short Term Memory) ; 장단기메모리

LSTM Networks

LSTM은 RNN의 특별한 한 종류로, 긴 의존 기간을 필요로 하는 학습을 수행할 능력을 갖고 있다. LSTM은 Hochreiter & Schmidhuber (1997)에 의해 소개되었고, 그 후에 여러 추후 연구로 계속 발전하고 유명해졌다. LSTM은 여러 분야의 문제를 굉장히 잘 해결했고, 지금도 널리 사용되고 있다.

파일럿 실험

이광수 장편소설 ‘무정’에 위 코드를 실험해봤습니다. ‘무정’은 32만 어절로 이뤄진 작품입니다. 1917년 작품이며 한자어와 대화체 문장이 많습니다. 텍스트는 이렇게 생겼습니다.

형식은, 아뿔싸! 내가 어찌하여 이러한 생각을 하는가, 내 마음이 이렇게 약하던가 하면서 두 주먹을 불끈 쥐고 전신에 힘을 주어 이러한 약한 생각을 떼어 버리려 하나, 가슴속에는 이상하게 불길이 확확 일어난다. 이때에, “미스터 리, 어디로가는가” 하는 소리에 깜짝 놀라 고개를 들었다. (중략) 형식은 얼마큼 마음에 수치한 생각이 나서 고개를 돌리며, “아직 그런말에 익숙지를 못해서……” 하고 말끝을 못 맺는다. 
“대관절 어디로 가는 길인가? 급하지 않거든 점심이나 하세그려.”
“점심은 먹었는걸.”
“그러면 맥주나 한잔 먹지.”
“내가 술을 먹는가.”
(중략)
“요― 오메데토오(아― 축하하네). 이이나즈케(약혼한사람)가 있나 보네 그려. 음나루호도(그러려니). 그러구도 내게는 아무 말도 없단 말이야. 에, 여보게”하고 손을 후려친다.

이 텍스트를 글자 단위로 one-hot-vector로 바꾼 뒤 LSTM에 넣어 학습시켜 보기로 했습니다. 하이퍼파라메터는 히든 차원수 100, learning rate 0.1을 줬습니다. 다음은 학습 결과입니다.

Iter 0 : 랫萬게좁뉘쁠름끈玄른작밭裸觀갈나맡文플조바늠헝伍下잊볕홀툽뤘혈調記운피悲렙司狼독벗칼둡걷착날完잣老엇낫業4改‘촉수릎낯깽잊쯤죽道넌友련친씌았융타雲채發造거크휘탁亨律與命텐암먼헝평琵헤落유리벤産이馨텐

Iter 4900: 를왔다내 루방덩이종 은얼에는 집어흔영채는아무 우선을 에서가며 건들하아버전는 애양을자에 운 모양이 랐다. 은 한다선과 ‘마는 .식세식가들어 ,

형식다

“내었다.있이문

Iter750000 : 으로 유안하였다. 더할까하는 세상이 솔이요, 알고 게식도 들어울는 듯하였다. 태에그려 깔깔고 웃는듯이 흔반다. 우선형은사람을 어려보낸다.

“그려가?”

한다. 영채는손을 기쁘

Iter1000000 : 에 돌내면서,

“여러 넣어오습데다. 그 말대 아무도좀 집림과 시오 백매, 저는 열녀더러, 기런 소년이가아니라.”

“어리지요.”

노파도 놀라며,

“저희마다가말없습니까.”

“아니 (대화체)

꽤 오랜 시간 학습시켰음에도 여전히 뜻 모를 글자들을 내뱉고 있는 점이 아쉽습니다. 다만 ‘영채’, ‘선형’ 등 무정 인물명들을 언급하거나, 따옴표를 써서 대화체 문장을 구성하거나, ‘-요’ ‘-까’ ‘-다’ 같은 종결어미를 사용해 문장을 끝맺고 있는 등 잘 하고 있는 점도 눈에 띕니다.

 

4. 강화학습

기계가 피드백을 통해 학습하는 것. 예를 들어 기계가 문제를 맞추면 YES라는 피드백을 주고, 문제를 틀리면 NO라는 피드백을 준다. 이 피드백에 의해 기계는 다시 학습한다.

 

 

1차 분류 2차분류 알고리즘 Description
지도학습 회귀형 LinearRegression 구현이 간단하고 트레이닝이 빠르다.
  회귀형 LassoRegression 데이터에 대한 어떤 분포 가정도 하지 않기 때문에 Linear Regression과 비교해 예측력이 더 높다. Lasso는 유의한 변수들 사용하고, Ridge는 유의하지 않아 보이는 변수들의 계수를 감소시킨다는 점이 차이점이다. 차원축소 여부에 따라 Lasso와 Ridge를 선택할 수 있다.
  회귀형 RidgeRegression
  회귀형/분류형 결정 트리 결과를 이해, 설명하기 쉬움 (높은 해석력). 사용하는 나무의 개수를 늘릴수록 보편적인 예측결과를 얻을 수 있다.(n_estimator 옵션)
  분류형 LogisticRegression 레이블이 0, 1의 바이너리 분류형 값을 가지는 경우 사용할 수 있다. (이항분포 가정). 선형 표현식을 가지므로 높은 해석력을 가진다.
  분류형 Naive Bayes,
서포트 벡터 머신 (SVM)
고차원의 데이터에 주로 사용.
  분류형 KNeighborsClassifier 저차원의 데이터에 주로 사용. (차원이 높아지면 모델의 성능이 낮아지는 경향을 보이므로, 많은 데이터를 확보해야 한다. 차원축소 기법을 함께 사용하는 것도 좋은 방법이다.)
  분류형 신경망 높은 예측력이 요구될 때에 주로 사용되는 알고리즘. 고차원, 다량의 데이터에서 최고의 예측력을 보인다.
비지도학습 클러스터링 K 평균 군집화 클러스터링 그룹 개수가 정해져 있을 때
    Mini Batch K 평균 군집화 클러스터링 그룹 개수가 정해져 있고, 대량 데이터를 처리 할 때 (10000건 이상)
    MeanShift 클러스터링 그룹 개수가 정해져 있지 않을 때
  차원 축소 주성분분석 (PCA) 차원 축소 가능, 해석력 저하

 

반응형

'IT' 카테고리의 다른 글

마크다운 기본문법  (0) 2022.07.04
싱글톤 패턴  (0) 2021.11.02
Jackson  (0) 2021.10.26
IPsec(IP Security)  (0) 2021.10.17
온라인 분석 처리(Online Analytical Processing, OLAP)  (0) 2021.10.17
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함