Programming & Machine Learning
-
배치 방식과 온라인 방식의 모델 학습Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 3. 01:50
배치방식, 온라인 방식에 대한 개념일반적으로 대중화된, 아이리스 데이터 등으로 데스크탑에서 손쉽게 돌려볼 수 있는 머신러닝 자료들은 데이터를 통째로 IDE로 불러들인 다음 메모리상에 올려두고 작업하는 방식이었을 것이다. 모델을 학습함에 있어서도 모든 트레이닝 데이터셋의 결과값을 한번에 구한 뒤, 데이터셋과 쌍이 맞는 레이블과의 차이를 구해서 비용함수를 한번에 개선하는 방식의 학습을 n-iterative 하게 진행하였을 것이다. 하지만 머신러닝을 진행함에 있어서 데이터의 크기는 언제든지 늘어나게 된다. 아마 실전의 대부분은, 한 개의 데스크탑에서 불러올 수 없는 양의 데이터가 대부분일 것이다. 이런 경우 R 혹은 Python등의 툴로는 데이터를 메모리에 올려놓고 한번에 처리하기가 힘들어진다. 그렇게 되면 ..
-
Mini Batch Processing 방식의 구현과 학습모델의 임베딩Programming & Machine Learning/Python X 머신러닝 2017. 8. 2. 20:34
아웃 오브 코어 기법 (mini batch processing 방식)배치 방식이 아닌 온라인 방식으로 모델을 학습한 뒤, 학습한 모델을 저장해보고 다시 읽어보는 예제를 진행하였다. in-memory 방식으로 대용량 데이터를 학습시키고 모델을 만들기에는 한계가 있다. 따라서 mini batch의 방식으로 데이터를 chunk로 나누어서 처리해야 한다. 감성분석에서 사용한 대용량 데이터를 다시 예제로 사용하였다. tf-idf를 추출하기 위해서는 TfidfTransformer 클래스를 사용했지만, mini batch 방식(=온라인)에서는 사용할 수가 없다. 하지만 비슷한 일을 해주는 HashingVectorizer가 있다. 이를 통해 전체 문서에서 tf-idf를 하는 것과 비슷한 작업을 해줄 수 있다. 참고로,..
-
감성분석을 위한 Python에서의 텍스트 데이터 처리기법Programming & Machine Learning/Python X 머신러닝 2017. 8. 2. 13:18
감성분석을 위한 텍스트 데이터 처리1. 문서의 변수화 작업, bag-of-words감성분석은 문서의 양극성을 분석하는 작업이다. 데이터에서 추출한 단어들을 설명 변수, 해당 데이터에 대한 양과 음의 레이블을 목적 변수로 하는 것이 일반적이다. 분류를 위한 설명 변수들을 정해줘야 하는데, 즉 텍스트를 수치형 피처 벡터로 표현할 수 있어야 한다. 가장 기본적인 방법이 bag-of-words 모델이라고 할 수 있다. bag-of-words 모델은 전체 문서 집합의 단어들의 단어집을 만든 후, 특정 문서에서 단어집에 포함된 단어가 얼마나 자주 사용되었는지 횟수를 포함하는 각 문서에 대한 피처 벡터를 만든다. 각 문서의 단어들은 단어집 내에서의 부분집합을 나타낼 뿐이기 때문에, 피처벡터는 대부분 0이 된다. 문서..
-
주성분분석(PCA)로 차원 축소하기Programming & Machine Learning/풀어쓰는 머신러닝 2017. 8. 2. 02:47
주성분분석(PCA)로 차원 축소 하기PCA의 정의 - 비지도적 차원 축소 기법여러 변수들의 변량을 주성분 분석(Principal Component Analysis)라고 불리는 서로 상관성이 높은 여러 변수들의 선형조합으로 만든 새로운 변수들로 요약 및 축약하는 기법. 비정규화된 모델에서 흔히 야기되는 일명 '차원의 저주' 문제를 해결하도록 도와주기도 한다. 우리는 회귀분석이나 의사결정트리등의 모델을 만들 때, 다중 공선성의 문제가 발생하는 것을 쉽게 볼 수 있다. 이런 경우를 해결하는 것이 바로 상관도가 높은 변수들을 데이터를 대표하는 주성분 혹은 요인으로 축소하여 모형개발에 이용하는 것이다. 주성분 분석은 고차원 데이터에서 최대 분산의 방향을 찾아, 새로운 부분 공간에 원래보다 작은 차원으로 투영하는 ..
-
Python - sklearn, jupyter로 Decision Tree 학습하기Programming & Machine Learning/Python X 머신러닝 2017. 7. 31. 21:17
02DecisionTree_practice In [2]: R을 공부하며 Decision Tree를 정리했었는데, 파이썬에서 비슷한 내용을 정리해보고자 한다. 소스코드는 scikit-learn의 공식 튜토리얼 문서자료와 [Python Machine Learning]을 참고하였다. In [3]: 파이썬에서 sklearn 모듈을 사용해서 의사결정 트리를 학습하는 과정은 R에 비하면 약간 덜 직관적이고, 조금 더 객체지향스러운 프로그래밍의 느낌이다. DecisionTreeClassifier라는 일종의 모델 helper를 사용하여 학습이 진행된다. X,Y 데이터셋을 fit이라는 함수에 입력하는 간단한 절차를 거치면, 놀랍게도(?) 학습이 완료된다. In [4]: from sklearn import tree X =..
-
머신 러닝의 개요 - introProgramming & Machine Learning/풀어쓰는 머신러닝 2017. 7. 29. 11:29
머신 러닝 개요1. 머신 러닝의 유형머신러닝은 크게 비지도학습, 지도학습, 강화학습으로 분류된다. - 지도학습은 또다시 분류, 예측등으로 나뉘게 된다. 회귀를 기준으로 분류를 설명할 때, 회귀선이 바로 분류의 기준이 되는 선을 의미한다. 연속형 결과를 예측하는 경우에서는 회귀선이 예측의 함수를 의미한다. - 강화학습은 상호작용을 기반으로 자신의 성능을 개선하는 학습구조를 의미한다. 행위를 보상함수로 잘 측정할 수 있는 측정 기준에 관한 것이 강화학습에서의 피드백, 즉 보상 신호이다. - 비지도학습은 주로 은닉 구조를 발견하는 용도로 사용된다. 이미 알려진 결과변수나 레이블, 보상함수의 도움을 받지 않고서도 데이터에서 의미있는 정보를 추출해낸다. 군집분석이 가장 대표적인 예로, k-means 등의 알고리즘..
-
pandas를 활용한 데이터 전처리Programming & Machine Learning/Python X 머신러닝 2017. 7. 29. 11:22
pandas를 이용한 데이터 전처리1.1 pandas를 사용하지 않은 방법### 기본적인 json read import json path = '/Users/yoon/Downloads/pydata/pydata-book-master/' path = path + 'ch02/usagov_bitly_data2012-03-16-1331923249.txt' records = [json.loads(line) for line in open(path, encoding="utf-8")] records[0]['tz'] records[0] records['tz'] # -> error! 이런 문제점을 해결하기 위해 df 구조가 필요한 것. pandas를 사용하지 않았을 때의 json 파일을 읽는 방법이다. json 모듈을 이용하..
-
파이썬 기초 문법 - 4 ('_' 언더스코어의 의미)Programming & Machine Learning/Python X 머신러닝 2017. 7. 27. 02:38
4. 언더스코어의 의미타 언어에서 언더스코어 '_'은 단순히 스네이크 표기법 정도로만 사용이 되곤 한다. 파이썬에서 언더스코어는 조금 특별한 기능을 하는데, 이는 파이썬이 인터프리터 언어라는 속성에 기인한다. 4.1 파이썬 인터프리터에서의 사용위 그림은 IPython으로 파이썬 인터프리터를 실행한 것이다. 언더스코어는 다음에서 볼 수 있듯, 마지막 변수를 저장하는 역할을 한다. 4.2 특정 값을 skip할 때a, _, b = 1, 3, 2 # a=1, b=2 a, _, b = [1, 2, 3] # a=1, b=3 for _ in range(10): print("hello")4.3 숫자의 구분자로써 활용a = 1_000_00_0 # a=1000000 b = 0b_11_0_1 # b=134.4 네이밍의 용도..
-
파이썬 기초 문법 - 3 (클래스와 오브젝트)Programming & Machine Learning/Python X 머신러닝 2017. 7. 27. 02:36
클래스와 오브젝트################################################################# ################################################################# ### 클래스에서 self, cls, static의 역할 # class는 붕어빵 빵틀, object는 붕어빵이라고 비유가 가능. # self는 붕어빵 각각이 가지는 속성이고, cls는 붕어빵 빵틀이 가지는 속성임. # 클래스의 멤버변수를 선언할때 아래처럼 선언하면 빵틀 변수가 되는 것이고, # init 에서 self로 선언하면 붕어빵의 변수가 되는 것이다. class InstanceCounter: count = 0 count2 = 0 def __init__..
-
파이썬 기초 문법 - 2 (함수와 모듈)Programming & Machine Learning/Python X 머신러닝 2017. 7. 27. 02:34
1. 파이썬의 함수1.1 함수 사용 개념파이썬에서 함수는 정의(def keyword)로 표현.파이썬에서는 함수를 일급 객체(First Class Object)로 다룸.일급 객체란 프로그래밍 언어 설계에서 매개변수로 넘길 수 있고 함수가 반환할 수도 있으며 변수에 할당이 가능한 개체를 가리키는 용어파이썬에서는 함수를 매개변수로도 사용할 수 있고 함수의 결과로 반환하는 것도 가능1.2 함수 사용 예제### 다중 리턴과 타입 def abc(a,b): re1 = a+b re2 = a-b re3 = a*b return re1,re2,re3 def abc2(a,b): re1 = a+b re2 = a-b re3 = a*b return [re1,re2,re3] def abc3(a,b): re1 = a+b re2 = a..