분류 전체보기
[기계 학습] sklearn.pipeline 파이프 라인
전통적인 머신러닝을 사용하다 보면 전처리 작업을 한 번에 하고 난 뒤 모델을 돌릴 때도 있지만 모델 별로 전처리를 다르게 해주거나 또는 다른 전처리방법을 실험해보기 위해서 전처리를 복잡하게 반복할 때가 있다. 하지만 sklearn에 pipeline은 그 반복적인 작업을 쉽게 할 수 있게 해준다. pipeline은 통로라는 뜻으로 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 파이프라인을 사용하면 데이터 사전 처리 및 분류의 모든 단계를 포함하는 단일 개체를 만들 수 있다. train과 test 데이터 손실을 피할 수 있다. 교차 검증 및 기타 모델 선택 유형을 쉽게 만든다. 재현성 증가 설명이 어렵지만 예제를 보면 쉽게 이해할 수 있다. from sklear..
[데이터 전처리]. 날짜 데이터 전처리
우리는 위처럼 시간데이터를 DateTime 형태로 받아 들이게 되는 데 이것을 문자열로 나눠서 정제하는 방법도 있지만 쉽게 파생변수로 만들어주는 방법이 있다. tt['Date'] = pd.to_datetime(tt['Date']) tt['Wday'] = tt['Date'].dt.day_name() tt['yyyymm'] = tt['Date'].dt.strftime('%Y%m') tt['yyyy'] = tt['Date'].dt.strftime('%Y') tt['mm'] = tt['Date'].dt.strftime('%m') tt['dd'] = tt['Date'].dt.strftime('%d') tt['hh'] = tt['Date'].dt.strftime('%H') 이렇게 해주면 알아서 분리 된다. 끝
[기계학습] Stacking (스태킹)
스테킹은 앙상블 기법중 하나로 정확도를 극한으로 끌어올릴 때 주로 사용된다.우리는 분류 모델을 돌릴 때 여러가지 모델을 사용한다. Logistic , KNN , Random Forest , Boosting 모델 등 이 모델들은 정확도가 다 다르고 보통 여기서 가장 좋은 모델을 채택하게 된다. 하지만 이 모든 모델을 합치면 어떨까? 여기서 합친다는 뜻은 모델들이 각각 유권자가 된다는 것으로 이해하면 된다. 모델들이 예측한 결과만 합쳐서 새로운 테이블을 만들어 내는 것이다.LogisticKNNRandom ForestLightGBMXGBoost실제값111011011101111111001000101111임의로 만들어 낸 예시 이지만모델들의 예측결과를 이렇게 테이블 형테로 가져오고 이 상태에서 다시 예측을 진행한..
[기계학습] . Imbalanced Data ( 불균형 데이터 ) - SMOTE
분류 문제를 해결할 때 데이터의 분포를 가장 먼저 확인합니다. 이럴 때 데이터가 너무 한쪽으로 치우친 불균형 데이터를 종종 접하게 됩니다. 이런 불균형 데이터를 가지고 학습을 시키면 과적합 문제가 발생할 가능성이 높습니다. 불균형 데이터를 균형있게 바꿔주는 방법을 알아보자. 방법은 데이터를 샘플링 하는 방법입니다. 말 그대로 샘플을 만드는 방법입니다. 1. Under Sampling 적은 데이터를 기준으로 균형을 맞추는 방법입니다. 장점 : 유의미한 데이터만 남길 수 있습니다. 단점 : 정보가 유실되는 문제가 생길 수 있습니다. 2. Over Sampling 많은 데이터를 기준으로 균형을 맞추는 방법입니다. 장점 : 정보의 손실을 막을 수 있습니다. 단점 : 여러 유형의 관측치를 다수 추가 -> 오버 피..
[기계학습]. 정형데이터에서 시도해볼 수 있는 전략들
오늘은 정형데이터에서 정확도를 높히기 위해 시도해 볼 수 있는 전략들을 아는 만큼 적어보려고 한다. 정형 데이터에 대해 시도 해봤던 것들. 전처리 부분 1. 결측치 처리 결측치는 데이터에 따라 빈번하게 나타나는데 결측치를 처리하는 방법은 다양하다. - 그냥 제거하는 방법 - 중위값 , 평균값으로 대체 하는 방법 - 결측치 자체를 Y 데이터로 해서 나머지로 예측하는 방법 경험상 예측하는 방법이 성능이 좋았던 기억이 있고 그때는 Gradient Boosting 모델을 사용했다. 2. 파생 변수 생성 데이터의 열 정보를 꼼꼼히 살펴보고 파생변수로 만들 수 있는 것이 있다면 추가해주는 것이 좋다. 예측에 있어서 열이 너무없다면 많이 늘리는 것이 중요하다. 특성교차 방법 사용 변수 두개를 곱하거나 , 원 핫 벡터..
[Deep Learning] Activation Function ( 활성화 함수 ) - 2. 종류
전 포스팅에서 활성화 함수의 사용 이유에 대해서 알아보았습니다. 이번엔 활성화 함수의 종류에 대해서 알아보겠습니다. 1. Sign function sign 함수를 활성화 함수를 사용할 경우 기준 점을 기준으로 0과 1로만 분류하기 때문에 결정 경계로 부터 거리를 신경쓰지 않습니다. 즉, 결정경계와 멀리 떨어져 있든 가깝던 1과 0으로 표기 하기 때문이죠. (분류가 잘 되지 않음) 그래서 이런 경계를 부드럽게 표현하여 거리의 정도를 나타내는 함수를 사용하게됩니다. 2. Tanh 함수 Tanh 함수는 값이 작아질 수록 -1, 거질 수록 1 에 수렴 가장 중요한 특징은 모든 점에서 미분이 가능 (미분이 가능하다 == 기울기가 존재한다. ) 3. sigmoid 함수 sigmoid 함수는 값이 작아질 수록 0 커..
[NLP] 수능 영어지문을 풀어주는 인공지능 (WMD)
이번에 진행한 프로젝트는 수능 영어 지문 중에서 주제를 찾는 문제를 풀어보는 인공지능을 구현해 보겠습니다. from nltk import download from nltk import word_tokenize from nltk.corpus import stopwords from nltk.stem.lancaster import LancasterStemmer from nltk.stem import WordNetLemmatizer import nltk download('stopwords') stop_words = stopwords.words('english') import pandas as pd import numpy as np 먼저 기본적인 영어 NLP 를 처리해주는 패키지를 사용했습니다. def _prep..
[돈] . 2020 연말정산
오늘은 게을러서 미루고 미루던 2020년 연말정산을 해보려고 한다. 나는 작년 1월에 "존 리의 부자 되는 습관"이라는 책을 읽고 쓸데없는 지출을 막아 주식투자를 시작했다. 근로소득 -> 절약 -> 투자 -> 불로소득 2020/03/29 - [Book] - [투자] 부자가 되고 싶다면 돈이 일하게 하라 , 복리의 마법 "존 리의 부자 되기 습관" [투자] 부자가 되고 싶다면 돈이 일하게 하라 , 복리의 마법 "존리의 부자되기 습관" 오늘 소개해 드릴 책은 제가 직접 찾아보고 구매한 메리츠 자산운용 존 리 대표님의 "부자 되는 습관"입니다. 이 책을 알게 된 계기는 유튜브 채널을 통해서 알게 되었는 데 포스팅 끝에 링크를 acdongpgm.tistory.com 오늘은 그 결과를 확인해보는 시간 1. 재산 ..
[NLP] Word Encoding & Embedding
딥러닝 모델에는 text를 input으로 넣을 수 없습니다. 그래서 text를 숫자로 변환해서 넣어주어야 하는 데 이것을 word Encoding 이라고합니다. 여기서 "Thank you love you" 를 위처럼 0 , 1 ,2 로 변환할 수 있습니다. 위 방법보다는 딥러닝에서 자주사용하는 인코딩 방법은 바로 One Hot Encdoing 입니다. 단어갯수만큼의 n차원 Vector를 만들어 독립적인 방법으로 표현하는 것 입니다. 있으면 1 없으면 0 예를들어 중복되지 않는 단어가 100개면 100차원 Vector가 됩니다. 2020/10/23 - [Data Science/Machine learning] - [데이터 전처리] . 이산형 데이터 처리하기 ( OneHotEncoding ) [데이터 전처리]..
[기계학습] Kernel Support Vector Machines ( KSVMs , 커널 서포트 벡터 머신)
SVM 은 직선을 그어 그 직선을 결정 경계로 데이터를 분류하는 알고리즘이다. 하지만 직선만 사용하면 이런 데이터는 어떻게 분류할 수 있을까? 직선으로는 불가능하다. 하지만 여기서 특성을 하나 추가해주어 3차원으로 바꾸면 이 문제를 해결할 수 있다. 두 번째 특성을 제곱한 특성1 ** 2를 새로운 특성으로 추가해 입력 특성을 확장합니다 (특성 0, 특성 1, 특성 1 ** 2)의 3차원 데이터 포인트로 표현됩니다. 이제 3차원 공간에서 평면을 사용해 두 클래스를 구분할 수 있습니다. 이 상태를 다시 2차원으로 투영해보면 더 이상 선형이 아나라 , 직선보다 타원에 가까운 모습을 확인할 수 있습니다. 위에서 특성의 제곱을 한 값을 새로운 특성으로 사용하여 차원을 늘렸고 그것으로 문제를 해결했습니다. 하지만 ..