1. 한글 폰트를 다운받고 압축을 푼다.
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%82%98%EB%88%94%ED%8F%B0%ED%8A%B8_%EC%84%A4%EC%B9%98


2. 해당 경로로 matplotlib font를 설정해준다.
https://financedata.github.io/posts/matplotlib-hangul-for-osx.html



import matplotlib.font_manager as fm

font_list = font_manager.findSystemFonts(fontpaths='/nfs/user/DonghyunKwak_NFS/DonghyunKwak/NanumFont', fontext='ttf')

print(font_list)

fontprop = fm.FontProperties(fname=font_list[3], size=10)


plt.plot(label_data[:, start_idx+i])

plt.title(tmp.columns.values[-start_idx + i], fontproperties=fontprop)



by 곽동현 이스텔리앙 2018.11.27 18:00

# PID Controller: 산업적으로 매우 넓게 사용되는 제어 시스템. 수학적이기보단 실용적인 목적으로 만들어져서 사용되는 공학의 영역이다.

https://en.wikipedia.org/wiki/PID_controller#Proportional_term



P, I, D 세가지 요소로 우리가 원하는 target value를 만들어내기 위해 최적의 제어 routine을 만들려는 것이다.

예를 들어 에어컨을 틀어서 실내온도를 30도에서 20도로 만들려면 어떻게 해야할까? 너무 과하게 가동하면 자칫 온도가 18도까지 내려갈수도 있고, 너무 살살틀면 20도까지 가려면 한도끝도 없이 기다려야할 것이다.

그래서 매우 빠르고 정확하게 20도를 만들어내기 위한 제어가 필요한데, 그럴 때 사용되는 것이 바로 PID 제어이다.


P: Proportional, 이는 현재온도와 원하는 target 온도와의 차이인 에러가 현재 얼마나 되는가를 알려주는 변수를 의미한다. P만으로는 error가 0이되게 만들 수 없어 I와 D가 필요하다.

I: Integral, 이는 현재온도와 target 온도의 차이인 에러의 과거 속도들을 시간에대해 적분한 변수이다. P만으로는 error가 0이될 수 없는 상황에서, 시간에 따라 누적되는 error를 통해 점점 더 큰 signal을 만들어내어 궁극적으로 error 0이 될수 있게 한다. I만 가지고 제어를하면, 반드시 error를 0으로 만들 수 있지만, 에러가 누적될 때 까지 오랜 시간이 걸리고, 에러가 0으로 가는 과정에서 Overshoot이 반드시 발생하게 된다.

D: Derivative, 이는 현재온도와 target 온도의 차이인 에러가 미래에 어떻게 될 것인지 에러 변화 속도를 미분으로 구하여 알려주는 변수이다.  D만으로는 에러를 0으로 만들 수 없고, I에 의해 Overshoot이 되는 현상을 완화하고 방지하는 역할을 한다.


이 세가지 변수들을 덧셈으로 연결하여 다음과 같은 수식이 만들어지는데, 이것이 바로 PID제어의 형태이다.


Kp: Proportional term에 대한 계수

Ki: Integral term에 대한 계수

Kd: Derivative term에 대한 계수


위 세가지 계수를 사람이 적절히 튜닝하여 가장 이상적으로 원해지는 제어식을 완성한다. 만약 이중에서 Kd값이 0이라면, 이는 PI제어가 되고, Ki가 0이라면, PD 제어가 되는 식이다.


제대로 된 제어를 하기 위해선 위 세가지 텀들이 모두 필요한데, 자세한 예시는 아래를 참조하기 바란다.

https://en.wikipedia.org/wiki/PID_controller#Control_loop_example



'연구' 카테고리의 다른 글

PID 제어  (0) 2018.11.13
Github Markdown 사용법  (0) 2017.08.21
Tex, LaTeX, Lyx  (0) 2015.08.10
논문 작성시 저작권의 공정 이용  (0) 2015.08.10
What is Artificial Intelligence and What is Machine Learning?  (0) 2015.03.11
by 곽동현 이스텔리앙 2018.11.13 13:13

# 앙상블


- Soft voting: 각 Softmax확률의 평균을 낸다음 argmax

- Hard voting: 각 softmax에서 argmax한 다음 아래와 같은 방법으로 voting

* Unanimous voting: 만장일치일 때만 decision함

* Majority voting: 다수결로 선택된 decision이 전체의 50%를 넘어야됨.

* Plurality voting: 각각의 softmax에대해 argmax한다음 가장 다수의 의견을 따름.(50%를 넘지 않아도 됨)

- Weighted voting: Soft 혹은 Hard voting에서 각 softmax에 임의의 weight를 주어서 사용.(확률에 대해선 weighted sum, Hard에 대해서는 2표를 행사할 수 있음)

- Staking: 각각의 모델이 내놓은 decision을 추가적인 feature로 사용하는, 또다른 classifier를 training set에 대해 학습시킴.



- 내가 제안하는 방법: Confident opinion + majority voting
softmax들 중, confidence가 높은 의견들을 모아서 majority voting을 수행. 만약 confidence가 여러가지 기준을 갖고 있다면, 각 criterion 별로 중복해서 softmax를 뽑고, 이 의견들을 모아서 다수의견이 일정 threshold 이상 차지해야 의견 채택. 아니면 모름



- 참고문헌

1. http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html#sklearn.ensemble.VotingClassifier

2. https://en.wikipedia.org/wiki/Ensemble_learning

3. http://scikit-learn.org/stable/modules/ensemble.html



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