Decision tree가 가진 설명력의 한계

Decision tree는 흔히 설명력이 좋다고 한다. 트리를 보면 어떻게 분류가 되는지 볼 수 있기에 그렇다.

하지만 실제로 모델을 적용하는데는 한계가 발생하는 경우가 있다. 예를들어 X[i]=0 이라면 logistic regression의 경우 Coef[i] * X[i] = 0 이 되어 X[i]가 예측에 영향을 주지 않는다.

하지만 Decision tree는 X[i]=0 인 경우에 어떤 결론을 내릴 수 있다.

예를들어 영어 문장내 단어를 보고 영어 문장이 중학생 수준인지 고등학생 수준인지 결정하는 모델을 만든다고 하자. 만약 해당 문장에 boy가 없고, Decision tree가 운없게도 boy의 중요도를 높이 평가해 boy가 없을 경우 고등학생이란 예측 결과를 내놓는다면, 우리가 할 수 있는 설명이란 “이 문장에는 boy가 없어 고등학생 수준의 문장입니다”는 정도뿐이다. 하지만 사람은 그런식으로 영어 문장의 난이도를 판단하지 않는다.

이를 방지하기 위해 문장에 포함된 단어만 사용해 설명을 출력한다고 해도, Decision tree에서 boy의 중요도가 높다면 이 역시 불완전한 설명에 불과하다.

이 문제를 나는 eli5의 explain_prediction 의 출력 결과를 보고 고민하다 깨닫게 되었다. 이상하게도 주어진 X에 없는 피쳐의 contribution이 높게 평가되고 있었고, 정작 X에 있는 feature가 가진 contribution의 합은 class prob과 달랐던 것이다.

Similar Posts:

Interpreting Random forest

http://blog.datadive.net/interpreting-random-forests/

This is how eli5 explains a tree.

Similar Posts:

ZCA Whitening

Stack exchange 글인데 정말 훌륭한 설명입니다. 이렇게 핵심만 전달하는 능력이 있다니..

What is the difference between ZCA whitening and PCA whitening?

같은 사람의 PCA를 사용한 whitening 방법에 대한 글도 훌륭하네요.

Similar Posts:

Learning to execute

Learning to execute. 계산을 RNN으로 해보자. https://arxiv.org/abs/1410.4615

덧셈 문자열 구현을 RNN으로 만든 Keras 구현 예시. 이 구현에서는 입력을 뒤짚는 부분도 흥미로움. 예를들어 12+34는 43+21로 만드는데, 실제 덧셈은 일의 자리 다음 십의 자리를 계산한다는 것을 생각하면 충분히 이해가 됨. 실행해보면 성능도 매우 우수함.

Similar Posts:

Curriculum Learning

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.149.4701

Humans and animals learn much better when the examples are not randomly presented but organized in a meaningful order which illustrates gradually more concepts, and gradually more complex ones. Here, we formalize such training strategies in the context of machine learning, and call them “curriculum learning”

significant improvements in generalization can be achieved.

Similar Posts:

Scheduled Sampling

RNN에서 훈련시 실제 시퀀스 대신 모델이 예측하는 값을 입력으로 준다. 예측이 잘못된 뒤 완전히 엉뚱한 시퀀스를 답으로 내놓는 문제를 해결. 또한 실제 예측시와 동일하게 훈련을 시킨다는데 의미가 있음.

We propose a curriculum learning strategy to gently change the training process from a fully guided scheme using the true previous token, towards a less guided scheme which mostly uses the generated token instead.

Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks

Similar Posts:

Skew 된 데이터에서의 기하 평균

​랜덤 변수 X가 로그 노말을 따르면 X의 기하평균이 중앙값과 같다. 또한 기하 평균은 산술 평균보다 같거나 작다. 따라서 outlier가 있는 데이터에서 기하 평균이 유용하게 쓰인다.

예를들어 웹 사이트 로딩 시간의 latency 를 로그 노말로 본다면 latency의 기하 평균을 구할 경우 그 값은 중앙값이 된다.중앙값은 outlier의 영향을 덜 받으므로 보다 더 대표적인 latency를 구할 수 있는 장점이 있다.

Similar Posts:

Changing numpy array column or shape

Changing the order of columns. This is useful when you want to reorder image data, e.g., rgb -> bgr.

In [14]: x = np.arange(10)

In [15]: x
Out[15]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [16]: np.resize(x, (5, 2))
Out[16]: 
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

In [17]: np.resize(x, (5, 2))[:, ::-1]
Out[17]: 
array([[1, 0],
       [3, 2],
       [5, 4],
       [7, 6],
       [9, 8]])

Changing the order of axis. For image, this is useful if you want to change the channel axis to the arbitrary position. As an example, matplotlib.pyplt.plot() accepts images in the form of (x, y, channel). Your data might be in the form of (channel, x, y).

# 256x256 image. Channel (or rgb) is at the front.
In [26]: x = np.ones((3, 256, 256))

In [27]: x.shape
Out[27]: (3, 256, 256)

# Move the channel axis to the last.
In [29]: np.rollaxis(x, 0, 3).shape
Out[29]: (256, 256, 3)

np.transpose can be used to change the order of axis.

In [25]: x = np.ones((1, 2, 3))
In [26]: x.shape
Out[26]: (1, 2, 3)
In [28]: x.transpose((2, 0, 1)).shape
Out[28]: (3, 1, 2)

Similar Posts:

왜 딥 러닝이 잘 동작하는가

관련된 글을 모아가면서 포스트를 계속 업데이트 하려 합니다.

  1. 우주의 원리가 딥러닝이 배우기에 적절하기 때문
  2. K layer로 단순하게 표현가능한 함수를 2층으로 구현하면 크기가 지수적으로 커진다.
  3. IoT, 모바일 등으로 인해 증가하는 데이터를 활용할 수 있는 모형이다

Similar Posts:

Pseudo label – Semi supervised learning 방법

Training의 막바지에 도달하면 레이블이 없는 데이터로 예측을 수행한 뒤 예측된 레이블이 진짜 레이블인 것처럼해서 모델을 튜닝한다.
http://deeplearning.net/wp-content/uploads/2013/03/pseudo_label_final.pdf
Why pseudo labels? – Kaggle Forum

Self Training 과는 구분.

Similar Posts: