본문 바로가기

2/[ Machine Learning ]30

Tensorboad를 사용해 시각화하기 Source: Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow p.393 Tensorboard 서버가 root 로그 디렉터리를 가리키고 프로그램은 실행할 때마다 다른 서브디렉터리에 이벤트를 기록한다. 하나의 Tensorboard 서버가 여러 번 실행한 프로그램의 결과를 시각화하고 비교할 수 있다. 위 코드를 실행하면 TensorBoard()콜백이 로그 디렉터리를 생성한다. 훈련하는 동안 이벤트 파일을 만들고 서머리를 기로한다. 2020. 12. 23.
Support Vector Regression SVR(Support Vector Regression) SVR(kernel, degree, gamma, coef0, tol, C, epsilon, shrinking, cache_size, verbose, max_iter) Default: svr(kernerl = ‘rbf’, degree = 3, gamma = ‘scale’, coef0 = 0.0, tol = 0.001, C = 1.0, epsilon = 0.1, shrinking = True, chache_size = 200, verbose = False, max_iter = -1) kernel kinds: ‘linear’, ‘poly’, ‘rbf(default)’, ‘sigmoid’, ‘precomputed’ 주어진 data를 고차원 특정 공간으로 사.. 2020. 12. 22.
Embedding(임베딩) 자연어(인간의 언어)는 수치화되어 있지 않기 때문에 머신러닝, 딥러닝 기법을 적용할 수 없다. 이런 자연어 data를 처리하기 위해선 특정 추출을 통해 수치화를 해줘야 한다. 이 과정을 "언어의 벡터화"라고 한다. 가장 기본적인 언어의 벡터화 방법은 One-Hot Encoding이다. 2020. 12. 21.
Padding Convolution Filter를 수행하게 되면 Input 이미지가 작아진다. 이 때, Padding을 이용하여 Input 이미지 크기를 그대로 유지할 수 있다. 위 그림 속 기존 이미지(Orange)를 3x3으로 Convolution Filter 수행시 기존 이미지에 비하여 크기가 많이 작아진다. 하지만 Padding 함으로서(Gray) 초록색 이미지와 같이 기존보다 이미지를 최대한 살려서 Convolution Filter가 가능하다. Padding할 경우 그 값은 0을 주기 때문에 Zero Padding이라고 한다. Padding 목적: 기존 Input 이미지 최대한 살리기 Padding하지 않을 경우 이미지가 기존보다 급격하게 작아지기 때문에 Neural Network 성능에 악영향을 끼침 2020. 12. 21.
Scaler의 fit(), transform(), fit_transform() fit( ) 데이터 변환을 학습, 학습용 데이터에만 적용 transform( ) 실제 data의 scale을 조정, 학습용 data와 test data에 적용 fit_transform( ) fit( )과 transform( )을 함께 수행하는 method. 기존의 fit( )과 transform( ) 각각 수행하는 번거로움을 줄임 하지만 Test Data에 fit.transform( )을 적용해서는 안된다. 이를 수행하면 scaler 객체가 기존에 학습 data에 fit했던 기준을 모두 무시하고 다시 Test Data를 기반으로 기준을 적용하기 때문이다. 이런 번거로움을 피하기 위해 Train과 Test Data로 나누기 전에 먼저 Scaling 등의 data 전처리를 해주는 것이 좋다. 2020. 12. 18.
Data Scaling 종류 1. StandardScaler 각 feature의 평균을 0, 분산을 1로 변경한다. 모든 feature들이 같은 scale을 갖게 된다. 2. RobustScaler 모든 feature들이 같은 크기를 갖는 다는 점에서 StandardScaler와 비슷하지만, 평균과 분산 대신 median과 quartile을 사용한다. RobustScaler는 이상치에 영향을 받지 않는다. 3. MinMaxScaler 모든 feature가 0과 1사이에 위치하게 만든다. 데이터가 2차원 셋일 경우, 모든 데이터는 x축의 0과 1사이에, y축의 0과 1사이에 위치하게 된다. 4. Normarlizer StandardScaler, RobustScaler, MinMaxScaler가 각 columns의 통계치를 이용한다면 .. 2020. 12. 18.
Chapter 1. 한눈에 보는 ML 1. 머신러닝을 어떻게 정의하는가? 머신러닝은 데이터로부터 학습할 수 있는 시스템을 만드는 것. 학습이란 어떤 작업에서 주어진 성능 지표가 더 나아지는 것을 의미 2. 머신러닝이 도움을 줄 수 있는 문제 유형은? 명확한 해결책이 없는 복잡한 문제, 수작업으로 만든 긴 규칙 리스트를 대체하는 경우, 변화하는 환경에 적응하는 시스템을 만드는 경우, 사람에게 통찰을 제공해야 하는 경우에 도움을 줄 수 있다 3. 레이블된 훈련 세트란? 레이블된 훈련 세트는 각 샘플에 대해 원하는 레이블을 담고 있는 훈련 세트이다 4. 가장 널리 사용되는 지도 학습 작업 두 가지는? 회귀와 분류 5. 보편적인 비지도 학습 작업 네 가지는? 보편적인 비지도 학습 문제는 군집, 시각화, 차원 축소, 연관 규칙 학습 6. 사전 정보가.. 2020. 12. 7.
Scaling 종류 Scikit-learn에서 제공되는 기능 #아래와 같은 수식으로 사용 from sklearn.preprocessing import StandardScaler Scaling 종류 1. StandardScaler: 기본, 평균과 표준편차 사용 2. MinMaxScaler: 최대/최소값이 각각 1, 0이 되도록 함 3. MaxAbsScaler: 최대절대값과 0이 각각 1, 0이 되도록 함 4. RobustScaler: Median과 IQR(Interquartile Range) 사용, Outlier 영향 최소화 *IQR(Interquartile Range): 25%와 75%의 값들을 다룸 - 평균을 제거하고 data를 단위 분산으로 조정 - 이상치가 있다면 평균과 표준편차에 영향을 미쳐 변환된 data의 확산은.. 2020. 12. 6.
Offline Learning & Online Learning Offline Learning 배치 학습에서는 시스템이 점진적으로 학습할 수 없다. 가용한 데이터를 모두 사용해 훈련시켜야 한다. 일반적으로 이 방식은 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행된다. 먼저 시스템을 훈련시키고 그런 다음 제품 시스템에 적용하면 더 이상의 학습 없이 실행된다. 즉, 학습한 것을 단지 적용만 한다. Online Learning 데이터를 순차적으로 한 개씩 또는 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있다. 온라인 학습은 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야하는 시스템에 적합하다. 온라인 학습 시스템이 새로운 데이터 샘플을 학습하면 학습.. 2020. 12. 4.
MNIST MNIST Database는 손으로 쓴 숫자들로 이루어진 대형 database이며, 다양한 화상 처리 system을 training하기 위해 일반적으로 사용된다. 이 database는 또한 기계 학습 분야의 training 및 test에 널리 사용된다. NIST의 오리지널 dataset의 sample을 재혼합하여 만들어졌다. 2020. 12. 3.
Overfitting model이 training data에 너무 잘 맞지만 일반성이 떨어진다는 뜻 Trainig Set에 잡음(여러 부가적인 항목)이 섞인 패턴을 감지하면 새로운 샘플에 일반화되지 못한다. Overfitting은 training data에 있는 잡음의 양에 비해 model이 너무 복잡할 때 일어난다. 파라미터 수가 적은 모델을 선택하거나(고차원 다항 모델보다 선형 모델), traning data에 있는 feature 수를 줄이거나, model에 제약을 가하여 단순화 training data를 더 많이 모은다 training data의 잡음을 줄인다(오류 데이터 수정과 이상치 제거) 2020. 12. 2.
Machine Learning System의 종류 For instance 사람의 감독하에 훈련하는 것인지 그렇지 않은 것인지(지도, 비지도, 준지도, 강화 학습) 실시간으로 점진적인 학습을 하는지 아닌지(온라인 학습과 배치 학습) 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지(사례 기반 학습과 모델 기반 학습) 학습하는 동안의 감독 형태나 정보량에 따라 분류: 지도 학습, 비지도 학습, 준지도 학습, 강화 학습 지도 학습 알고리즘에 주입하는 훈련 데이터에 label이라는 원하는 답 포함 Classification이 전형적인 지도 학습 작업 ex) spam filter on e-mail Predictor variable(예측 변수)라 불리는 Fe.. 2020. 12. 2.
Why do some pandas commands end with parentheses, and others don't? Source: youtu.be/hSrDViyKWVk movies = pd.read_csv('http://bit.ly/imdbrathings') movies.head() #숫자로 표현된 Column들만 정리해서 보여줌 movies.describe() movie.dtypes type(movies) -> pandas.core.frame.DataFrame #object data 포함해서 확인하기 moives.describe(include=['object']) 괄호 안 아무곳 커서 클릭 후 'Shift + Tab' 누르면 함수 설명 조회 가능 2020. 11. 26.
How do I select a pandas Series from a DataFrame Source: youtu.be/zxqjeyKP2Tk ufo = pd.read_table('http://bit.ly/uforeports', sep=',') type(ufo) #pandas.core.frame.DataFrame 여부 확인 ufo.head() ufo['City'] #ufo.City로 입력해도 동일. ufo['City']보다 입력하기 편리하므로 ufo.City사용 ufo['Colors Reported'] #ufo.Color_Reported로 입력해서 출력되지 않으면, ['Colors Reported'] 방법 사용 #이미 입력되어 있는 Column들을 새로 만들어서 Column 추가 가능 ufo.City + ufo.State ufo.City + ', ' + ufo.State #New Column .. 2020. 11. 26.
How do I read a tabular data file into pandas? Source: youtu.be/5_QXMwezPJE import pandas as pd #pd.read_table('파일경로') pd.read_table('http://bit.ly/chiporders') orders = pd.read_table('http://bit.ly/chiporders') orders.head() pd.read_table('http://bit.ly/movieusers') # '|'로 구분되어 있으므로 Column을 나눠줌 pd.read_table('http://bit.ly/movieusers', sep='|') #1st row를 Header로 인식하므로 Header를 추가해줌 pd.read_table('http://bit.ly/movieusers', sep='|', header=No.. 2020. 11. 26.