머신 러닝 2 ㈜ 퀀트랩
머신 러닝(machine learning) 통계적 원리로 데이터의 패턴을 발견하는 방법 분류 Supervised Learning Unsupervised Learning Reinforcement Learning
Supervised Learning 데이터의 특정 변수를 예측하는 방법 예) X-Ray 사진 암, 기계데이터 고장 Regression: 연속 변수를 예측하는 경우 Classification: 이산 변수를 예측하는 경우
Unsupervised Learning 데이터의 변수들 사이의 관계를 이용해서 새로 운 변수를 만드는 방법 Clustering: 비슷한 사례들을 묶기
Reinforcement Learning 가상의 행위자(agent)에게 보상을 주어 더 많은 보상을 받는 방법을 스스로 학습하게 하는 것 예: 체스, 바둑
간단한 사례로 실습
붓꽃(iris) 데이터 꽃잎 길이 Petal.Length 꽃잎 너비 Petal.Width 꽃받침 길이 Sepal.Length 꽃받침 너비 Sepal.Width 품종 Species
caret 패키지 R의 기계학습 패키지들을 단일한 사용법으로 쓸 수 있도록 만든 패키지 install.packages(‘caret’)
간단히 해보기 train(Species ~ ., data = iris, method = ‘lda’)
간단히 해보기 train(Species ~ ., data = iris, method = ‘lda’) 데이터
간단히 해보기 train(Species ~ ., data = iris, method = ‘lda’) 예측할 변수
간단히 해보기 train(Species ~ ., data = iris, method = ‘lda’) 예측에 사용할 변수
간단히 해보기 train(Species ~ ., data = iris, method = ‘lda’) 예측에 사용할 변수 .은 나머지 전부를 뜻함
간단히 해보기 train(Species ~ ., data = iris, method = ‘lda’) 분석 모형
Linear Discriminant Analysis 집단들의 차이가 가장 커지는 방향을 찾음
Linear Discriminant Analysis
Linear Discriminant Analysis
Linear Discriminant Analysis
LDA 결과 Linear Discriminant Analysis 150 samples 4 predictor 3 classes: 'setosa', 'versicolor', 'virginica' No pre-processing Resampling: Bootstrapped (25 reps) Summary of sample sizes: 150, 150, 150, 150, 150, 150, ... Resampling results: Accuracy Kappa 0.9820793 0.9728876
Confusion Matrix 실제 Positive Negative 예측 True Postive False Positive (Type I error) False Negative (Type II error) True Negative
Accuracy 실제 Positive Negative 예측 True Postive False Positive (Type I error) False Negative (Type II error) True Negative
Confusion Matrix lda.model = train(Species ~ ., data = iris, method = ‘lda’) p = predict(lda.model, iris) confusionMatrix(p, iris$Species)
Confusion Matrix 실제 setosa versicolor virginica 예측 50 48 1 2 49
Confusion Matrix 실제 setosa versicolor virginica 예측 50 48 1 2 49 48 1 2 49 실제로는 versicolor Virginica로 예측
Confusion Matrix 실제 setosa versicolor virginica 예측 50 48 1 2 49 48 1 2 49 실제로는 virginica Versicolor로 예측
Accuracy 실제 setosa versicolor virginica 예측 50 48 1 2 49
Accuracy의 문제점 암 유병률: 10만명 당 2,709명 (2.7%) 암이 아닌 사람 97.3% ???
해결책 #1 Kappa: 찍어서 맞출 확률 대비 얼마나 정확한가 O: 실제 Accuracy, E: 찍었을 때 Accuracy
Accuracy 찍어서 맞출 확률 = 0.3 Accuracy = 0.98 Kappa = 0.97 실제 setosa versicolor virginica 예측 50 48 1 2 49
해결책 #2 우리가 관심있는 것을 얼마나 정확히 예측하는 가? Precision Recall
Precision 예측이 얼마나 정확한가? 실제 Positive Negative 예측 True Postive False Positive (Type I error) False Negative (Type II error) True Negative
Precision Accuracy = 97.9% Precision = 80.0% 실제 암 건강 예측 양성 8 2 음성 19 971
Precision Accuracy = 97.9% Precision = 100.0% 실제 암 건강 예측 양성 6 음성 21 음성 21 973
Recall 전체 중에 얼마나 예측해낼 수 있는가? 실제 Positive Negative 예측 True Postive False Positive (Type I error) False Negative (Type II error) True Negative
Recall Accuracy = 97.9% Precision = 80.0% Recall = 29.6% 실제 암 건강 예측 양성 음성 19 971
Recall Accuracy = 97.9% Precision = 100.0% Recall = 22.2% 실제 암 건강 예측 양성 6 음성 21 973
Precision vs. Recall 대개 상충됨 상황에 따라서 선택 Precision의 문제: 쉬운 것만 예측하면 높아짐 Recall의 문제: Positive를 많이 예측하면 높아짐
F1 Precision과 Recall의 조화평균 𝐹 1 = 1 1 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 1 𝑅𝑒𝑐𝑎𝑙𝑙 2 = 2∙𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛∙𝑅𝑒𝑐𝑎𝑙𝑙 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒𝑐𝑎𝑙𝑙 조화평균: 속도, 비율 등의 평균을 내는 법
F1 Accuracy = 97.9% Precision = 80.0% Recall = 29.6% F1 = 43.2% 실제 암 건강 예측 양성 8 2 음성 19 971
F1 Accuracy = 97.9% Precision = 100.0% Recall = 22.2% F1 = 36.3% 실제 암 건강 예측 양성 6 음성 21 973
K-Nearest Neighbor train(Species ~ ., data = iris, method = ‘knn’)
K-Nearest Neighbor k개의 가장 유사한 사례의 경우를 참조
K = 1
K = 2
K = 3
K = 5
K-Nearest Neighbor k를 어떻게 정할까? k는 데이터의 패턴이 아닌 모형의 특성 학습X
K를 정하는 방법 #1 수동으로 정한다 train(Species ~ ., data = iris, method = 'knn', tuneGrid = data.frame(.k = 3)) But, 근거가 없음
K를 정하는 방법 #2 여러 가지 방법으로 해보고 성능이 좋은 것으로 train(Species ~ ., data = iris, method = 'knn', tuneGrid = data.frame(.k = 1:5))
비교하는 방법 현재 데이터만으로 Bootstrap: 데이터를 랜덤하게 불려서 Cross Validation(CV): 데이터를 n등분해서 일부를 validation으로 사용 Repeated CV: CV를 반복
Cross Validation의 예 데이터를 3등분 한다 2부분으로 학습하고 나머지 1부분으로 성능 검증을 3회 반복
CV를 하는 방법 train(Species ~ ., data = iris, method = 'knn', tuneGrid = data.frame(.k = 1:5), trControl = trainControl( method = “cv”, number = 3))
모형 LDA K-Nearest Neighbor Elastic Net. SVM Neural Network Decision Tree
Elastic Net Linear Model: y = ax + b y의 오차가 최소화되도록 a와 b를 조정 문제점: overfitting
Overfitting
Overfitting을 해결하는 방법 데이터를 아주 많이 모은다 정규화(regularization)
정규화 regularization 모형의 복잡성에 페널티(penalty)를 부여 단순하면서도 정확한 예측을 하는 모형으로 선형 모형에서 많이 쓰이는 방법 라쏘(Lasso, L1) 릿지(Ridge, L2)
라쏘와 릿지 y = ax + b a, b 회귀계수 라쏘: 오차 + (계수의 절대값)의 합 릿지: 오차 + (계수의 절대값)2의 합 오차도 작아지면서 계수도 작아지도록
라쏘와 릿지
Elastic Net Elastic Net: 라쏘 + 릿지 Elastic Net의 tuning parameter Lambda: 정규화를 얼마나 할 것인가 Alpha: 라쏘와 릿지 중 어느 쪽에 더 비중을 둘 것인가
SVM 전체 데이터가 아닌 중요한 일부만 사용
SVM Hard SVM: 경계선과 SV 사이의 거리를 최대로 Soft SVM: 일부가 경계선을 넘는 것을 허용 C: 경계선을 넘는 데이터에 페널티
Linear Separability 빨강과 파랑을 나누는 하나의 직선은 존재할 수 없음
커널 트릭 비선형 패턴을 다루기 위한 트릭 거리를 측정하는 방법을 조정
Decision Tree 한 번에 한 가지 변수로 데이터를 나눔 위의 과정을 반복
Decision Tree
Decision Tree
Decision Tree
Decision Tree의 문제점 불안정성: 데이터가 조금만 바뀌어도 Tree가 모 두 바뀔 수 있음
Random Forest Decision Tree의 대안 데이터를 무작위로 여러 부분으로 쪼갬 각 부분에 대해 Tree를 생성
Neural Network 생물의 신경망 구조를 흉내 입력층, 은닉층, 출력층으로 구성 역전파 알고리즘으로 학습 최근 각광 받고 있는 딥러닝(deep learning)
Weight decay 선형 모형에서 릿지와 동일한 테크닉
머신 러닝의 단계 전처리 자료 분할 모형 적합 모형 평가 최종 모형 선정 및 예측