기본 콘텐츠로 건너뛰기

머신러닝 학습과정 with [개발자를 위한 머신러닝] (2/2)

머신 러닝 학습 과정 (2/2)

5. 모델 정의

사용할 모델을 선택하는 작업
수행하려는 작업 유형과 입력 데이터 유형에 따라 모델을 선택
이 과정에서 올바른 모델 정의란 없음, 하지만 어느정도의 가이드 라인은 있다

  • 특성을 기반으로 정보를 그룹화 하여 데이터의 특징을 파악하려 하는가? 비 지도학습 기반의 클러스터링 ( k-means ,   k-medoids, DBSCAN , ...)
    • 데이터가 순차적이거나 순서를 고려해야하는가? 순환신경망 사용
  • 변수에 대해 결과를 예측하거나, 데이터에 태그를 저장하기 위해 그룹으로 분류 하려 하는가? 지도학습 기반의 분류 및 회귀 ( KNN, SVM, 나이브베이즈 분류, 의사결정 나무, 로지스틱 , ...)
  • 데이터 또는 패턴이 공간적으로 발견되는가? 합성곱 신경망 사용
  • 많은 차원이 있는 데이터 인가? 덜 중요한 특징은 제외하고 가장 유용한 특징들을 추출하기 원하는가? 차원축소기법을 사용 (주성분분석등 )
  • 목표에 도달하는 일련의 단계를 만드는 전략? 강화학습 분야

  위에서 정의한 가이드라인이 정답은 아니다. 더 좋은 모델과 그렇지 않은 모델만 있을 뿐이다.

6. 손실 함수( Loss Function) 정의

머신러닝 에서 손실 함수를 정의하는 작업은 중요하다.
손실 함수란 모델의 예상 값에서 실제 예상 값 까지의 거리를 측정하는 함수
손실 함수의 결과값을 가장 작게 만드는것이 머신러닝의 학습 목표
기본적으로 평균제곱오차(Mean Squared Error, MSE) , 교차 엔트로피 오차(Cross Entroypy Error , CEE) 가 사용됨
최근 머신러닝이 발전함에 따라 경사하강법(Gradient descent)을 사용

7. 모델 피팅 및 평가

모델과 데이터가 필요하며, 모델을 훈련하고 검증하는 단계

데이터셋 분할

일반적으로 n-fold cross validation 을 사용
데이터셋에서 Training Data와 Test Data를 나누어 n회 교차 검증하는 방법

5-fold cross validation

머신러닝 용어

Iteration(반복) : 기울기 오차를 계산하고 모델 파라미터를 조정하는 하나의 과정
Batch(배치) : 데이터 샘플 그룹, 일반적으로 전체 데이터셋을 사용
Batch size(배치 크기) : 배치당 샘플 수
Epoch(세대) : 전체 데이터셋을 모델에 한번 전달하는 것

모델 구현 및 결과 해석

훈련 및 테스트 데이터 세트에서 확인된 모델은 해당 데이터 세트에 있지 않은 데이터에서 구현해 확인해 봐야 함

  • 회귀 메트릭 : 평균 절대 오차(Mean Absolute Error), 중앙값 절대 오차, 평균 제곱 오차(Mean Squared Error)
  • 분류 메트릭 : 정확도(Accuracy), 정밀도(Precision Score), 재현율(recall), F-측정, 혼동행렬(Confusion Matrix) 

예제 코드 : [예제코드 출판사 문의중]

  • 클러스터링 품질 측정 : 실루엣 계수, 동질성(Homogeneity), 완전성(Completeness), V-측정

참고










댓글

이 블로그의 인기 게시물

Message Queue 란 무엇인가

Message Queue 란 무엇인가?? 메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)은 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송수신을 의미 MOM을 구현한 시스템을 메시지 큐(MessageQueue: MQ)라 함 Producer(sender) 가 메시지를 큐에 전송하면 Consumer(receiver) 가 처리하는 방식으로, producer 와 consumer 에 message 프로세스가 추가되는 것이 특징 메시지 큐의 장점 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습니다. 비동조(Decoupling): 애츨리케이션과 분리할 수 있습니다. 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않습니다. 과잉(Redundancy): 실패할 경우 재실행 가능합니다. 보증(Guarantees): 작업이 처리된걸 확인할 수 있습니다. 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있습니다. 메시지 큐 종류 Apache ActiveMQ, Apache Kafka, Apache Qpid, Apache RocketMQ, Beanstalkd, Enduro/X, HTTPSQS, JBoss Messaging, JORAM, RabbitMQ, Sun Open Message Queue, and Tarantool 등 Apache ActiveMQ Java Message Service (JMS)를 사용하는 오픈소스 MQ Java, C, C ++, C #, Ruby, Perl, Python, PHP 등 다양한 크로스 언어 클라이언트 및 프로토콜 지원 Spring 지원으로 Spring xml config 메커니즘 이용 가능 JDBC 지원으로 DB 높은 퍼포먼스 가능 높은 퍼포먼스를 위해 클러스터링 구성 가능 Restful API 제공 단 모니터링 도구제공하지 않음 ...