- 기계학습과 전통적인 프로그래밍과의 차이점
- 전통적인 프로그래밍: 원하는 절차를 '프로그래밍'하는 것. 명시적인 프로그래밍
- 개발자가 구체적인 프로그램 코드를 작성해야함
- 기계학습 : 데이터만 제공하면 됨
- 전통적인 프로그래밍: 원하는 절차를 '프로그래밍'하는 것. 명시적인 프로그래밍
- 머신 러닝 == 함수 근사(function approximation): 항상 입력을 받아서 출력하는 함수 y=f(x)를 학습한다고 생각
- 특징(features): 우리가 학습 모델에게 공급하는 입력. 간단한 경우에는 입력 자체가 특징이 됨
- 레이블(label): y=f(x)에서 y에 해당
- 샘플 or 예제: 머신러닝에 주어지는 특정한 예. y=f(x)에서 x에 해당.
- 학습(learning): 모델을 만들거나 배우는 것
- 예측(prediction): 학습된 모델을 레이블이 없는 샘플에 적용하는 것. -> 학습된 모델을 사용하여 유용한 예측(y)를 해내는 것
- 지도 학습: 정답을 알려줌.
- 회귀 (regression): 입력과 출력이 모두 실수
- 실수 입력(x)과 실수 출력(y)가 주어질 때 입력에서 출력으로의 매핑 함수를 학습하는 것
- 데이터를 많이 수집하면 기울기 조절 가능
- 잘 fitting한 f(x)를 구하면 예측을 더 잘함
- 분류(classification): 입력을 두 개 이상의 레이블(유형)으로 분할하는 것
- 해당 모델 학습 시 레이블 제공해야함
- disjoint하다 (겹친 것이 없다)
- y=f(x)에서 y가 이산적인 경우에 분류(인식) 문제라 함.
- 신경망, kNN,SVM,의사 결정 트리 등의 알고리즘 있음
- 회귀 (regression): 입력과 출력이 모두 실수
- 비지도 학습: 컴퓨터가 스스로 입력들을 분류. 레이블 y가 주어지지 않음
- 데이터들의 상관도를 분석하여 유사한 데이터들을 모을 수 있음
- 클러스터링(군집화, clustering): 데이터 간 거리를 계산하여 입력을 몇 개의 그룹으로 나누는 방법
- 강화 학습(reinforcement learning): 컴퓨터가 어떤 행동을 취할 때마다 외부에서 벌이나 보상이 주어짐
- 결과가 즉시 나타나지 않음 -> "지연 보상" 문제
- 머신러닝의 과정
- 학습 데이터 모으기
- 학습 데이터 정제하기(전처리)
- 모델 학습하기
- 평가
- 예측
- 머신러닝에는 항상 훈련 데이터와 테스트 데이터가 있어야 한다
- 모델 선택
- 평가: 테스트 데이터 사용
- 일반적인 훈련 데이터와 테스트 데이터의 비율은 80:20 또는 70:30
- 머신러닝의 성능 평가 : 혼동 행렬
- TP
- FN
- FP
- TN
- 정확도(Accuracy) = (TP+TN)/(TP+TN+FP+FN)
- True Postiive rate = TP/(TP+FN)
- False negative rate = FN/(TP+FN)
- True negative rate(=Sensitivity) = TN/(FP+TN)
- False Positive rate= FP/(FP+TN)
- Precision = TP/(TP+FP)
- Recall = TP/(TP+FN)
- F-measure= 2 * Precision * Recall / (Precision+Recall)
- harmonic mean(조화 평균): 주어진 수들의 역수의 산술 평균의 역수 => 평균 변화율을 구할 때 자주 사용