분류: 예측해야할 데이터가 범주형(categorical) 변수일때
회귀: 예측해야할 데이터가 연속적인 값 일때
예측: 과거 및 현재 데이터를 기반으로 미래를 예측하는 과정 예를 들어 올해와 전년도 매출을 기반으로 내년도 매출을 추산하는 것.
클러스터링 : 특정 기준에 따라 유사한 데이터끼리 그룹화
차원축소 : 고려해야할 변수를 줄이는 작업, 변수와 대상간 진정한 관계를 도출하기 용이
보통 라벨(정답)의 존재 유무에 따라 머신러닝을 지도학습과 비지도학습으로 나눔.
데이터가 매우 복잡하다면 차원을 축소하기도 하고 만약 주요한 성분이 있다면 주성분 분석을 적용하기도 함.
데이터의 종류에 따라 같은 회귀라도 선형회귀는 수치형 데이터(연속적인 데이터)를 예측하는 데 사용된다면, 로지스틱 회귀는 분류(엄밀히 말하면 이진 분류)에 사용됨.
따라서 정답 유무, 데이터의 종류, 특성, 문제 정의에 따라 머신러닝 알고리즘은 굉장히 복합적으로 사용됨.
학습하는 시스템을 에이전트라고 하고, 환경을 관찰해서 에이전트가 스스로 행동하게 함.
에이전트(Agent): 학습 주체 (혹은 actor, controller)
환경(Environment): 에이전트에게 주어진 환경, 상황, 조건
행동(Action): 환경으로부터 주어진 정보를 바탕으로 에이전트가 판단한 행동
보상(Reward): 행동에 대한 보상을 머신러닝 엔지니어가 설계
강화학습 알고리즘: Monte Carlo methods, Q-Learning, Policy Gradient methods
Classification, Regression, Clustering, Dimensionality Reduction
사이킷런에선 데이터 수량, 라벨의 유무(정답의 유무), 데이터의 종류 (수치형 데이터(quantity), 범주형 데이터(category) 등)에 따라 알고리즘을 나눔.
사이킷런 동영상 요약
1. transformer()와 Estimator객체의 fit()과 predict()메소드가 중요. 모델 셀렉션 안의 train_test_split()
이란 함수를 이용해 훈련데이터와 테스트데이터를 랜덤하게 섞음.
2. 사이킷런은 파이썬 기반 머신러닝 라이브러리로 Scipy 및 NumPy 와 비슷한 데이터 표현과 수학 관련 함수를 갖고 있음. 일반적으로 머신러닝에서 데이터 가공(ETL)을 거쳐 모델을 훈련하고 예측하는 과정을 거치는데 ETL부분은 ScikitLearn의 transformer()를 제공하고, 모델의 훈련과 예측은 Estimator 객체를 통해 수행되며, Estimator에는 각각 fit()(훈련), predict()(예측)을 행하는 메소드가 있음. 모델의 훈련과 예측이 끝나면 이 2가지는 작업을 Pipeline()으로 묶어 검증을 수행.
사이킷런의 알고리즘은 파이썬 클래스로 구현되어 있고, 데이터셋은 NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matrix를 이용해 나타낼 수 있음.
훈련과 예측 등 머신러닝 모델을 다룰 때는 CoreAPI라고 불리는 fit(), transfomer(), predict()과 같은 함수들을 이용.
사이킷런에서는 데이터 표현 방식 2가지. 바로 특성 행렬(Feature Matrix) 과 타겟 벡터(Target Vector).
-특성 행렬(Feature Matrix)
입력 데이터를 의미합니다.
특성(feature): 데이터에서 수치 값, 이산 값, 불리언 값으로 표현되는 개별 관측치를 의미합니다. 특성 행렬에서는 열에 해당하는 값입니다.
표본(sample): 각 입력 데이터, 특성 행렬에서는 행에 해당하는 값입니다.
n_samples: 행의 개수(표본의 개수)
n_features: 열의 개수(특성의 개수)
X: 통상 특성 행렬은 변수명 X로 표기합니다.
[n_samples, n_features]은 [행, 열] 형태의 2차원 배열 구조를 사용하며 이는 NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matrix를 사용하여 나타낼 수 있습니다.
-타겟 벡터 (Target Vector)
입력 데이터의 라벨(정답) 을 의미합니다.
목표(Target): 라벨, 타겟값, 목표값이라고도 부르며 특성 행렬(Feature Matrix)로부터 예측하고자 하는 것을 말합니다.
n_samples: 벡터의 길이(라벨의 개수)
타겟 벡터에서 n_features는 없습니다.
y: 통상 타겟 벡터는 변수명 y로 표기합니다.
타겟 벡터는 보통 1차원 벡터로 나타내며, 이는 NumPy의 ndarray, Pandas의 Series를 사용하여 나타낼 수 있습니다.
(단, 타겟 벡터는 경우에 따라 1차원으로 나타내지 않을 수도 있습니다. 이 노드에서 사용되는 예제는 모두 1차원 벡터입니다.)
특성 행렬 X의 n_samples와 타겟 벡터 y의 n_samples는 동일해야 함.
Toy 데이터셋 예시
datasets.load_boston(): 회귀 문제, 미국 보스턴 집값 예측(version 1.2 이후 삭제 예정)
datasets.load_breast_cancer(): 분류 문제, 유방암 판별
datasets.load_digits(): 분류 문제, 0 ~ 9 숫자 분류
datasets.load_iris(): 분류 문제, iris 품종 분류
datasets.load_wine(): 분류 문제, 와인 분류
train_test_split() 사용
훈련 데이터와 테스트 데이터 분리는 필수.
훈련에 쓴 데이터를 예측에 사용하면 항상 정확도는 100%가 나올 것이기 때문