* 샘플로 구성되는 데이터셋
- 기계 학습이 사용하는 데이터는 여러 개의 샘플을 담고 있어서 데이터셋(data set)이라 부르기도 함
* 특징으로 구성되는 특징 벡터 (feature vector)
* DESCR은 iris 데이터셋에 대한 설명문 제공
- 특징벡터에 있는 특징별로 간단한 통계량을 보여주고 데이터를 수집한 시기와 사람 등 정보 제공
* 데이터 로딩 후 내용 출력
* iris 내용 확인
* 샘플을 특징 벡터와 레이블로 표현
- 특징 벡터는 x로 표기
- d 는 특징의 개수로서 특징 벡터의 '차원'이라 부름
- 오른쪽 표에서 xd
- 즉, 하나의 샘플은 d개의 특징을 갖는 '특징 벡터'로 표현
- 여러 개의 샘플: X1, X2, ..., X150
- 즉, 샘플 1개는 d개의 차원으로 구성
- 레이블(정답)의 부류의 개수가 C라고 하면,
0, 1, 2, ..., c-1의 값 또는 1, 2, ... c-1, c 의 값
또는 원핫 코드 (one-hot code)
- 원핫 코드는 한 요소만 1인 이진열
- ex) Setosa는 (1, 0, 0), Versicolor는 (0, 1, 0), Virginica는 (0, 0, 1)로 표현
[특징 공간에서 데이터 분포]
[다차원 특징 공간]
- 종이에 그릴 수 있는 공간은 3차원으로 제한되지만,
수학에서는 아주 높은 차원까지 다룰 수 있음
* 2차원 상의 두 점의 거리
* d차원 상의 두 점의 거리
* 특정 공간을 분할하는 결정 경계 (decision boundary)
- 2~3차원은 그림을 그릴 수 있는데 4차원 이상은 수학적 상상력 필요
* 현대 기계 학습이 다루는 데이터
- 수백~수만 차원 특징 공간
- 고차원 공간에서 부류들이 서로 꼬여있는 매우 복잡한 분
[특징의 분별력]
* 기계 학습은 높은 분별력을 지닌 특징을 사용해야 함
- 100여년 전의 iris 데이터는 사람이 네 종류의 특징을 자를 들고 직접 추출
* 다양한 형태의 특징 공간
- 아래 그림에서 오른쪽으로 갈수록 특징의 분별력이 낮아짐
- 실제 세상은 (c) ~ (d) 와 같은 비선형 데이터를 생성
(데이터의 원천적인 성질, 측정이나 레이블링 오류, 특징 설계를 잘못해서 등)
- 가급적 (d) 보다 (c)와 같은 특징을 사용해야 함
[선형 vs 비선형]
* 선형 (Linear)
- 직선 (line) 모양
* 비선형 (Nonlinear)
- 직선 모양이 아닌 모든 것
[특징 공간을 분할하는 결정 경계]
* 결정 경계를 정하는 문제에서 고려 사항
- 비선형 분류기 (nonlinear classifier) 사용
- 과잉 적합 (overfittinig) 회피
- 과잉 적합은 아웃라이어를 맞히려고 과다하게 복잡한 결정 경계를 만드는 현상
- 훈련 집한에 대한 성능은 높지만 테스트 집합에 대해서는 형편없는 성능 (일반화 능력 저하)
[기계 학습 적용: 모델링과 예측]
* 모델링과 예측
- 기계 학습의 핵심
- 기계 학습에는 아주 다양한 모델이 있음
* 통계적인 머신러닝 접근법은 현재 아래 2가지 정도만 사용
- SVM (Support Vector Machine)
- Decision tree (결정 트리)
[SVM (Support Vector Machine)]
* SVM은 분류 및 회귀분석에서 사용 가능
- 그러나 분류 쪽에 성능 뛰어남
- 지도 학습 방법
- Hyper-plane(초평면)을 이용해 카테고리 나눔
* SVM은 분류를 할 때 최고의 마진(margin)을 가져가는 방향으로 분류를 수행
- Margin: 두 클래스의 support vector 거리
- 마진이 크면 클수록 학습에 사용하지 않은 새로운 데이터가 들어오더라도 잘 분류할 가능성이 커지기 때문
- SVM 뿐만 아니라 모든 머신 러닝 학습 방법이 추구하는 방향
* Support Vector
- hyper-plane으로부터 가장 가까이 있는 vector
- 아래 그림에서, 파란색 점과 빨간색 점을 최대 마진으로 구별하는 직선은 검은색 직선
- 2차원일 때는 직선이지만, 3차원 이상이면 평면이 되어서 hyper-plane, 즉 평면(plane)라고 부름
[SVM 원리]
* 기계 학습의 목적은 일반화 능력을 극대화 하는 것
- SVM은 일반화 능력을 높이려 여백(margin)을 최대화
- hyper-plane '1'은 오류가 너무 많음
- hyper-plane '2'은 파란색 부류에 조금만 변형이 생겨도 결정 경계를 넘을 가능성
- hyper-plane '3'은 두 부류 모두에 대해 멀리 떨어져 있어 경계를 넘을 가능성이 낮음
- SVM 학습 알고리즘은 여백을 최대화 하는 결정 경계를 찾음
* SVM을 비선형 분류기로 확장
- 원래 SVM은 선형 분류기
- 커널 트릭 (kernel trick)을 사용하여 비선형 분류기로 확장
- 커널 함수를 사용하여 선형 공간을 비선형 공간으로 변형 (아래 그림)
- 커널 함수로는 polynomial function, Gaussian radial basis function(RBF), sigmoid 함수를 사용
- 커널 함수의 종류와 커널 함수의 모양을 조절하는 매개변수가 필요 --> 하이퍼 매개변수
[SVM 코드]
[SVM 하이퍼 매개변수]
* 하이퍼 매개변수
- 모델의 동작을 제어하는데 쓰는 변수.
모델의 학습을 시작하기 전에 설정해야 하는데,
적절한 값으로 설정해야 좋은 성능을 얻을 수 있음
* 하이퍼 매개변수 최적화
- 기계학습의 중요한 주제 중의 하나임
[하이퍼 매개변수]
* C (cost) 하이퍼 매개변수
- 선형 SVM일 때는 C 매개변수 1개만 존재
- 지금까지 모든 샘플을 옳게 분류하는 경우를 다루자면, 실제로는 오류를 허용하는 수 밖에 없음
- C를 크게 하면, 잘못 분류한 훈련 집합의 샘플은 적은데 여백이 작아짐
(훈련 집합에 대한 정확률은 높지만 일반화 능력 떨어짐)
- C를 작게 하면, 여백은 큰데 잘못 분류한 샘플이 많아짐
(훈련 집합에 대한 정확률은 낮지만 일반화 능력 높아짐)
* gamma 라는 하이퍼 매개변수
- 비선형 SVM 일 때는 C, gamma 매개변수 2개 존재
- C는 앞과 동일
- 다음 예는 선형으로는 불가능
- gamma는 하나의 데이터 샘플이 영향력을 행사하는 거리를 결정
- 가우시안 함수의 표준편차와 관련되어 있는데, 클수록 작은 표준편차를 갖음
- 즉, gamma가 클수록 한 데이터 포인터들이 영향력을 행사하는 거리가 짧아지고, gamma가 낮을수록 커짐
* C 하이퍼 매개변수
- C = 1 인 상황에서는 두 개의 이상치를 인정하고 무난하게 결정 경계를 찾은 반면,
- C = 100 일 때는 하나의 이상치만 인정하면서 조금은 억지스럽게 분
* gamma 하이퍼 매개변수
- gamma의 값이 높아짐에 따라 파란색의 공간이 점점 작아짐
- 서로 합쳐져서 특정 형태가 만들어지는 것임
[SVM]
* SVM 적용 예
- line 11: SVM 분류기 모델 중 SVC(classification) 클래스의 객체를 생성하여 s에 저장
- line 12: 객체 s의 fit 함수는 훈련 집합을 가지고 학습을 수행
(매개변수로 특징 벡터 iris.data와 레이블 irist.target을 설정)
- line 16: 객체 s의 predict 함수는 테스트 집합을 가지고 예측 수행
[특징 추출과 표현]
* 기계 학습의 전형적인 과정
- 실제에서는 다양한 형태로 나타남
- iris 데이터셋은 채집한 붓꽃의 꽃잎과 꽃받침 크기를 사람이 직접 자로 재서 기록함
- 데이터 수집과 특징 추출을 사람이 직접 수행한 경우임
- 딥러닝을 사용하면 사람이 할 일은 사과 영상을 수집하고 등급 레이블을 붙이는 것이 전부
- 딥러닝은 특징 추출과 모델링을 동시에 최적화 함
(고전적인 기계학습(SVM) 같은 것을 사용하면 특징 추출을 사람이 설계하고 구현해야 함)
- 어떤 경우든 특징은 분별력이 높아야 함
[특징의 분별력]
* 사람의 분별력
- 직관적으로 분별력이 높은 특징을 선택해 사용
- ex) 두 텀블러를 구분하는 특징
- 글씨 방향, 몸통 색깔, 손잡이 유무, 뚜껑 유무 등
- 뚜껑 유무라는 특징은 분별력이 없음
- 손잡이 유무라는 특징은 높은 분별력
- 사람은 물체를 인식할 때 본능적으로 가장 분별력이 높은 특징을 선택해 사용함
- 둘 이상의 특징을 사용하면 분별력을 높일 수 있음
- ex) 손잡이가 있고 몸통 색이 더 하얀 텀블러라고 말하면 정확하게 인식할 가능성이 커짐
[IRIS 특징 추출/표현을 통한 데이터 이해]
* 특징 공간에서 데이터 분포
* iris 데이터
- 특징이 4개이므로 4차원 특징 공간을 형성
- 150개 샘플 각각은 4차원 특징 공간의 한 점
- 차원을 하나 제외하고 3차원 공간에 데이터 분포를 그림
- plotly, pandas 라이브러리 설치
[IRIS 특징 추출/표현을 통한 데이터 이해]
* 특징 공간에서 데이터 분포 관찰 예
- petal width(수직 축)에 대해 Setosa는 아래쪽, Virfinica는 위쪽에 분포의 실행 결과와 일치
--> petal width 특징은 분별력(discrimminating power)이 뛰어남 (=분산이 크다)
- sepal width 축은 세 부류가 많이 겹쳐서 분별력이 낮음
- 전체적으로 보면, 세 부류가 3차원 공간에서 서로 다른 영역을 차지하는데 몇 개 샘플은 겹쳐 나타남
[k-means (k-평균) 알고리즘]
- k-means 는 군집 분석에서 많이 사용되는 대표적인 알고리즘
- k는 데이터에서 군집의 수를 의미하고,
means(평균)란 중심(centroid)과 동일한 군집의 데이터의 평균을 의미
- 데이터의 평균을 이용하여 k개의 군집을 만드는 알고리즘으로 1~4단계로 나눔
[특징 공간을 분할하는 결정 경계]
* 인공지능의 인식은 철저히 수학에 의존
- 샘플은 특징 벡터로 표현되며, 특징 벡터는 특징 공간의 한 점에 해당
- 인식 알고리즘은,
특징 공간의 성능을 높이는데 더 유리한 새로운 특징 공간으로 여러 차례 변환한 다음
최종적으로 특징 공간을 분할하여 부류를 결정
(특징 공간 변환, 특징 공간 분할로 분류 문제 해결)
- 특징 공간 변환 예
[기계 학습 적용: 모델링과 예측]
* 훈련 집합과 테스트 집합
* 훈련 집합
- 기계 학습 모델을 학습하는데 쓰는 데이터로서 특징 벡터와 레이블 정보를 모두 제공
* 테스트 집합
- 학습을 마친 모델의 성능을 측정하는데 쓰는 데이터로서 예측할 때는 특징 벡터 정보만 제공하고,
계산된 예측 결과를 가지고 정확률을 측정할 때 레이블 정보를 사용
[인공지능 설계 사례: 과일 등급을 분류]
* 인공지능 제품 핵심
- 데이터를 읽고 모델링과 예측을 수행
- 붓꽃 영상을 획득하고 특징을 추출하는 컴퓨터 비전 모듈을 전처리로 붙이면 붓꽃 인식 프로그램 완성
* 사과의 상중하의 세 부류로 분류하는 인공지능 기계의 설계
- 과정 1) 데이터 확보
- 상중하 비율이 비슷하게 수천 개의 사과 수집
- 데이터 편향(data bias)을 방지하기 위해 여러 농장에서 수집
- 카메라로 촬영하여 파일에 저장
- 과정 2) 특징 벡터와 레이블 준비
- 어떤 특징 사용? 사과의 크기, 색깔, 표면의 균일도는 분별력이 높은 특징
- 컴퓨터 비전 기술로 특징 추출 프로그램 작성. 특징 추출하여 apple.data 파일에 저장
- 사과 분류 전문가를 고용하여 레이블링. apple.target 파일에 저장
- 과정 3) 학습하는 과정을 프로그래밍 (훈련 데이터 사용)
- 과정 4) 예측 과정을 프로그래밍 (새로 수집한 테스트 데이터 사용)
[규칙 기반/고전적 기계학습/딥러닝]
* 규칙 기반 방법
- 분류하는 규칙을 사람이 구현
- ex) 꽃잎의 길이가 a보다 크고, 꽃잎의 너비가 b보다 작으면 Setosa라는 규칙에서,
a와 b를 사람이 결정해 줌
- 큰 데이터셋에서는 불가능하고, 데이터가 바뀌면 처음부터 새로 작업해야 하는 비효율성
* 기계 학습 방법
- 특징 벡터를 추출하고 레이블을 붙이는 과정은 규칙 기반과 동일 (수작업 특징, hand-crafted feature)
- 규칙 만드는 일은 기계 학습 모델을 이용하여 자동으로 수행 (ex) SVM
* 딥러닝 방법
- 레이블을 붙이는 과정은 기계 학습과 동일
- 특징 벡터를 학습이 자동으로 알아냄
--> 특징 학습 또는 표현 학습을 한다고 말함
- 장점: 특징 추출과 분류를 동시에 최적화하므로 뛰어난 성능 보장, 인공지능 제품 제작이 빠름
[결정 트리]
* 결정 트리 (decision tree)
- 트리를 이용하여 예측하는 방법
- 질문을 던져 스무고개처럼 대상을 좁혀 나가면 분류 문제를 쉽게 해결할 수 있음
- 우리가 의사결정하는 과정과 유사하며 해석이 매우 쉬운 쉬운 장점
* 불순도 (impurity)
- 노드에 클래스가 순수 (pure) 하지 않은 정도
- 노드에 2개 이상의 서로 다른 클래스가 있다면 순수하지 않은 것
- 노드 1: 서로 다른 클래스(노란색 사각형, 파란색 원)가 1:1 의 비율로 섞여 있으며 가장 불순도가 높음
- 노드 3: 클래스(노란색 사각형)가 순수한 상태로 불순도 값이 가장 낮고,
- 노드 2: 노드 1과 노드 3의 중간 정도의 값을 가지고 있음
* 엔트로피 (entropy)
* 무질서도
- 원래 엔트로피가 증가하는 쪽으로, 즉 무질서해지는 쪽으로 변하려 함
- 일반적으로 에너지를 방출하는 쪽으로 변하려 하지만,
경우에 따라서는 외부로부터 에너지를 흡수해가면서까지 무질서해지려
- 엔트로피는 에너지의 쓸모를 나타내는 양. 엔트로피가 적은 에너지는 쓸모가 많고 잘 사용할 수 있다는 것을 의미.
* 결론
- [방법2] 의 정보 획득 값이 0.61로 [방법1]의 0.1245보다 크므로 [방법2]로 분할하는 것이 더 좋음
(엔트로피가 0인 것이 순수)
* [방법2]를 이용하여 분활한 결과를 두 가지 방법으로 표현한 것
- 결정 트리 표현 방법에서 '길이 < 50'으로 먼저 분할하면 [1]은 노란 사각형만 남아 더 이상 분할하지 않아도 됨
- 오른쪽 자식 노드는 위와 동일한 방법으로 '무게 < 27'로 분할하면 단말 노드가 모두 순수(pure)하게 잘 분할
- 앞에서 배운 정보 획득의 과정을 한 번 더 거치면 [2], [3]과 같이 분류할 수 있음
* 과잉적합 (overfitting)
- 데이터의 양이 많아지면 분할되는 노드의 개수가 매우 많음
- 트리가 복잡해질수록 훈련 데이터에 대해서는 정확도가 높지만,
새로운 데이터에 대해서는 오버 피팅
--> 이것을 결정트리에서는 '가지치지(pruning)' 라고 함