반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<머신러닝 관련 지난 글>

 

2021.07.19 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해할 수 있는 인공지능/머신러닝/딥러닝 개념 총정리

 

2021.09.01 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_1편. 머신러닝과 Scikit-learn 소개(ft. 지도학습, 비지도학습, 강화학습)

2021.09.07 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_2편. Scikit-learn 학습용 데이터 셋 불러오기(ft. 붓꽃 데이터)

2021.09.11 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_3편. 머신러닝 준비물! 학습/검증/예측 데이터(ft.과대적합과 과소적합)

2021.09.13 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_4편. 모델 학습과 분류 (ft. 붓꽃의 꽃잎, 꽃받침 데이터로 종류 예측하기)

 


 

오늘은 Scikit-learn의 분류 모델 함수들을 다루기 전에, 조금 이론적인 내용을 다루어 보려합니다.

 

Scikit-learn 함수를 적용하는 것은 아주 간단하지만, 그 의미를 모른다면 어느 상황에 어떤 모델을 적용할지 알 수 없기 때문이죠.

 

오늘 소개드릴 분류(Classification) 모델은 총 5가지입니다.

 

1. SGD, Stochastic Gradient Descent (확률적 경사하강법)

2. Logistic regression (로지스틱 회귀)

3. KNN, K-Nearest Neighbor (K-최근접 이웃)

4. Decision Tree (의사결정 나무)

5. SVM, Support Vector Machine (서포트 벡터 머신)

 

하나씩 살펴보겠습니다.

 

 

1. SGD, Stochastic Gradient Descent (확률적 경사하강법)

 

직역하면 확률적 경사하강법이라 불리는 이 모델은 경사하강법을 개선한 방법입니다.

 

경사하강법이란 함수의 기울기(Gradient)가 작아지는 방향으로 가중치를 조절하면서,

기울기가 0이 되는 지점을 찾는 알고리즘을 말합니다.

 

아래 그래프의 Y값이 오차를 의미한다면, 기울기가 0이 되는 지점이 오차(혹은 손실)가 가장 작아지는,

다시 말해 우리가 찾고자 하는 결과가 되는 것입니다.

 

경사하강법 (출처.machinelearningnotepad)

 

 

확률적 경사 하강법의 특징은 경사 하강법과 다르게 한번 학습할 때 모든 데이터에 대해 가중치를 조절하는 것이 아니라,

램덤하게 추출한 일부 데이터에 대해 가중치를 조절합니다.

 

쉽게 말해 속도는 빠르지만 정확도는 낮다고 합니다.

 

출처. White Whale 티스토리 블로그

 

 

2. Logistic regression (로지스틱 회귀)

 

출처. 공돌이의 수학정리노트

 

이름에 붙어있는 regression이란 단어 때문에 분류가 아닌 회귀(예측) 모델로 착각할 수도 있는 분류 알고리즘입니다.

 

나중에 배울 Linear regression(선형 회귀)가 연속형 데이터(숫자)를 예측하는 것이라면, Logistic regression은 범주형 데이터(남자/여자, 개/고양이)를 분류하는 것입니다.

 

 

3. KNN, K-Nearest Neighbor (K-최근접 이웃)

 

출처. machinelearningnotepad

 

KNN, 최근접 이웃 알고리즘이란 한마디로 '새로운 데이터가 주어졌을 때, A와 B 중에서 근처에 A가 더 많다면 A라고 판단하는 것'이라고 설명할 수 있습니다.

 

이때, 새로운 데이터에 최고 근접하는 데이터들을 K개 선정하여서 판단하는 알고리즘이 K-Nearest Neighbor인 것입니다.

 

아래의 그림과 같이 K(갯수)에 따라서 별표(새로운 데이터)가 A가 될수도, B가 될수도 있으므로, 추후에 사이킷 런 KNN 함수에서 K가 하이퍼 파라미터로 들어갑니다.

 

 

 

4. Decision Tree (의사결정 나무)

 

붓꽃 데이터에 Decision Tree 알고리즘을 적용한 예시 (출처. https://www.researchgate.net/figure/Decision-tree-for-Iris-dataset_fig1_293194222)

 

마치 스무고개 하듯 데이터를 분류하는 알고리즘으로, 그 생김새가 나무와 같아서 의사결정 나무라는 이름이 붙었습니다.

 

Decision Tree는 root에서부터 적절한 node를 선택하면서 진행하다가 최종 결정을 내리게 되는 모델입니다.

 

원리가 매우 직관적이라서 누구나 쉽게 결과를 해석할 수 있다는 장점이 있습니다.

 

 

 

5. SVM, Support Vector Machine (서포트 벡터 머신)

 

SVM 개념도 (출처. TCP 스쿨)

 

서포트 벡터 머신(SVM)은 주로 두 그룹을 분류하는 경계선을 긋고, 경계선과 두 그룹간의 거리(Margin)이 최대가 되는 경계선을 찾는 알고리즘입니다.

 

그렇게 정해진 선을 기준으로 데이터를 A와 B로 분류하는 것이죠. 물론 2개 이상도 분류 가능합니다.

 

주로 이진(2개의 데이터) 분류에 많이 사용되며, 굉장히 높은 인식률을 보여주어서 아직까지도 많이 사용된다고 하네요.

 

 


<참고 자료>

 

1. TCP 스쿨_머신러닝 알고리즘

http://tcpschool.com/deep2018/deep2018_machine_algorithm

 

2. White Whale(티스토리 블로그)_수식과 코드로 보는 경사하강법

https://twinw.tistory.com/247

 

3. 패스트 캠퍼스 유료강의_직장인을 위한 파이썬 데이터 분석

 

4. 공돌이의 수학노트_로지스틱 회귀, 경사하강법

 

 

 

 

이 글이 도움이 되셨다면, 아래의 광고를 한 번씩만 눌러주시면 너무너무 감사하겠습니다!

반응형

+ Recent posts