일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- vfr video
- VARCHAR (1)
- 겨울 부산
- kotlin
- preemption #
- 코루틴 빌더
- pytest
- Value too long for column
- python
- terminal
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 티스토리챌린지
- tolerated
- 깡돼후
- 달인막창
- Spring Batch
- JanusGateway
- JanusWebRTCServer
- PytestPluginManager
- 자원부족
- k8s #kubernetes #쿠버네티스
- JanusWebRTCGateway
- 오블완
- PersistenceContext
- table not found
- 코루틴 컨텍스트
- 개성국밥
- taint
- mp4fpsmod
- JanusWebRTC
너와 나의 스토리
[Data Mining] CH3. Data Exploration (2) 본문
Data Warehouse란?
-
decision support database로, organization's operational database와는 다르다.
-
분석을 위한 통합된 과거 데이터(historical data)의 견고한 플랫폼을 제공하여 정보 처리를 지원한다.
-
operational database는 사용되는 곳에 데이터베이스가 분산된 경우가 많은데, data warehouse는 분산되어 있는 데이터를 한 군데로 모아서(consolidataed), 중앙 집중적인 데이터베이스를 구성하여 분석적으로 처리할 수 있는 정보 처리 시스템을 제공 (support information processing)
-
operational database는 데이터가 삽입, 삭제, 갱신된다.
-
-
Data warehosue는 management의 decision making process(조직의 의사 결정 과정)를 지원하기 위한 목적으로 모아놓은 데이터이다.
-
subject-oriented(주제별로 모음), integrated(데이터 통합), time-variant(historical data), ㅜnonvolatile(비휘발성-갱신되지 않고 과거의 데이터 그대로 유지됨)
-
-
Data warehousing: data warehouse를 사용해서 사용하는 과정이나 이를 구성하는 것을 말함.
Data Warehouse - Subject-Oriented
-
어떤 조직의 주요 주제(목적) 별로 데이터가 축적됨 ex) 고객, 상품, 가격
-
보통 데이터베이스는 데일리 연산이나 거래 과정을 용도로 하지만, data warehouse는 고위 정책 결정자가 데이터를 분석하고 모델링하는 데 사용
-
결정 과정에서 불필요한 데이터를 배제하고 주제에 연관된 정보만 간결하게 보여줌
Data Warehouse - Integrated
-
여러 개의 이질적인 데이터들을 통합하여 구성
-
관계형 데이터베이스, flat files, on-line transaction records로 흩어져있는 데이터를 통합함
-
operational data가 이렇게 흩어져 있으니까, 데이터가 서로 맞지 않는 경우가 많기 때문에 data cleaning 작업이 중요하다.
-
- data cleaning과 data integration 기술을 지원
-
데이터 간의 consistency가 안 맞는 경우가 많기 때문에 지원 필요함
-
ex) 같은 데이터인데 이름이 다름, 인코딩하는 과정이 다름
-
-
데이터가 warehouse로 이동할 때는 consistence하게 변환되어 이동됨.
-
Data Warehouse - Time Variant
- data warehouse의 time horizon은 operational system보다 상당히 길다
- operational databse: 현재 시점의 데이터 - 갱신됨 (과거 데이터 없음)
- Data warehouse data: historical perspective에 대한 정보 가짐
- data warehouse의 중요한 구조
- 명시적으로나 암시적으로 시간 요소를 가짐
- operational data는 현재 시점의 데이터를 디폴트로 하기 때문에, "time element"가 있을 수도, 없을 수도 있다.
- operational 환경에서 변환된 물리적으로 분리된 데이터 저장소.
- data warehouse 환경에서는 operational update of data가 발생하지 않는다.
- transaction processing, recovery, concurrency control mechanism이 필요 없다.
- 데이터 접근에서 두 가지 연산만 필요하다:
- initial loading of data & access of data
- OLTP vs OLAP
- OLTP(Online Transaction Processing): 보통 operational data에서 처리하는 프로세스
- 사용자 - 직원
- 반복 작업이 많음
- OLAP(Online Analytical Processing)
- 사용자 - knowledge worker: 고위 결정자 -> 수 적음
- 주제별로 분석하다 보니 분석 방법이 그때, 그때 다름 -> ad-hoc (즉흥적)
- 복잡한 쿼리를 얼마나 잘 처리할 수 있느냐가 중요 -> response 시간이 느릴 수 있음
- OLTP(Online Transaction Processing): 보통 operational data에서 처리하는 프로세스
From Tables and Spreadsheets to Data Cubes
- data warehouse는 multidimensional data model을 기반으로 데이터 저장
- 데이터가 저장되는 형태를 데이터 큐브(data cube)라고 함
- 데이터 큐브는 데이터를 다차원으로 모델링하고 보여준다. (sales 같은)
- Dimension tables: ex) item(item_name, brand, type) 또는 time(day, week, month)
- 위의 정보는 다차원의 인덱스가 됨.
- 그 종목에 대한 데이터는 fact table에 저장됨
- Fact table: 각각 관련된 차원의 테이블의 measures(e.g. dollars_sold)와 keys를 저장
- Dimension tables: ex) item(item_name, brand, type) 또는 time(day, week, month)
- n-D base cube (n차원 데이터 큐브)은 데이터 큐브에 있는 모든 차원을 포함한 큐브로 base cuboid라고도 함.
- n에 숫자를 넣어, 특정한 몇 개의 차원만 선택해서 데이터 분석할 수 있음.
- 0-D cuboid: epex cuboid라고 함. -> 모든 차원을 포함하는 것 (밑그림에서 all)
- (1~n)-D cuboid: lattice of cuboid로 data cube를 형성함
- base cuboid는 모든 dimension이 다 들어있고, 위로 올라갈수록 dimension이 줄어들게 됨
- 선으로 연결되는 부분을 '부분 순서 관계'를 형성하는데 이를 lattice라고 한다.
Conceptual modeling of data warehouses
- data warehouses 모델링: dimensions & measures
- Star schema: dimension table 집합을 연결하는 가운데 있는 하나의 fact table
- Snowflake schema:
- dimension table이 3NF/BCNF가 아닌 1NF/2NF로 되어있으면 3NF/BCNF로 변환해야 하는데 이를 normalization이라고 함.
- 이렇게 변환시키기 되면 테이블이 분리되는데, 분리된 모양이 눈 모양과 비슷하다고 하여 snowflak라고 함.
- Fact constellations(별자리): 여러 개의 fact table이 dimension tables을 공유함. galaxy schema라고도 함
- Example of Start schema
- 화살표는 foreign key를 의미 (가리키는 곳의 primary key를 가리킴)
- 화살표들을 이어 보면 별 모양이 됨 (별 꼭짓점이 화살표라고 생각)
- Example of Snowflake schema
- item처럼 2NF를 3NF/BCNF 변환하는 과장에서 테이블이 분리되고 이를 단순하게 그리면 눈 모양이 됨.
- Example of Fact constellation
- fact table이 여러 개 있고, 각각 dimension table을 가짐
- 별이 여러 개 -> galaxy schema
A concept hierarchy: Dimension (location)
- 지구 -> 대륙 -> 나라 -> ... 이런 식으로 계층화할 수 있다.
Multidimensional Data
- fact table을 다음과 같이 다차원으로 둘 수 있다.
Cuboids corresponding to the cube
- 3차원 (product, data, country)
- dimension만 선택해서 그 속에 속하는 모든 concept hierarchy 보여줌
A sample data cube
- Date를 쿼터 단위로 봄
- 흰색 부분: 3-D cuboid
- 초록색 부분: data에 대한 정보를 고려하지 않음 -> 2-D cuboid
- 하단의 우측에 있는 남색 블록: 0-D cuboid (epex cuboid)
A star-net query model
- Shipping Method/Customer Orders/... 이런 게 dimension
- Time의 concept heirarchy는 annualy->qtrly->daily
- 필요한 정보로만 분석하기 위해 - dimension을 선택하고, 각 dimension에서 concept hierarchy를 선택
- 초록색 선처럼 보이게 됨
- 모든 가능한 cuboid를 여기서 열거할 수 있다.
- base cuboid는 모든 것을 다 선택하는 것인데, 모든 dimension을 다 선택하더라도 그 안에 concept hierarchy 수가 여러 개이기 때문에, base cuboid는 하나가 아니다.
- 모든 dimension의 concept hierarchy 개수만큼 있다.
- 실제로 선택할 수 있는 base cuboid 수는 cuboid의 lattice 모델로 나오는 개수보다 훨씬 많다.
Typical OLAP operations
- OLAP: data warehouse에서 다차원 데이터 모델로 데이터 큐브로 만들고, 데이터 큐보이드 중에서 하나를 골라서 분석하는 연산
- Roll up (drill-up): 데이터를 요약 (계층 올라가기 or 차원 축소)
- (위에 a lattice of cuboids 그림 참조) base cuboid는 모든 dimension이 다 들어있고, 위로 올라갈수록 dimension이 줄어들게 되는데, 이를 roll up이라고 함
- 특정 dimension에서 계층만 올라가도 roll up이라고 한다.
- Drill down (roll down): roll-up의 반대
- 높은 수준의 summary에서 [lower level summary / deailed data / 새로운 dimensions 도입]로 내려감
- 대한민국 단위로 판매 추이를 보다가, 시별로 보는 등, 좀 더 구체적인 정보를 보기 위해 사용
- Slice and dice: project and select
- Slice: 어떤 cuboid에서 dimension 하나의 특정 값을 설정하고 나머지 dimension에 대해 보는 것
- (위에 sample data cube 그림 참조) 파란색 혹은 주황색 단면처럼 슬라이스
- Dice: 큰 전체 cuboid 안에 주사위처럼 작은 크기만큼만 보겠다는 것
- N>M이라고 할 때 원래 (NxNxN) cuboid에서 (MxMxM)만큼만 잘라서 보는 것
- 각 dimensiont에서 concept hierarchy 일부만 골라서 보게 됨.
- Slice: 어떤 cuboid에서 dimension 하나의 특정 값을 설정하고 나머지 dimension에 대해 보는 것
- Pivot (rotate):
- 주로 2D에서 사용 (x축, y축)
- x축과 y축을 바꿔서 보는 것 -> rotate (pivot)ing이라고 함
- 시각화, 3D를 2D 평면으로 시리즈
- 주로 2D에서 사용 (x축, y축)
Browsing a data cube
- 각 cuboid (0-D cuboid ~ N-D cuboid)에서 dimension의 concept hierarchy를 선택해 자세히(다양하게) 볼 수 있다.
- roll up, drill down 등과 같은 기본 operation을 자유롭게 볼 수 있게 해 주는 게 data cube OLAP라고 함
- 다음 연산들을 사용하면서 다음과 같이 데이터를 분석할 수 있음
- cube를 형성하면 그 안에 cuboid의 개수: $2^n$ (n: dimension 개수) <- concept hierarchy를 고려하지 않은 경우의 수
- cocept hierarychy를 고려하지 않았다 -> $H_i$가 1이다. ($\pi^n_{i=1}$2)
- concept hierarchy를 고려한 cuboid의 수: $\pi^n_{i=1}$($H_i$+1) d
- $H_i$: i번째 dimensino의 concept hierarchy의 개수
- 즉, 어마어마하게 많은 수가 되기 때문에 모든 경우를 다 저장할 수 없다.
- 그래서 "OLAP를 어떻게 구현할 것인가?"가 굉장히 DB에서 중요한 주제
- 의사 결정자가 어떤 데이터들을 가지고 볼 것인지 고려할 때
- Interactive하게 데이터를 보여줄 수 있어야 한다. (시각화)
- OLAP는 data exploration하는 유용한 도구이다. (데이터 탐색)
- 사용자가 dimension 선택, 첨삭하면서 (interactive하게) 숨어있는 데이터의 특징을 찾아냄
- 데이터 마이닝 도구 아님
'Data Analysis > Data Mining' 카테고리의 다른 글
[Data Mining] Ch4. Classification: Basic concepts, Decision trees, and Model evaluation (2) (0) | 2020.04.07 |
---|---|
[Data Mining] Ch4. Classification: Basic concepts, Decision trees, and Model evaluation (1) (0) | 2020.04.04 |
[Data Mining] CH3. Data Exploration (1) (2) | 2020.03.25 |
[Data Mining] CH2. Data (2) (0) | 2020.03.23 |
[Data Mining] CH2. Data (1) (2) | 2020.03.21 |