[Git] 원하는 파일만 Commit & Push 하기


작업한 파일 중 원하는 파일만 Commit & Push 하기

사용할 명령어 정리


// git status 명령어를 이용하여 파일 목록 확인하기  
git status  

// git diff 명령어를 이용하여 기존파일의 변경내역 확인하기  
git diff  

// git add 명령어를 이용하여 원하는 파일 추가하기  
git add <경로 및 file명> <경로 및 file명> <경로 및 file명> ...  

// git reset 명령어를 이용하여 add된 파일 취소하기  
git reset HEAD <경로 및 file명>  

맥OS 메뉴바 색상 변경하기


맥 OS Bigsur, monterey에서 매뉴바 색상은 바탕화면 색상에 의해 변경된다.


menuBar

바탕화면은 파란색인데, 다크모드를 활성화해놨기 때문에 색상이 다르다.

결국 메뉴바의 색상을 변경하기 위해서는 메뉴바 위치의 바탕화면을 색상을 변경해야하는데 이는 ChangeMenuBarColor을 통해 변경할 수 있다.


ChangeMenuBarColor

터미널에서 ChangeMenuBarColor 실행파일 경로로 들어간다.

./ChangeMenuBarColor <방법> <색상> 으로 실행한다.

<방법>에는 두 가지 방법이 존재한다. * SolidColor * Gradient
``` ./Change MenuBarColor SolidColor "#000000" ./ChangeMenuBarColor Gradient "#FF0000" "#0000FF" ```
색상표는 [ColorBank](https://colorbank.net)에서 확인할 수 있다.

Regression Algorithm


회귀 문제를 의미하는 리그레션이 어떤 알고리즘을 활용해서 풀 수 있는지를 알아본다.


- Regression Algorithm

Regression

Regression은 우리말로 회귀 문제라 한다.
키에 따른 신발 사이즈, 시간에 따른 커피 소비량 등 의 문제를 Regression으로 풀 수 있다.
즉, 어떤 특정한 숫자 값을 예측하는 문제를 풀 수 있다.



**Simple Regression **

SimpleRegression

y = ax+b라는 간단한 수식에서 y는 Dependent Variable이라고 해서 종속변수를 의미한다. y는 계속 변하게 된다는 것이다.
여기서 y가 변하게 하는 가장 큰 요소는 x로 Independent Variable라고 한다.
a는 x의 기울기를 의미하고, x가 0일 때 초깃값을 의미하는 b의 값이 함께 영향을 미치게 된다.
이 간단한 식이 바로 Simple Regression이다.

SimpleRegression2

노란 점인 데이터들이 주어졌을 때 머신러닝은 데이터를 학습시키는 것이기에 이 점들을 다 어느 정도 만족시키는 그래프를 그릴 수 있다. 이렇게 그래프가 그려졌을 때 기울기와 y절편을 이용해서 y = ax + b 라는 함수를 구해 낼 수가 있다.

SimpleRegression3

함수를 구해냈을 때 기울기의 변화에 따라 y절편이 달라질 수 있기 때문에 그 중에서 최적의 값을 찾는 과정이 필요하다.
최적의 모델을 만들기 위해서는 a와 b의 최적의 값을 찾아야 한다.
이를 계산하기 위해 위 사진과 같이 계산하게 된다.

기존에 가지고 있던 데이터와 모델이 예측한 값을 비교하여 주황색 동그라미(데이터)와 파란색 동그라미(모델이 예측한 값)의 차이가 얼마나 나는지를 비교하는 것이다.
차이가 작으면 작을수록 모델이 예측을 잘 한 것이기에 모델이 예측한 값을 뺀 차이가 작아지는 경우를 계속해서 찾아가면서 a와 b의 값을 찾게 되는 것이다.
그런데, 최적의 값을 찾다보면 음수가 나올 경우도 존재한다. 하지만 음수가 절대로 나와서는 안 되며, 음수 값이 나오게 되면 음수라서 차이가 작은 것인지, 아니면 정말 그 값에 차이가 커서 작은 것인지 구별하기 힘들기 때문에 다음과 같이 절댓값을 씌워준다.

절댓값

혹은 절댓값을 씌우지 않고 제곱을 한 다음 루트를 씌우는 방법도 있다.

루트

- MLStudio에서 제공하는 Regression Algorithms

Regression를 활용하기 위해서는 Supervised Learning이기 때문에 정답과 문제가 함께 데이터로 준비되어야 한다.

algorithmMap

25개의 알고리즘 중 어떤 것을 사용해야하는지 선택해야한다.
위 사진에서 스타드 동그라미에서부터 시작하게 되는데, 어떤 카테고리를 예측하거나 아니면 구조를 발견하거나, 이상한 점을 찾는 것이 아닌 특정한 값을 예측하고 싶은 것이기에 네모박스의 알고리즘을 보면 된다.
화살표를 따라가게 되면 다음과 같은 여덟 개의 알고리즘을 볼 수 있다.

RegressionAlgorithms

RegressionAlgorithms2

RegressionAlgorithms3

ML 스튜디오에서는 여덟 개의 Regression 알고리즘을 제공하고 있다.

  • Ordinal Regression
    • 전체 데이터 중에서 어떤 아이템의 순서나 랭킹을 예측할 때 사용하는 알고리즘
    • 음의 값, 소수점의 값을 가질 수 없다.
      정확한 Integer 정숫값을 가져야 한다.
  • Poisson Regression
    • 어떤 이벤트가 발생할 횟수를 예측해주는 알고리즘
    • 음의 값, 소수점의 값을 가질 수 없고 정숫값만 가지게 된다.
  • Fast Forest Quantile Regression
    • 어떤 값을 정확히 예측하기 보다는 데이터의 전반적인 분포를 예측할 때 사용
  • Linear Regression
    • 선형회귀 알고리즘이라고 한다.
    • 말 그대로 Linear 선형의 regression 회귀 문제를 푸는 것이다.
    • 간단한 모델이기 때문에 학습하는 속도가 빠르고 굉장히 널리 사용되고 있다.
    • 어떤 알고리즘을 사용해야할지 모를 때 기본적으로 처음에 시도해 보는 알고리즘이다.
      • 빠르고 적절한 정확도를 제안해주기에 앙상블 모델, 복잡한 모델인 경우에는 예측률이 그렇게 좋지 않다.
  • Bayesian Linear Regression
    • Bayesian 접근법을 적용하여 Linear regression을 조금 더 발전시킨 형태이다.
      • Bayesian : 일반적으로 생각했을 때 어떠한 일이 일어나는 것은 전부 다 독립적이라서 앞에 일어났던 일에 영향을 받지 않는다고 생각하지만 또 완전히 영향을 받지 않는것은 아니다라는 주장
  • Neuarl Network Regression
    • 신경망 회로를 이용하는 방법이다.
    • 복잡한 데이터에서 굉장히 뛰어난 성능을 보이기에 비선형 문제에 활용한다.
    • 커스텀하기 좋은 모델이다.
  • Decision Forest Regression
    • 의사결정 트리 모델을 활용한 Regression
    • 이진 트리를 활용해서 만들었지만, 이진 트리에 비해서 메모리 효율이 좋다.
    • 비선형 문제에서 좋은 성능을 나타낸다.
    • 이진 트리 자체가 오버 피팅이 일어날 수 있는 가능성이 높기 때문에 오버 피팅이 일어나고 있는지 고려한 다음에 사용해야 한다.
  • Boosted Decision Tree Regression
    • 이진 트리를 활용한다.
    • 일반적인 이진 트리는 이 앞단에 있는 노드에서 일어난 것을 전혀 싱경 쓰지 않고 다음 노드에서 독립적으로 판단하지만, Boosted Decision Tree는 이전에 트리에서 일어났던 결과를 다음에서도 종속적으로 이어받아서 계산에 영향을 미치기 때문에 조금 더 정확도가 높다.
    • 이전에 일어난 결과를 계속 다음으로 가지고 와야 하기 때문에 메모리 사용률이 크기에 메모리가 충분히 확보되었는지 고려해야한다.
    • 정확도가 높고 앙상블 모델에도 활용이 잘 되기 때문에 최근에는 Decision Tree가 인기가 많은 편이다.

테이블 끝에 숫자는 각 알고리즘에서 변화를 줄 수 있는 파라미터의 갯수이다. 예를들어 Bayesian Linear regression에서는 수정할 수 있는 파라미터의 값이 두 가지이며, Neural Network Regression에서는 9가지의 파라미터를 수정할 수 있다는 것이다.
파라미터를 수정할 수 있는 유연한 모델은 어떻게 파라미터 값을 주느냐에 따라서 굉장히 다양한 성능을 보여주기 때문에 최적의 알고리즘이 될 수도, 아닐 수도 있다.

RegressionAlgorithms3

어떤 정확한 값을 예측하고 싶다면 위 사진에서 아래에 있는 다섯 개의 알고리즘을 사용하는 것이 좋다.



Multiple Linear Regression


MultipleLinearRegression

이전에 학습한 Simple Linear Regression은 y = ax + b라고 해서 독립 변수가 하나만 있는 경우이다. 하지만 멀티플에서는 그 의미가 여러 개를 뜻하기 때문에 리니어 리그레션이 여러 개 합쳐져 있는 모델을 의미한다.

MultipleGraph

그래프로 살펴보면 위와 같이 Simple Linear Regression이 여러 개 쌓여 있는 형식이다.

MultipleData

Simple Linear Regression은 하나의 Feature만 가지고 있는 겨웅라면, Multiple Linear Regression은 여러 Feature를 가지고 있다는 것이다.
위 데이터에서 근무 연수 뿐만 아니라 나이, 부서에 따라서 연봉이 바뀌는 것과 같이말이다.
Simple Linear Regression을 여러 개를 놔둔 것이기 때문에 내부적인 개념은 동일하다.



Polynominal Linear Regression


PolynominalLinearRegression

Multiple Linear Regression은 여전히 x 변수가 여러 개 있지만, 차원이 달라지는 것은 아니다.
하지만 Polynominal Linear Regression은 x의 차수가 늘어나는 것을 의미한다.
아래 직선 그래프는 Simple Linear Regression이고, 곡선 그래프는 Polynominal Linear이다.

SimpleLinearRegressionGraph

PolynominalLinearRegressionGraph


머신러닝에서는 리니어를 하냐 안하냐의 기준을 x의 차수가 아니라, 앞에 붙어 있는 상수의 차수로 본다. 그러힉에 상수와 계수가 1차원으로 이루어져 있으면 그건 전부 다 리니어 하다고 이야기 한다.
만약 a, b가 a분의 a제곱 혹은 -b 와 같이 복잡하게 이루어져 있다면 논리니어라고 한다.

Linear



NonLinear Model


리니어하지 않은 모델은 SVR(Supported Vector Regression), Decision Tree, Random Forest, Neural Network라는 그 외 다양한 알고리즘을 통해서 문제를 해결할 수 있다.

Azure


Azure

[Azure](https://azure.microsoft.com/ko-kr/)는 Microsoft에서 제공하고 있는 아마존의 aws, 구글의 클라우드 플랫폼과 같은 클라우드 서비스의 이름이다.

Azure2

Azure service 안에는 가상머신, 데이터 스토리지에 function, app service, web service 등 다양한 것이 존재한다. 그 중 하나가 AI 서비스이다.


Azure Machine Learning Studio


ML
ML2

실제로 머신러닝을 구현하기 위해서는 Parametric, semi-parametric 과 같은 수식적인 개념을 알아야 하며, 그리고 나서는 그 안에 들어있는 알고리즘을 구현하기 위한 수식도 살펴봐야 한다.

Jupyter

이론을 살펴본 다음에는 주피터 노트북에서 파이썬 언어를 활용할 줄 알아야되며 케라스텐서플로우 아니면 SKlearn과 같은 것을 사용할 줄 알아야 한다.
이 뿐만 아닌 넘파이, 판다스 같은 기본 패키지들도 활용할 줄 알아야한다.

머신러닝 스튜디오를 사용하면 위와 같은 언어의 장벽 없이 머신러닝 모델을 손쉽게 만들 수 있다.

AML

다음과 같이 코드가 전혀 없다. 기능 모듈을 만들어 그 모듈들을 퍼즐처럼 연결만 하면 원하는 프로그램을 간단하게 만들 수 있다.


- 정리

AML2

머신러닝 스튜디오는 비주얼 인터페이스를 가지고 있기 때문에 터미널을 켠다던지 코드를 사용할 필요 없이 단순히 네모 박스를 Drag & Drop 하고 연결함으로써 우리가 원하는 모델을 만들 수 있다.
R, 파이썬 등의 코드를 추가하는 것도 가능하며 텐서플로우, 케라스와 같은 프레임워크를 같이 연동해서 사용하는 것도 가능하다.


- workflow

workflow

  1. 문제를 정리
  2. 데이터 셋을 준비
  3. 데이터를 학습 시키기 위한 모델 설정
  4. 모델을 훈련/평가
  5. 모델 활용

위 다섯 플로우를 ML 스튜디오에서 지원한다.

ML 스튜디오를 실제로 사용한다면 크게 데이터 전처리모델 학습/예측 으로 나눌 수 있다.

- part1. 데이터 전처리

workflowData

먼저 데이터를 전처리하는 하는 부분에서 먼저 데이터를 가지고 오는 것부터 시작한다. 데이터를 가지고 와서 전처리하고, 나누는 것까지 데이터 전처리라고 부른다.

- 데이터 지원 형식

dataType

지원 가능한 데이터 형식에는 csv, txt, Excel 파일, Azure 테이블, Hive 테이블, SQL 데이터베이스 테이블, zip 등의 거의 모든 데이터 형식을 지원한다.

- 데이터 지원 유형(format)

dataFormat

지원되는 데이터의 포멧으로는 String, Integer, Float, Double, Boolean, Date Time, Timespan이 있다.
여기서 DateTime은 정확한 시간, 날짜를 의미하며 Timespan은 언제부터 언제까지의 시간, 기간을 의미한다.

업로드할 수 있는 한 개의 최대 용량은 1.89GByte까지이며, 이런 파일들을 최대 10GByte까지 업로드해서 활용할 수 있다.
(유료버전은 더 크다.)

- 데이터 전처리 과정

DataPreprocessing

첫 번째로 Feature Selection 과정이다.
필요한 컬럼과 필요하지 않은 컬럼들을 선택하는 과정으로 Feature Selection을 한 다음에는 선택된 Feature에 대해서 Metadata Editing을 해주게 된다.
선택된 피처의 메타데이터를 수정하는 과정을 거치게 된다.
그 다음으로는 Clean Missing Data로 데이터가 빠짐없이 모두 다 잘 들어가 있지 않은 경우 빠져 있는 값들을 삭제한다던지 다른 값으로 채워주는 작업을 한다.
여기까지 진해오디고 나면 데이터 훈련 셋과 테스트 셋 두 개의 셋으로 분리를 하게 되고 데이터 전처리를 완료한다.

- part2. 모델 학습 / 예측

model

모델을 학습시키는 과정은 위 사진과 같이 다섯 단계로 진행된다.
첫 번째(Initialize)는 어떤 알고리즘을 활용할 것인지 선택한다. 두 번째(Train Model)는 준비한 훈련 데이터와 연결해서 실제로 학습을 시키게 된다.
세 번째(Score Model), 네 번째(Evaluate Model)는 학습을 다 끝내고 나면 만들어진 모델이 정말로 잘 만들어졌는지 판단하기 위해 테스트 셋을 이용해서 스코어링 평가를 진행하게 된다.
마지막(Deplay Model)으로 모델을 배포하게 된다.

Machine Learning 종류

MachineLearningType

Supervised Learning, Unsupervised Learning, Reinforcement Learning 이렇게 세 가지 중에서 ML 스튜디오에서는 Supervised Learning, Unsupervised Learning 이렇게 두 가지를 제공한다.
Supervised Learning(정답과 문제가 함께 제공(지도 학습))에서는 Classification, Regression, Anomaly Detection 세 가지 문제를 풀 수 있다.
Unsupervised Learning(정답이 필요 없는 경우(비지도 학습))에서는 Clustering 그룹화 문제를 풀 수 있다.
강화 학습은 미지원이다.

MLAllType

ML 스튜디오에서 25개의 알고리즘을 제공한다.
어떤 알고리즘을 선택해야할 지 모를 때는 Algorithm Cheat Sheet을 확인하면 된다.



실습


우선 Azure Machine Learning Studio 가입 & 로그인한다.

MLStudioMain

MLStudio는 총 7개의 큰 메뉴로 구성되어 있다.

  • Project : 전체적인 관리하는 메뉴
    • 모델을 넣어 놓거나, 데이터를 모아둘 수 있다.
  • Experiments : 실제로 실험이 만들어지고 저정되고 확인할 수 있는 공간
  • Web Services : 학습시킨 모델을 웹상에 배포하게 된 경우 웹 서비스 메뉴에서 배포된 모델을 확인할 수 있다.
  • Notebooks : 파이썬 코드, R 코드를 추가하여 기능을 만들 때 사용한다.
  • DataSets : 내 컴퓨터에 있는 데이터나, 서버에 있는 데이터를 연동해서 올리는 공간이다.
  • Samples : Microsoft에서 가지고 있는 데이터를 샘플로 제공하는 공간이다.
  • Trained Models : 학습 시켰던 모델들이 리스트 되어 나타나느 공간이다.
  • Settings : ML 스튜디오를 사용하는 데 관련된 여러 가지 설정값을 수정할 수 있는 공간
    • 공유해서 작업하는 공동 작업 설정 또한 셋팅에서 설정한다.

MLStudioExperiments

Experiments의 화면이다.
왼쪽에 모델 카테고리에서는 111개의 모듈들이 존재한다.
우측 캔버스는 모듈과 모듈을 연결해서 하나의 모듈을 그림처럼 만들어내는 곳이다.
모듈은 네모 모양이며, 모듈의 위쪽에 위치하는 동그라미는 Input을, 아래쪽에 위치한 동그라미는 Output을 의미한다.

모델 카테고리에 있는 모델들을 캔버스로 드래그 앤 드롭 한 뒤, 모듈들끼리 실로 연결하면 작업 플로우가 완성 되는 형태이다.

머신러닝과 딥러닝


머신러닝, 딥러닝

머신러닝과 딥러닝 모두 처음에 인풋 데이터를 받아서 어떤 것을 처리한 다음 머신러닝은 전통적인 머신러닝 모델을 사용하며, 딥러닝은 뉴럴 네트워크를 활용하여 아웃풋을 내는 전반적인 흐름은 동일하다.
그 안에 비어있는 무언가가 차이점인데, 이 차이는 바로 Feature Engineering을 하느냐, 아니면 Feature Extraction이 일어나느냐의 차이이다.


- Feature Engineering

Feature Engineering이란 사람이 여러 개의 Feature가 있을 때 어느 것이 최종 아웃풋에 영향을 미칠지 아닐지를 고려해 가면서 변수를 조정하고 빼는 것을 말한다.
Feature Engineering은 단어 자체가 추출하다 라는 뜻으로 기계가 Feature에서 바로 특징을 뽑아내는 것이기에 사람은 Feature를 따로 건드리지 않는다.
그렇기에 딥러닝에서 자체적으로 모델이 해주는 것이기 때문에 사람의 손이 덜 가고 그 도메인에 대한 이해가 머신러닝에 비해서는 덜 필요하다.

타이타닉 데이터

위 사진은 타이타닉의 생존자, 생존하지 못한 사람들의 데이터를 나열한 것이다.
사람들의 이름, 나이, 성별, 선실 등급 등의 데이터 그리고 그 사람이 생존했는지 아닌지의 여부가 나타나있는데 생존 여부에 영향을 미치는 데이터가 무엇인지, 칼럼을 하나하나 보면서 이게 최종 아웃풋에 영향을 끼칠지 끼치지 않는 건지 생각해가며 골라내는 작업이 바로 Feature Engineering이다.

컬럼 하나하나 어떤 의미인지, 이게 어떠한 영향을 미칠지 아닐지를 생각해야 하기 때문에 그 도메인에 대한 지식도, 경험도 있어야 하며 feature Engineering 하는 시간도 꽤 오래 걸린다. 그렇기 때문에 데이터를 잘 이해하고 있어야 한다.


- Feature & Label

xy

우리가 알고 싶은 값 Y가 Label이 되며, 변수인 X가 바로 Feature가 된다.
X가 어떻게 변하냐에 따라서 Y가 변하게 되는 것이며, Y는 우리가 정답이라고 이야기 하며 Tag, Target, Label 등 다양한 이름으로 부르고 있다.
즉, Feature는 최종적인 Label에 영향을 끼치는 변수이며, Feature가 변하는 것에 따라 Y가 어떻게 변하는지를 우리가 구하고 싶은 것이다.

data

예를 들어 근무 연수에 따른 연봉 변화 데이터가 있을 때 Feature는 근무 연수가 되는 것이며, 연봉이 레이블 결과값이 되는 것이다. 연봉에 따라서 근무 연수가 바뀌는 것이 아닌, 근무 연수가 몇 년이냐에 따라서 연봉이 결정되기 때문이다.

graph

위 데이터에서 X와 Y축의 데이터를 찍은 뒤, 데이터를 기준으로 선을 그릴 수 있다. 이 선을 따라서 우리는 나중에 모르는 X값을 추측하고 싶을 때 이 직선 값을 대입해서 모르는 Y값을 구할 수 있게 되는 것이다.

formula

X에 1을 넣었더니 3이 나오고, 2를 넣었더니 5가 나오고, 3을 넣으면 7이 나온다는 데이터를 가지고 있을 때 우리는 w는 2, b는 1이라는 값을 구할 수 있다. 이러한 작업이 바로 머신러닝이 하는 것이다.

formula2

이차방정식이나 3차 방정식 등 데이터가 훨씬 더 복잡해지고 양이 많아지게 된다면 인간이 구하기가 힘들어지기 때문에 컴퓨터의 도움을 받는다.

formula3

즉, 딥러닝, 머신러닝이라 할 때 붙는 러닝은 바로 이 w와 b를 학습하기위해 데이터를 다량으로 보면서 진행한다는 것을 의미한다.




DATA


data

X(Feautre)는 모두 다 변숫값이 여러 개 칼럼으로 나와 있다. 이렇게 데이터가 주어진다면 모든 데이터를 전부 다 학습하는데 사용하지 않는다. 이 중에서 70%는 학습을 하는데 사용하며, 사용하지 않는 나머지 30%는 평가하기 위해서 사용한다.


- Random Split

data

Random Split1

Random Split2

단순히 데이터를 나누는 것뿐만 아니라, 데이터를 나눌 때 어떻게 나눌지도 방법이 존재한다.
위 사진과 같이 데이터는 어떤 컬러를 기준으로 순차 정렬이 되어있는 경우가 많다. 데이터가 순차적으로 정렬이 되어있다고 가정할 때 그냥 위에서부터 70~80%를 자르게 된다면 위쪽에는 3에 대한 정보가 없는 상태에서 학습을 진행하게 될 수도 있다. 그렇기 때문에 다음과 데이터를 랜덤하게 뽑게 된다.

- Overfitting

Overfitting

머신러닝 딥러닝을 하다 보면 오버피팅이 일어나는 경우가 굉장히 많다.
오버피팅이란 데이터를 파란색 점으로 가지고 있다고 했을 때 원하는 모델은 Desired와 같이 어느 데이터에나 잘 맞는 일반적인 모델이 아닌 가지고 있는 데이터들에 너무 치중돼서 학습을 하다 보면 우측과 같이 오버피팅이 일어나게 된다.
즉, 자연스럽게 모델이 만들어지지 않고 그래프가 주어진 데이터에 너무 최적화되기 위해서 이상하게 꺾이는 경우를 바로 오버피팅이라고 한다.

- Overfitting 문제점

오버피팅이 된 모델은 훈련 데이터들에 대해서는 100%의 정확도를 가질 것이다. 하지만 가지고 있지 않은 다른 데이터를 넣었을 때 y값이 제대로 나올 수 없다.

- Overfitting 회피 방법

Overfitting 회피법

  • 데이터를 많이 준비
  • 데이터가 적을 경우 Data Augmentation 작업 수행
  • 알고리즘 중 오버피팅이 상대적으로 적은 알고리즘을 선택하여 학습 진행
  • Regularization(규제화) 값 추가
  • Dropout 값 추가

데이터가 적은 경우 오버피팅이 많이 일어나게 된다. 즉 데이터를 많이 준비하며 데이터가 충분히 많지 않은 경우에는 Data Augmentation이라는 데이터를 부풀리는 작업을 할 수 있다(이미지 같은 경우에 많이 사용).
또 학습 알고리즘 중 오버피팅이 상대적으로 일어나지 않는 알고리즘을 선택하여 학습을 시킬 수 있다. 그 외에 Regularization이라고 해서 규제화 라는 값을 추가할 수 있고, Dropout을 추가하는 방법이 있다.




MachineLearning Workflow


Workflow

머신러닝을 활용할 때 어떤 문제를 풀기 위해서 머신러닝을 하려고 하는지 문제 정의를 먼저 해야 한다. 그런 다음에 그 문제를 풀 수 있는 데이터 셋을 준비한다. 그 뒤 훈련 셋과 평가 셋으로 구분하여 데이터 셋을 준비한다. 가끔은 훈련 셋과 평가 셋의 순서가 바뀌는 경우도 존재하는데, 일반적으로는 문제를 정의하고 데이터 셋을 준비한다.
그런 다음 어떤 알고리즘으로 어떤 모델로 데이터를 학습시킬 것인지 모델을 설정한다.
설정한 모델로 준비한 데이터를 학습시키고 평가 데이터로 모델의 평가를 여러번 진행하여 어떤 모델로 만든 것이 가장 좋은 것인지 판단을 내린다.