Programming & Machine Learning
-
GAN 모델의 이해와 구현Programming & Machine Learning/풀어쓰는 머신러닝 2018. 8. 17. 00:27
2014년에 처음 선보인 이안 굿펠로우(Ian Goodfellow)의 GAN(Generative Adversarial Network) 모델은 서서히 냉각되던 딥 러닝에 대한 열기를 다시 활활 타오르게 한 발명품이다. 연구에도 유행이 있는 것을 감안한다면, 현재의 최신 유행 딥 러닝 모델은 GAN이다. GAN을 접하기 이전에는, 워낙 최신 알고리즘인데다가 이름이 주는 위압감 때문에 막연하게 어려운 알고리즘이라고 생각했었다. 하지만 실제로 접하고 보니, 오히려 CNN이나 RNN을 처음 접했을 때 보다 쉬운 느낌이 들었다. 사실 GAN의 아이디어는 어렵지 않기 때문이다. 본 포스팅에서는 GAN을 (수식을 최대한 배제하고) 쉽게 이해해보고, 이를 간단한 Keras 코드로 구현해 볼 것이다. 본 포스팅은 Neur..
-
[기초통계 정리 3] - Probability, Bayes' RuleProgramming & Machine Learning/Mathematics & Statistics 2018. 8. 14. 10:05
Probability, Likelihood의 이론적 배경을 공부했다면, 이제 Conditional Probability와 같은 확률의 중요한 개념과 함께 베이즈 이론을 공부해야 한다. 본격적으로 확률과 베이즈 이론에 대해 공부하기 전에, 순열과 조합에 대한 학창시절의 기억을 상기시켜야 한다. Probability, Likelihood에 대한 설명 - Combinations : 조합 서로 다른 N개에서 n개를 뽑는 경우의 수를 말한다. 고등학교 시간에 배웠던 그 조합이 맞다. 식은 아래와 같이 나타낼 수 있다. - Permutations : 순열 N개 중에 n개를 뽑아 나열하는 경우의 수이다. 조합에서 중복을 허용한 것과 동일하다. - Conditional Probability : 조건부 확률 Probab..
-
[기초통계 정리 2] - Probability, Likelihood, MLE와 Python 구현Programming & Machine Learning/Mathematics & Statistics 2018. 8. 5. 01:14
Deep Learning까지 가지 않더라도, 대부분의 머신 러닝의 개념에서는 확률과 우도의 개념이 빈번하게 등장한다. 그래서 기초 통계를 공부하던 도중, Probability와 Likelihood의 개념을 조금 더 자세하고 천천히 살펴보았다. 본 포스팅은 확률과 우도에 대한 기초적인 개념을 공부하고, 이를 간단한 Python 코드로 짜본 것이다. 1. Random Variable : 확률 변수 - 확률 변수의 정의 일반적으로, 변수라고 함은 특정한 하나의 숫자를 대표하는 것이다. 반면 확률 변수는 나올 수 있는 값들이 확률적 분포를 가지는 것이다. 머신 러닝에서의 확률 변수는 특정한 Vector, 혹은 숫자를 생성하는 기계에 비유할 수 있다. 확률은 0에서 1사이의 값으로 표현하지만, 확률 변수는 실수의..
-
[IntelliJ PyCharm] - Anaconda env 개발환경 세팅하기Programming & Machine Learning 2018. 8. 4. 19:31
Anaconda 혹은 virtualenv로 python 가상환경을 구축했다면, 이를 Pycharm의 개발환경과 연결해주는 작업을 해야 한다. 필자는 Pycharm처럼 제법 무거운 IDE들을 사용하면서도 path를 잡아놓거나 자동완성 기능을 잘 사용하지 않았었다(..) 가상환경을 중구난방으로 마구 생성해놓고 코딩을 하기도 했었고, notebook으로 코딩하는 것에 익숙해진 탓도 있었고, 자동완성을 사용하지 않아야 실력이 는다는 말도 안되는 믿음도 있었다. 어쨌든 Pycharm에서 가상환경의 경로를 잡는 작업은 다음과 같다. (본 포스팅은 conda로 가상환경을 설치한 사용자를 기준으로 진행한다) 1. 가상환경 경로 추출 우선 terminal을 열어 "conda env list"로 가상환경들의 경로를 추출해..
-
[기초통계 정리 1] - 통계 용어Programming & Machine Learning/Mathematics & Statistics 2018. 7. 30. 23:37
공부를 하면 할 수록 기초학문이 중요하다는 것을 깨닫고 있다. 기초 통계학의 내용 중, 명쾌하게 문장으로 요약하여 정리해두면 도움이 될 만한 것들을 글로 나타내보고자 한다. 아무리 쉬운 내용이라도 정의를 곱씹어보고 문장으로 정리하게 되면, 더 깊은 내용을 이해하는 데 도움이 될 것이다. - Inferential Statistics (추론 통계학) 추론 통계의 관점에서 통계학은, 표본을 통해서 모평균 등의 모수의 정보를 추정하는 것이다. 이를 신뢰도라는 개념을 통해서 검정하게 된다. 모집단의 정보인 평균, 분산 등을 통계학에서는 parameter 라고 한다. 예시) 출구조사로 모집단을 추론 - Random Variables (확률 변수) 관찰하기 전까지는 알 수 없는 값을 말한다.변수는 변수인데, 아직 관..
-
Softmax Classifier의 이해 & Python으로 구현하기Programming & Machine Learning/풀어쓰는 머신러닝 2018. 7. 8. 19:58
이번 포스팅은 Softmax 함수를 이용하여 다중 클래스를 분류하는 방법과 모델 학습에 대해 개인적으로 이해한 내용을 바탕으로 작성한 것이다. Softmax Regression, 혹은 Softmax Classifier를 이해하기 위해서는 Regression, Logistic Regression에 대한 이해가 선행되어 있어야 한다. 1. Softmax 알고리즘의 이해 회귀분석의 개념을 이진 분류문제로 확장한 Logistic Regression(Logistic Regression 혹은 Linear Regression에 대한 설명 참고)의 원리를 생각해보자. input에 대한 연산 결과를 0~1 사이의 확률값으로 표현하고, 이를 통해 두 가지 중에 하나로 결론을 내리는 방법이 바로 로지스틱 회귀이다. 소프트맥..
-
ROC Curve를 해석하는 방법Programming & Machine Learning/Mathematics & Statistics 2018. 6. 17. 23:42
머신 러닝에 대한 본격적인 공부를 시작한지 꽤 오랜 시간이 되어가고 있다. 하지만 그 동안 수 없이 접했던 평가에 대한 방법론은 언제나 어렴풋이 이해하는 정도였다. 특히나 ROC curve가 그랬다. 데이터 마이닝이나 통계학 전공자가 아닌 나로서는 이 방법론에 대한 수식적 이해도 전무했으며, 인터넷 어디에서도 속을 시원하게 긁어주는 설명을 찾기 힘들었다. 단지 원인과 결과만을 나열한 문서들 뿐이었다. 언젠가 해법을 찾아야지 하고 미뤄두던 도중, 우연히 제대로 설명된 글을 읽게 되었다. 물론 아직까지도 100% 이해했다고 장담할 순 없지만, 나와 비슷한 사람들을 위해 현재까지 이해한 내용을 정리하고 공유하고자 한다. 분류문제를 학습한 모델을 평가할 때 빠지지 않는 단어가 바로 Confusion Matrix..
-
Google Colaboratory를 활용하여 Keras 개발환경 구축Programming & Machine Learning/Python X 머신러닝 2018. 6. 8. 01:54
오랜만에 딥러닝 프레임워크 관련 글을 작성하는 것 같다. 근래에는 분산처리, 파이썬 개발, 추천 시스템 공부에 치중하다 보니 딥러닝을 접할 시간이 부족했었다. 하지만 이제 추천 시스템에도 딥러닝 적용을 해야 하기도 하고, 역시나 개발은 딥러닝 개발이 가장 재미있으므로, 본격적으로 딥러닝 공부를 시작하지 않을까 싶다. 우연한 기회에 Google Colaboratory(이하 Colab)와 Keras를 함께 사용하는 스터디를 했었는데, 오늘은 이에 대한 개발환경 구축 포스팅을 하고자 한다. Colab이 발표된 지 꽤 많은 시간이 지났지만, 아직까지 딥러닝 프레임워크 사용자들에게 많이 각광받는 툴은 아닌 것 같다. Colab은 Jupyter Notebook으로 협업을 진행하게 될 때의 문제점, 협업 진행자들 소..
-
Python으로 logistic regression 학습 구현하기Programming & Machine Learning/Python X 머신러닝 2018. 5. 27. 20:04
파이썬으로 basic한 머신러닝 이론들을 구현하는 Implementation 프로젝트중 일부로(github 링크), 본 포스팅에서는 간단한 python 코드를 이용하여 logistic regression을 공부해 보았다. 1. 로지스틱 회귀의 이해와 Hypothesis 로지스틱 회귀모델은 y값이 범주형 변수인 경우(binary)에도 다중선형회귀모델을 적용시키기 위해 고안된 것이다. 만약 회귀식의 결과값이 0, 1로만 도출된다면, 회귀식의 경우 이에 근사하는 직선 혹은 모델을 만들기가 어려워진다. (아래 이미지 참고 - 출처 : ratsgo's blog) 그래서 생각해낸 것은 타겟변수를 확률로 만들자는 것이다. 이 아이디어를 통해 (0, 1)을 0 ≤ Pr(Y=1│X) ≤ 1 로 나타내게 된다. 하지만 ..
-
데이터 분석가 인터뷰에 나올법한 용어 정리Programming & Machine Learning/풀어쓰는 머신러닝 2018. 5. 26. 02:57
github 자료와 메모 자료들을 정리하던 도중, CS 관련 지식들을 정리해놓은 자료들을 발견했다.아주 기초적이고 쉬운 내용들이지만, 복습 겸 블로그에 다시 정리하고자 한다. 이번 블로깅은 데이터 분석가 인터뷰에 나옴직한 용어들을 정리한 것이다. 이전에 정리했던 개발자 인터뷰에 나올만한 IT 용어 정리와 연장선상에 있는 글이다. 이전 포스팅 - 1이전 포스팅 - 2 1. 머신 러닝 VS 데이터마이닝 머신 러닝은 기존 데이터로 모델을 학습시킨 뒤 새로운 데이터를 입력했을 때, 이를 예측 및 분류해주는것. 데이터마이닝은 가지고 있는 데이터에서 특성이나 패턴을 찾아내기 위한 것이다. 더 쉽게 말하면, 머신 러닝은 기계와 프로그래밍적 관점에서의 학습이고, 데이터마이닝은 통계학적 관점에서의 접근이다. 하지만 경계..