# AI 이론 36

합성곱 신경망(CNN)

합성곱 신경망이란? 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 자주 사용된다. 합성곱 계층의 구조 완전연결 계층(Affine) CNN 계층 CNN을 이용하여 구축했을때, 출력 가까이에서는 Affine 구조를 사용한다. 이전의 MNIST 숫자인식 데이터는 Flatten 을통해 3차원 데이터를 1차원 행렬(1x784)로 평탄화 하였지만, CNN 방식은 3차원 방식을 유지하여 연산이 가능하다. CNN에서는 입출력 데이터를 입력특징맵, 출력특징맵라고 부른다. 합성곱 연산의 경우, 입력과 필터에서 대응하는 원소끼리 곱한후 그총합을 구한다. (단일 곱셈-누산 방식이라고 함) 합성곱 연산시 패딩(Padding)도 가능한데, 이는 출력의 크기를 조정하는데 사용된다. np.pad(..

[ML]캐글 신용카드 사기 검출

데이터 분석전 알아야 할 지식정리 Log변환 왜곡된 분포도를 가진 데이터 세트를 비교적 정규 분포에 가깝게 변환해주는 Feature Engineering 방식 Skrew 된 분포도 대부분을 로그변환으로 바꾸는것을 권장 IQR IQR(Inter Quantile Range)를 통한 Outlier Removal(이상치 제거) Box Flot 을 통해, 범위 밖에있는 값들은 이상치로 간주 UnderSampling And OverSampling UnderSampling : 많은 레이블을 가진 데이터세트를 적은 레이블 세트만큼 감소 시킴 OverSampling : 적은 레이블을 가진 데이터세트를 증식시켜, 많은 레이블 세트만큼 부풀림 (SMOTE방식을 통해 OverSampling을 실시) SMOTE : 적은 데이터..

LightGBM

LightGBM이란 XGBoost와 함께 부스팅 계열 알고리즘에서 가장 각광을 받고 있다. XGboost의 경우 뛰어난 부스팅 알고리즘이지만, 여전히 학습시간이 오래걸리는데, 특히 GridSearchCV로 하이퍼 파라미터 튜닝을 수행하다 보면 수행시간이 너무 오래걸리는것을 알수있다. LightGBM의 큰장점은 XGBoost보다 학습에 걸리는 시간이 훨씬 적다는 점이다. LightGBM은 XGBoost의 예측 성능에 별차이가 없지만, 기능상 다양성은 LGBM이 더많다. LGBM의 단점은 적은 데이터 세트에 적용할 경우 과적합이 발생하기 쉽다는 것 일반적으로 10,000건 이하의 데이터 세트 정도라고 LightGBM 공식문서에 기술되어있다. 기존의 GBM계열의 트리분할은 리프 중심 트리 분할 이였지만, 시간..

XGBoost 소개(파이썬 Wrapper, 싸이킷런 Wrapper) 및 예제

XGBoost 개요 XGBoost는 트리 기반의 앙상블 학습에서 가장 각광받고 있는 알고리즘 중 하나입니다. XGBoost는 GBM에 기반하고 있지만, GBM의 단점인 느린 수행 시간 및 과적합 규제 부재등의 문제를 해결해서 매우 각광을 받고 있다. 파이썬 Wrapper와 싸이킷런 Wrapper에는 약간의 차이가 존재합니다. XGBClassifier는 기존의 사이킷런에서 사용하는 하이퍼 파라미터 몇 가지를 변경하였는데, 변경 사항은 다음과 같습니다. eta -> learning_rate sub_sample ->subsample lambda ->reg_lambda alpha ->reg_alpha 장점 뛰어난 예측 성능 GBM 대비 빠른 수행 시간 과적합 규제 Tree pruning 자체 내장된 교차 검증 ..

투 포인터(Two Pointer)

투포인터 알고리즘이란? 리스트에 순차적으로 접근해야 할때 2개의 점의 위치를 기록하면서 처리하는 알고리즘 예를 들어보면, 한 반에 학생들이 40명이 있을 때, 모든 학생을 번호순서대로 일렬로 세운뒤, 순차적으로 지목한다고 생각해보자 2,3,4,5,6,7번 학생을 부를때, 2번부터 7번까지의 학생 이라고 부를 수도있는데, 이처럼 시작점과 끝점을 사용하여 데이터의 범위를 표현할 수 있다. 시작점(start)과 끝점(end)이 첫번째 원소의 양 끝점을 가르키도록 한다. 현재 부분합이 구하고자 하는 값과 같다면 카운트한다 현재 부분합이 구하고자 하는 값보다 작다면, end를 1증가(구간합이 감소) 현재 부분합이 구하고자 하는 값보다 크다면 start를 1증가(구간합 증가) 모든 경우를 확인할 때까지 2번부터 4..

피처 스케일링(Feature Scaling)

피처 스케일링(Feature Scaling) 이란? 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 말한다. 대표적인 방법으로는 표준화 , 정규화 가 존재한다. 예를들어, 피쳐 A의 범위는 0~100 이고, 피쳐 B의 범위는 0~100,000,000이라면, 데이터는 A에값에 크게 영향을 미치지 않을 수 있다. 따라서, 이 변수를 모두 동일한 크기 단위로 비교하기 위해 모두 최소 0~ 최대 1 사이의 값으로 변환 하는것 Sklearn에서 제공하는 대표적인 피처 스케일링 클래스가 2가지 존재한다. StandardScaler 개별 피처를 평균이 0 이고 분산이 1인 가우시안 정규분포를 가진 값으로 변환 왜 중요한가? RBF커널을 이용하는 서포트 벡터머신, 선형 회귀,로지스틱 회귀는 데이터가 가우시안..

[Sklearn]타이타닉 생존자 예측

사이킷런으로 수행하는 타이타닉 생존자 예측 타이타닉 생존자 test,train.csv 들은 https://www.kaggle.com/c/titanic/data 링크에서 다운받을수 있습니다. 이때까지 배웠던 Numpy,Pandas API를 정리 파일을 불러서 DataFrame 형태로 변환 seaborn 라이브러리를 통해서, 데이터를 시각화 info() 함수를 통해서, dataFrame의 데이터정보를 불러옴 fillna() 함수를 통해서, Null(Nan)값을 함수 인자값으로 대체 fillna() 함수를 통해 Nan값 모두 제거 되었음을 확인할 수 있다 value_counts()를 통해, 해당 series값을 count를 할 수 있다. DataFrame 내에 Cabin 열의 값들을 한글자로 바꾸기위해서, 인..

판다스(Pandas) DataFrame의 컬럼 데이터 셋 접근

DataFrame의 컬럼 데이터 세트 생성과 수정은 []연산자를 이용하여 쉽게 가능 새로운 컬럼에 값을 할당하기 위해서는 DataFrame[] 내에 새로운 컬럼명과 값을 할당 시켜주면된다. DataFrame['col1'] = value ●DataFrame 데이터 삭제 axis = 0 일때는 , row 를 삭제( 가로줄 하나삭제) axis = 1 일때는, col 을 삭제(세로줄 즉, Atrribute 삭제) ●drop시, axis와 inplace를 잘 숙지 inplace = False 일 경우, 기존의 DataFrame값은 반영이 되지않는다. 주로, df2 = df1.drop(['co1']), axis, inplace = False) 처럼 사용 *inplace를 쓰지않아도, 디폴트는 False 기때문에 문..

# AI 이론/Pandas 2022.01.07

판다스(Pandas) 정렬, 상호변환

정렬 sort_values() 데이터 값을 오름차순 혹은 내림차순으로 정렬할 수 있는데, 이때 필요한 함수가 sort_values() 이다 ●sort_values(by = '컬럼 명', ascending = True/False) : True/False를 선택 Name,Age,Pclass를 추출후, 데이터를 Pclass,Age에 대해서 오름차순으로 정렬한다. (ascending에 대한 값을 쓰지않으면, 디폴트 값은 오름차순) DataFrame과 List,Dictionary,ndarray 상호변환 List, 1차원 배열 ->DataFrame List,2차원 배열 ->DataFrame Dictionary ->DataFrame DataFrame-> dictionary,List,ndarray 으로 변환 DataF..

# AI 이론/Pandas 2022.01.07

판다스[Pandas] DataFrame Series,Filtering 추출

DataFrame Series 추출 (series 는 앞에서, 1차원 데이터, DataFrame 은 2차원데이터) titanic_df의 Name이라는 col에 해당하는 데이터를 갖고있다. titanic_df[[]] 2차원 배열로 쓸경우는 , 그 컬럼으로 구성하는 DataFrame 반환 titanic의 크기 = titanic.shape()로 알수 있음( 891행 12열) ●info() : DataFrame내의 컬럼명, 데이터 타입 , Non-Null 의 개수, memory usage 표기 ●value_counts() : 동일한 개별 데이터 값이 몇 건있는지 정보를 제공 Series객체에서만 호출 되므로, DataFrame->Series로 변환뒤 호출

# AI 이론/Pandas 2022.01.07
1 2 3 4