전체 글 15

[요약] 핸즈온 머신러닝 - 06. 결정 트리

(이진)결정트리 개념 매 노드마다 참 / 거짓을 분류하는 2진 트리를 만든다. 부모 노드는 어떤 특성에 대한 조건을 만들고 이에 대한 참 / 거짓 자식 노드를 가진다. 만약 자식 노드에서 참 / 거짓을 분류할 적절한 조건을 찾지 못했다면 리프노트가 되며 class 를 예측한다. 이 과정을 모든 자식 노드가 리프노드가 될때 까지 또는 지정한 depth 에 도달할 때 까지 반복한다. 노드의 구성 sample : 노드에 해당하는 훈련 샘플 개수. value : 노드에 속한 샘플의 클래스별 개수. gini : 불순도. 특징 직관적이고, 시각적이며, 결정의 사유가 명확하다(= 화이트박스 모델). 데이터 전처리가 거의 필요하지 않다. 학습이 완료되기 전 까지 클래스의 개수를 예측할 수 없다. 불안정하다 샘플 데이터..

[요약] 핸즈온 머신러닝 - 05. SVM

SVM 기본 성질과 특성 클래스 사이에 가장 넓은 마진을 가지는 분류기를 찾는 과정 (= large margin clasification). 결정경계는 경계에 위치한 샘플에 의해 전적으로 결정 : 이 샘플이 서포트 벡터 SV. 마진 밖에 위치한 훈련 샘플은 결정 경계에 영향을 주지 않음. 스케일에 민감 : 스케일링에 따라 SV 의 개수가 달라질 수 있고, 마진의 폭이 달라질 수 있으며, 결정경계의 기울기가 달라진다. 구분 하드 마진 분류 모든 샘플이 마진 영역 밖에 위치. 이상치에 민감 하드 마진 분류가 불가능 할 수 있다. 일반화가 어려운 결정경계가 성립할 수 있다. 소프트 마진 분류 마진의 크기와 마진오류의 트레이드 오프. 마진 오류가 있더라도 일반화가 쉬운 적절한 결정 경계를 구함. "최적 해"를 ..

개발/머신러닝 2022.05.24

[요약] 핸즈온 머신러닝 - 04. 모델 훈련

선형 회귀 정의 선형 회귀 모델의 예측 정의 $\hat{y} = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} + ... + \theta_{n}x_{n} = \sum_{i=0}^{n}\theta_{i}x_{i} = h_{\theta}(\textbf{x}) = \Theta\cdot\textbf{x}$ $\hat{y}$ = 예측값. $x_{i}$ =$i$ 번째 특성 값. 단 $x_{0} = 1$. $\theta_{i}$ =$i$ 번째 모델 파라미터. $\theta_{0}$ 은 편향 또는 bias 라 부른다. $h_{\theta}(\textbf{x})$ = 가설함수. 벡터 표현 머신러닝에서는 계산의 편의를 위해 변수를 열벡터로 나타낸다. 따라서 모든 훈련 세트 $X$ 에 ..

개발/머신러닝 2022.05.06

[요약] 핸즈온 머신러닝 - 03. 분류

MNIST MNIST 는 손으로 쓴 숫자 70000개 데이터로 ML 계의 hello world 라고 할 법 하다. 70,000개 (훈련 60천개, 테스트 10천개)의 28 * 28 이미지와 레이블로 구성되어있다. https://openml.org 을 통해 제공받을 수 있다. sklearn 은 fetch_openml 함수를 제공한다. 이진 분류기 훈련 확률적 경사하강법 (SGD) 경사하강법의 한계 인식 학습률 작으면 : 시간 많이 걸리고, 지역 최적값에 수렴할 위험. 학습률이 크면 : 시간이 적게 걸리지만, 발산할 위험 있음. 매 배치마다 랜덤하게 선택한 점을 대상으로 경사 하강법을 수행. 경사하강법 대비 매우 빠르지만, 매우 불안정함. 불안정한 대신 지역 최적값을 회피할 가능성이 높음. 랜덤 데이터 --..

카테고리 없음 2022.05.04

[요약] 핸즈온 머신러닝 - 02. 머신러닝 프로젝트 처음부터 끝까지

예제 시나리오를 통해 머신러닝의 일반적인 프로젝트 진행 순서를 훑어본다. 1. 큰 그림을 본다. 2. 데이터를 구한다. 3. 데이터를 탐색하고 시각화 하여 특성을 파악한다. 4. 데이터를 정제한다. 5. 모델을 선택하고 훈련한다. 6. 모델을 튜닝한다. 7. 솔루션을 제시한다. 8. 운영, 유지 그리고 보수. 큰 그림을 본다 문제 정의 목적을 정확히 파악한다. 현재 시스템이 어떻게 구성되어있는지를 파악한다. 문제 유형을 파악한다 : 지도여부는? 알고리즘 유형은? 학습형태는? 성능 측정 지표 선택 RMSE MAE 아니면 다른것? 가정 검사 "내가 내린 가정"이 머신러닝 파이프라인에 어떤 영향을 주고 받을지를 미리 검토해본다. 입력 데이터가 예상과 다르게 들어올 수 도 있고, 출력 데이터를 사용하는 시스템에..

개발/머신러닝 2022.04.21

[요약] 핸즈온 머신러닝 - 01. 한눈에 보는 머신러닝

머신러닝의 공학적 정의 어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정P에 대해 경험 E로 학습한 것이다. by Tom Mitchell, 1997 머신러닝을 사용하는 이유 규칙이 동적으로 변할 필요가 있는 문제를 풀때. 전통적인 방식으로는 너무 복잡하거나, 알고리즘이 없는 문제를 해결할때. 대용량 데이터를 분석하여 보이지 않는 규칙을 도출할때. 머신러닝 시스템의 종류 사람의 감독 여부 머신러닝 시스템을 훈련하기 위한 데이터들(훈련 세트)이 주어질때 각 데이터에 정답을 표기한 경우 그 정답을 레이블 이라고 한다. 구분 비지도 학습 준지도 학습 지도학습 강화 학습 레이블 없다 일부 있다 전부 있다 계속 추가한다. ..

개발/머신러닝 2022.04.14

[요약] REST API 디자인 규칙 - 06. 클라이언트 영역

버져닝 새 개념은 새 URI로 의미론 적으로 새로운 기능을 제공하는 경우 새 URI 를 사용한다. 의미론 적으로 같다면 URI 가 바뀌어서는 안된다: URI 는 버져닝을 하지 않는다. 요약자 주. 본 서적에서는 URI 로는 버져닝을 하지 말것을 제시하고 있다. 개념적으로 같은 기능에 버져닝이 들어간다는것은 "유일한 식별자" 로서의 제약사항을 위배하기 때문이라 생각된다. 그러나 현재의 RESTful API 는 필수적으로 버져닝을 다루고 있다. URI에 추가 query parameter 로 받기 custom header 컨텐츠 협상 추정컨데, 본 서적은 WRML 기반의 REST API 구현론을 제시하는 책이므로 URI 에서 버져닝을 하는 대신 WRML 스키마를 통해 버져닝을 대신할 수 있다고 판단하기 때문에..

개발 2022.04.11

[요약] REST API 디자인 규칙 - 04. 메타데이터 디자인

바디 정보 Content-Type 요청 또는 응답의 BODY 데이터 타입을 기술. Content-Length 바디의 크기를 byte 단위로 기술한다. 드물게, utf-8 처리를 제대로 하지 않아 한글을 자소단위로 처리하여 Content-Length 를 잘못 구성하는 라이브러리도 존재 하므로 오류 발생시 이 부분도 고려. Location 새로 생성한 리소스의 URI 를 나타낸다. Content-Location 과는 다르다! 조건부 요청 GET, POST, DELETE 는 리소스에 대한 변경을 수행하며, 서버는 조건부 수행을 지원해야 한다. Last-Modified 리소스의 마지막 변경 시점을 나타낸다. Last-Modified 와 관련하여 아래의 조건식을 사용할 수 있다. If-Unmodified-Sinc..

개발 2022.04.10

[요약] REST API 디자인 규칙 - 03. HTTP를 이용한 인터랙션 설계

HTTP 요청 메서드 REST API 리소스 모델에서 각 메소드는 고유한 의미를 가진다. GET - 리소스 상태의 표현 HEAD - 메타데이터 조회 PUT - 새 리소스 생성 또는 갱신 DELETE - 자식 리소스 제거 POST - 새 리소스 생성 또는 컨트롤러 실행 세부 규칙 터널링 금지 터널링이란 원래 의도와 맞지 않게 HTTP 를 사용하는 행위를 뜻한다. GET 리소스의 상태 표현을 조회한다. HEAD 응답 헤더(메타데이터)를 조회한다. 바디가 없다. PUT 리소스 삽입, 갱신 을 위해 사용한다. 변경한 값을 갖는 메시지 바디를 포함할 수 있다. POST 새로운 리소스 생성 시 사용한다. 새 메시지를 나타내는 메시지 바디를 포함할 수 있다. 컨트롤러 리소스를 실행할 수 있다. DELETE 오직 특정..

개발 2022.04.07