데이터 스터디 60

RNN - 역전파와 한계점

RNN의 한계점 1) Vanishing / Exploding Gradients 가중치를 업데이트 시키는 Back Propagation Through TIme(BPTT)과정에서, time step이 하나씩 늘어날 때 마다, chain rule 연산도 늘어나게 된다. 아래 그림은 hidden state 벡터에서의 편미분 값을 보여주고 있다. 이때 편미분 횟수만큼 W_h가 곱해지고 있는 모습 !! ⇒ 이 과정에서 RNN의 문제점 발생 𝑊ℎ가 작을 수록(< 1) 반복적으로 곱해지는 값이 0에 가까워져 gradient vanishing gradient descent를 구하기 위해서 weight로 미분해주는 과정에서, chainrule을 사용해서, 미분값을 여러 개를 곱해주게 되는데, 이때, 만약에 입력 seque..

CNN - convolution 연산 이해하기

CNN은 이미지에 '커널 (Kernel)'이라는 필터를 이용하여 컨볼루션(convolution)을 취하는 방식으로, 필터를 이동시키면서 필터의 특성에 맞게 강조된 output(feature)를 뽑아낸다. CNN은 Neural Net과 유사하지만 이미지 데이터의 특성을 인코딩할 수 있다는 특징이 있다. 기존 DNN(Fully Connected Layer만으로 구성된 인공신경망)에서 입력 데이터는 1차원 배열 형태로 한정되기 때문에 이미지를 입력 데이터로 사용했을 때(2차원 -> 1차원 형태로 flatten 시키는 과정에서) 위치 정보가 손실된다. 반면 CNN에서는 Convolution layer를 사용하여 이미지 데이터의 형상을 유지하여 위치 정보의 손실을 줄일 수 있게 된다. 또한 Fully Connec..

07. Back Propagation - 역전파 이해하기

뉴럴 네트워크 모델을 설명하기 위한 파라미터들과, loss function, 경사하강법에 대해 이전에 알아보았다. (참고로, 뉴럴 네트워크는 우리가 알고 있는 아래의 관계망이고 이를 학습시킨 결과물이 바로 딥러닝 '모델'이다.) 이번에는 뉴럴 네트워크 모델, 즉 딥러닝의 학습과정(=파라마티 추정 방법) 에 대해 알아보고자 한다. Neural Network 잠깐 다시 짚고 넘어가자면, 인공 신경망은 입력층, 은닉층(여러 개일 수 있다), 출력층을 가지고 있다. 이 인공 신경망에서 입력 데이터(i1, i2)를 받아 최적의 출력 데이터(o1, o2)를 계산할 수 있도록, 각 퍼셉트론의 가중치(w1~w8)들을 업데이트하는 과정을 신경망 학습이라고 한다. Forward Propagation 순전파(Forward ..

[programmers] SQL 고득점 Kit - JOIN

이번에는 다섯번째 파트, join이다 # 5월 식품들의 총 매출 조회하기 FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요. SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(P.PRICE * O.AMOUNT) AS TOTAL_SALES FROM FOOD_PRODUCT AS P INNER JOIN FOOD_ORDER AS O ON P.PRODUCT_ID = O.PRODUCT_ID WHERE DATE_FORMAT(O.PRODUCE_DATE, '%Y-%m') = '2..

[programmers] SQL 고득점 Kit - NOT NULL

이번엔 not null 파트다. # NULL 처리하기 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요. SELECT ANIMAL_TYPE, IF(NAME IS NULL, 'No name', NAME) AS NAME , SEX_UPON_INTAKE FROM ANIMAL_INS SELECT ANIMAL_TYPE, case when NAME IS NULL then 'No name' else NAME end as NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID - if문으로 넣어..

[programmers] SQL 고득점 Kit - SUM, MAX, MIN

두번째 파트인 SUM, MAX, MIN이다. # 최대값 구하기 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. select DATETIME from ANIMAL_INS order by DATETIME desc limit 1 select max(DATETIME) from ANIMAL_INS - order by 한 다음에, limit해서 가장 위에 있는 애로 구하거나 - 바로 max함수를 써서 구하거나 # 중복 제거하기 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS where NAME I..

[programmers] SQL 고득점 Kit - Select문

예전에 sql코테 준비할 시기에 프로그래머스 sql키트로 많이 공부했었다. 지금은 계속 파이썬으로만 하다보니 감을 잃어서 .. 키트 문법 정리하면서 다시 감 찾아보려고 정리 ! # 아픈 동물 찾기 ANIMALS_INS 테이블에서 동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요. SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' - 데이터 추출은 select문을 사용하면 된다. - 이때 AS를 활용해 컬럼명을 다르게 설정할 수 있다. # 3월에 태어난 여성 회원 목록 출력하기 MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID,..

SAS - 데이터 요약 및 표현 (PROC FREQ, BOXPLOT)

PROC FREQ : 범주형 자료(명목형, 순서형)로 구성된 분할표를 작성하거나, 교차분석을 하기 위함 * 범주형 자료 : 관측값의 크기 보단, 포함되는 범주에 관심을 가짐.-> 도수분포표나 분할표로 표현 범주형 자료 분석 1) 적합도 검정 : 크기 n의 관측치를 m개의 범주로 분류했을 때, 각 관측치들이 각각의 그룹에 속할 확률이 알려져있는 경우, 실제로 이러한 형태대로 관측값들이 분류되었는지 검정 2) 독립성 검정 : 두개의 변수가 서로 상관이 있는가? 연관이 있는가? 서로 독립인가? 행변수와 열변수 간의 독립성 여부 검정 ( 카이제곱 통계량에 기초) EX) H0 : A와 B는 서로 상관관계가 없다 = 독립이다 H1 : A와 B는 서로 상관이 있다. 3) 동질성 검정 : 두 개의 변수의 확률이 서로 ..

SAS - 데이터 요약과 표현 (PROC PRINT, MEANS, UNIVARIATE)

데이터요약과 표현 : PROC PRINT / MEANS / UNIVARIATE / FREQ / BOXPLOT / STANDARD 1. PROC PRINT 형식 : PROC PRINT DATA = VAR (출력할 변수) BY (정렬) SUMBY (소계) PAGEBY (페이지별 출력) SUM (변수 총합 출력) WHERE (조건) 데코레이션 : NOOBS (OBS 미출력) LABEL (라벨 출력, 지정) FORMAT (출력 포맷 지정) OPTIONS (출력크기 지정) TITLE (머릿말) FOOTNOTE (꼬리말) # 예시 # 첫 3줄 출력 :PROC PRINT DATA=class(obs=3);RUN; # 관측치(obs) 제외하고 출력 :PROC PRINT DATA=class NOOBS;RUN; # ID 문..

SAS - 데이터 셋의 결합 및 관리 (merge, do-loop문, 자동변수, 외부파일 put문)

드디어 6장 !! SAS 데이터 셋의 결합 및 관리 !! 1. 세로 결합 / 가로 결합 2. 데이터셋 옵션의 사용 3. DO - END 명령문 4. 자동변수 5. 외부파일로 데이터 출력하기 6. 데이터 내보내기 마법사 # 데이터 셋 결합 : 세로 결합 & 가로 결합 @@ 세로 결합 : 두 데이터 셋을 수직적으로 결합 . 변수 기준으로 합친다 : 세로로 붙여서 밑으로 길어짐 방법은 set, drop, keep 명령문들을 써서 합쳐준다. +) 복사하는 법 : set 데이터 셋 +) 변수 부분 선택하는 법 : drop 변수명 / keep 변수명 +) 연결 : set 데이터 셋1 데이터셋2 ; set에 여러 개 넣어주기 @@ 가로 결합 : MERGE 명령문, UPDATE 명령문 + PROC SORT : 두 데이..