일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 딥러닝
- C언어 공부
- c++공부
- object detection
- c++
- c언어 정리
- c언어
- tensorflow 예제
- 팀프로젝트
- 모두의 딥러닝 예제
- 파이토치 강의 정리
- 딥러닝 스터디
- 모두의 딥러닝
- 김성훈 교수님 PyTorch
- 컴퓨터 비전
- pytorch zero to all
- 딥러닝 공부
- 파이토치
- 해리스 코너 검출
- 영상처리
- MFC 프로그래밍
- Pytorch Lecture
- pytorch
- matlab 영상처리
- 케라스 정리
- 가우시안 필터링
- 파이토치 김성훈 교수님 강의 정리
- 미디언 필터링
- TensorFlow
- 골빈해커
- Today
- Total
ComputerVision Jack
머신러닝 가이드 - Chapter 2 preview 본문
1.용어 설명
입력 값(inputs) 과 입력 벡터(input vector)
입력 값은 알고리즘에 입력되는 데이터이다. 입력 벡터는 실수로 되어 있고, 연속된 번호들의 벡터로 되어 있다.
벡터의 크기는 요소들의 개수를 뜻하며, 입력 값의 차원(dimentionality)이다.
출력 값(outputs)
입력 값을 토대로 머신러닝 모델에 의해 출력되는 값이다.
머신러닝 알고리즘은 입력값의 집합을 통해 출력 값을 반환하는 과정을 반복한다.
- 입력(Inputs) : 입력 벡터는 알고리즘에 입력으로 주어진 데이터를 나타낸다.
- 가중치(weight) : 노드 i와 j를 연결하는 가중치는 Wij로 표현하며, 뉴럴 네트워크에서는 뇌의 시넵스를 표현한다.
- 출력(Outputs) : 출력 벡터 y는 j값이 1에서 벡터의 차원인 n까지의 값을 갖는 yj값을 갖는다. y(x, W)로 표현
- 목표 값(Targets) : 목표 값들을 벡터 t로 표현하며, 각 요소 Tj는 j가 1에서 전체 차원의 크기 n지를 갖는다.
- 활성화 함수(Activation Function) : 뉴런이 가중된 입력 값에 대해 활성화 되는 것을 결정한다.
- 오류(Error) : 오류를 통해서 알고리즘의 출력 값(y)과 실제 목표 값(t) 간의 거리를 계산한다.
가중치 공간
데이터로 작업을 할 때, 그래프로 나타내고 살펴보는 것이 매우 효과적이다.
데이터가 n개의 차원을 가지고 있다고 해도 각각의 차원이 상호 직교(multually orthogonal)하는 n개의 축으로 표현
그래프로 바라볼 경우 문제는 차원의 눈속임이다.
3차원에 존재하는 데이터를 2차원으로 바라볼 경우 데이터 간의 거리를 판별하기에 어렵다.
새로운 축에 대해 그 값이 가려지기 때문이다.
뉴럴 네트워크 경우 가중치 값들이 뉴런 입력 값과 연결되는 값이기 때문에 이를 시각화 하는 것은 유용하다.
뉴런의 위치를 가중치 값으로 같은 공간에 표현함으로써 뉴런들과 입력 값이 얼마나 근사한지 판별할 수 있다.
입력 값과 뉴런들의 거리는 유클리드 거리(Euclidean distance)를 통해서 구할 수 있다.
뉴런들과 입력값의 거리를 사용하여 뉴런의 활성화를 조절할 수 있다.
차원의 저주
차원의 저주는 차원의 수가 늘어도 초구(hypersphere) 구성 단위의 용적은 늘지 않는 다는 것이다.
즉, 차원의 저주로 입력 차원이 점점 커지면, 머신러닝 알고리즘을 일반화시키기에 더 많은 데이터가 필요하는 것
2.머신러닝 알고리즘 평가하기
머신러닝 목표
회귀 분석 모델 또는 클래스 분류 모델이 되던 그 예측 값을 정확하게 출력하는 것
알고리즘을 일반화 시키려면 기존 train 데이터가 아닌 새로운 데이터에 잘 동작해야한다.
따라서 기존 데이터를 준비할 때, 부가적으로 테스트 데이터를 분류 해 놓는다.
오버피팅
알고리즘 트레이닝 때, 일반화 정도를 계속 확인해야한다.
오버 트레이닝(over-training)은 언더 트레이닝(under-trainin)만큼 위험하다.
training을 오랫동안 하면 데이터에 오버핏(overfit)하게 되며, 데이터의 오류와 부정확성을 학습한다.
따라서 오버피팅을 검사하기 위한 벨리데이션 세트(validation set) 데이터를 따로 둔다.
머신 러닝 데이터 셋 준비
- training set : 학습에 필요한 데이터 셋
- validation set : 오버피팅을 검사할 목적의 데이터 셋
- test set : 학습 결과를 확인할 데이터 셋
하지만 이러한 데이터가 추가될 수록 입력 값에 대응 하는 라벨값에 대해 신경을 써야한다.
반 지도학습(semi-supervised learning) 영역은 많은 양의 라벨 데이터에 대한 요구를 해결하기위해 노력한다.
보통 충분한 데이터가 존재하면 50 : 25 : 25 또는 60 : 20 : 20으로 학습을 시킨다.
데이터 부족 현상
데이터에 대해 training, validation, test로 데이터를 나누면 데이터 부족 현상이 발생할 수 있다.
- 멀티 폴드 크로스 벨리데이션(multi-fold cross-validation) : k-폴드 교차 검증과 같은 방식을 취한다.
- 리브섬 아웃(leave-some-out) : validation set 없이 학습시키는 방법
혼돈 행렬(Confusion matrix)
분류 문제의 결과를 평가하는 하나의 방법
클래스 개수가 적을 때 결과를 한눈에 볼 수 있다.
대각선에 있는 요소들의 합을 전체 행렬 요소들의 합으로 나누면 되는데 정확도(Accuracy)가 된다.
정확도와 지표
정확도를 측정하는 것은 결과에 대해서 더 많은 분석을 수행할 수 있다.
위 개념은 2진 분류(Binary classification)을 위한 개념이다.
정확도는 참 긍정과 부정들의 합을 전체 개수로 나누 값이 된다.
분류기 성능 해석 방법
- 민감도 = 참 긍정 / 참 긍정 + 거짓 부정
- 특이도 = 참 긍정 / 참 부정 + 거짓 긍정
- 정밀도 = 참 긍정 / 참 긍정 + 거짓 긍정
- 재현율 = 참 긍정 / 참 긍정 + 거짓 부정
수신자 조작 특성 곡선(ROC : Receiver Operator Characteristic curve)
참 긍정 비율을 y축에 표현하고 거짓 긍정을 x축에 표현한다.
왼쪽 위에 가까울수록 더 좋은 결과를 보이는 분류기가 된다.
파라미터를 평가하기위해 선에서 가장 멀리있는 점을 계산하지만, 곡선 아래의 영역(AUC, Area Under the Curve)을
계산하는 것이 일반적인 방법이다.
불균형 데이터 세트
앞의 예제는 정확도를 위해 내재적으로 같은 수의 긍정과 부정에 속하는 예제들이 데이터 세트에 존재한다고 가정한다.
하지만 대다수의 데이터 세트는 위 양상을 벗어난다.
따라서 이러한 경우 메튜 상관 계수(Matthew's Correlation Coeffcient)로 접근한다.
정밀도 측정
- 정밀도 : 알고리즘의 가변성 측정, 확률 분포의 변화량 - 데이터의 조밀한 정도
- 진실도 : 알고리즘의 예측 값이 실제 값과 얼마나 비슷한지 나타내는 정도, 정답과 예측값의 평균 거리
3.데이터를 확률로 변경
- 조건부 확률(conditional probability)
- 결합 확률(joint probability)
트레이닝 데이터를 통하여 결합 확률과 조건부 확률을 떠올릴 수 있다.
두 확률은 베이즈 규칙(Bayes' rule)을 통해서 끌어낼 수 있다.
베이즈 규칙은 사후 확률(posterior probability)를 사전 확률(prior probability)와 클래스 조건 확률(class-conditional probability)를 사용해서 표현한다. 분모는 정규화(normalization)를 수행하고 이를 통해 확률의 합을 1로 만든다.
모든 클래스의 마지막 결과들을 모두 고려해서 사용하는 방법이 베이즈 최적 분류(Bayes' Optimal Classification)이다.
사후 확률을 최대화 시키기 보단 잘못 분류된 확률들을 최소화 시키는 방법이다.
위험 최소화
오분류에 포함된 위험(Risk)를 고려해 본다면 내재된 위험을 포함한 손실 행렬(loss matrix)를 만들 수 있다.
손실 행렬은 혼동 행렬과 비슷하지만 대각선 값이 0이라는 점이다.
나이브 베이즈 분류기
나이브 베이즈 분류기의 분류 기준은 주어진 계산의 값이 최대가 되는 클래스를 선택하는 것이다.
따라서 독립성(conditionally)을 통해 간결하게 피처들을 만들고, 피처들이 서로 조건부 독립적이고,
나이브 베이즈 분류기는 정확한 MAP 분류를 수행한다.
이러한 나이브 베이즈 분류기의 문제점은 많은 확률을 곱하기 때문에 값이 매우 작아진다는 점이다.
4.기본적인 통계학
평균(Average)
- 수학적 평균 : 값을 모두 더해서 전체 데이터 개수로 나누기
- 위치적 평균 : 중간 값(median)
- 빈도수 평균 : 최빈 값(mode)
분산과 공분산
기대값(expectation)
기대 값은 실제 수치가 아니다. 숫자들의 집합에 대해서 기댓값을 계산한다면 평균 값을 구한다.
분산
값의 흩어진 정도를 표현하며, 편차들의 제곱에 합의 평균으로 구할 수 있다.
표준 편차(standard deviation)
분산의 제곱이며, 분산은 평균 값과 변수의 변화를 보여준다.
공분산(covariance)
두 변수의 차이를 일반화 하는 지표, 두 변수 값이 서로 독립이라면 공분산 값은 0이된다.
데이터에서 모든 쌍의 변수의 연관성(correlation)을 알아보는 데 공분산을 사용할 수 있다.
이를 위해서 각 쌍의 공분산을 계산해야 하며, 공분산 행렬(covariance matrix)을 사용한다.
마할라노비스 거리(Mahalanobis distance)
데이터 조절에 따른 평균(군집)과의 거리
공분산 행렬이 단위 행렬이 되면 마할노비스 거리는 유클리드 거리가 된다.
np.cov(x)
#데이터의 공분산 행렬 측정 함수 x = 데이터 행렬
np.linalg.inv(x)
#역함수 구하는 행렬
가우시안
확률 분포에는 크게 두가지가 존재한다.
- 가우시안 분포
- 정규 분포
5.바이어스 분산 트레이드 오프
분산 트레이드 오프
복잡한 모델이 꼭 더 좋은 결과를 보여주지 않는다는 개념
모델이 나빠질 경우
- 정확하지 않지만 데이터를 꽤 잘 설명해 주는 경우 (바이어스Bias - 정답과의 거리)
- 정확도는 높지만 결과 값의 변화량이 큰 경우 (분산variance - 퍼진 정도)
제곱합 오차 함수(sum-of-squares error fuction)
목표 값과 예측 값의 오차를 계산하는 방법. 두 차이를 제곱한다.
제곱하는 이유는 음수를 피하기 위함
바이어스와 분산으로 분리 가능하다.
'DeepLearning > 머신러닝 - Algorithm' 카테고리의 다른 글
머신러닝 가이드 - Chapter 6 차원 축소 (0) | 2020.03.13 |
---|---|
머신 러닝 가이드 - Chapter 5 방사기저함수와 스플라인 (0) | 2020.03.10 |
머신러닝 가이드 - Chapter4 MLP (0) | 2020.03.06 |
머신러닝 가이드 - Chapter 3 Neural Network (0) | 2020.03.03 |
머신러닝 가이드 - Chapter 1 Intro (0) | 2020.02.25 |