석사 졸업논문을 쓸 때 OLE 기반의 여러 파일들에 대한 특징을 추출해야 할 일이 있었는데 그 때 데이터를 좀 축소시켜볼까 해서 썼던 방법 중 하나가가변 길이의 데이터를 같은 차원으로 압축?축소? 시키기 위해 사용할 적당한 알고리즘을 찾다가 LSH(Locality Sensitive Hashing)라는 것을 발견했다. 결론적으로 사용하진 않았다. LSH는 고차원 데이터의 차원 확률에 기반한 차원 축소 방법론이라고 할 수 있다. 하나의 문서가 100여개의 단어로 이루어져 있다면 이를 벡터로 표현하면 100차원이다. 이것을 제한된 크기 n차원으로 줄이는 기술이다. 간략히 공부하면서 어떤 저자가 Coursera 강좌를 듣고 Minhash 알고리즘에 대해 정리해 놓은 글을 봤는데 해당 글을 다시 정리해보았다. M..
MCMC는 진짜... 해도해도 이해가 안가고 할수록 더 이해가 안가는 모델인 것 같다.... 원래 논문 실험을 할 때 샘플링을 할 일이 있어서 (결국 안쓰게 됐지만) 그때 MCMC를 정리해놨던게 있는데 여기에 올린다. 일단, 위키백과에 따르면 MCMC(Markov Chain Monte Carlo, 마코프체인 몬테카를로)란 '마르코프 연쇄의 구성에 기반한 확률 분포로부터 원하는 분포의 정적 분포를 갖는 표본을 추출'하는 알고리즘의 한 부류이다. 쉽게 말하면 어떤 목표 확률분포(Target Probability Distribution)로부터 랜덤 샘플을 얻는 방법이라고 할 수 있다. 마코프 체인(Marcov Chain) 마코프 체인에서의 체인을 쓴 것은 상태값이 독립이 아니라 이전의 상태에 영향을 받기 때문..
머신러닝을 공부하고 코드를 작성하다 보면 (케라스를 사용하는 사람도 있지만) tensorflow 프레임워크 사용이 거의 필수적이다. tensorflow는 tensorflow-cpu와 tensorflow-gpu를 설치하는 과정이 전혀 다른데, gpu 버전은 cpu에 비해 상대적으로 설치가 좀 까다롭다. 이번 포스팅에서는 설치가 쉬운 윈도우 tensorflow-cpu 버전 설치 과정을 알아본다. 윈도우 아나콘다(Anaconda) 설치 아나콘다는 파이썬 가상환경을 지원하는 일종의 프로젝트로 tensorflow 포함 여러 패키지가 포함되어 있다. 가상환경이기 때문에 나중에 tensorflow-cpu와 tensorflow-gpu를 왔다갔다 하기도 편하고 관리가 쉬워서 윈도우에서는 tensorflow 사용 시 대다..
지난 퍼셉트론 포스팅에서 퍼셉트론의 기본 개념을 알아보면서 단층 퍼셉트론의 한계와 그것을 해결하기 위해 등장한 다층 퍼셉트론까지 간단히 살펴봤다. 다층 퍼셉트론은 곧 신경망이라고 보아도 무방하기 때문에 여기서는 다층 퍼셉트론이라는 용어 대신 '신경망'이라고 표기하겠다. 지난 포스팅에 이어서 오늘은 신경망의 학습 규칙인 델타규칙(Delta Rule), 경사하강법(Gradient Descent), 역전파(Back Propagation)에 대해 알아볼 것이다. 이 개념들은 전부 신경망의 학습 과정 중에 나오는 개념들이다. /* 해당 포스팅에서의 표기법은 다음과 같다 */ xi : 입력값 zi : 은닉층 값 yi : 출력층 값 ti : 목표값 E : 에러 α : 학습률 신경망의 계층구조 위에 링크시킨 포스팅의 ..
퍼셉트론(Perceptron)을 실제로 구현해보기 전에 퍼셉트론이란 무엇인지 퍼셉트론의 정의와 학습 규칙에 대해 먼저 살펴본다. 그리고 단층 퍼셉트론(Single Layer Pereptron)과 다층 퍼셉트론(Multi Layer Perceptron)이 어떤 차이가 있는지, 단층 퍼셉트론의 한계점과 이를 해결하기 위해 등장한 다층 퍼셉트론의 경우 어떤 특징이 있는지 등을 살펴본다. 퍼셉트론(Perceptron) 이란? 퍼셉트론이란 신경망의 기원이 되는 알고리즘으로 다수의 신호( in(t):x1,x2... )를 입력으로 받아 하나의 신호( out(t) )를 출력한다. 여기서 퍼셉트론은 복수의 입력 신호에 고유한 가중치(w1,w2...)를 부여하는데 이는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용..
파이썬 코드로 쉽게 배우는 머신러닝 시리즈 (3) SVM(Support Vector Machine) sklearn을 사용한 SVM 모델 학습으로 주어진 데이터셋을 분류하고 시각화해보려 한다. 참고로, 본 포스팅에서는 수학적 지식은 다루지 않고 sklearn의 SVM을 사용하기 위한 최소한의 개념을 다루며 '코드 구현과 활용'의 측면에 초점을 맞춘다. 또한 sklearn svc 함수의 매개변수 kernel, C에 따른 변화도 살펴본다. SVM(Support Vector Machine) 이란? SVM(Support Vector Machine)은 주어진 데이터가 어느 그룹에 속하는지 분류하는 분류 모델이다. 아직 포스팅하진 않은 신경망을 포함해 기존의 분류 모델들은 분류 오류를 최소화하려는 목적으로 설계되었지..
파이썬 코드로 쉽게 배우는 머신러닝 시리즈 (2) 로지스틱 회귀분석(Logistic Regression) 지난 포스팅에서 선형 회귀분석 (Linear Regression)에 대해 간단히 살펴보았다. 오늘은 로지스틱 회귀분석(Logistic Regression)에 대해 살펴본다. 본 포스팅은 수학적 지식은 최소한으로 다루고 파이썬 sklearn을 사용한 로지스틱 회귀분석의 '코드 구현과 활용'의 측면에 초점을 맞추었다. 로지스틱 회귀분석 (Logistic Regression) 이란? 선형 회귀와는 다르게 로지스틱 회귀는 결과가 범주형일 때 사용하기 때문에 분류 모델로 사용할 수 있다. 선형 회귀는 기본적으로 'y=ax+b'의 모습을 갖고 있었고 달라지는 x값에 대한 y값을 예측하는 것이 목표인 모델이었다...
파이썬 코드로 쉽게 배우는 머신러닝 시리즈 (1) 선형 회귀분석(Linear Regression) 대학원 시절, 패턴인식 과제로 수행했었던 혹은 과제 수행을 위한 선행 지식을 위해 혼자 공부했던 머신러닝, 딥러닝 관련 코드를 정리해서 올려보려 한다. 첫 시작은 선형 회귀분석이다. 참고로 본 포스팅에서는 수학적 지식은 최소한으로 다루고, 파이썬 sklearn을 사용한 선형 회귀분석의 '코드 구현과 활용'의 측면에 초점을 맞추었다. 선형회귀(Linear Regression) 모델이란? 선형회귀 모델은 지도학습 중 예측 문제에 사용하는 모델이다. 예측 문제란 기존 데이터를 기반으로 생성된 모델을 이용하여 새로운 데이터가 들어왔을 때 어떤 값이 될지 예측하는 문제를 말한다. 주식예측을 간단한 예로 들 수 있겠다..