Programming & Machine Learning
-
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 ..
-
교차검증(Cross Validation)을 통한 모델 평가방법Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 11. 02:59
모델 평가머신러닝 모델을 학습하는 데 있어서 중요한 점 중 하나는, 새로운 데이터셋에 대한 반응하는 모델의 성능을 추정하는 것이다. 만약 새로운 데이터셋이 들어왔을 때 학습된 모델이 얼마나 예측이나 분류를 잘 수행하는지에 대한 예상이 필요하다. 우리가 학습한 모델이 새로운 데이터에 대한 결과의 예상이라면 우리는 그 모델이 얼마나 잘 예상할지에 대한 예상이 필요하다. 정확한 용어로 얘기하자면, 모델의 일반화 오차에 대해 신뢰할만한 추정치를 구할 수 있게 해주는 방법이 필요하다는 것이다. 그 방법으로는 일반적으로 크게 두가지, 홀드아웃(holdout) 교차검증과 k-fold 교차검증의 방법이 있다. 1. 홀드아웃 교차검증 방법가장 보편적인 모델의 성능 테스트 방법은, 원 데이터를 훈련데이터와 테스트데이터 두..
-
학습, 검증곡선과 편향-분산 트레이드오프(Bias-Variance Tradeoff)Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 11. 02:57
본 포스팅을 읽기 전에, 교차검증이 무엇인지에 대해 모르는 분들은 이곳을 참고해주시길 바랍니다. 학습, 검증곡선과 편향-분산 트레이드오프편향-분산 트레이드오프 (Bias-Variance Tradeoff)머신 러닝에서의 error는 크게 두 분류로 나뉜다. bias(편향), 그리고 variance(분산)이다. bias는 흔히 생각할 수 있는 error로, 선형 회귀같은 문제에서의 SSE를 떠올리면 쉽다. 모델이 학습데이터를 충분히 설명할 수 없는 상황에서 커지는 에러이다. 이 상황을 흔히 underfitting이라고 한다. variance는 그 반대로 모델이 학습데이터를 과도하게 잘 설명하는 상황이다. 모집단을 추정하고자 표본집단을 이용하여 모델을 만들어놨더니, 표본집단만을 거창하게 잘 설명하는 모델이 된..
-
커널 주성분 분석(KPCA)로 차원 축소하기Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 10. 15:58
비선형 매핑을 위한 커널 주성분 분석의 사용회귀분석과 대부분의 분류 알고리즘에서는 데이터를 선형분리 가능하다는 가정이 필요했다. 심지어 인공신경망의 기초격인 퍼셉트론에서조차 선형분리 가능을 전제로 알고리즘이 동작했다. 이러한 문제점들을 PCA, LDA같은 차원 축소 기법으로 해결했으나 데이터의 모양이 정말로, 완전히, 앱솔루틀리 하게 비선형인 경우는 문제가 달라진다. PCA, LDA 같은 알고리즘은 차원축소를 위한 선형 변환 기법을 이용하기 때문에, 선형으로 분리 불가능한 데이터에 대해서는 적당하지 않다. 이런 문제를 극복하기 위해 커널 PCA를 사용할 수 있다. SVM에서의 커널 기법을 떠올려보자. 원래의 d차원 데이터를 k차원으로 (더 큰 차원으로) 매핑하는 하나의 함수를 생각할 수 있다. 이 때, ..
-
선형판별분석(LDA)로 차원 축소하기Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 10. 13:20
선형 판별 분석(LDA)을 활용한 지도적 데이터 압축선형 판별 분석(Linear Discriminant Analysis, LDA)은 PCA와 마찬가지의 피처 압축 기법 중 하나이다. 전체적인 개념은 상당히 유사하지만, LDA는 PCA와 달리 최대분산의 수직을 찾는 것이 아니라 지도적 방식으로 데이터의 분포를 학습하여 분리를 최적화하는 피처 부분공간을 찾은 뒤, 학습된 결정 경계에 따라 데이터를 분류하는 것이 목표이다. 즉, PCA가 데이터의 전체적인 분포를 참고하여 새로운 basis를 설정하고, 그 축에 맞게 데이터를 새롭게 projection 하는 것이 목표라면, LDA는 지도적인 방법으로 basis를 찾아서 그 축을 분리에 이용한 뒤, 최적의 분리를 완성한 뒤 projection을 하는 것이 목표이다..
-
SVM의 개념 및 Python에서의 사용Programming & Machine Learning/Python X 머신러닝 2017. 8. 10. 03:26
SVM (Support Vector Machine)1. SVM의 원리SVM은 퍼셉트론을 확장한 개념으로, 데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 알고리즘이다. SVM은 선형 분류와 더불어 비선형 분류에서도 사용될 수 있다. SVM에서 비선형 분류를 하기 위해서 주어진 데이터를 고차원 특징 공간으로 사상하는 작업이 필요한데, 이를 효율적으로 하기 위해 커널 트릭을 사용하기도 한다. 만약 훈련 데이터가 비선형 데이터라면, 이를 비선형 매핑(Mapping)을 통하여 고차원으로 변환시킨 뒤, 새로운 차원에서의 최적의 결정 경계면을 찾는다. 이것이 커널 트릭을 사용한 것이다. SVM을 나타낸 것이 위의 그림이다. 위의 그림은 두 분류를 하나의 결정 경계로 나눈 그림이다. 위에서는 두 개의 분류 ..
-
차원 축소, 차원의 저주에 관하여Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 10. 03:10
최근에 차원 축소에 대한 스터디를 진행하다가 문득 든 질문, 도대체 차원 축소를 왜 해야하는거지? 라는 간단한 질문에 대답하기 어려웠다. 당연히 피처 수가 적으면 모델이 더 잘 돌아가겠지.. 하는 생각 외에는 신박한 답변이 생각나지 않았다. 잠시 페이드 아웃의 시간을 거치고, 문득 떠오른 단어가 "차원의 저주"였다. 유레카, "차원의 저주"를 해결하기 위해서 우리는 차원 축소를 하는거지! 라고 당당히 대답해 버렸다. 그럼 차원의 저주는 뭐지..? 두서없이 드는 생각들을 옮겨적어 봐야겠다. 차원축소 차원 축소를 해야 하는 이유에 대해, 실생활적인 예를 들어 생각해보자. 어떤 사람이 커피를 마시는 상황에 대해 머신 러닝 기법을 적용하여 예측하고자 한다. 커피를 마시는 이유. 피처를 한번 선정해보자. 졸려서,..
-
Linux, Mac에서 AWS ssh, sh 스크립트 만들기Programming & Machine Learning/Linux & Git 2017. 8. 7. 10:41
AWS ssh 접속 자동 스크립트 AWS instance에 접속하는 Mac terminal ssh 자동 스크립트가 본 포스팅의 기준이다.먼저 AWS instance pem키를 다운로드 한 뒤, 안전한 경로에 파일을 저장한다. 일반적으로는 ssh 관련 폴더에 저장한다. AWS에서 지정하는 방식으로 최초 로그인을 1회 진행한다. (Connect 버튼을 누르면 다음과 같은 튜토리얼을 제공) 이 때 원활한 진행이 되지 않는다면, pem키를 가지고 있는 경로에 권한이 부여되지 않았을 가능성이 높다. 아마존에서 제공하는 위의 튜토리얼만 잘 따라하자. chmod 400 [path] 다음으로 ssh 명령어 자동화를 진행한다.자동화를 위해서는 다음과 같은 명령어로 ssh 폴더에 config 파일을 수정한다. sudo v..
-
뉴럴넷에서의 오버피팅과 해결책Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 3. 02:55
오버피팅과 해결책신경망 등에서의 오버피팅머신러닝 분야에서의 오버피팅은 언제나 가장 큰 issue이다. 신경망 분야에서도 backpropagation 이라는 큰 전환점이 있었지만 꽤 오랜기간동안 상용화되지 못했던 이유는 오버피팅 때문이다. 다른 알고리즘에 비해 파라미터와 계수의 갯수가 크다보니, 자연스레 모델의 complexity가 증가하고 오버피팅이 발생한다. 초기의 해결책은 거의 전무했으며 DBN등으로 어느정도 성능을 끌어올렸다가, computing 성능의 발전과 dropout등의 알고리즘 등장으로 상당히 많이 개선되어 딥러닝의 유행을 이끌고 있다. 신경망 분야에서만 적용되는 것이 아닌 공통적으로 적용되는 오버피팅 해결책은 다음과 같다. 1. 훈련 데이터를 늘린다 2. 피처를 정규화 / 표준화 시켜준다..
-
인공뉴런(퍼셉트론, 에이다라인)과 그래디언트 디센트(Gradient Descent)의 개념 및 구현Programming & Machine Learning/Python X 머신러닝 2017. 8. 3. 01:51
머신러닝의 핵심 원리1. 인공 뉴런의 개념머신 러닝과 관련된 학문은 초기에 인공 뉴런을 표방하는 것으로 시작되었다. 뇌가 어떻게 일하는지를 이해하려는 노력의 산물이 바로 인공 뉴런이다. 뉴런은 뇌에서 서로 연결되어있는 신경 세포를 의미하는데, 이를 알고리즘으로 해부하면 다음과 같다. 하나하나의 신경세포는 바이너리 출력을 갖는 간단한 논리 게이트를 가지고 있다. 신경세포가 다음 신경세포로 신호를 보내는 임계치를 판단하는 것이 바로 활성함수의 개념이다. (정확히는 활성함수의 아웃풋은 비용함수로 이용되고, 임계함수가 최종 판단의 역할을 한다. 아래의 예제코드에서 활성함수는 new_input, 임계함수는 predict이다. 글을 정독한 뒤 다시 이 문단을 읽으면 이해가 된다) 이 활성함수의 최적의 가중계수를 자..