머신러닝 기초
2021.06.24
인공지능 ⊃ 머신러닝 ⊃ 딥러닝
-
- input+output → 머신러닝 → 규칙/패턴 찾기
-
- 스스로 학습하는 학문
- 단순히 작업만 실행(T)은 머신러닝 X (학습의 부재)
- 스스로 학습하는 학문
-
- ETP
- E : 바둑 경기 / T : 실전 경기 진행 / P : 승리할 확률
- ETP
-
- vs Programming
- input → programing → 원하는 output
- 스팸 ; 머신러닝 - 알아서 처리 / 프로그램밍 - 수작업
- vs Programming
-
- 머신러닝의 Data 종류
- Training -> 모델링 (외부 Data로 비슷한 성능 출력)
- Test
- 머신러닝의 Data 종류
-
- 모델링 → 일반화 / 분류화 / 추상화
- Training Data 와 input Data 달라져도 같은 성능의 output을 내기 위함
- 일반화의 문제
- 과대적합 : Training 정확도↑, 외부 Data 정확도 ↓
: 훈련 Data 증가 / 잡음 줄이기 / 정규화 - 과소적합 : Training 정확도↓, 외부 Data 정확도 ↑
: 파라이터가 더 많은 복잡한 모델 사용 / 모델 제약 줄이기
/ 충분한 학습 (~ 조기종료 시점까지)
- 과대적합 : Training 정확도↑, 외부 Data 정확도 ↓
- 모델링 → 일반화 / 분류화 / 추상화
-
- 데이터 나누기
- Training | Test - 머신러닝
- Training | Validation | Test - 딥러닝
↳ 훈련을 위한 데이터 ↲ - Validation : 트레닝 중 잘 되는지 검증/평가용 데이터
- 데이터 나누기
-
- 데이터 전처리
- 굉장히 많은 시간 소요 / 거의 대부분의 시간 할애
- 결측치 처리(missing value)
- 평균값 넣기
- 최빈값 넣기
- 날려버리기
- df.inull().sum() : 결측치 개수 확인
- df.fillna(0) : 결측치 0으로 처리
- 데이터 전처리
-
- 범주형 변수 처리
- 원-핫 인코딩 : 범주형 데이터 -> 0 or 1
- from sklearn.preprocessing import OneHotEncoder
- 데이터 바인딩 : 연속형 데이터 -> 구간 나눔
- 원-핫 인코딩 : 범주형 데이터 -> 0 or 1
- 범주형 변수 처리
-
- Feature scaling
- Min-Max Normalization
: 최대 최소값을 0~1의 범위로 데이터 표준화- from sklearn.preprocessing import minmax_scale()
- Standardization
: 표준화 확률 변수 / z 스코어 구하는 법
- Min-Max Normalization
- Feature scaling
-
- 교차검증 - 모델을 평가하는 방법 중 하나
- 훈련 데이터로 훈련시키고 테스트 데이터로 정확도/스코어 구함
- 데이터 수가 적다면 신뢰도 낮아짐
=> 데이터 수가 적을 때 사용- K-Fold
- 데이터를 훈련/검증 데이터로 k번 쪼갠 후 반복
- 성능의 평균으로 결론
- K-Fold
- 교차검증 - 모델을 평가하는 방법 중 하나
머신러닝 모델의 답
T F
실제 T a b
정답 F c d
-
-
-
- 정밀도 Presision = a / ( a + c)
- 재현율 = a / ( a + b)
- Accuracy = ( a + d ) / (a + b + c + d )
- F1 Score = [2 x (정밀도 X 재현율)] / ( 정밀도 + 재현율 )
: 정밀도와 재현율의 조화 평균
-
-
-
지도 학습 : 우리가 정답(레이블)을 주고 학습
- 분류
- 2진 분류
- 다중 분류
- 분류
-
- 회귀 : 연속적인 예측 with 예측변수 feature
- 선형회귀
- 1차함수의 기울기
- H(x) = wx + b
- MSE 비용함수 - 가설이 잘 맞는지 검사
: cost(x) =1∕m∑(H(x)-y)^2
∴MSE를 통해 w와 b값 찾기 = 선형 회귀 분석 - 단차를 최소화 = Good
- 경사하강법 - 최소값 찾기
- W = w - 𝛼 × 𝜕MSE∕𝜕w
- Running mate
- 기울기 느림(w↓) - 정확도↑- 오래걸림
- 기울기 빠름(w↑) - 정확도↓- 빠름
- local minimun ≠ global minimun 인 경우 있음
- 선형회귀
- 회귀 : 연속적인 예측 with 예측변수 feature
-
-
- 다중 선형 회귀 (x의 변수 많음)
- H(x1,x2) = w1x1 + w2x2 +b
- 데이터가 너무 많을 경우 - 분류해서 선택
- 시각화 (비지도학습)
- PCA
- 상관관계 분석
- 전진선택법
: 중요한 변수부터 차례대로 모델 추가 - 후진제거법
: 가장 영향이 적은 변수들 부터 제거
- 다중 선형 회귀 (x의 변수 많음)
-
-
-
- 로지스틱 회귀
- 곡선 형태 → 정확도 증가
- 분류에 사용 (0/1 이진형)
- p 식 유도 p = e^(ax + b) / 1 + e^(ax + b)
- p = ax + b
- 좌변 0 or 1 / 우변 ±∞
- p대신 Odds 넣기
- 성공확률/실패확률 = 성공확률 / 1 - 성공확률
- p /1 - p
- Odds에 자연로그 씌우기
- ln(Odds) = ln(p/1 - p) = ax + b
- 양변에 e 곱하기
- e^ln(p/1 - p) = e^(ax + b)
- p/1 - p = e^(ax + b)
- p = e^(ax + b) / 1 + e^(ax + b)
- p = ax + b
- 로지스틱 회귀
-
< 선형 회귀 | 로지스틱 회귀 >
직선 | 곡선
예측 | 분류
연속 | 이진형
H(x) = Wx + b | p = e^(ax + b) / 1 + e^(ax + b)
-
-
- 결정트리
- 분류와 회귀 모두 가능한 지도학습 모델
- Yes/No 질문들로 이어가며 학습
- 한 번의 분기 때 마다 두개로 구분
- 특정 질문에 따라 데이터를 구분 하는 학습
- 질문/정답의 네모 상자 :Node
- 맨 처음 분류 기준 : Root Node
- 맨 마지막 분류 기준 : Terminal / Leaf Node
- 지나치게 분류를 많이하면 오버피팅 발생 - 가지치기로 방지
- 사전 가지치기
: 트리 생성을 일찍 중단- 트리의 최대 깊이 / Leaf Node의 최대 갯수 제한
- Node가 분할하기 위한 포인트에 최소 한계 지정
- 사후 가지치기
: 트리 생성 후 적은 데이터 포인터를 가진 노드 삭제/병합 시킴
- 사전 가지치기
- 특성 중요도
: 트리를 만드는 결정에 각 특성이 얼마나 중요한지 확인- 0 : 각 특성에 사용되지 않음
- 1 : 완벽하게 타겟 플레이스를 예측 함
- 중요할 수록 높은 위치의 Node
- 특성 중요도가 낮다 ≠ 필요 없는 변수
- 해당 변수를 선택하지 않았거나
- 같은 정보를 가진 다른 특성 존재 할 수 있음
- 장점
- 알고리즘이 직관적 - 규칙 파악도 용이
- 룰이 뚜렷, 규칙 노드와 리프노드를 알기 쉬움
- 전처리 작업 필요성 낮음
- 이상치나 노이즈에 큰 영향을 받지 않음
- 비모수적 모형
- 선형성/정규성/등분산성등의 가정 필요 X
- 교호작용 효과
- 두 개 이상의 변수가 결합하여 목표변수에 어떤 영향을 주는지 쉽게 알 수 있음
- 가장 영향을 많이 주는 것 확인 가능
- 연속형/이산형 데이터 둘 다 다룰 수 있음
- 단점
- 과적합 가능성 높음
- 모델의 유연성 낮음
- 일반성 부족
- 정확도 낮음
- 랜덤포레스트
: 여러 결정 트리의 묶음- 결정 트리 많이 만들기 + 트리 생성에 무작위성 주입
- 각 트리가 고유하게 만들지도록 무작위 선택 - bootstrap sample
- 데이터 포인트 랜덤하게
- 분류하는 질문의 특성 무작위
- 트리 개수 정해야함
- bootstrap sample
: 0첫 단계에서 무작위로 중복을 허용해서 선택한 n개의 데이터를 선택하는 과정- 이를 통해 추출된 n개의 데이터 = 부트 스트랩 샘플
- 기존 트리 : 각 노드에서 전체 특성을 대상으로 최선의 질문( 텍스트 )찯기
- 각 노드에서 후보 특성을 랜덤하게 선택하고 그중에서 최선의 질문 및 테스트 선택
- Max Feature
: 모든 특성을 고려하게 되면 무작위성이 제외됨- 하나로 두면 특성을 고를 필요 없이 임계치만 찾으면됌
- 크게하면 - 각 트리들이 비슷해짐
- 작게하면 - 각 트리들이 차이점 커지고 데이터를 맞추기위해 깊이가 깊어짐
- 기존 트리와 달리 무작위로 선택 후 후보들 중 최선의 테스트 도출
- 앙상블
: 여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법
(여러개의 약분류기를 결합하여 강분류기를 만드는 것)
- 배깅
: 샘플을 여버런 뽑아서 각 모델을 학습시키고 그 결과물을 집계 - 부스팅
: 가중치를 주어 약분류기를 강분류기로 전환- 팀워크 존재
- 첫모델 예측 결과 - 결과에 따른 새로운 가중치 - 다음모델에 영향
- 배깅
- KNN (K-Nearest Neighbor) - 회기 < 분류 모델
- 가장 가까운 정보들로 추론
- 새로운 데이터가 주어졌을때, 기존 데이터 중 가장 가까운 데이터로 새로운 데이터 추론
- k 정하기 = 최근접 수 조절
- 거리정하는 방법 표준화 : 피타고라스 / 유클리드 / 맨해튼
- 결정트리
-
-
비지도 학습 : input 데이터에 정답이 없음
- 군집
- 비슷한/유사도를 가진 것 끼리 묶음
- 시각화
- 군집
-
준지도 학습 : 지도 학습 + 비지도 학습
-
강화 학습
- 에이전트 + 환경 +보상 -> 보상 극대화
- 에이전트는 '운'으로 보상 획득 -> 보상을 극대화하는 방향으로 학습
댓글을 작성해보세요.