handson-ml 10

[요약] 핸즈온 머신러닝 - 10. 케라스를 사용한 인공 신경망 소개

인공신경망 ANN 생물학적 신경망 BNN ANN 은 BNN 의 구조를 본따 만듬. 그렇다고 실제 신경망을 흉내낼 필요는 없음. 어짜피 인간은 진짜 뇌의 동작을 규명하지 못하고 있음. 비행기는 날개를 펄럭이지 않음. 현대 ANN 은 이미 BNN 으로 부터 많이 멀리 와있음. 과거와의 비교 학습을 위한 데이터가 늘어남. 컴퓨팅 파워의 급격한 증가. 훈련 알고리즘 향상. 일부 이론적 제약들이 실제에서는 큰 문제가 되지 않거나, 지역 최적점에 수렴할 확률이 매우 적음을 밝혀냄. 인공신경망의 구조 인공 뉴런 실제 뇌의 뉴런을 모사. 뉴런과 뉴런을 연결하고, 입력이 일정 수준(=개수) 이상일 경우(=활성화) 출력하는 구조. 간단한 논리 연산 가능 : AND, OR, NOT 한계 : XOR 을 해결할 수 없음. 퍼셉..

개발/머신러닝 2022.06.09

[요약] 핸즈온 머신러닝 - 09. 비지도 학습

비지도 학습은 사람이 레이블을 붙일 필요 없이 알고리즘이 스스로 학습하는것을 말한다. 군집 정의 비슷한 샘플을 구별해 하나의 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업. 사용 예 차원 축소 기법 : 각 클러스터에 대한 샘플의 친화성을 측정할 수 있다. k 개의 클러스터가 있어서 어느 클러스터와 가장 가까운지를 기준으로 분류를 할 수 있다면 이를 "k 차원으로 축소 했다"고 볼 수 있다. 이상치 탐지 : 모든 클러스터에 대하여 친화성이 낮은 경우, 이상치로 판단할 수 있다. 이미지 분할 : 이미지의 색상을 클러스터링 하여, 대표 색상으로 색상을 치환하는 기법. 이미지 탐지, 추적 시스템에 유용함. 이미지 전처리 : 이미지 데이터를 모두 쓰는 대신, 이미지를 클러스터링하여 활용할 수 있다. 이는 차..

개발/머신러닝 2022.05.31

[요약] 핸즈온 머신러닝 - 08. 차원 축소

차원의 저주 특성수가 많을수록 훈련은 느리고 모델의 성능은 나빠진다. 그런데 특성수가 많을 수록 데이터의 밀도가 낮아진다 --> 과대 적합. 중요한 데이터는 특정 영역에 집중된다. 차원의 저주를 해결하기 위해... 데이터를 늘려 밀도를 높인다. 차원을 낮춘다. 데이터를 늘려 밀도를 유지하는것은 고차원에서는 사실상 불가능하다. 따라서 차원을 낮추는 차원 축소가 유용하다. 차원 축소 원리 투영 D 차원의 데이터를 낮은 차원인 N 차원에 맵핑하는 것. 대부분의 데이터는 일부 공간(부분 공간)에 모여 있으므로 차원을 낮추더라도 식별이 가능하다. 하지만 반드시 차원을 낮춘다고 식별이 용이해 지는것은 아님. 예. 스위스롤을 절반으로 나누는 문제는 고차원에서 식별이 더 쉽다. 차원을 낮추면 말린 부분이 오버랩 되기 ..

개발/머신러닝 2022.05.30

[요약] 핸즈온 머신러닝 - 07. 앙상블 학습과 랜덤 포레스트

통계적 의미 대중의 지혜 (어떠한 문제에 대해) 무작위로 선택한 대중의 대답을 모은것이 전문가의 답보다 낫다 (는 이론). 통계측면에서는 "하나의 정확한 모델"(=A) 보다 "여러개의 부정확한 모델"(=B)의 평균이 더 낫다. 개별 B 의 편향은 더 높지만, 평균을 내면 A 와 비슷해진다. 개별 B 의 분산은 A 와 비슷하지만, 평균을 내면 A 에 비해 월등히 감소한다. 따라서 A 와 B 의 편향은 비슷하지만, B 의 분산이 월등히 줄어든다. 대중의 지혜를 모사한 예측기를 앙상블이라 한다. 큰수의 법칙 하나의 문제에 대해 여러개의 약한 학습기 (= 랜덤 추측보다 조금 더 나은 성능을 가지는 부실한 분류기) 를 이용해 예측을 한다. 단일 강한 학습기 보다 상대적으로 좋은 결론이 나온다. 큰수의 법칙 : 양..

개발/머신러닝 2022.05.29

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

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

개발/머신러닝 2022.05.27

[요약] 핸즈온 머신러닝 - 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