머신러닝을 실제로 적용하려면 머신러닝에 사용할 알고리즘을 선택해야 합니다. 지난 포스트에서 설명한 것과 같이 머신러닝은 회귀, 분류, 군집화 등 3가지 종류의 문제를 해결할 수 있는데, 이들 문제에 적합한 각각의 알고리즘이 있습니다. 한 가지 알고리즘으로 모든 종류의 문제를 해결할 수 없고, 알고리즘마다 특성이 달라서 원하는 것이 무엇인지를 명확하게 하고, 그 결과를 얻기 위해서는 어떤 종류의 문제에 속하는지 판별한 다음 머신러닝에 적용할 알고리즘을 선택해야 합니다.

적합한 알고리즘을 선택하기 위해서는 데이터의 크기와 데이터 타입 (문자, 숫자, 이미지 등), 데이터가 선형인지 비선형인지 등의 요소를 고려해야 합니다. 데이터에 대한 사전 지식 즉, 도메인 지식(Domain Knowledge)이 별로 없다면 최적의 결과를 보여주는 알고리즘을 선택하는 데 있어서 많은 시간과 노력을 필요로 할 수도 있습니다.

 

Scikit-learn에서 제공하는 알고리즘 Cheat-sheet

 

다음 그림은 파이썬의 유명한 라이브러리인 Scikit-learn에서 제공하는 알고리즘 Cheat-sheet으로 머신러닝을 이용해 원하는 결과를 얻기 위한 일반적인 절차를 보여주고 있습니다. 'Start'부터 시작해서 표시된 질문에 대한 응답으로 다음 과정이 차례로 제시되어 초심자들에게 어떤 머신러닝 알고리즘을 처음에 적용하고, 결과가 좋지 않은 경우 다음에 어떤 알고리즘을 적용해야 하는지를 알기 쉽게 표현하고 있습니다.

 

 


 

다음은 회귀, 분류, 군집화에 적용할 수 있는 대표적인 알고리즘들입니다.

 

1. 회귀

- 선형회귀 (Linear Regression)

- SGD 회귀 (Stochastic Gradient Descent Regression)

- 서포트 벡터 회귀 (SVR, Support Vector Regression)

- 랜덤 포레스트 회귀 (Random Forest Regression)

- 베이지안 회귀 (Bayesian Regression)

- 등위 회귀 (Isotonic Regression)

- 베이지안 ARD 회귀 (Bayesian Automatic Relevance Determination Regression)

 

2. 분류

- 로지스틱 회귀 (Logistic Regression)

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

- 랜덤 포레스트 (Random Forest)

- 의사결정 트리 (Decision Tree)

- 그레이디언트 부스팅 트리 (GBT, Gradient Boosting Tree)

- SGD 분류기 (SGD Classifier)

- AdaBoost

 

3. 군집화

- K - 평균 (최적분리) K-means

- 스펙트럼 군집화 (Spectral Clustering)

- 가우시안 혼합 (Gaussian Mixtures)

- 병합식 군집화 (Agglomerative Clustering)

- 친근도 전파 (Affinity Propagation)

- 평균 이동 (Mean Shift)


 

이외에도 많은 종류의 알고리즘이 있으므로 자신이 다루는 데이터 특성에 적합한 알고리즘을 선택해야 좋은 결과를 빨리 얻을 수 있습니다.

머신러닝 알고리즘은 수학적 이론과 그 내용을 아는 것은 특별한 경우가 아니라면 충분조건이지 필요 조건은 아닙니다. 예측을 위한 모델링은 사람이 직접 하는 것이 아니라 머신러닝 알고리즘 스스로 만들어 가도록 설계되어 있기 때문입니다. 따라서 해당 머신러닝 알고리즘을 사용하는 개발자는 머신러닝 알고리즘의 개념과 사용법, 알고리즘의 특성을 알고 이해하는 것이 중요합니다.

머신러닝으로 해결하려는 문제에 효과가 있다고 알려진 알고리즘이 없다면, 적용할 수 있는 모든 머신러닝 알고리즘을 하나씩 적용해 시행착오를 거쳐 가장 좋은 성능을 보여주는 것을 채택해 사용하면 됩니다.


 

※ 오늘은 '머신러닝 알고리즘'에 대하여 알아보았습니다.

이 포스트는 학부에서 제공하는 기본적인 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 인공지능, 머신러닝 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

#인공지능 #컴퓨터공학 #AI #머신러닝 #머신러닝알고리즘 #회귀 #분류 #군집화

+ Recent posts