Programming & Machine Learning/Python X 머신러닝
-
MNIST로 알아보는 비지도 학습 - [클러스터링과 차원 축소의 적용]Programming & Machine Learning/Python X 머신러닝 2019. 8. 6. 14:01
최근 클러스터링을 사용할 작업이 여기저기 많았다. 그래서 생각난김에 맨땅에 헤딩했던 관련 내용을 정리하고자 한다. 클러스터링 문제를 풀 때 마주치는 보통의 애로사항은 다음과 같다. 첫 번째, real-world 에서의 데이터 대부분은 극단적으로 skewed 하다는 것이다. 이는 모델이 군집을 잘 구분해내는 피처를 사용할 수 없다는 것을 의미한다. 이처럼 skewed한 분포의 데이터에서 군집을 발라내봤자, 기형적인 군집이 형성될 것이 뻔하기 때문이다. 만약 유클리드 거리로 데이터 포인트간의 거리를 계산하기라도 한다면, 사실상 군집 분석의 의미가 없어진다. 두 번째, 모델의 분류가 잘 되었는지를 평가할 방법이 불분명하다. 군집 분석을 하는 상황은 대부분 비지도 학습을 해야 하는 상황이다. 이 경우, 모델의 ..
-
Python으로 Custom Sparse Matrix 생성하기Programming & Machine Learning/Python X 머신러닝 2018. 12. 8. 17:28
파이썬은 sparse-matrix를 만들기 위한 훌륭한 라이브러리들을 가지고 있다. one-hot encoding 역시 코드 1~2줄이면 간단하게 사용이 가능하다. 하지만 추천 시스템과 같이 대용량의 sparse-matrix를 처리하거나, Factorization Machine 같은 알고리즘을 사용하는 경우, scikit-learn이나 pandas가 제공하는 dummy encoder 만으로는 부족한 경우가 많다. 모델의 Input 타입이 idx:value 와 같은 text file로 구성되어 있는 경우에 해당한다. 추천 시스템의 경우는 대부분 extreme-sparse matrix를 생성하기 때문에, 학습의 batch시에 hashing으로 idx:value를 지정해 주는 것이 일반적이다. 이렇게 구조를 ..
-
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/Python X 머신러닝 2018. 5. 23. 00:47
github 자료와 메모 자료들을 정리하던 도중, CS 관련 지식들을 정리해놓은 자료들을 발견했다.아주 기초적이고 쉬운 내용들이지만, 복습 겸 블로그에 다시 정리하고자 한다. 이 중 파이썬 언어와 관련된 참고사항들을 정리할 것이다. 1. 파이썬의 네이밍 원칙 어느 언어들이 그렇듯이, 파이썬 역시 네이밍 원칙 즉 code convention이 존재한다. 간략한 내용은 다음과 같다. - 하나의 알파벳으로 변수의 이름을 지어서는 안된다. - 모듈 : 모듈 이름은 짧아야 하고, 소문자여야만 한다. 문장이 길어지는 경우 가독성을 위한 언더스코어 사용은 허용된다. - 패키지 : 무조건 소문자여야 한다. - 클래스 이름 : CapWords 형식을 따른다. 첫글자는 대문자로 한다. - exception : 클래스와 동..
-
Python으로 regression 학습 구현하기Programming & Machine Learning/Python X 머신러닝 2018. 5. 6. 20:12
Machine Learning에서 가장 중요한 것 중 cost function과 theta update이 있다. 일례로, Deep learning으로 RMSE를 낮추는 prediction 모델링을 한다고 할 때 더 고급 알고리즘을 사용하거나, Batch normalization 기법을 적용하는 것 보다 learning rate나 threshold, batch size를 수정해보는 것이 훨씬 좋은 결과를 얻는 경우가 많다. 사실 해보지 않으면 잘 모른다. 해봐도 모르는 경우가 많다. 그래서 이 내용들을 제대로 이해하려면 한 번쯤 직접 구현해보는 것이 좋다고 생각했고, 파이썬으로 basic한 머신러닝 이론들을 구현하는 Implementation 프로젝트를 시작했다(github 링크). 본 포스팅에서는 간단한..
-
파이썬 기초 문법 - 5 (format, map, isinstance 함수)Programming & Machine Learning/Python X 머신러닝 2018. 4. 4. 20:06
1. format 함수 format 함수는 str 타입과 관련된 함수이다. Cython을 기준으로 한 문법이며, c언어로 문자열을 출력할 때 printf 에 %를 붙이는 것과 유사한 출력 포맷이다. 원래는 파이썬으로 출력문을 작성할때 c언어와 매우 유사한 구조였지만, format 함수로 인해 이런 방식으로 코딩을 많이 하는 편이다. ##### format 함수 inputpath = '/hello/world' # :0>2 는 2자리보다 커지지 않게 숫자 앞을 0으로 채우는것 inputFormat = '{0}/{1}/{2:0>2}/{3:0>2}/time-{4:0>2}.*' print(inputFormat.format(inputpath, 2018, 2, 4, 12.1231131)) print(inputForm..
-
BeautifulSoup4를 이용한 파이썬 크롤링Programming & Machine Learning/Python X 머신러닝 2018. 3. 26. 00:53
데이터 분석에 활용할만한 충분한 데이터를 가지고 있지 않은 경우, 우리가 할 수 있는 가장 만만한 방법은 웹 데이터를 이용하는 것이다. 많은 경우, ResufulAPI 서버에서 자원을 얻어서 활용하기도 하지만, 사실 그건 데이터를 이미 가지고 있는 것과 마찬가지다. 그래서 크롤링을 활용해서 실제 데이터 분석에 활용하는 경우가 점점 많아지고 있다. 1. 웹에 대한 이해 크롤링을 시작하려면 먼저 웹의 기본 원리에 대한 이해가 필요하다. 웹이란 기본적으로 인터넷의 하위 개념이다. 인터넷으로 불리는 공간에서의 통신 방법은 규약이 필요하다. 서로 이해할 수 있는 언어로 이루어져 있어야 하고, 물리적인 연결 및 전송도 필요하다. 그러한 통신 규약 중 하나가 HTTP라는 것이다. 우리가 '웹' 이라고 부르는 것은 일..
-
Python - 한글 형태소로 워드클라우드 시각화Programming & Machine Learning/Python X 머신러닝 2017. 8. 22. 00:09
워드클라우드는 자연어 분석과정에서 흔히 사용하는 기초적이며 간단한 시각화 방법이다. 패키지를 사용한다면 구현이 매우 간단함과 동시에, tf-idf나 word2vec처럼 사람이 직관적으로 관찰하기 힘든 알고리즘을 주로 사용하는 자연어 분석 영역에서 매우 유용한 시각화 툴이기 때문이다. python에서도 여러 워드클라우드 모듈을 제공하지만, KoNLP에서는 pytagcloud를 이용한 시각화 튜토리얼을 제안한다.http://konlpy.org/ko/v0.4.3/examples/wordcloud/ 위 링크에 나와있는 튜토리얼을 기반으로, input text data를 형태소 기반으로 처리하며,동시에 불용어까지 제거하여 tokenize 해주는 코드를 추가하여 사용해보았다. import random import ..
-
SVM의 개념 및 Python에서의 사용Programming & Machine Learning/Python X 머신러닝 2017. 8. 10. 03:26
SVM (Support Vector Machine)1. SVM의 원리SVM은 퍼셉트론을 확장한 개념으로, 데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 알고리즘이다. SVM은 선형 분류와 더불어 비선형 분류에서도 사용될 수 있다. SVM에서 비선형 분류를 하기 위해서 주어진 데이터를 고차원 특징 공간으로 사상하는 작업이 필요한데, 이를 효율적으로 하기 위해 커널 트릭을 사용하기도 한다. 만약 훈련 데이터가 비선형 데이터라면, 이를 비선형 매핑(Mapping)을 통하여 고차원으로 변환시킨 뒤, 새로운 차원에서의 최적의 결정 경계면을 찾는다. 이것이 커널 트릭을 사용한 것이다. SVM을 나타낸 것이 위의 그림이다. 위의 그림은 두 분류를 하나의 결정 경계로 나눈 그림이다. 위에서는 두 개의 분류 ..