728x90

*본 학습 내용은 iflearn의 태블로 강의입니다.

1. 주제에 적합한 시각화 방법(1)-시간의 흐름에 따른 화면 구성하기

1-1)라인 차트

*완성본 미리보기

 

1 step) 누적매출 추이 만들기

시도가 경기도라면 매출값을 출력하고 아니면 null을 출력하는 계산식 필드를 만든다. 같은 원리로 서울 매출 계산식 필드를 생성해 준다.

경기도 매출, 서울특별시 매출을 행 선반에 올린 뒤 누계로 변경한 후 이중축&축 동기화 적용한다.

2019년 12월을 기준으로 증가 한다는 의미를 전달해주기 위해서 x축의 참조선을 선택 후 위 처럼 설정한다.

 

2 step) 누적매출

경기도 누적 매출 -> 텍스트에 삽입 후 서울 누적 매출은 떠블클릭한다. 서식을 이용하여 위 처럼 모양을 갖춘 뒤 도수 설명은 나오지 않도록 설정한다.

 

 

3 step) 대시보드 만들기

누적 매출 추이, 누적 매출을 넣은 뒤 위 처럼 정리만 간단하게 하면 완성된다.

 

1-2)영역 차트

*완성본 미리보기(1)

*완성본 미리보기(2)

 

 

1 step)

시도를 필터 적용하여 서울과 경기도만 체크한다.

마크를 영역으로 표시한뒤, 시도를 색상마크에 넣어주면 위처럼 표현이 가능하다. 경기도 VS 서울의 매출을 누계 형식으로 겹쳐서 표현했는데, 경기 따로 서울 따로 매출을 표시하고 싶다면 2 step 과정을 참고하면 되겠다.

 

 

2 step) 경기도 평균 분기별 매출

행,열 선반을 설정 뒤, 분석패널에서 평균라인을 적용해준다.

 

 

3 step) 서울특별시 평균 분기별 매출

서울매출을 행 선반에 넣어 준 뒤 색상은 오렌지로 설정한다.

 

 

4 step) 경기도 평균 분기별 매출(2) ->평균 매출액 텍스트만 출력

위 워크시트에서 계산식 필드를 사용하여 경기도 평균 금액을 구한다.

열 선반에 있던 연속혀 분기를 ctrl잡고 드래그 하면 아래와 같이 자동으로 수식이 생긴다.

자동으로 생긴 수식에 : sum([경기도 매출]) 을 입력한 후 맨 앞에 AVG을 붙이면 평균 금액을 알수있게 된다.

계산식이 만들어 졌으면 열 선반의 분기는 버리고 방금 만든 계산식 필드를 텍스트에 넣는다

경기도 분기별 평균 매출이 출력된다. 텍스트 크기 및 레이블 편집을 통해서 정리를 해준다.

이 과정을 서울특별시에도 똑같이 적용한다.

 

 

5 step) 서울특별시 분기별 평균 매출(평균 매출액 텍스트만 출력)

경기도 분기별 평균 매출과 같은 과정으로 만들어 준다.

 

 

6 step) 대시보드 만들기

각 분기별 배출 그래프를 넣은 뒤 좌측 하단의 부동을 클릭한다.

경기도 평균 분기별 매출 과 서울특별시 평균 분기별 매출을 그래프위에 올려준 뒤 알맞게 크기 변경해준다.

 

 

1-3) 막대차트

*완성본 미리보기

 

 

1 step) 서울특별시 분기별 매출

평균이상, 이하에 따른 색상 구분을 하도록 아래 계산식 필드를 만들도록 한다.

계산된 필드를 색상 마크에 넣은 후 평균라인을 적용하면 쉽게 구분 할수 있다. 막대들이 서로 붙어 있는 이유는 '분기'가 연속형이기 때문에 불연속형으로 변경하면 떨어뜨릴수 있다.

분기를 불연속형으로 변경시 위 처럼 변경 가능하다.

 

 

2 step) 고객 세그먼트별 누적 매출

마크의 고객 세그먼트 -> 정렬 클릭 후 위 내용처럼 변경한다. 매출 합계 기준으로 오름차순 설정 후 닫아 준다.

y축을 구성 비율로 변경해서 다르게 표현할수도 있다. 아래를 참고해 보자

매출의 합계에 대한 구성 비율로 변경이 가능하다.

 

 

 

 

2. 주제에 적합한 시각화 방법(2)-순위 기반 비교

 

2-1) 막대차트

*완성본 미리보기

MTD VS PMTD 두 개를 비교해 보고, 특정 날짜를 기준으로 색상도 표현해 본다.

 

 

1 step) MTD,PMTD 만들기

현재 값은 2021-06-30일로 설정하고 나머지도 이미지 처럼 맞춰준다. 매개변수 표시 클릭 후 표현방식을 '입력'으로 변경한다.

MTD 계산식 필드를 만들어 본다.

p.날짜가 2021-06-30이라면, MTD은 같은 달이면서 30일 이전 날짜들을 모두 보여준다. 즉 6월1일 ~30일까지를 보여주는 계산식이다. 이를 필터에 넣는다.

저번 시간에 배웠던 것 처럼 필터를 사용하면 속도가 느려질수 있기 때문에 되도록이면 필터는 지양하는 편이 좋다. 따라서 아래 이미지처럼 계산식 필드를 만들면 필터가 필요 없어진다

c.MTD를 마크의 합계(수익)와 교체한다.

PMTD 계산식 필드를 만들어 본다.

MTD가 당월에 대한 수익이였다면 PMTD는 전월에 대한 수익이다.

 

 

2 step) MTD & PMTD를 활용한 완성본 만들기

이제 MTD & PMTD을 이용하여 새 워크시트에 본격적으로 그래프를 그려보자.

위 처럼 설정을 하면 그래프가 나타난다. 여기서 순위를 넣고 싶다면 계산식 필드를 이용하면 된다.

연속형 -> 불 연속형으로 변경후 레이블 마크에 넣으면 순위를 볼수 있게 된다. 더 나아가서 순위에 단위를 계산식을 통해 적용해 보자.

해당 접미사 계산식을 레이블에 넣어준다.

머리글 표시 해제와 레이블 위치 조정을 하면 아래와 같이 깔끔하게 만들수 있다.

이제 여기에 PMTD(전월)을 넣어서 비교하도록 만든다.

PMTD를 열 선반에 넣은 후 마크의 합계(c.PMTD)에서 모든 값을 빼주고 간트차트로 변경한다.

PMCD를 이중축으로 합치면 MTD가 원으로 변경 되는데, 이럴땐 다시 막대로 변경해준다.

축 동기화를 해준다. 이로써 전월 대비 당월에 얼만큼 수익이 증감했는지 한눈에 알수 있다.

 

2-2) 라인차트

*완성본 미리보기

1 step) 제품 중분류별 넘버

기본 셋팅으로 행,열 선반과 측정값을 위 내용처럼 넣는다. 단 할인율은 평균 집계로 설정한다. 그리고 제품 중분류에서 수익기준으로 정렬을 하게 되면 위와 같아진다.

 

 

2 step) 연간 수익기준 순위

행 선반의 합계 수익을 순위로 변경 하고 '다음을 사용하여 계산' -> '제품 중분류' 를 클릭한다. 그러면 제품 중분류별 순위가 매겨진다.

눈금의 반전을 선택해서 1위가 맨위로 오게끔 한다.

합계(수익)(2)의 순위도 반전을 시킨다.

합계(수익)(2)의 레이블에 합계(수익)을 넣으면 순위가 표시된다. 레이블의 세로 -> 가운데 정렬을 누르면 위 처럼 원 가운데 순위가 표시된다.

 

 

3 step) 대시보드 만들기

크기는 자동으로 설정하고 전체보기로 크기를 조정한다. 제품 중분류에 마우스 오바 했을때 순위가 나타나는 하이라이팅을 적용한다.

필요한 모든 설정을 완료 후 확인을 클릭한다.

 

 

2-3) 텍스트

*완성본 미리보기

매출을 기준으로 시군구별 순위를 매긴다.

 

 

1 step)

시도필터는 서울만 체크 하고 매출과 시군구는 위 처럼 설정해준다.

순위를 매기기위한 계산식 필드를 만들어준다. -> 불연속형으로 따로 설정해준다.

순위를 나타낼때 '01위' 형식으로 표현하기 위해서 그림처럼 설정해준다.

 

 

 

 

 

3. 데이터 시각화를 더 돋보이게 만드는 요소(1)

3-1) 색상

*완성본 미리보기

 

 

 

1 step) 2020년 수익대비 워크시트 생성하기

2020년 수익과 2021년 수익을 기준으로 색상을 비교해보자.

하나의 덩어리로 만들기 위해서 집계방식을 sum으로 설정한다 2021년 수익 계산식 필드도 위 처럼 만들어 준다.

2020수익 대비를 만들어 준 뒤, 백분율 소수점 첫째자리까지 설정해준다.

2020년 수익 대비을 행 과 색상에 넣어주면 된다.

 

 

 

2 step) 월별 수익 비교

가운데 값 0을 기준으로 +,-성장 두가지로 색상을 입힐수 있다. 레이블에 2020수익 대비를 넣으면 전년도와 얼마나 차이가 났는지 볼수 있다. 위 데이터를 이용하여 계절별 수익비교를 만들어 보자.

 

 

 

3 step) 계절 수익 비교

Datepart는 불연속형태로써 날짜 -> 정수로 변경해주는 함수이다.

계절을 열 선반에 넣으면 계절별로 수익 비교 수치가 나온다. 가을 부터 나오기 때문에 이를 수정하기 위해서는 기본 속성의 정렬을 활용한다.

정렬기준을 수동을 하고 봄,여름,가을,겨울로 수정해준다.

 

 

 

 

4 step) 지역 수익 비교

열 선반에 지역을 넣는다.

 

 

 

 

5 step) 시도 수익 비교

지역뒤에 시도를 넣는다.

 

 

 

6 step) 대시보드 생성

세로개체를 넣은 뒤, 만들어 놨던 워크시트 네개를 차례대로 넣는다. 전체보기를 통해 간격 동일하게 설정시킨다.

 

 

 

3-2) 모양

*완성본 미리보기

 

1 step)

아이콘을 만들기 위해서 먼저 위 계산식을 만든다.

마크를 모양으로 변경 하면 강원도만 다른 모양을 가진다.

적용할 모양을 다운 받아서 위 경로에 저장해준다.

sad-울고 있는 모양 차례대로 선택 후 모양 할당을 눌러준다. 스마일도 같은 과정을 반복 한 후 확인을 눌러준다

2020 수익 대비_Icon을 색상마크에 넣으면 위 처럼 표현이 가능해 진다.

 

 

+2021-08-30 학습내용 추가합니다.

 

4. 데이터 시각화를 더 돋보이게 만드는 요소(2)

4-1) 맵에 다중 마크 계층지원

*완성본 미리보기

지도에 대한 파이, 시도에 대한 파이, 전체종합에 대한 파이 이렇게 세가지로 구성되어 있다. 좌측 상단 페이지 란에 분기가 있다. 이렇게 되면 분기별에 따른 차트를 변경하면서 볼수 있다. 변경하는 곳은 가장에 위치한 분기(주문 일자)의 화살표를 클릭하면 된다.

 

 

 

맵에서 표현할수 있도록 기준점을 임의로 계산식을 이용하여 만들어 준다. 맵 형태로 표현 할수 있는 함수인 makepoint(위도,경도)를 사용해 준다. 임의로 0,0 위도경도를 위처럼 넣어준다. 만들어진 계산식을 보면 데이터 유형이 지구본 모형 즉, 맵 형태로 만들어 졌음을 알수있다.

이를 떠블클릭하면 0,0인 아프리카 해안쪽을 가리키게 된다. 마크 상태를 맵이 아니라 파이로 변경한다.

마크상단 빈 여백에 min(1)를 입력한다.

마크 상태를 세부정보가 아닌 크기로 변경한다. 이렇게 되면 파이의 크기를 조절할수 있다. 왜 굳이 min(1)를 만들었을까?

기존에 있던 것에다가 크기를 최대로 올려봐도 저 정도 밖에 커지지 않는다. 더 크게 하기 위해서 min(1)을 이용 해야 한다. 최소값을 1로 정함으로써 설정값 자체를 키우는 것같다. 다음으로는 지역별로 색상을 입혀준다. 지역필드 -> 색상, 매출 -> 각도 마크에 각각 넣어준다.

지역의 정렬 기준은 위처럼 설정해준다.

이렇게 만들어진 파이에 안에 시도별 계층을 추가 해준다.

아까 만들었던 기준 포인트 필드를 드래그하여 맵 위에 옮기면 위 그림처럼 마크 계층 추가가 뜬다. 아이콘 위에 해당 필드를 넣어준다. 그러면 기준 포인트(2)에 대한 마크가 생성되고, 여기에 시도별 정보를 넣어주면 계층 추가가 완성된다.

지역을 색상마크에 넣어 준 뒤, 시도 필드를 레이블에 넣는다.

지역과 시도 이름이 겹쳐서 지저분해 보인다. 시도별 이름을 모두 두자리로 깔끔하게 만들기 위해서는 계산된 필드를 통해 해결할수 있다.

case 함수를 이용하여 두 자리로 통일해줄 수 있다. 이를 레이블에 넣어준뒤 정렬기준 필드, 내림차순, 필드명은 매출로 정렬기준을 설정한다.

매출을 각도에 넣어주면 오른쪽 그림처럼 만들어진다.

기준 포인트 계층을 추가 한뒤 매출을 레이블에 넣어주면 가운데 매출 합계를 볼수 있다. 뒷 배경에 지도 그림을 제거할려면 아래 처럼 실행해준다.

없음을 클릭 한뒤에 배경 서식에 가서 아래처럼 적용해 준다.

행,열 선반에 있는 머리글 표시 해제 후, min(1)의 도구 설명에 포함을 해제 시키면 마우스 오버 시 나타나는 설명들을 제거할수 있다. (기준 포인트 1~3모두 해제)

각 분기별로 흐름을 살펴 보기위해서 주문일자를 페이지에 넣어준다 이때, 분기형식으로 넣는다. (연속형)

오른쪽에 페이지 컨트롤러가 생긴다. 재생 버튼을 눌러주면 분기별로 흐름을 볼수 있다.

가운데 매출 값을 각 년도의 분기별 매출 값을 누계 형태로 바꿀수 있다. 즉, 각 년도의 분기별 합계를 가운데에 표시하겠다는 뜻이다.

기준포인트 1~3의 매출를 누계 형식으로 바꾼 뒤,

테이블 계산에서 특정 차원 -> 주문 일자의 분기를 모두 클릭 해준다.

 

 

4-2) Mapbox활용

*완성본 미리보기

맵박스와 연동하여 표현 할수 있도록 해보자.

7개의 템플릿이 있다. 사용하고자 하는 템플릿을 선택해 준다.

원래대로 돌아가기 위해서 style을 선택한다.

태블릿에 적용하기 위해서 위 그림처럼 클릭해준다.

시도를 맵 형태로 변경해 준다. 시군구도 같은 과정을 거친다. (카운티)

이 둘에 대한 계층을 만들어 준다. 이름을 '지도'라고 설정한다.

시군구를 떠블클릭하면 위 지도처럼 나온다.

맵 관리를 통해 맵 박스를 추가 해준다.

복사한 URL을 넣어주면 된다.

좀더 자세히 보기 위해서, 시도 필터를 서울만 해당하여 올려준다.

마크에 순차적으로 넣어주면 새로운 맵 형태에서 값을 표현 할수 있다.

 

 

5. 우수한 대시보드 구성하기

5-1) 통일성을 갖추기

*완성본 미리보기

상단에 특정 연도를 클릭하면 아래 트리맵에서 각 시도별 매출값이 나오도록 하는 대시보드이다.

트리맵의 특정 지역을 또 클릭하면 위 처럼 막대그래프를 볼수있다. 위 그림은 경기도의 각 시군구별 매출값을 보여준다.

 

 

1 step) 상단에 위치할 하이라이트 테이블 만들기

하이라이트 테이블을 선택한다.

위 처럼 서식으로 정리를 해주면서 마무리 해준다.

 

 

2 step) 트리맵 만들기

시도별 매출을 위 트리맵으로 간단하게 만들어 줄수 있다.

 

 

3 step) 시군구 별 막대 차트 만들기

시군구 중첩의 합계 매출을 눌러주면, 앞에 있는 시도 까지 고려하여 시군구별 매출 기준으로 내리차순 정렬이 된다.

매출필드를 각각 레이블과 색상에 넣어준다.

 

 

4 step) 대시보드 만들기

각 워크시트를 위 처럼 배치해 놓는다. 위에서 아래로 세부적인 정보, 왼쪽에서 오른쪽으로 세부적인 정보 흐름을 만들어 놓는 것이다.

상단의 연도 매출을 클릭하면 시도별 매출이 변경되도록 설정 해준다.

모든 값 제외를 선택함으로써 선택된 것 말고는 모두 제외를 해준다.

특정 시도를 한번 클릭 후 다시 클릭하면 시군구별 매출 공간이 아예 사라져야 한다. 이를 위해서 아래와 같은 과정을 거친다.

가로개체를 가장 왼쪽에 넣어준다. 그 공간에 시도별 매출을 넣어준다.

시군구별 매출을 시도별 매출 오른쪽에 넣어준다.

그러면 위 와 같이 표현된다. 시군구별 매출 제목을 숨기기 누르면

사라지는 것처럼 꾸밀수 있다.

 

 

 

5-2) 심플하고 사용자 관점에서 꼼꼼하게 가이드하기

*완성본 미리보기

각 고객별 수익과 할인율 상관관계를 scatter plot 차트로 표현해본다. 그리고 수익이 가장 높은 고객과 낮은 고객의 이름을 표시해준다. 또한 상단에는 각 고객에 대한 정보를 표현해 보도록 한다.

 

 

1 step) 수익과 할인율의 상관관계 그리기

할인율의 집계 방식을 평균으로 변경해준다. 그리고 숫자형식을 백분율 둘째자리로 설정한다.

행,열선반에 각각 할인율과 수익을 넣고, 고객명을 세부정보로 입력해준 뒤 색상에 수익을 넣어서 수익별 구분이 가도록 해준다.

최고 수익과 최저 수익의 고객명을 표기해주기 위해서 위 처럼 계산식필드를 생성해준다. 이때 then [고객명] 으로만 적어주면 에러가 난다. window_max 같은 집계 함수를 사용했을때 고객명도 집계방식으로 바꿔줘야 한다(이부분은 이해가 잘 안감) 차원에 있는 값을 집계로 변경해주기 위해서 ATTR을 적용해준다.

위 처럼 변경해주면 최고 수익과 최저 수익 고개명만 알수 있다.

 

 

2 step)

각 고객별 가장 처음 주문한 날을 추출하고자 한다. 이를 추출하기 위해서 계산된 필드를 만들어 준다.

행 선반에 넣은 뒤 불 연속형으로 적용한다. 이와 반대로 위 계산된 필드를 max로 고치면 '최근 구매일'을 구할수 있다. 마찬가지로 행 선반에 넣어준다.

1 step 에서 최저수익을 기록한 고객 정보만 보이도록 하기 위해서 집합을 활용한다.

고객명의 집합을 누르고 이서준 고객을 선택한다. 열 선반에 넣으면

in, out 아래 이미지처럼 표시가 나온다.

out 부분은 숨기기를 해주고, IN 머리글도 숨기기 해준다.

나머지 값을 하나씩 넣어준다. 수익기준으로 순위도 표현해주기 위해서 계산된 필드를 아래처럼 만들어준다.

만들어진 계산된 필드도 넣어준다.

위 그림처럼 정리를 해준다.

 

 

 

3 step) 대시보드 만들기

부동인 상태로 고객별 정보를 옮겨준다.

텍스트 개체를 하나 만들어서 첫구매일, 최근 구매일을 만들어준다.

집합값 변경을 통해 특정 고객의 정보를 볼수 있도록 한다.

 

 

 

6. 데이터 구하기

6-1) 공공 데이터 활용하기

국가통계포털 사이트 이동

상품군별의 합계와 판매매체별의 계를 제외해준다.

합계 선택 -> 제외 선택 후 확인버튼 누른다.

같은 원리로 계를 제외해준다.

열 데이터 모두 선택 후, 피벗을 클릭한다.

위와 같이 표현방식이 변경되고, 피벗 필드명을 날짜 타입을 변경해준다. (상단의 ABC를 날짜로 ) 날짜 타입으로 바뀌다 보니까 일자가 임의로 추가가 된다.

컬러명은 아래와 같이 수정해준 뒤 시트로 이동한다.

위 처럼 만들어 준 뒤, 새 워크시트로 이동한다.

데이터 원본의 거래액 단위가 백만원이였다. 단위까지 적용시켜서 레이블에 넣어보자.

서식에서 숫자는 두자리로 변경한다. 2017년에는 각각 3.92조, 3.39조 였는데 2021년에는 그 격차가 크게 벌어졌음을 볼수있다.

 

 

6-2) 구글 시트 활용하기

위와 같이 주식데이터를 가져올수 있다.

옆 칸에는 close 대신 open을 넣어서 데이터를 가져온다.

같은 원리로 row,high를 불러온 후 태블로에서 불러오기를 실행해 보자.

태블로의 자세히 -> 스프레시트 클릭한다. 본인의 계정 클릭 후 연결해주면 된다.

Date1,2,3는 숨겨준다.

date필드의 시간은 활용하지 않으므로 날짜로 타입을 변경시켜서 제외시켜 줄수 있다.

 

 

+2021-08-31 학습내용 추가합니다.

7. 분야별 대시보드 만들기(1)-인구 데이터

7-1) 우리나라 인구수 대시보드 만들기

연령별 인구통계 자료를 다운받는다.(피벗을 활용하여 위 처럼 만들어 준다) 피벗 필드명의 성별과 나이를 분할해 준다.

피벗 필드명의 오른쪽 클릭 하면 사용자 지정분할이 있다. 스페이스 바 기준이며 분할해제는 전체로 설정해준다.

피벗 필드명 - 분할3 을 보면 '이상'이 있는데 이를 분할2와 합쳐준다. 그러기 위해선 계산식 필드가 필요하다

피벗 필드명- 분할 2의 오른쪽 클릭-> 계산식 필드에 가서 아래 처럼 수식을 적어준다.

계산된 필드 적용 후, 위 그림처럼 필요없는 컬럼 정리 및 필드명 변경해준다. 행정기관코드는 숫자로 되어 있는데 이는 문자열로 변경해주면 아래그림처럼 된다.

해엉기관을 보면 시도와 시군구 같이 병합되어 있는데 이 역시 분할해준다. 방법은 위에서 했던 분할과 같다.

분할이 3개로 나뉘어 진다. 컬럼명을 아래와 같이 변경해준다.

일반구는 시군구보다 더 하위 개념이다. 일반구는 사용하지 않기 때문에 일반구가 없는 지역만 필터링을 아래처럼 진행한다.

값이 없는 빈칸을 선택 후 확인 클릭한다.

시군구가 없는 서울특별시는 25개구를 모두 합산한 결과 이기 때문에 이 역시 필요없다. 이를 단순히 필터링을 적용하면 안된다. 왜냐하면 세종특별자치도는 시군구가 없기 때문에 사라질수 있다.

이를 해결하기 위한 방법은 행정기관코드를 이용하는 것이다. 맨 앞자리의 두자리는 시도에 대한 부분이며 그 뒤의 두자리는 시군구에 대한 두자리이다. 즉, 필터링을 뒤에 연속된 8개의 0이 있는 것에만 제외 처리를 하면 된다.

0 여덟개가 끝 부분에 해당되는 경우 '제외'처리하는 과정이다. 또한

출장소가 포함된 곳은 우리가 원하는 데이터가 아니므로 제외처리해준다.

출장소가 포함된 것은 제외 처리를 하고 확인을 눌러준다.

모든 과정이 정리된 데이터 모습이다. 9618의 행을 가지고 있다. 본격적으로 워크시트로 이동해 보자.

 

 

1 step) 시도, 시군구를 맵으로 표현하기

시도를 지리적 역할의 '시/도'로 변경해준다. 시군구는 '카운티'로 변경한다. 시군구를 드래그 하여 시구 위에 위치하여 계층을 만들어 준다. 이름은 지도라고 설정해준다.

우측 맨아래 알수없는 항목을 선택 후 위치편집을 클릭한다.

세종특별자치시가 시도명은 있지만 시군구명은 따로 표시가 없기 때문이다. 이럴땐 인식할 수 없음 항목에 아래 처럼 입력하고 확인눌러준다.

확인을 누르면 보이지 않았던 세종특별자치시가 보이게 된다.

인구수를 색상에 넣고 색상표를 위처럼 변경한다. 그리고 반전을 클릭 후 적용을 선택해준다.

파란색이 너무 많이 있는 것 같다. 좀더 구분을 명확하게 하기 위해서 고급버튼을 클릭한다.

 

가운데 값을 인구 20만을 설정해준다. 20만을 기준으로 색상을 대비하도록 한다.

다른 나라는 보이지 않도록 투명도 100% 설정해준다.

 

 

 

2 step) 남녀 인구 비교

위 방식보다는 남녀가 확실히 분리되어 비교할수 있도록 해준다. 그러기 위해서 계산된 필드를 아래처럼 만들어준다.

인구가 남자라면 마이너스 인구수, 여자라면 양수로 표현해준다. 해당 필드를 열 선반에 대체하여 넣어주면 아래와 같이 변한다.

하지만 남자 부분은 마이너스 값으로 표현되는 문제점이 있다. 이를 해결해보자.

아래 머리글 서식에서 위 처럼 설정을 완료 후 사용자 지정으로 넘어간다.

사용자 지정에서 위처럼 변경해준다. 이러면 모든 값들이 절대값으로 표현된다.

 

 

3 step) 대시보드 만들기

시군구별 인구수 지도에서 클릭하면 오른쪽 성별 연령별 인구수가 반응하도록 설정해본다.

시군구별 인구수 지도의 필터를 선택만 하면 된다.

 

 

 

 

8. 분야별 대시보드 만들기(2) - 주식데이터

8-1) 네이버 금융에서 데이터 수집하기

시가총액이라는 맨 위에 테이블과 그 바로 아래 테이블은 해당되는 회사들의 주식데이터 테이블이 있다. 태블로를 통해서 두번째 테이블을 가져오도록 한다.

2번째 테이블의 4번째 페이지까지 긁어 오도록 해보자.

 

 

 

1 step) 구글시트

네이버 시가총액의 URL을 넣은 뒤, 형식은 table로 가져오고, 두번째 테이블에 해당되는 정보를 가져오기 때문에 마지막에 2를 적어준다.

1페이지에 대한 50개 기업을 볼수 있다. 해당 페이지를 복제해준다. 복제된 시트를 2페이지라고 변경해준다.

네이버 금융의 2페이지 URL을 복붙하여 enter 하면 내용이 바뀐다. 이를 반복하여 4페이지까지 만들어 준다.

 

 

 

2 step) 태블로에 적용하기

1페이지 밑에 나머지 데이터를 이어 붙이려면 유니온으로 적용해야 한다. 위 그림처럼 2페이지를 드래그하여 겹치면 유니온이라고 뜬다.

위 그림 순서대로 적용하여 4페이지까지 이어 붙이면 완성된다.

하지만 이보다 더 빨리 적용하는 방법은 따로 있다.

위 방법으로 빠르게 만들수 있다.

테이블 이름, 토론실 컬럼은 숨기기 처리하고 워크시트로 이동한다.

3 step) list 워크시트 만들기

N은 1~200까지 있다. 이를 차원으로 옮긴 뒤 사용하도록 한다. 또한

등락률은 문자열에서 숫자(실수)로 변경한뒤 측정값으로 변환을 눌러준다. 숫자형식은 백분율 소수점 둘째자리 까지 설정하며 사용지 지정에서는 아래처럼 지정해준다.

외국인 비율 컬럼도 소수점 둘째자리까지 표현되도록 수정해준다.

전일비를 보면 아이콘의 상승,하락 표시가 없다. 이를 해결하기 위해서 계산식을 아래처럼 만든다.

제목 전일비는 기존의 전일비와 구분하기 위해서 한칸 띄어서 저장해준다.

새로만든 전일비를 넣어준다. 현재가를 맨 앞에 넣고 싶다면 현재가를 차원 값을 변경해주면 된다. 이를 위해서 계산된 필드를 아래처럼 만들어준다.

해당 현재가를 전일비 앞에다 놓아준다.

 

 

 

4 step) 페이지 만들기

4페이지까지 만들기 위해서 매개변수를 활용해 준다.

위 그림 처럼 정리된 내용에서 보고 있는 화면과 보지 않는 화면에 대해서 색상을 달리하여 구분하도록 해보자.

만든 계산식 필드를 색상에 넣으면 현재 페이지에 색상이 입혀진다.

 

 

 

5 step) 대시보드 만들기

페이지 버튼을 누르면 변경되도록 만들어 준다.

fp. fage Number를 List워크시트 필터 안에 참으로 설정해준다.

 

 

 

 

9. 분야별 대시보드 만들기(3)- 유튜브 데이터

 

1 step) 유튜브 데이터 수집

안내된 URL로 들어가서 here를 클릭한다. 제공된 영상링크들을 스프레드 시트에 복붙한다.

해당 URL를 가지고 데이터를 수집하려고 한다.

각자 구글 계정 로그인 후 unsafe부분을 클릭한다.

싫어요 정보도 추가해 보자.

아무 곳에 클릭 후 ctrl+v -> like 검색

해당 부분을 복붙하여 아래처럼 싫어요도 추가한다.

dislikes를 주석에도 추가해준다. 그리고 상단에 있는 실행버튼을 클릭한다.

해당 오류가 뜬다. 컬럼은 like 까지 6개 뿐인데 싫어요 까지 7개를 가져오려고 하니까 매칭이 안되서 발생한 오류인 것이다.

6으로 적혀 있는 곳을 7로 변경해준 뒤 실행 선택하면 된다.

컬럼명을 dislikes로 변경해준 뒤 태블로로 불러와 준다.

 

 

 

2 step) list 생성하기

필요없는 컬럼은 숨기기 처리 한 후 시트로 넘어간다.

비디오 타이틀을 클릭하면 유튜브 페이지로 이동하게끔 설정해본다.

행선반의 비디오 링크를 세부정보에 넣는다.

 

 

 

3 step) 조회수별로 트리맵 생성하기

두개 선택 후 트리맵을 클릭한다.

view를 도구 설명에 넣어서 마우스 오버 했을 시 정보가 나오게끔 설정한다. 이때 구성 비율로 표현되게끔 퀵 테이블 계산에서 수정해준다.

 

 

 

4 step) 대시보드 만들기

왼쪽의 트리맵을 클릭하면 오른쪽 list에 해당되는 정보가 하이라이팅 되는 작업을 진행한다.

왼쪽은 조회수 기준으로 정렬이 되었지만 오른쪽은 타이틀을 기준으로 정렬이 되어 있다. 정렬이 서로 안맞는다.

view 컬럼에 내림차순을 클릭하면 정렬이 맞춰진다.

오른쪽 list의 타이틀을 클릭하면 해당되는 영상 페이지로 이동하게끔 만들어 준다.

해당 링크를 클릭하면 페이지로 이동하게 된다.

 

728x90
728x90

*실습링크

2021.08.26 - [Data 일기] - 2021-08-26(딥러닝 수학 11_mini batch & for one sample-Theory)

 

2021-08-26(딥러닝 수학 11_mini batch & for one sample-Theory)

1. mini batch 3번의 iteration 학습 과정을 보려 봤을 때, 각 cost function에 projection 방향으로 다가가고 있다. interation 돌릴 때마다 cost function이 달라진다는 점 헷갈리지 말아야 한다. 계속 intera..

ghdrldud329.tistory.com

 

 

1.Single-variate Linear Regression (y= ax+b)

-딥러닝 수학 1~8까지는 y =theta*x에 대한 내용을 학습했다. 지금부터는 y= theta1*x+theta0에 대한 학습을 진행한다. 오늘은 그 중에 Loss function의 변화와 그에 따른 Gradient Descent를 알아본다.

bias term이 추가가 되면서, loss에 대한 하나의 theta 함수가 아니라 theta1,0에 대한 함수 즉, 편미분과 gradient가 필요해진다.

loss 자체가 theta1,0에 대한 함수이기 때문에 gradient를 적용한다. gradient는 각각의 편미분을 벡터로 만든 형태이기 때문에 위 처럼 만들수 있다. cost도 theta1,0에 대한 함수이기때문에 같은 과정을 거친다.

각 theta로 미분했을 때, 차이점은 x가 있느냐 없느냐 이다. 앞으로 x가 어떤 차이를 보여주는지 배우게 될 것이다.

Loss를 이용한 theta 업데이트 식 같은 경우에는 위 와 같이 표현이 된다. theta0은 x가 없는 상태에서 업데이트가 된다는 걸 인식해야 한다.

cost도 각 partial Derivatives를 구하면 위와 같다.

cost의 partial Derivatives를 이용하여 gradient Descent method까지 구할수 있다.

Parameter 가 어떻게 update되는지 loss 부터살펴보겠다.

예전에 배웠던 내용과 흡사하다. 단지 bias가 추가 되었을 뿐인데, 왼쪽처럼 x가 없기 때문에 더 간단한 모양을 가진다. 이를 자세히 살펴보겠다.

실제값이 예측값보다 큰 경우, y^ = theta1*x+ theta0 에서 x는 변하지 안하고 theta0만 증가하므로 결국 예측값도 커져서 실제 y값과의 차이가 줄어들게 된다. 반대로 theta0이 줄어 들면 예측값도 줄기 때문에 y<y^ 인 경우에선 y-y^의 차이가 줄어들게 된다.

 

2.Loss function

y=x+1이 있을때, 가장 이상적인 모양은 왼쪽 그림일 것이다. 어떠한 initial theta가 주어지든간에 (1,1)로 예쁘게 수렴되는 형태를 바란다. 하지만 현실은 그렇지 않다

이쁜 종 모양을 가질려면 theta1**2 + theta0**2의 형태의 이차식을 가져야 한다.

하지만 현실은 크게 다르다. 위 식을 전개하면 복잡한 형태를 볼수가 있게 되는데 일단은 파란색 박스가 쳐진 곳을 집중적으로 보도록 해본다.

(1,2)일때는 이쁜 모양을 갖지만, 본격적으로 x**2가 1이상의 값을 가지게 될수록 위아래가 길쭉한 모양을 갖게 된다. 즉, theta1**2 에서 x**2만큼 곱해지기 때문에 theta1에 더 민감한 반응을 하게 된다. 그림에서 가로가 theta1을 나타내는데, 그림에서 보듯이 가로에 변화가 더 심한 걸 알수 있다.

산과 비교하자면 등고선이 일정한 간격으로 펼쳐진 산 정상에서 지상까지 가는데 큰 무리가 없이 내려갈수있다. 왜냐면 간격이 일정하고 급격한 경사가 없기 때문이다. 하지만 오르녹 그림을 보면 땅에 갈수록 등고선의 간격이 점점 좁아진다. 즉 급경사, 변화가 많아진다는 의미이다.

그래서, theta0이 변화해서 얻는 loss양보다는 theta1의 변화에 따라 얻는 loss양이 더 크다(민감하다).

x=1 일 경우 어느쪽으로도 기울어져 있지 않은 예쁜 모양을 갖고 있다.

x=2 일 경우, 한쪽으로 길쭉한 모양이 만들어 지면서 균형을 이뤘던 모양이 점차 변형되기 시작한다.

theta1에 대해서 -2 -> -1 로 갈때 급격한 변화가 발생한다.

반면 theta0에 대해서도 -2 -> -1로 변화가 일어나도 거의 같은 선상에서 움직이는 걸 알수가 있다. 즉 loss 변화량이 적다는 것이다. 이번엔 극단적으로 x값을 늘려보겠다.

theta1이 변화할때는 급격하게 떨어지지만 theta0이 변화할땐 거의 변화가 없게 된다. 결론적으로 theta들의 학습 속도의 차이가 나버리게 된다는 것이다. 아래 그림을 통해서 이해해보자.

왼쪽처럼 최적의 경로로 빠르게 학습 되는 것이 아닌 오른쪽 처럼 theta1이 빠르게 먼저 학습이 된 후에야 theta0이 천천히 학습이 된다. theta1은 민감한 부분이기 때문에 먼저 반응을 하게 된것이다. 이런 상황이되면 전체적인 학습 속도가 느려지게 된다.

더 극단적인 예시를 통해 알아보자

왼쪽그림처럼 두 theta간의 차이가 두드러진다. 어쨌든 최종적으 학습이 잘 진행되어 가고 있기 때문에 다행이라 볼수 있다. 진짜 문제는 오른쪽 그림과 같을 것이다. weight 와 bias의 학습속도 차이가 난다는 것은 같은 lr이라 하더라도 theta1이 발산 될 확률이 커지게 된다. (위 두 예시그림은 lr이 동일하다)

문제점은 여기서 그치지 않는다.

-2xytheta1, -2ytheta0과 같은 것은 평행이동과 관련 된 것이라서 큰 영향을 주지 않는다. 바로 2xtheta1 * theta0이 큰 영향을 준다. 구체적으로 어떤 영향을 미치는지 살펴본다.

x의 변화에 따른 cost 함수의 모양을 비교해 본다. theta1*theta0 같은 경우는 길쭉한 형태의 축을 결정하는 요소이다. 그래서 값이 커질수록 한쪽 방향으로 길어지는 모습을 볼수 있다. 극단적인 예시를 통해 자세히 알아본다.

값이 더욱 커질수록 극단적인 cost fuction을 갖는다. 이해를 돕기 위해 차례대로 3차원 그림을 살펴보자.

theta1*theta0이 아예 없을 경우엔 균형잡힌 밥그릇이 된다.

0.6을 줬을때 한쪽 방향으로 눕는 형태로 변하게 된다.

 

1.0을 줬을때 한쪽 방향으로 더욱 눕는 형태로 변하게 된다.

2가 됐을땐 아예 드러 눕는 형태가 된다. 일직선으로 보이는 것이 한쪽방향으로 펴진 축을 나타낸다. 여기서 알수 있는 점은 학습의 방향이다. 이는 스케이드 보드를 타는 것과 같다. 스케이드 보드는 U모양이며 사람들은 맨 위에서 출발한다. 각자 출발점의 위치는 다르겠지만 결국은 모두 쭉 펴진 축 선 안에 빨리 도달하게 된다. 쉽게 말해서 U의 바닥부분(기울기가 없는곳)이다. 이는 딥러닝에도 똑같이 적용된다. 기울기가 가파른 곳 방향으로 먼저 학습이 되며, theta들간의 학습 차이가 발생하면 발산할 확률이 커지게 된다.

모양을 변하게 만드는 theta1*theta0이 어떤 문제점을 야기 시키는지 자세히 알아보자.

0.2만 줘도 다이렉트로 찾아 가는데, 1만 되어도 오른쪽 처럼 차이가 난다.

1.6인 왼쪽 그림은 점점더 가파른 형태를 보이며, 오른쪽은 정사영 시키는 모습을 보인다. 정사형 처럼 일직선으로 학습된 것은 target theta1,0 에 가까워 지지 않는다. 오른쪽 그림을 보면 모두 대각방향을 일직선이다. 즉, 가운데로 보이는 등고선이 없다는 점이 큰 차이점이다. 오른쪽은 비록 target theta1,0 정중앙에 미치치는 못했지만 등고선, 즉 기울기가 있기 때문에 어찌됐든 target을 향해 가고 있다.

이번엔 파란박스을 모두 제대로 적용했을 때 cost function 모양을 보겠다.

x가 커질수록 거의 일차식에 가까운 모양을 보이게 된다. 100은 U모양에서 더울 폭이 좁은 형태가 될것이다. 그래서 위에서 바라 봤을때 마치 일직선 처럼 보일수 있다.

x 절대값이 커질수록 y축과 같은 방향을 보고 있는 형태로써 V 모양으로 점점 변하게 된다. 따라서 실제는 위 처럼 V모양으로 띄는 cost function 이며 projection되는 방향으로 학습이 진행 된다.

8가지를 모두 합쳐봤을때 위 와 같이 볼수가 있게 되며 x를 많이 늘리게 되면 아래와 같은 모습을 볼수 있다.

모두 가운데 축을 지는 V형태를 가지고 있다.

x가 0~1까지 해당되는 것은 오른쪽 삼각형, x가 -1~0까지 해당되는 것은 왼쪽 삼각형이 된다. 1보다 커질 경우엔 위, 아래에 축이 생긴다. 즉 x의 절대값이 커질수록 theta0축에 가까워지고, 절대값이 작을수록 theta1축에 가까워진다.

 

3.Gradient Descent

x가 작을수록 그나마 U형태를 보이는데 x가 커질수록 V형태로 더욱 좁아지는 모양을 가진다.

평행이동에만 관심있는 두 파란 박스를 다뤄보자. D 데이터는 y =x+1 함수를 따르는 data이다.

x가 커질수록 theta0축에 가까워 지며 U에서 V 형태로 점점 변하게 된다.

각 data에 따른 loss function을 모두 그려본 이미지이다.

표준정규분포의 데이터를 가지고 loss function은 왼쪽과 같다(100개) 또한 아웃라이어들이 theta0 축과 그나마 가장 가까운 것들일 것이다.

mean=3이므로 theta0축에 가까운 loss function들이 위처럼 생길 것이다. 이로써 알수있는 것은 어떤 데이터가 주어지든 loss fucntion을 예상할수 있다.

이 세개 이미지중 가자 좋은 것은 표준정규분포 loss function인 가장 왼쪽 그림이다.값이 커질수록 V형태를 가지므로 발산할 우려가 더욱 커지게 될것이다.

Gradient Descent

-평행이동을 관할하는 term은 제외한 후, 나머지에 대해 gradient descent먼저 보겠다.

각 theta별로 gradient descent를 할수 있겠다.

x가 커질수록 theta0과 가깝게 변하게 되며 초기 theta는 projection되는 방향으로 학습이 진행된다. 이때 학습 속도를 보면 x=10일때 파란 point의 간격이 넓직하게 움직인 걸 볼수 있다. 왜냐면 기울기가 더욱 급하기 때문이다.

x의 크기별로 학습의 속도가 어떤지 아래 그림을 통해 알아보자.

x=1은 균형잡힌 밥그릇이라 했을대 theta1,0 에 대한 학습속도와 방향은 위 하늘색처럼 대각선 방향으로 진행되었다. 그리고 x가 커짐에 따라 project 방향이 갈색처럼 눕는 형태를 보였다.

또한 눈여겨 볼게 점의 간격이다. theta1에 대한 학습이 지배적으로 변하게 된다. 왼쪽 theta1 식을 보면 theta1에 x가 곱해져 있다. x의 크기에 따라 얼만큼 업데이트 될건지 정해진다.

initial theta를 각각 -2씩 주었을때, interation 10의 theta1은 약 1만큼 증가한 반면 theta0은 미미하게 업데이트가 되었다. x가 있고 없고의 차이가 분명하게 드러난다. 더욱이 Loss가 144 -> 50으로 감소했기 때문에 가뜩이나 theta0 느린 학습속도가 더욱 느려지게 된다. loss 50에 대해서도 theta1의 업데이트로 넘어가기 때문에 theta0은 더더욱 느려지게 되는 것이다. 따라서 theta1이 먼저 학습하게 되면 loss가 확 줄기 때문에 전체적인 학습속도가 늦어 진다. 그래서 theta0 같은 경우엔 학습할 기회 조차 없어진다.

 

0<x<1인 경우를 보면, x가 작아질수록 theta1방향으로 눕게 된다. projection이 될수록 theta0의 0으로 학습이 되어 가는데 theta1의 0으로는 학습될 기미조차 없다. 여기서는 반대로 불균형이 생기게 된다. 수식으로 살펴보면 이해가기 쉽다.

x가 0.1이라면 theta1은 2*(0.01)^2 만큼 업데이트 양이 결정된다. 소수점이므로 theta0보다 훨신 적게 업데이트가 된다는 걸 알수가 있다.

아까와는 반대로 업데이트가 되어가고 있다.

여기서 알수 있는 점을 간추려 보자면, 입력되는 절대값x의 값이 크면 weight가 bias보다 압도적으로 학습속도가 빠르게 진행된다. 이와 반대로

절대값 x가 1보다 작고 0보다 크다면 bias의 학습속도가 빠르게된다.

위 내용은 x가 양수일때를 살펴봤다. 반대로 x값이 음수가 들어왔을때 어떻게 변하는지 알아보도록 한다.

x의 절대값이 커질수록 y축과 같은 모양을 띈다고 앞서 배웠다. 따라서 x의 값이 증가 할수록 theta1은 빠르게 학습 할 것이며 theta0은 느리게 학습하게 된다.

(수정: 왼쪽이 -0.8, 오른쪽이 -0.5)

절대값이 1보다 점점더 작아지게 만든 경우이다. 눕는 형태가 되므로 theta0만 학습이 되고 theta1는 점점 학습이 느려지게 된다.

정리를 하자면, 절대값x가 0에 가까울수록 bias만 거의 학습이 되고, 절대값 x가 클수록 weight만 거의 학습이 된다.

결국 weight, bias 두개의 학습속도를 맞추기 위해서 feature scaling이 필요하게 된다. 표준정규분포처럼 0과 1로 맞추는 것도 좋지만 만일 0으로 대부분 맞춰진다면 bias 만 학습이 되는 불균형은 사라지지않게 된다. 따라서 스케일링을 할때에도 절대값 1에 가깝게 최대한 맞춰줘야 weight와 bias의 학습속도를 맞출수가 있다.

728x90
728x90

*학습 내용은 iflearn의 태블로 무료 강의 고급 맛보기 편입니다. 

3. 효율적인 대시보드 만들기(1)-제대로 계획 세우기

보고서를 받는 대상이 시간 관리에 타이트한 사람이거나 결과를 우선시 하는 편이라면 아래와 같이 매개변수를 활용하여 요약하는게 좋다.

 

3-1) 요약 대시보드

Year 와 month 변경에 따라 당월, 전월,전년 동월 매출이 나타나도록 만들기

 

1 step) 당월매출

Year 와 month의 매개변수를 만드는데 모두 문자열의 목록형으로 생성한다. 이를 계산된 필드로 엮는다. (날짜를 정수형태로 바꿔주는 DATAPART를 사용)

계산된 필드 생성 후 위 처럼 필터와 행 선반 등 설정 후 서식을 통해 정리한다.

 

2 step) 전월매출

당월의 계산된 필드내용을 재활용 할수 없다. 2021년 0월은 없기때문이다. 먼저 p.year & p.month를 조합한 매개변수를 생성한다.

조합한 후 행 선반에 넣는다. 문자열을 날짜로 변경해주는 함수 dateparse를 사용한다.

위 수식을 통하여 parameter 매개변수가 문자열-> 날짜로 변경 되었다. 시분초는 필요 없으므로 날짜로 필드 변경한다.(매개변수의 달려 표시 클릭) c.parameter의 2020-06-01에서 01은 일자가 없어서 자동으로 01 붙는다.

주문일자의 month와 c.parameter의 차이가 1이라는 뜻이다. 필터를 f.전월을 넣어서 정리하면 아래와 같다.

 

3 step) 전년 동월 매출

동월 매출의 계산식 필드에서 year 부분에서 -1을 해주면 전년 동월 매출을 알수있다.

 

4 step) 대시보드로 요약하기

똑같은 크기로 만들기 위해서 가로 개체를 넣는다. 그리고 시트를 넣는다.

위처럼 차례때로 넣으면 가로를 넣었기 때문에 같은 크기로 할당된다.

대시보드1 밑에 가로 개체를 하나 넣은 후에 p.year 와 p.month를 넣어서 정리하여 마무리한다.

가급적 필터를 적게 사용하는게 좋다라는 뜻이다. 따라서 필드를 제거한 수정본을 만들어 본다.

 

** 필터를 제거한 수정 본 만들기

만들어진 c.당월매출 계산식필드를 마크에 있는 합계 필드위에 오버랩한다.

필터를 제거해도 값이 유지가 되었다. 합계는 sum이다. 여기에 계산식을 오버랩 시켰으므로 sum과 위 iif 함수 공식이 동시에 적용 된 것이다. 오버랩 시키서 하는 것보다는 애초에 계산식에서 sum을 함께 적용하는 것이 효율적이다.

c. 당월매출을 위처럼 수정한 뒤, 마크에 새로 넣으면 완성이다.

 

 

4. 효율적인 대시보드 만들기(2)-사람 중심의 디자인

*보(고 받)는 사람의 시선이 먼저 가는 곳 공략하기-좌측상단 공략

*보(고 받)는 사람이 집중하도록 Views & Colors 제한 두기

*보(고 받)는 사람이 직접 참여하도록 유도하기

 

Profit 대시보드 완성하기

매개변수 변경에 따른 전체적인 수치 변화을 디자인 해본다

 

1step) 당월수익

주문일자에서 매개변수를 선택한다.

범위에서 주문일자를 선택하면 데이터 원본에 있는 날짜를 모두 반영할수 있다. 만들어진 매개변수 날짜를 기준으로 값을 만들어본다.

위 수식의 뜻을 알아본다. 먼저 윗줄의 주문일자 month와 p. date의 month 차이가 0이라는 것은 매개변수에 2021년 6월 11일로 설정했으면 month와의 차이가 없으므로 6월을 나타낸다. 맨일 차이가 1이라면 2021년 5월 11일이다. 그리고 주문일자의 day와 p.date와의 차이가 0보다 같거나 크다는 것에 1일 부터 11일까지를 조회하다는 것이다. 왜 이렇게 될까? 먼저 차이가 0이라면 11일 자기자신을 뜻한다. 차이가 1이라면, 10일, 차이가 2라면 9일,차이가 10이라면 1일, 이런식을 해서 1일부터 11일까지 조회가 가능하다.

저번에 언급 했던 대로, 필터는 지양하는게 좋으므로 계산식을 사용한다. f.당월인 경우엔 수익을 가져오고 그게 아닌 나머지 경우엔 null을 가져온다 라는 뜻이다. sum은 총 합계를 구하기 위함이다.

마지막으로 위 처럼 정리를 해준다.

 

2 step) 전월수익

당월은 차이가 0이라면 전월은 차이가 1이기 때문에 계산식을 위 처럼 수정한다. 나머지 과정은 동일하다.

 

3 step) 전월 대비 수익

+인 경우, -인 경우, 0일 경우가 있을수 있기 때문에 위 처럼 설정한다.

값에 색상을 넣기 위해서 계산식을 만든 후 색상 컬러에 넣는다. 값이 없을 경우엔 black으로 표현한다.

값이 없을 경우엔 빈 화면이 아니라 0으로 표현하기 위한 작업이 필요하다.

전월 대비 수익이 null인 경우엔 0으로 표현한다.

 

4 step) 전월 대비 수익

당월 or 전월 계산식을 만든 후 필터에 넣고, 아래 처럼 행,열 선반을 설정해준다.

어떤 월인지 구분안가므로 월 주문일자(연속형)를 색상 and 레이블에 삽입한다.

 

5 step) 대시보드

가로개체를 넣은 뒤 시트 삽입한다.

대시보드 제목표시 후 가로개체를 제목 쪽에 넣어서 대시보드 제목과 매개변수를 포함시킨다.

매개변수는 아래 세모 옵션의 너비 편집을 사용하여 줄일수 있다. (245로 변경) 개체의 텍스트를 대시보드 제목 옆에 넣어서 작성자를 입력한다.

너비 조정은 245로 설정한다.

매개변수 설명란을 작성하기 위해서 빈 페이지 개체를 넣는다. 그 안에 부동으로 설정한 텍스트 개체를 넣는다.

 

5. 효율적인 대시보드 만들기(3)

여러 매개변수를 활용한 대시보드를 만든다.

특정 고객을 선택하면 추가 설명이 뜨도록 한다.

 

1 step)

할인율의 기본설정을 평균으로 설정 한뒤 위 수식을 만든다

x,y축 매개변수 생성한다. 두개 매개변수를 활용하여 동적으로 변화하도록 계산식을 만든다.

 

*x축 계산식 필드

할인율은 집계가 안되어 있기 때문에 AVG를 적용한다.

 

*y축 계산식 필드

생성한 계산식 필드를 위와 같이 설정한다. 투명도는 60, 테두리는 하얀색이다. 참조선 평균을 기준으로 사분면을 나누도록 한다 .

사분면을 기준을 위 와같이 정해준 뒤 색상 마크에 넣어준다. 다음을 사용하여 계산 -> 고객명 순서대로 클릭하여 각 고객에 따라 색상을 달리 구분한다.

현재 데이터는 4년치 데이터이다. 이를 매개변수를 통해 연도별로 구분해 본다.

f. 연도를 필터에 넣는다. 각 데이터 마다 추가설명을 달기 위한 계산식을 만든다.

이 계산식 필드를 마크의 도구 설명에 넣는다.

마우스 오버하면 추가설명이 뜬다.

도구설명은 위와 같이 편집 할수 있다. 이때 x_축 단위,x_축 단위가 보이는데 이를 만들어 본다.

x_축 단위 및 y_축 단위는 위와 같이 생성한 뒤 도구설명에 넣는다.

 

 

2 step) 고객별 분기별 KPI

행,열 선반을 위 처럼 설정 한 후 열 선반에 있는 y축을 옆으로 복제한다.

주문일자를 드래그 하여 '세부정보'에 넣는다. 불연속형 분기(주문일자)를 클릭한다.

집계2번을 선택하여 도구설명으로 들어와 있는 분기를 레이블로 설정한다.

라인으로 설정 후 마우스 오버된 빈 곳에 더블클릭하면 위 처럼 빈칸이 나타난다.

1,2,3,4 분기별로 순서대로 라인을 경로로 이동시킨다.

위 처럼 설정 후, 두 그래프를 합치기 위해서 이중축을 사용한다. 두 그래프가 합쳐졌으므로 축 동기화 시킨다.

축 동기화 후 상단에 있는 c.x축의 축 편집 -> 눈금선에서 위 처럼 없음으로 설정한다.

고객 클러스터 워크시트의 도구설명에서 삽입을 이용하여 방금까지 만들었던 고객별 분기별 KPI를 넣어준 뒤 400*400로 크기 조정 한다.

고객 클러스터에 적용된 연도 필터를 도구 설명에 링크된 고객별 분기별 KPI와 연동이 되어야 하므로 '이 데이터원본을 사용하는 모든 항목'을 선택한다. 그러면 고객별 분기별 KPI에도 연도 필터가 적용된다.

고객을 마우스 오버 시, 각 분기별로 1-2-3-4 라인으로 연결된 정보를 볼수가 있다.

좀 더 정확한 정보를 보기 위해서 각 분기별 '수치' 볼수 있도록 새 워크시트를 만든다.

 

3 step) 고객별 분기별 KPI(2)

해당 되는 테이블들을 텍스트에 넣은 후 위 form으로 편집을 진행한다.

서식을 이용하여 위 처럼 정리를 해주면 된다.

마찬가지로 고객 클러스터의 도구 설명에 가서 방금 만든 워크시트를 삽입한다.

 

 

4 step) 대시보드 만들기

고객명 하이라이트를 만들어서 특정 고객의 세부정보를 볼수 있도록 설정해둔다.

가로 개체를 사용하여 매개변수를 정리한다.

p.Y축을 위 처럼 배치 하기 위해서는 세로 개체를 수익률 옆에 배정한뒤 p.Y축을 옮긴다. 이때. 가운데로 오게끔 만들기 위해서 빈 페이지를 두번 넣으면 가운데 부분에 빈페이지 끼리 맞닿은 경계선이 생긴다. 아래처럼 경계선이 생기는데 여기에 p.Y축을 다시 옮기면 위에 이미지 처럼 만들수 있다.

'측정값을 선택하세요' 글 삽입과 p.x축의 가운데 정렬를 하기 위해서는 텍스트 & 빈페이지 개체를 이용하여 만들수 있다.

텍스트 개체를 대시보드 제목 밑 절취선에 위치 시킨 후 레이아웃 필드에서 색깔을 선택해주면 아래와 같이 꾸밀수 있다.

 

 

(완성된 대시보드 그림)

728x90
728x90

*학습 내용은 iflearn의 태블로 무료 강의 고급 맛보기 편입니다. 

1. 대시보드 액션 적용(1)

1-1) 필터

위 처럼 설정하면, 필터 2를 선택했을때 필터1에서는 고객 세그먼트 및 월간 기준으로만 필터를 적용 한다는 의미이다.

2018년 기업고객 12월을 클릭하면 상단에는 각 년도 별 기업고객(고객 세그먼트)의 월간(월 주문일자) 매출을 보여준다.

1-2) 하이라이트

위 처럼 매출을 레이블에 넣은 후 하이라이트를 선택하면 평사시엔 나타지 않다가 하이라이트가 레이블이 보인다. 아래는 대시보드에서 하이라이트 거는 방법이다.

대시보드의 동작 누른 후 추가 -> 하이라이트를 선택하여 위처럼 설정하면 아래처럼 마우스 오버 시 강조되는 부분만 레이블을 볼수 있다.

1-3) URL 이동

클릭 시, 위 내용만 간단하게 나온다. 여기에 네이버 쇼핑 URL을 넣어서 해당 제품의 네이버 쇼핑 part로 이동하게끔 만들수 있다.

(1)

(2)

가구라고 적혀 있던 글을 제외한 나머지 URL을 복사하여 아래처럼 진행한다.

(3)

가구 빠진 자리에 위처럼 설정하면 제품 중분류가 대신 그자리를 차지하게 된다.

(4)

URL 클릭 시 네이버 쇼핑으로 해당 품목을 볼수가 있다.

 

 

2. 대시보드 액션 적용(2)

2-1) 시트로 이동

*시도별 맵

*시군구별 맵

*시도 -> 시군구 대시보드 & 시군구 -> 시도 대시보드

시도 -> 시군구 대시보드는 동작의 필터를 누른뒤 아래처럼 설정해준다

시도맵에서 아무곳을 클릭하면 클락 된 해당 지역의 시군구 맵이 나오게 된다.

시군구 -> 시도 대시보드는 왼쪽 아래 탐색버튼을 눌러준 뒤, 편집 을 활용하면 된다.

위 순서대로 과정을 거친 뒤에 ALT+클릭 하면 시도맵으로 변경된다.

2-2) 매개 변수 변경

매출, 수량, 수익 아이콘에 마우스 오버 시키면 월간 추이가 자동으로 변경되도록 해본다.

*아이콘 만들기

위처럼 뼈대를 만든 뒤, 마크를 모양을 클릭 하면 아래처럼 모양 마크가 새로 생긴다.

열 선반에 있는 측정값 이름을 ctrl+왼쪽 마우스 드래그 하여 새로 생긴 모양에 넣어준다.

마크에 있는 연속형 측정값을 '세부정보' 넣어주면 숫자가 사라져서 모양만 남게 된다.

*월간추이는 배운 내용 이므로 skip하였습니다.

대시보드 생성 뒤, 대시보드 -> 동작 -> 매개변수 변경을 클릭하여 최종적으로 아래처럼 설정한다.

이 작업은 월간 추이에서 걸어둔 p. 측정값 매개변수를 아이콘에 이관?하는 작업이다.

2-3) 집합 값 변경

위처럼 왼쪽 지역을 선택하면 오른쪽엔 해당 지역의 시도별로 측정값을 볼수 있도록 해본다. 내가 궁금한 것과 궁금 하지 않은 것 두개로 나뉘므로 집합을 이용할수 있겠다.

*지역별 측정값 만들기

지역에 대한 집합을 위 처럼 일단 설정한다. 해당 집합을 생성함으로써 수도권과 수도권이 아닌 지역 둘로 나뉜다. 열 선반에 있는 측정값 대신 매출,수량 같은 수치로 대체가 가능하다. 방금 만든 지역 set을 색상에 넣어서 구분 한뒤, 행 선반에 한번 더 넣는다. 행 앞자리에 넣음으로써 선택된 지역은 무조건 맨 먼저 나오게끔 설정할수가 있다.

in,out 머리글은 제거해주면 깔끔해진다.

*시도별 측정값 생성

지역별 측정값을 복제한 워크시트를 가지고 계산된 필드를 만든다.

지역집합에 해당되는 것은 시도로 나타내고 그렇지 않은 것은 지역으로 나타낸다는 의미이다. (지역 set은 대시보드에서 클릭으로 in,out 수시로 변경 가능하다.)

만든 계산식 필드 인 지역 or 시도별을 행 선반에 넣는다.(강의 에서는 이 직후 행 선반에 있는 지역을 제거해주었다.)

*대시보드 생성

대시보드 -> 동작 -> 집합 값 변경 순으로 들어가서 위처럼 설정하면 최종적으로 완성된다.

728x90
728x90

1. Vectorization

파란색 박스까지만 취급을 한다면 빨간색 벡터처럼 나온다. 즉, 1번 loss, 2번 loss,.., n번 loss를 벡터화된 모습일 것이다. 이때 cost는 어떤 역할을 할까?

forward 일때는 평균값을 구하여 스칼라값이 나오고, backward일때는 1/n값이 아래처럼 계산 될것이다.

각 loss들에 대해서 1/n씩 곱해진다. n=10이면 1/10씩 각 loss에 곱해진다.

data의 값이 크면 loss도 크기 때문에 위에 그림 세타5처럼 튀는 값이 생길수 있다. 이러한 큰 수의 data를 이상치라고도 불리는데 FE과정에서 이상치를 제거하기도 한다. 하지만 무조건 제거하는 건 좋지 않다. 왜냐하면 소수의 case를 제거 하는 것과 마찬가지이기 때문이다. 가장 best 모델은 이상치를 포함한 (학습 방해가 되지 않는 선에서) 전 범위를 커버 할수 있는 것이다. 따라서 cost를 사용하면 위 그림의 초록색 세타 처럼 협의점?을 활용하여 제거 없이 학습을 시킬수 있다.

만일 배치 사이즈가 위 예시처럼 5개 아닌 더 많을 경우엔 어떻게 해석을 해야 할까? 각 data 마다 loss값으로 업데이트하게 되면 누구 장단에 맞춰야 할지 몰라서 예측 선이 분주하게 증감을 반복 할것이다. 반면 배치사이즈가 8이라고 한다면 모든 데이터가 납득할만한 예측선을 찾아서 학습 시킬 것이다. 즉, 데이터의 특성들을 반영한 예측선이 나오게 된다. 하지만 local optimal 빠질수도 있기 때문에 마냥 배치사이즈를 늘리는게 좋은건 아니다. 단지 늘릴수록 dataset의 전반적인 특성을 따라간다 라는 의미이다.

 

*Numpy 계산

backpropagation 연산은 numpy가 이용된다. numpy는 Hadamard Product를 이용한다. hadamard는 element-wise 해주는 방법이다. 이에 대해 조금 자세히 알아본다.

왼쪽은 기존에 알고 있던 방법인 matrix Multiplication이다. B 매트릭스는 대각성분만 남기 때문에 오른쪽 b벡터같이 표현이 가능하게 된다. 그래서 a벡터 O b벡터를 hadamard 이용하면 그림과 같이 표현이 가능하다.

왼쪽과 오른쪽의 결론이 같으면서 hadamard 연산이 간결함을 한눈에 알수가 있다. 이러한 원리가 backpropagation 에서 사용이 되는 것이다. 아래 그림은 적용한 모습이다.

*벡터로 연산되는 과정보기

x_data,y_data 각 100개를 한번에 넣어서 계산 했을때의 과정을 본다

1)forward

2)backward

one sample의 빨간박스 dth은 스칼리였기 때문에 바로 lr을 곱해도 되었지만 vetorized samples은 데이터가 복수개 이므로 dth을 싹다 더한 다음에 lr을 곱해줘야 한다.(각 loss들에 대한 편미분 값을 모조리 더함)

 

2. batche gradiant methods

미니배치가 정해지면 네트워크를 통해 세타가 한번 업데이트가 된다. 이를 1iteration이라고 부르고, 이런 과정을 통해 전체 데이터가 한번돌아갔다면 1epoch라 부른다. 이때 batch사이즈를 어떻게 조정하느냐에 따라 여러 테크닉 이름으로 불린다.

 

2-1. batch gradient descent method

전체 dataset을 한번에 이용하는 것이다. 즉, 미니배치를 전체 데이터로 이용한 것이다.

전체 데이터를 X,Y에 받아 놓고(굳이 객체를 따로 생성 안해도된다) forward 및 backward를 진행한다.

1epoch마다 전체 dataset이 사용되므로 스무스한 감소를 보인다. 즉, dataset 전체의 특성을 반영한다.

 

2-2. stochastic gradient descent method

mini-batch size=1로 설정한 방법이다. 요즘에는 1로 학습하는 경우가 거의없다.

윗 부분은 without replacement 비복원 방법일 채택한 경우이다. 데이터 하나를 뽑고 interation 돌린 뒤에, 뽑았던 데이터를 제외한다. 반대로 replacement 방법은 뽑았던 데이터를 다시 포함시키는 방법이다. 이때 주의할점이 있다. epoch은 전체 데이터가 한번씩 돌렸을때 1epoch이라 한다. 이런 측면에서 비복원은 epoch이라 말할수 있다. 반면 복원은 같은 데이터가 또 뽑힐 수가 있기 때문에 전체 데이터가 한번씩 interation 했다고 확신할 수가 없게 된다 따라서 복원은 epoch이라는 명칭 대신 interation이라 말한다. 그래서 아랫부분 2번을 보면 for iteration이라고 적혀있다.

 

*without Replacement

epoch을 돌릴때마다 셔플을 해줘야 오버핏팅, 반복적인 같은 패턴의 학습을 지양할수 있다.

데이터를 하나씩 뽑기 때문에 loss에 대한 fluctuation이 심하다. 왜냐면 데이터의 크기에 따라 loss도 비례하기 때문이다. loss가 많이 잡히는 곳은 그만큼 세타에 많이 업데이트가 되므로 기울기 경사가 급해진다.

 

*Replacement

random.choice를 사용하여 0~99번 인덱스 중 하나를 뽑아서 forward 및 backward를 진행한다. 전체 데이터를 한번씩 사용 못하므로 epoch 대신 iteration으로 표현했다.

 

2-3. mini-batch gradient descent method

mini-batch size=n로 설정한 방법이다. 적당한 n개를 적용하며 이 또한 without replacement, replacement로 나눌수 있다.

*without Replacement

if 절에 있는 것은 100개 데이터를 16개씩 쪼갠 후 마지막 나머지 4개를 사용하기 위함이다.

loss 그림에서 같은 형태의 fluctation이 있다. 랜덤셔플을 이용하지 않았기 때문에 미니배치가 순서대로 반복학습이 일어나서 저러한 형태를 보인다. 이는 학습 시 좋은 모습이 아니므로 랜덤 셔플을 이용하는게 좋다.

랜덤셔플을 추가 한 후 loss 그래프를 보면 반복되는 형태가 사라졌다.

*Replacement

복원방식이므로 epoch가 빠졌다. random.choice는 batch_size 만큼 뽑아서 각 데이터에 적용한다.

 

*실습과제

PA_03_09 Stochastic Gradient Descent Method.ipynb
0.09MB

 

728x90
728x90

이론 과제만 있는 줄 알았는데 실습 과제가 있었더라구요 

그래서 그 동안 못했던 실습 과제를 이틀 동안 쭉 해봤습니다. 

간단해 보이면서도 헷갈린 부분이 여럿 있어서 시간이 오래 걸렸습니다

아래 올린 실습들은 제가 직접 빈칸 채운 파일들을 올렸습니다. 

위부터 순서대로 입니다.

 

실습에 필요한 모듈

basic_nodes.py
0.00MB
LR_dataset_generator.py
0.00MB

 

실습 과제파일

PA_03_01 Gradient Descent Method.ipynb
0.21MB
PA_03_02 Loss Functions.ipynb
0.37MB
PA_03_03 Learning Rate.ipynb
0.44MB
PA_03_04 Basic Building Nodes.ipynb
0.01MB
PA_03_05 Dataset Generator.ipynb
0.08MB
PA_03_06 SVLR without Bias Term for One Sample.ipynb
0.42MB
PA_03_07 Learning with Various Normal Distributions.ipynb
0.49MB
PA_03_08 SVLR without Bias Term for Several Samples.ipynb
0.06MB

 

 

728x90

'실습 note' 카테고리의 다른 글

CNN 실습 모음  (0) 2021.10.05
딥러닝 수학 실습과제 모음 9~12  (0) 2021.09.04
Mask-RCNN 실습모음(2021-07-29~02)  (0) 2021.08.02
EfficientDet 실습모음(2021-07-27~28)  (0) 2021.07.27
YOLO 실습 모음  (0) 2021.07.21
728x90

*중급편 부터는 기초편과 중복되는 학습 내용을 스킵했습니다.*

 

 

1.대시보드 만들기

대시보드를 통해 연간매출,월매출,시도별매출을 연결 가능하다.

1-1.연간매출

 

1-2.월매출

 

1-3.시도별매출

 

1-4.대시보드 만들기

순서: 맨 밑에 대시보드 워크시트를 클릭 -> 왼쪽 상단 크기 항목 부분에 고정된 크기(데스크타 브라우저)로 설정 -> 왼쪽 시트란에 있는 연간, 월간, 시도 매출을 드래그 하여 아래 그림처럼 배치

-> 고객 세그먼트 범례는 아래 그림처럼 부동을 클릭하여 위치 자유롭게 설정 -> (아래 이어서)

-> 대시보드 메뉴의 동작 클릭 -> 동작 추가 -> 필터 -> 아래처럼 설정하게 되면 특정 연간 매출을 클릭시 월간, 시도별 매출에 영향을 준다

-> 같은 과정을 반복하여 월간 매출 클릭 시 연간 및 시도 별 매출에 변화를 주도록 설정한다. -> 고정된 크기에서 자동으로 변경하면 아래와 같이 만들어 진다.

공유하는 방법은 저장한 후, 곧이어 뜨는 웹 상의 url을 전달하는 방식으로 진행 할수 있다.(public 버전)

 

 

2. 스토리 만들기

2-1) 연간매출 비교

 

2-2) 제품 대분류 연간 매출 비교

 

2-3) 제품 대분류 분기별 매출비교

 

2-4) 제품 대분류 월별 매출비교

월(주문 일자)는 연속형으로 설정 후 분석패널에 있는 추세선 중 다항식을 선택한다.

 

2-5) 스토리 만들기

순서: 맨 아래 새 스토리 클릭 -> 나타내고자 하는 대시보드를 드래그 한 후, 캡션 박스 안에 스토리를 적는다. -> 다른 대시보드를 드래그 하여 아래 그림처럼 위치 시키면 추가가 된다.

 

완성된 스토리 보드

 

 

3. 퀙 테이블 계산하기

3-1) 누계

합계매출을 2개로 나뉜 뒤, 다른 하나는 퀵테이블의 누계를 클릭 후 이중 축을 걸어주면 위처럼 만들어진다.

 

3-2) 차이

연속형 분기를 열에 넣은 후, 매출 퀵테이블의 차이를 클릭하면 위와같으느 표현을 할수 있다. 바로 전 분기와의 차이를 볼수있다. 색상은 선반에 있는 분기를 색상에 넣어주면된다.

각 년도의 1월을 기준으로 12월까지 얼마나 차이가 있는지에 대한 테이블을 만들어 본다. 선반과 같이 넣어준 뒤, 퀵테이블을 차이를 클릭 한다. 그러면 직전과의 차이가를 보여준다. 내가 보고싶은 것은 각 년도별 1월을 기준으로 12월까지 얼마나 차이가 있는지이다. 즉 기준이 각 년도별 1월인 것이다. 이를 설정하기 위해서는 퀙테이블 윗칸에 있는 기준을 첫 번째로 설정한다. 이러면 기준은 2018년도 1월이다. 모든 값이 2018-01과 차이값을 출력한다. 따라서 각 패널마다 1월로 기준을 잡기 위해선 기준 칸 위에 위치한 다음을 사용하여 계산을 클릭 -> 패널(아래로)를 눌러주면 각 년도별 1월이 기준으로 설정된다.

 

3-3) 구성비율

퀵테이블의 구성비율을 선택 후, 계산 편집은 아까와 마찬가지로 패널을 아래로 설정하면 제품 대분류마다 중분류 제품의 비중을 볼수 있다.

 

3-4) 순위

구성비율대신 순위를 선택해준다. 그 후 중분류 내 순위를 보고자 한다면 패널 아래로 설정을 해준다. 매출 값 두개를 추가하여 하나는 전체순위로 변경하고 나머지는 매출로써 표현 해준다.

 

 

4.퀙 테이블 계산하기2

4-1) 비율차이 & 전년 대비 성장률

퀵테이블에서 각각 비율 차이(전월 대비 성장률) 및 전년도 대비 성장률을 만들어 준다. 매출도 따로 추가해준다. 열 선반에 지역을 넣어주면 각 지역별 정보를 볼수 있다.

 

4-2) 백분위수

고객명 필드 레이블에 아래 화살표 클릭 후 필드 -> 합계 클릭하면 매출의 합계를 기준으로 내림차순이 가능하다. 마크의 합계 매출에서 백분위수를 클릭 - > 테이블 계산 편집에서 내림 차순으로 정렬하면 수능처럼 상위 몇퍼센트 개념을 사용 할수 있다.

 

4-3) 이동평균

연속형 분기와 매출값으 아래처럼 넣은 후, 측정값을 이동평균으로 변경한다. 매출과 같은 축 선상에서 비교 하기 위해서 매출 값을 드래그 하여 결합된 축을 적용한다. 그러면 아래와 같은 그래프를 볼수 있다.

이미지에서 이전 값 5라고 적혀 있다. 현 시점이 2021년 4분기라면 이전 값 5개인 2020 분기3~2020 분기3 + 자기 시점인 2021 4분기까지 총 6개를 평균 낸다는 뜻이다.

 

4-4) YTD총계(Year To Data Total)-누적값 개념

퀵테이블의 YTD 클릭 후, 매출을 추가했다. 2018년 1월, 2월 합계가 2018년 2월의 YTD 칸에 표현되어있다. 각 년도별 누적값을 볼수 있다.

 

5.계산된 필드 만들기

5-1) 집계 계산식 만들기(새로운 필드 만들기)

계산식 필드에 들어가서 sum([수익])/sum([매출]) 을 생성하면 수익률 계산식 필드가 생긴다. 이를 위처럼 자리에 올려주면 0으로 출력한다. 디폴트 값이 정수이기 때문에 이를 백분율로 수정 후 소수 둘째자리까지 출력하게 설정한다.

 

5-2) IF 계산식 만들기

계산된 필드를 사용하여 2억을 기준으로 위 처럼 구분이 가능하다

첫번째 방법: if sum([매출]) >=200000000 then '2억 이상' else '2억 미만' END

두번째 방법: iiF(sum([매출])>=200000000,'2억 이상','2억 미만')

세번째 방법(권장): sum([매출])>200000000 <- 이 방법은 boolean을 사용하기 때문에 간단하게 표현이 가능하다. 또한 처리속도가 빠르다.

 

6. 매개 변수 만들기(1)

1) 범위형 매개 변수

매개변수의 값이 변화함에 따라 매출액 구분도 동적으로 변화 할수 있도록 실습해 본다. 매개변수 생성 후, 계산된 필드 에서 sum([매출])> 매개변수로 설정한다. 또한 참조선에도 매개변수를 걸어주면 위 그림처럼 나온다. 아래 내용은 실습 과정 중 일부분이다.

참조선에 매개변수를 넣고 레이블에는 사용자 지정으로 하여 작성자 마음대로 설정가능하다. 여기서, 매개변수를 색상에 넣지 않고, 매개변수를 걸어준 계산식 필드를 색상에 넣어 줘야한다.

 

2) 목록형 매개 변수

매개 단위를 통해 단위 변경을 한다. 목록형 매개 변수생성 후 계산된 필드로 걸어 준 뒤에 이미지 처럼 해당 계산식을 마크에 넣어준다.

매개변수 만들때 표시형식은 작성자가 임의로 변경 가능하다. 왼쪽 값을 매출액과 나누면 단위가 변경이 가능한데 해당 작업은 아래 계산식 필드를 통해서 진행된다.

728x90
728x90

minibatch

x,ydata를 위와 같이 하나씩 가져와서 업데이트를 진행할때의 문제점은 cost가 크다는 점이다. 만일 백만개 데이터가 있다면 이를 하나씩 접근해서 구하기엔 비효율적이다. 이를 해결하기 위해서 아래와 같이 접근할수 있다.

 

5개를 한번에 뽑아서 각 loss들의 평균을 구한 cost 가지고 편미분하여 theta를 업데이트한다. 5번 실행 할 것을 한번으로 끝낼수 있다는 장점이 있다.

배치를 이용하면 cost를 사용하게 되므로 위 그림과 같은 과정으로 업데이트가 이뤄진다.

dn 까지의 dataset이 있을때, 각 dataset 마다 superscript를 표시 할수 있다.

두개의 dataset 각각 loss를 구한 뒤, 평균을 내면 cost로 바뀐다. 배치 사이즈가 2라면 위 과정처럼 진행될 것이다. 이때 theta는 위 아래 동시에 같은값이 들어가게 된다.

cost는 1/n만큼 돌려주기 때문에, 각각 1/2만큼 전달된다.

super script만 바뀔뿐 값은 똑같으며, cost에선 각각 L1, L2에 대한 편미분 구하면 1/2 씩 같은 값을 얻는다. 해당 편미분(partial derivative)을 가지고 Chain rule를 이용하여 back propagation을 아래처럼 진행한다.

순서 1)

순서 2)

순서 3)

순서 4)

(정리)

두 갈래로 흩어진 편미분 값을 더해줘야 최종적인 편미분값을 구할 수 있기 때문에 위 처럼 식이 정리가 될수 있다. 따라서 2개가 아니라 배치가 5개라면 각 dataset의 편미분값을 1/5만큼 곱해준뒤 더하면 cost로 편미분 계산한 값과 동일해진다.

값을 n개로 확장한다면 위처럼 정리가 된다. cost는 전체 loss에 대한 편미분값을 1/n 씩 만큼만 반영하게 된다. 배치를 사용하게 되면 각 loss의 편미분 값의 1/n 씩 공평하게 반영한다는 개념을 알아야 한다.

이를 이용하여 gradient descent에 적용하면 위 처럼 식이 정리가 된다. theta는 각 loss의 편미분이 공평하게 반영된 값으로 업데이트가 된다. 그러면 무조건 평균으로 업데이트 해야 할까? 아니다. 각 상황에 따라 능력껏 변경하여 적용하면 나만의 딥러닝 테크닉을 만들 수 있다.

cost를 이용할 경우에 좋은 점은 학습 시 이상치에 대해서 대응이 가능해 진다. 가장 왼쪽에 위치한 노란색 점이 이상치라고 한다면 학습 시 오른쪽 그림처럼 세타값이 튀게 된다. 만일 다른 point들과의 loss 평균을 계산하게 되면 큰 값이 감소가 되어서

위처럼 다소 안정적인 학습 모습을 갖출수 있게 된다.

batch size를 더욱 더 키우게 된다면 dataset의 전체적인 특성을 잘 반영하게 된다. 아래 그림을 통해 자세히 알아보자.

x1,x3,x6은 predictor보다 위쪽에 위치해 있다. 이 세개의 개별적인 loss를 가지고 업데이트 시키면 predictor를 1,3,6 선에 맞게끔 키울 것이다. 반대로 2,4,5은 predictor 보다 낮은 위치에 있기 때문에 predictor를 아래로 끌어 내릴 것이다. 이렇게 되면 예측선이 왔다갔다 어느 장단에 맞출지 혼란 스럽게 될 것이다.

cost를 사용하여 모두가 대체로 만족할만한 특성을 반영 할수있다.(초록색)

 

 

vectorization

배치 사이즈가 n개 있을 때 위 처럼 벡터로 간단하게 표현할수있다(n개 라면 n 차원 벡터) cost는 평균이므로 스칼라 값이 된다. 이를 통해 jacobian matrices를 적용 할수 있다.

순서 1)

각 함수 별 theta를 편미분 해주면 x1~xn까지의 컬럼벡터가 만들어진다.

순서 2)

순서 3)

순서 4)

구한 jacobian matrices은 back propagation 할때 사용된다.

순서 1)

단지 곱셈만 해주면 된다. 이후에 과정도 같은 원리로써 구한 jacobian matrices를 곱셈 해주면 된다.

 

순서2)

순서3) 우리가 최종적으로 알고 싶은 업데이트 part

(정리)

jacobian이 적용되면서 달라진 점이 무엇이 있는지 알아 보자

파란 박스의 편미분값을 보면 빨간 벡터로 정리 할수 있겠다. 이는 각 dataset loss의 편미분 값들이다. 여기서 cost 함수가 하는 역할을

forward 일때는 전체적인 loss들의 평균값을 구해주고 back propagation 할때는 1/n 씩 반영 시키는 역할을 한다. 위 과정처럼 1*n의 row vactor가 각 loss의 편미분 값과 곱해진다. 이 점이 loss와 cost의 차이점이다.

728x90

+ Recent posts