# 결정계수 = Coefficient of Determination = R^2 = R squared
- Regression model의 성능을 mean value로 예측하는 모델과 상대적으로 비교하여 측정하기 위한 척도.
(RMSE나 MAE는 데이터의 scale에 따라서 값이 천차만별이기 때문에, 값만 보고 바로 판단하기가 어려움.)

( 일반적으로 0<= R^2 <= 1 , 0이면 0점, 1이면 100점)

이때 그냥 mean value를 예측하는 regression model을 쓴다면, 우측항이 1이 되므로 R^2 = 0이 된다.

또한 R square값이 1이면, "오차^2 = 0인 상황이므로" training error가 0인 것을 의미한다.

만약 R^2가 0보다 작은 음수를 내는 경우는,  편차^2보다 오차^2이 더 큰 상황이다. 즉, 이는 regression model이 그냥 mean value로 예측하는 모델보다 예측성능이 더 낮은 경우를 의미한다.


* 즉 R^2는 mean value로 예측하는 Zero-R 모델에 비해, regression model의 성능이 얼마나 더 좋은가를 나타내는 것이다.
(이때 오차는 training data에 대해서 계산할 수도 있고, validation data에 대해서도 계산할 수 있는 듯)

* 이 R^2의 단점은 데이터가 매우 단순하여 평균을 예측하는 것만으로도 오차가 충분히 작을 때 부정확한 측정을 할 수 있다는 점일 것이다. 이 경우 편차의 합이 매우 작아지고, 오차도 동시에 매우 작아지게 된다. 그러면 경우에 따라서 우측항이 아주 큰 값을 낼 수 있어 R^2가 0 또는 0 이하가 될 수 있다.
(그러나 보통 이런 데이터에는 예측모델을 만들지 않으므로, 일반적으로는 문제가 없어보인다.)



- 이 R^2값을 계산하는 또다른 정의는 다음과 같다.


이 경우 R^2의 값은 (예측값에 대한 분산/실제값에 대한 분산)이라고 볼 수 있다.

그런데 보다 직관적인 이해는 처음 위에서 정의한 개념이 보다 잘 되는 것 같다.


https://en.wikipedia.org/wiki/Coefficient_of_determination

by 곽동현 이스텔리앙 2017.05.22 14:29

Superpixel

이미지 segmentation에서 사용되는 방법으로, 기계학습관점에서 직관적으로 설명하면 한마디로 RGB색상에 대해 K-means 클러스터링을 하는 것이라 말할 수 있다. 예를 들어 포토샾에서 영역선택 툴을 사용하는 것과 동일한 메커니즘으로, SLIC라는 방법에서는 K-means의 변형을 사용한다. 물론 이외에도 graph-based 기반의 superpixel 알고리즘도 존재한다. 각 superpixel 클러스터의 크기는 평균적으로 비슷하지만, 다를 수 있다.

https://infoscience.epfl.ch/record/177415/files/Superpixel_PAMI2011-2.pdf



Lab Color space

Lab Color space는 XYZ 색 공간보다 균일한 색 체계를 목표로 하였다. 여기서 균일한 색 체계란 색 공간에서 같은 거리만큼 떨어진 색채가, 인간의 눈에 같은 크기만큼의 색 차이로 인지되는 것을 목표로 했다는 의미이다.

즉 사람이 느끼는 두가지 색상 간의 거리가 euclidean distance가 되도록 만들기 위한 변환이다.

https://ko.wikipedia.org/wiki/Lab_%EC%83%89_%EA%B3%B5%EA%B0%84

# RGB -> sRGB로 변환하여 device에 독립적으로 만듦 -> 비선형 변환을 통해 Lab space로 변환
(다시 역방향으로 Lab에서 RGB로도 변환시킬 수 있음)

https://en.wikipedia.org/wiki/Lab_color_space



여러가지 Feature Engineering(SIFT, HOG 등등)


http://darkpgmr.tistory.com/116

by 곽동현 이스텔리앙 2017.03.15 21:41

- 랜덤포리스트는 feature space를 랜덤하게 쪼갠다음, 쪼개진 sub feature space를 다시 디시전 트리를 이용해 격자 형태로 분류한다. 학습이 끝나면, 학습된 디시전 트리를 앙상블하여 최종 inference에 사용한다.

즉 추론할 때에는 데이터를 모든 디시전 트리에 집어넣고 클래시피케이션을 한다음, 각각의 분류 결과를 majority voting 하는 방식으로 최종 클래시피케이션.


랜덤포리스트는 앙상블기반의 분류기로, 여러 피처(ex) MFCC 피쳐 409개)중에서

랜덤하게 몇개를 추출하여 디시전 트리로 학습한다. 학습은 이런 과정을 N번 반복한 뒤 추론할 때에는 디시전트리를 앙상블해서 한다.

이러한 이유로 오버피팅이 적다.


Gradient Boosting Tree
Gradient Boosting은 컴퓨터공학의 알고리즘에서 greedy 전략을 decision tree에 적용한 것이라고 볼 수 있다. (divide&conquer전략을 적용한 decision tree로는 random forest가 있을 것이다.)

Good materials : 이 자료를 5분만 읽으면 완벽하게 이해할 수 있다.
http://www.ccs.neu.edu/home/vip/teach/MLcourse/4_boosting/slides/gradient_boosting.pdf

간단히 요약하자면, Boosting은 기존 모델이 잘 못맞춘 데이터를 간단한 additional model을 이용해서 보완하여 모델의 표현력을 높이는 방법이다. 기존 모델이 잘 못맞춘 데이터에 대한 정보를 전달하는 방법이 weight에 기반하면 Adaboost가 되고, error를 미분한 gradient에 기반하면 gradient boost가 된다.

Gradient Boosting MLP를 이해하면 GBTree는 바로 이해할 수 있다. GBMLP의 경우 먼저 1개의 히든 뉴런만 있는 3층짜리 MLP로 데이터를 학습한다. 그다음 error가 더이상 줄어들지 않으면, 새로운 노드를 하나 추가하고 그 새로 추가된 노드의 weight만을 같은 데이터로 다시 학습한다. 이러한 과정은 결국 Logistic regression을 additional model로 사용하여 표현력을 점진적으로 증가시키는 과정에 해당한다.

그런데 만약에 이걸 Logistic regression이 아니라, Decision tree를 사용하게 되면 Gradient boosting tree가 되는 것이다.

XGBoost tree의 경우 이 과정을 가속화시켜 GPU등을 이용해 5배 더 빨리 학습하는 알고리즘이다.

Boosted Decision Tree의 경우 Loss가 미분이 불가능한 형태에서 Boosting을 하는 것으로, gradient descent가 아닌 다른 방법을 이용해서 학습을 시킨다.


Feature Importance
Tree계열의 알고리즘에서는 각 attribute가 얼마나 유용한지를 판단할 수 있는 Feature Importance를 계산할 수 있다. Feature importance를 계산하는 과정은 다음과 같다.

우선 하나의 decision tree에서 각각의 attribute로 이루어진 split point에 의해서 얼마나 트리의 성능이 올라가는지를 계산한다. 그리고 이때 얼마나 많은 데이터 instance가 그 split point(node)에 의해서 영향을 받는지 그 숫자만큼 가중치를 두어 성능 향상치를 계산하게 된다.

이때 성능 증가의 측정은 다양한 metric이 사용될 수 있다. 그리고나서 앙상블 모델의 경우(RandomForest 등) 이렇게 1개의 tree에서 계산된 feature importance를 모든 decision tree에 대해서 구하고 평균을 내어 최종적으로 계산을 하게된다.

보통 이 성능 측정은 Gini impurity(=Gini index) or Information Gain 둘중 한가지를 사용한다.

http://machinelearningmastery.com/feature-importance-and-feature-selection-with-xgboost-in-python/


Gini Impurity

개념적으로는 거의 Entropy와 동일한 것 같다. 다만 정보량의 평균을 이용해서 불확실성을 구한 것이 아니라, log를 씌우지 않은 확률값(p와 1-p를 이용) 그 자체를 이용하여 구했다고 보면 된다. 그래서 마찬가지로 가장 불확실성이 클 때 0.5가 되고, 가장 예측가능성이 클 때 0이 된다.

http://funnypr.tistory.com/entry/Random-forestGini-impurity

by 곽동현 이스텔리앙 2017.02.13 19:35