728x90
반응형
SMALL

빅데이터 분석을 위해서는 다양한 소스의 데이터를 수집, 저장, 분석, 표현, 활용할 수 있는
데이터 통합 아키텍처가 요구된다.
빅데이터 분석 플랫폼에서는 기존 데이터베이스에서 처리하고 있는 정형 데이터 보다는
처리가 불가능한 SNS 데이터같은 반정형, 비정형 데이터가 더 중요한 가치를 가지고 있기
때문에 이러한 Data Type을 저장,분석할수 있는 데이터 아키텍처가 필요로 한다.
 

빅데이터 분석을 위한 데이터 통합 아키텍처의 특징

1. 분석 관점 Bigdata Life Cycle 기반 아키텍처 소스-수집-저장-분석-표현의 모든
과정을 지원해야 함
2. 데이터 관점 Data Type의 다양성 지원 정형,비정형,반정형 등 다양한 Type의 데이터를 처리할 수 있어야 함
3. 인프라 구조관점 Scale-Out 구조 MPP (Massive Parallel Process) 방식의 분산 데이터 처리 가능 구조
- 확장성


빅데이터 분석 플랫폼의 통합 아키텍처 구성도

빅데이터 분석 플랫폼에 필요한 데이터 아키텍처 



빅데이터 분석 플랫폼의  핵심 기술

구분 기술요소 기술설명
원본 데이터 저장 대용량 분산 파일 저장
로그 기반 데이터 포함
Hadoop File System
MapReduce
구조적 데이터 저장 대용량 분산 데이터 저장소 NoSQL, HBase
Cassandra , MongoDB
데이터 마이닝 빅데이터 패턴 분석 및 고객 분석을 위한
알고리즘
군집화, 분류화
기계학습
데이터 분석 알고리즘 데이터 분석을 위한 세부기술 Clique 분석
Centrality  분석

 

Clique 분석

Clique cohesion 분석이란 네트워크(network)를 구성하는 점(node)들간의 결합력(Cohesion)을
바탕으로 해서 군집 구조를 파악하는 분석기법으로. 결합력(Cohesion)은 social network를
구성하는 점(node)들간의 강한(strong) 연결관계를 나타냅니다. Clique은 결합력을 가지는
최소 3개의 점(node)으로 구성되는 그룹(group)을 나타내며 모든 점(node)이 직접적으로
연결되어 있어야만 Clique이 성립됨. 그러므로 Clique은 정의상 완벽한 연관관계와 높은 밀도를
가지게 된다.

왼쪽에는 4개의 빨간색 노드로 이루어진 Clique 하나를 볼수 있다.
오른쪽 5개의 파란색 노도로 이루어진 Clique 하나를 볼수 있다.
Clique는 이 처럼 노드들이 서로 완벽하게 연결되어 있는 것을 말한다.


Centrality 분석

Centrality 란 '중심도' 라고 번역할 수 있는데 어떤 네트워크가 구성되었을 때 이 네트워크에서
가장 중요한 노드를 찾기 위한 일종의 metric 기법이라고 할수 있다.
Centrality분석(사회연결망분석) 은 한 Node가 네트워크에서 얼마나 중심에 위치하는지에 대한
정도를 측정하는 방법이다.다시말해 Node가 특정 Measure에 의해 가질 수 있는 Maxinum값과
현재 네트워크상에서가지는 값의 비율에 대한 분석을 뜻한다. 

1) degree Centrality - 노드별로 직접 연결된 edge의 weight 만을 고려한다. 즉 해당 노드가
                             직접 가진 영향력의 크기는 얼마인가를 측정하는 것을 말함.
2) closeness Centrality - 네트워크의 모든 노드로부터 얼마나 가깝게 위치해있는지를 고려하여
                                centrality를 계산한다.
3) betweenness centrality - 네트워크의 모든 노드 쌍 간의 shortest path가 해당 노드를 지나는지를
                                     고려한 centrality이다.

[출처] 11회 정보관리기술사 기출문제풀이집 (117회 정보관리기술사 모임 - 어울림)

728x90
반응형
LIST
728x90
반응형
SMALL

정규화(Normalization)의 정의

데이터베이스에서의 정규화(Normalization)란 관계형 데이터베이스 모델에서
데이터의 중복을 제거하여 삽입 , 갱신 , 삭제 이상현상을 방지하기 위해
무손실 분해를 하는 과정을 말한다.
테이블간에 데이터의 중복이 있는 경우 Insert, Update, Delete 할 때 이상현상 
즉 테이블간, 데이터간 정합성이 깨지는 이상현상이 발생을 한다.
이러한 이상현상을 방지하기 위해 테이블간에 같은 필드가 중복해서 저장되지
않도록 테이블을 분리하는데 이것을 정규화라고 한다.
단 테이블을 분리하면서 데이터의 손실이 가해지면 안되는데 이것을 '무손실분해'
라고 한다.


정규화의 단계

단계 설명
1차 정규화 모든 속성이 원자값을 가지도록 분해
2차 청규화 부분함수 종속성 제거
3차 정규화 이행함수 종속성 제거
BCNF 결정자 함수 종속성 제거
4차 정규화 다중값 종속성 제거
5차 정규화 후보키를 통한 Join 종속성 제거



1차 정규화

릴레이션 R의 모든 애트리뷰트가 원자값만을 갖는 경우 제1정규화를 만족한다.


2차 정규화 (부분함수 종속성 제거)

• 기본키가 모든 애트리뷰트의 결정자가 되는 완전함수종속성을 만족하는 경우
• 기본기카 2개 인 경우 그 중 하나만 가지고도 다른 애트리뷰트와 완전함수종속이 
   되는 경우가 있다면 그 릴레이션은 제2정규화를 만족하지 못한다.

 기본키중에 하나인 <학번>만 가지고도 [학과이름]과 [학과전화번호]를 알수 있다.
  (함수종속) 
•  따라서 2개의 테이블로 분리해야 한다.


3차 정규화

• 키가 아닌 애트리뷰트에 다른 애트리뷰트가 함수종속되는 경우가 있다면 그 릴레이션은
  제3정규형을 만족하지 못한다. (이행종속성) 

  • 기본키가 아닌 [학과이름]만 알아도 기본키가 아닌 [학과전화번호]를 알수 있다. 
    즉 기본키가 아닌 애트리뷰트들간에 함수종속이 있는 경우


BCNF 

• 키가 아닌 애트리뷰트가 기본키에 속하는 어떤 애트리뷰트를 결정하는 경우 
   BCNF를 만족하지 못한다.
• 결국 BCNF를 만족하려면 모든 결정자를 후보키로 만들어야 한다.
  즉 각 결정자를 키로 하는 테이블로 각각 분할해야 한다.
• 3NF이면서 BCNF가 아닌 경우의 조건
    - 복수의 후보키를 가지고 있어야 한다.
    - 후보키들이 복수의 애트리뷰트로 구성되어 있어아 한다.
    - 후보키들이 서로 중첩된다.

기본키가 아닌 [C] 컬럼만으로도 기본키중 하나인  애트리뷰트를 알수 있는 경우


문) 렐레이션 R (A,B,C) 에서 다음과 같은 함수적종속성이 성립할 때, 3정규형을 
    만족하도록 릴레이션을 분할하라.. (키는 A이다)
               A -> B   , A -> C  , C->B

답) A->C , C->B 로 인해 키가 아닌 애트리뷰트(B,C)간에 함수종속성이 있는 
    이행함수가 존재하므로  2정규형까지 만족한 상태임
    이행함수가 존재하는 경우 그 다리역할을 하는 필드를 기준으로 분리하면 된다
    따라서   (A,C) , (C,B) 로 분리한다


정규화의 장점

항목 설명
이상현상 제거 중복에 따른 이상현상을 방지하여 데이터의 정합성유지
저장공간 효율화 아무래도 데이터의 중복을 제거하므로 저장공간을
덜 쓴다.
확장성 확보 데이터 신규 발생시 추가가 용이하다.


정규화의 단점

항목 해결책
조회쿼리 수행시 테이블 분리로 인한 Join 의 증가로 인해 검색 속도 저하될수 있음 적절하게 필드의 중복을 통해 Join 수를
감소시킬 수 있다.
  -> 반정규화 (De-Normalization)

 

728x90
반응형
LIST
728x90
반응형
SMALL

데이터사이언스(Data Science)의 정의

1. 일반적인 컴퓨팅 기술 + 분산 컴퓨팅 기술 + 데이터 마이닝 + 기계학습 + 데이터 분석(통계, 수학)에
   해당하는 학술분야를 아울러 통칭하기 위해서 만들어졌다
2. 데이터마이닝(Data Mining) 과 유사하게 정형, 비정형 형태를 포함한 다양한 데이터로부터 지식과
   인사이트를 추출하는데 과학적 방법론, 프로세스 알고리즘, 시스템을 동원하는 융합분야
3. 데이터를 통해 실제 현상을 이해하고 분석하는데 통계학, 데이터분석, 기계학습과 연관된 방법론 
   통합 학문


데이터사이언스(Data Science)의 등장배경

전통적인 데이터 분석은 주로 '통계학' 을 중심으로 한 분석(analysis)은 표집(sample)된 데이터를 주로
다루는데 이런 표집데이터 즉 샘플데이터(Sample Data) 는 글자 그래도 샘플이기 때문에 컴퓨터에
저장되는 Size가 작다. (물론 통계학 자체가 이런 샘플 데이터를 가지고 전체 모수를 추측하는
학문이기때문에 당연하다.)
하지만 대량의 데이터 즉 빅데이터가 출연하면서 통계학뿐만 아니라 컴퓨터공학에서도 현실적으로
큰 장벽이 되기 시작했다. 이러한 빅데이터를 처리하는데 많은 자원과 시간이 소모되었기 때문에
당연히 반복작업이 많은 데이터분석, 기계학습과 같은 것은 만족할 만한 결과를 도출하기가 거의
불가능했다. 하지만 빅데이터 기술과 함께 분산컴퓨팅이 고도화되고 일반화도되면서 비교적 저렴한
가격으로 대량의 데이터를 처리할 수 있는 방법으로 이런 제약이 점차 사라지게 되었다.
이런 분산컴퓨팅환경에서의 데이터분석과 현대의 비즈니스는 아주 새롭지는 않지만 기존에 나눠서
했던 작업을 한꺼번에 융합해서 하는 작업을 요구하게 되었고, 그것을 데이터과학(data science)
이라고 부를 수 있다.
즉 전통적인 분석은 통계학을 중심으로 샘플을 중심으로 추론 등에 중심을 둔다고 하면 빅데이터는
대량의 데이터를 처리하고 실시간으로 활용하며 기계학습과 같은 것을 더불어 사용한다. 
즉 예전에는 통계학자, 수학자, 데이터분석가,기계학습전문가 등이 각각 역할을 수행했지만 지금은
분산컴퓨팅 등 대량의 데이터를 처리할 수 있는 환경이 만들어지면서 한 사람이 그 역할들을 같이
수행할 수 있게 되었다.


데이터사이언스에 필요한 스킬 - Data scientist skill set

skill 설명
통계
statistics

통계학은 오랜 전통을 가지고 있으며 통계학이 바로 데이터를 분석하기 위한 학문이라고 할 수 있다. 데이터사이언스라는 일에서 가장 중요한 것은 데이터를 분석하는 작업이며 분석에 필요한 많은 기법과 과거에 축적된 지혜를 통계학을 통해서 얻을 수 있다. 때문에 데이터사이언티스트는 통계학에 대한 지식이 많이 필요하다. 하지만 통계학은 배우기 어려운 학문 중에 하나이며 관련된 것과 다루는 분량이 매우 방대하고 오랫동안 공부하지 않으면 쉽게 이해할 수 없는 난해한 것들도 많다. 처음에는 기초지식을 익힌 후에 필요한 것들을 확장해서 배우고 꾸준히 익혀야 한다. 통계학의 모든 것을 한 사람이 다 아는 것은 매우 어려운 일이다.

ICT기술

컴퓨터 자원 활용 능력을 말한다. Linux, Windows server를 잘 다룰 수 있고, 터미널(Terminal)에서 명령어를 통해 Linux/Unix 환경에서 원할하게 작업을 할 수 있어야 한다. 당연히 몇개의 스크립트 언어(Script language)를 잘 다룰 수 있어야 하고 때로는 소프트웨어 개발이나 플랫폼에 관련된 개발 업무도 어느 정도 할 수 있어야 한다. 그리고 데이터 분석과 설명을 위해 Excel, Powerpoint와 같은 사무용 소프트웨어도 잘 다룰 수 있어야한다.
컴퓨터 활용 능력은 데이터사이언스에 있어서는 실행능력과 같은 것이다. 자신의 생각이나 아이디어, 가설등을 확인하기 위해서는 스스로 컴퓨팅 자원을 구성하고 활용해서 데이터를 입수하고 처리를 해서 목표를 달성해야 하는데 큰 무리가 없어야 한다

빅데이터와 분산컴퓨팅 기술

분산 컴퓨팅은 과거에는 사용하기 매우 어려운 기술이었고 설비를 갖추기 위해서 비용도 많이 필요했지만 Hadoop과 그 에코시스템(Echo system; Hadoop과 관련된 분산컴퓨팅 관련 소프트웨어들) 및 유사 소프트웨어들이 많이 생겨나고 각광을 받기 시작했고 그와 더불어 하드웨어의 가격이 낮아지고 성능이 점점 높아지게 되었다. 그 결과로 모두가 어렵지 않게 분산컴퓨팅을 사용할 수 있도록 일반화가 많이 되었다. 하지만 여전히 분산컴퓨팅을 사용하기 위해서는 역시 많은 연습과 활용에 필요한 제반 지식이 필요한 것이 문제이다.
Hadoop, Hive, Spark, Storm, Kafka와 같은 분산 컴퓨팅과 BigQuery, RedShift와 같은 클라우드컴퓨팅에서 제공하는 관리형 솔루션도 가리지 않고 잘 사용할 수 있어야 한다.

기계학습 및 데이터마이닝 기술 컴퓨터를 활용해서 어떤 가치를 찾는 작업이 분표을 통해서 통찰(insight)를 찾는 것에서 추가로 뭔가를 해야 한다면 자동화(automation)가 필요하다. 기계학습도 자동화의 일종이다. 데이터마이닝 또한 데이터에서 가치를 찾는 작업을 일부 자동화한 것이라고 볼 수 있다. 자동화 기술은 구현된 이후에는 편하게 사용할 수 있지만 구현 작업 자체는 매우 어렵다. 기계학습은 빅데이터와 데이터사이언스에 있어서는 필수라고 할 수 있으며 기계학습 기술이 포함된 데이터마이닝 기술 역시 필수라고 할 수 있다
데이터시각화 
Data visualization
분석 결과의 적절한 표현이 필요하다. 무엇을 하던지 시각적으로 표현해 주지 않으면 사람이 빨리 이해하는 것은 어려운 일이다. 연구 또는 실행한 결과 검증한 가설등을 누군가에게 설명하는 것은 반드시 필요한 과정이 되는데 이때 시각화 만큼 주목을 빨리 끌고 설명을 쉽게 할 수 있는 것은 없다. 설명 이외에도 데이터 분석 결과나 기계학습의 모형에 대한 성능 확인, 시뮬레이션 등을 하기 위해서는 데이터의 상태와 모형의 결과를 눈으로 확인하기 위한 시각화가 사람에게는 매우 유용하다. 더불어 동적인 시각화를 위해서 Javascript를 이용한 웹개발 기술도 습득이 필요하다
수학
Mathematics

데이터과학을 배우는 것은 수학에서 시작해서 기계학습과 분산컴퓨팅을 거치고 통계학을 관통해서 다시 수학으로 돌아가서 끝을 맺는다고 할 수 있다. 데이터 사이언스의 시작과 끝은 사실상 수학이다.
데이터사이언스에 관련된 일을 오래하다고 보면 알고리즘이나 모형의 깊숙한 부분을 보거나 수리적 모형을 고민해야 할 때 항상 마지막에 부딪히는 것은 수학이다. 수학은 모든 과학과 공학의 기본이라고 할 수 있다. 특히 선형대수학, 미적분, 미분방정식까지는 어느 정도의 지식을 쌓아두어야 하며 위상수학과 해석학을 비롯한 다른 대수들도 경우에 따라 알아야 할 수 있다

비즈니스 지식 Domain Knowledge

관련된 비즈니스에 대한 상당한 수준의 전문 지식이 있어야 한다. 보통의 직장이라면 회사의 주력 비즈니스에 따른 전문 업무 지식이라는 것이 필요하게 된다. 예를들어 통신회사에 근무하고 있다면 통신 비즈니스와 통신 설비, 통신 프로토콜, 통신 상품에 관해서 알아야 하며 학습을 통해 고급 지식도 습득해야 한다. 자동차 회사에 근무하고 있다면 자동차의 부품, 조립, 생산 및 각종 유닛, 역학 기술, 엔지니어링 등에 대해서 알아야 할 것이다. 업무 지식이라고 할 수 있는 도메인 지식이 없다면 데이터 사이언스는 실제로 사상누각이 되며 기술을 활용해서 성취를 얻기 어렵다.
도메인 지식은 자신이 근무하는 회사의 주력 사업이나 연구소의 주력 연구 분야 또는 창업을 준비하고 있다면 그 사업 분야와 관련된 지식이 되기 마련이다. 각 도메인과 관련된 일을 실제로 하지 않는다면 학습을 해서 배우기는 매우 어려우므로 각자의 상황에 따라 달라질 것이다. 즉 자신의 환경에서 얻을 수 있는 도메인 지식을 최대한 얻은 상태여야 데이터 사이언스도 잘 할 수 있다


<출처 : 인투더데이터 : http://intothedata.com/01.data_science/ >

728x90
반응형
LIST
728x90
반응형
SMALL

오픈소스 DB의 바람

현재 데이터베이스의 시장은 전통적인 강자인 Oracle , SQL Server 가 시장 점유율에서 높은 자리를 
차지하고 있다는 건 누구나 아는 사실이다. 
하지만 데이터베이스 시장에 '탈 오라클'을 앞세운 오픈소스 기반의 데이터베이스가 바람을 일을키고
있다. 
최근 마리아DB와 몽고DB 등 인기 오픈소스 DB는 한국 지사를 세워 본격적인 시장 공략에 나섰으며,
아마존웹서비스(AWS)와 구글 등 클라우드 서비스 업체들은 오픈소스 및 이를 기반으로 한 자체 DB
서비스를 강화하는 추세다. 구글 클라우드는 최근 기자간담회를 개최하고, 내년 초 국내에 데이터센터가
들어서면 본격적인 클라우드 DB 서비스 확대를 예상했다.
여기에 큐브리드, 알티베이스와 같은 국내 오픈소스 DB업체까지 가세하며 그야말로 오픈소스 DB의
춘추전국시대를 맞이했다는 평가다. 물론 전세계 DBMS 시장의 60% 이상을 차지하는 오라클의
벽을 깨긴 쉽지 않지만, 점차 오라클의 틈새를 파고들고 있다는 평가다.

데이터베이스 순위

순위 데이터베이스
1 Oracle
2 My SQL
3 SQL Server
4 PostgreSQL
5 몽고 DB
6 IBM DB2
13 마리아 DB

                 DB엔진닷컴 2019년 10월 순위


외산 오픈소스 DB

  몽고 DB 마리아 DB
특징 문서(도큐먼트) 기반으로 NoSQL DB로 클라우드 환경에서 이용할 수 있는 ‘아틀라스’ DB도 제공하는 것이 특징이다. 마이SQL을 개발한 몬티 와이드니어스가 오라클의 마이SQL인수에 반발해 만든 오픈소스 DBMS다
죽, 마이SQL 사용자가 DBMS를 마리아DB로 바꿔도 애플리케이션을 수정할 필요가 없다
트랜잭션 워크로드(OLTP)와 분석 워크로드(OLAP)를 동시에 수행할 수 있는 기능을 제공하는 것이 특징이다
현황 지난해 7월 국내 지사를 설립한 몽고DB의 경우, 9월 국내 첫 사용자 컨퍼런스인 ‘몽고DB 로컬 서울’을 개최하며 적극적인 기술 지원을 약속했다. 몽고DB는 현재 2500만명의 개발자가 이용 중이며, 제품 다운로드 수도 7000만건에 달한다 지난 9월 국내에서 열린 기자간담회에서 마리아DB 측은 “삼성SDS 자회사인 에스코어를 통해 삼성그룹의 그룹웨어 ‘녹스 포탈’에 마리아DB가 20% 이상 사용되고 있다”며 “원래 녹스 포탈은 오라클 DB 기반이지만, 마리아DB 사용 비중이 점차 확대되고 있다”고 설명했다
레퍼런스 네이버와 라인, 카카오, NHN 등 140여개 삼성전자와 삼성SDS, SK텔레콤, 현대·기아차 등 200여 곳


국산 오픈소스 DB

국내 대표 오픈소스DB인 ‘큐브리드’도 최근 공공, 국방분야에서 독보적인 존재감을 드러내고 있다.
지난 2008년 오픈소스로 전환한 큐브리드는 최근 미국 IT솔루션 리뷰업체(굿펌즈)에서 선정한
‘오픈소스 DB 관리 소프트웨어 10선’에 선정되기도 했다.


클라우드 업체의 DB 공세

  AWS(아마존웹서비스) 구글 클라우드
현황 아마존 오로라와 다이나모DB, 레드시프트 등 특정 애플리케이션 활용에 특화된 다양한 DB서비스를 제공하고 있다. 이미 삼성전자와 LG전자, SK, 아모레퍼시픽 등 국내 주요 대기업이 AWS DB서비스를 활용 중이다 클라우드 메모리스토어, 클라우드 빅테이블, 클라우드 스패너, 빅쿼리 등 6가지의 완전 관리형 DB서비스를 제공하고 있다. 또, 레디스, 몽고DB, 엘라스틱, 데이터스택스, 네오4j 등 7개 오픈소스DB를 구글 클라우드 콘솔에서 직접 제공한다



<출처 : 디지털데일리 : https://n.news.naver.com/article/138/0002078070 >

728x90
반응형
LIST
728x90
반응형
SMALL

Apriori 알고리즘을 이용한 연관규칙 도출방법을 보면 빈발항목중에서 후보집합을 선정하는 기준으로
지지도(Support) 를 사용한다.  이처럼 연관규칙분석을 할ㅣ때 후보집합을 결정하려면 먼가 후보선정/탈락
측정기준이 있어야 하는데..주로 쓰이는게 3가지 기준이 있다.

측정기준 설명 수식
지지도
(Support)
전체 거래중에서 품목 A와 B가 동시에 포함된 거래의 수
예) 마트에서 고객이 구매한 거래내역중에서 빵과,우유를 동시에
     구매한 거래 건수

                    우유,빵 모두 포함된 거래 (A∩B)
    Support =  -----------------------------------
                              전체 거래수(N)
                 A∩B 
A∩B / N = ------
                   N
신뢰도
(Confidence)
품목 A가 구매되었을 때 품목 B가 추가로 구매될 확률
(조건부 확률)

                        우유,빵 모두 포함된 거래 (A∩B)
   Confidence =   ----------------------------------
                             우유가 포함된 거래수 (A)
                 A∩B 
A∩B / A = ------
                   A
향상도
(Lift
/Improvement)
품목 A를 구매할 때 B도 구매하는지 서로 간의 연관성을
파악하는 비율

                             우유.빵 모두 포함된 거래수
                           --------------------------------
                                       전체거래수
Lift  =  -------------------------------------------------------- 
             우유가 포함된 거래수            빵이 포함된 거래수
             ----------------------    X   ----------------------
                 전체거래수                        전체거래수
 
           우유.빵 모두 포함된 거래수 x 전체거래수       
      =   --------------------------------------------- 
           우유가 포함된 거래수 x 빵이 포함된 거래수     

            A∩B x N
      =  -------------
              A x B 


                           > 1 이면 양의 상관관계
                           = 1 이면  독릭접인 관계
                          < 1  이면  음의 상관관계
         A∩B x N
       ------------
           A x B 


예제

문제) 우유와 빵을 함께 구매한 거래가 10%이고,우유를 구매한 거래의 20%가 빵도 구입했을 때
        우유->빵의 상관관계는 ?  (전체거래중 빵을 구입한 거래는 10%이다)

(풀이) 상관관계란 향상도를 뜻한다.  향상도가 > 1 이면 양의 상관관계이다.
         만약 전체거래(N) = 10 이라고 가정하면

         지지도 = 10% = 1/10                즉 우유,빵 함께 구매한 거래가 1건
         신뢰도 = 20% = 1/우유 구매수   즉 우유 구매수 = 5 건
         빵구입이 10% 이므로               즉 빵 구매수 =  1건

                            우유.빵 거래수 X N           1 x 10
          향상도     -------------------------    = --------  =  2
                           우유거래수 x 빵거래수        5 x 1 


Apriori  알고리즘 설명

Apriori알고리즘은 지지도를 이용해서 연관규칙을 찾는 기법중에 하나이다.
  - 연관규칙를 찾아주는 알고리즘 중에서 가장 먼저 개발되었고, 또 가장 많이 사용된다.
  - 연관성규칙의 첫 번째 단계는 항목들 간의 연관성을 나타내기 위한 후보가 되는 
     모든 규칙들을 생성
  - 구매 데이터베이스 내에서 단일 항목들, 2개로 된 항목들, 3개로 된 항목들. 기타 등등의
     모든 조합을 발견
  - 그러나 항목들이 늘어나면 이러한 모든 조합들을 생성하기 위한 계산시간은 기하급수적으로
    증가함.
  - 데이터베이스 내에서 높은 빈도를 갖는 조합 (빈발 항목집합 : Frequent item sets) 을
    찾아내는 것
  - 빈발 항목집합 결정 도구 :지지도(Support)

<출처 : https://www.youtube.com/watch?v=mxXCBFwRGPk >

 위 그림에서 ID 101,102...  가 고객번호라고 생각하고 그 고객이 구매한 상품들이  items 이라고 하자.
[1단계]  단일항목 즉 단일항목 기준으로 해서 구매 빈도수(sup/지지도)를 구해보면 A 항목은 101, 103 고객이 
           구매했으니깐  2 이고, B항목은 3, C항목도 3 ... 이런식으로 구매된 횟수를 카운트 한 결과가  C1 이다. 
           이때 기준 횟수를 2 즉 구매횟수가 2미만인 항목은 제외를 한다 라는 기준을 세운다. (최소 지지도)
           이 기준에 의하면 C1 테이블에서 제외할 항목은 구매횟수가 1인  D 항목이고 D 항목을 제외한 새로운 
           후보집합 L1 을 도출할 수 있다.

[2단계]  L1 후보집합을 기준으로 2개항목 조합을 해서 구매빈도수 즉 지지도를 구한다. 
           그러면 C2 테이블을 만들 수 있다. 이 조합중에서 최소지지도인 2를 충족하지 못하는 (A,B) , (A,E) 조합을
           제외하면 L2 라는 새로운 후보집합을 도출할 수 있다

[3단계] 마찬가지로 L2 후보집합을 기준으로 이번에는 3개항목을 조합해서 구매빈도수(지지도)를 구해본다.
          (A,B,C) , (A,B,E), (A,C,E) ,(B,C,E) 조합이 나올수 있는데 이때 2단계에서 최소지지도에 못미쳐서 제외된 조합이
          (A,B), (A,E) 였기 때문에 (A,B,C) , (A,B,E), (A,C,E) 조합들에서   (A,B), (A,E) 조합이 부분집합으로 포함된 건
          제외해야 하기 때문에 결국 (B,C,E) 조합만 남게 된다. 
          (B,C,E) 조합의 지지도를 구해보면 2 가 되고 이는 최소지지도를 충족하므로 후보집합이 될 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

연관규칙(Association Rule) 분석기법중에 대표적인 알고리즘이 Apriori 이다.
Apriori 알고리즘은 지지도를 이용해서 연관규칙을 찾는 기법이라고 할수 있다.
  - 연관규칙를 찾아주는 알고리즘 중에서 가장 먼저 개발되었고, 또 가장 많이 사용된다.
  - 연관성규칙의 첫 번째 단계는 항목들 간의 연관성을 나타내기 위한 후보가 되는 
     모든 규칙들을 생성
  - 구매 데이터베이스 내에서 단일 항목들, 2개로 된 항목들, 3개로 된 항목들. 기타 등등의
     모든 조합을 발견
  - 그러나 항목들이 늘어나면 이러한 모든 조합들을 생성하기 위한 계산시간은 기하급수적으로
    증가함.
  - 데이터베이스 내에서 높은 빈도를 갖는 조합 (빈발 항목집합 : Frequent item sets) 을
    찾아내는 것
  - 빈발 항목집합 결정 도구 : 지지도(Support)

Apriori  알고리즘 설명

<출처 : https://www.youtube.com/watch?v=mxXCBFwRGPk >

 위 그림에서 ID 101,102...  가 고객번호라고 생각하고 그 고객이 구매한 상품들이  items 이라고 하자.
[1단계]  단일항목 즉 단일항목 기준으로 해서 구매 빈도수(sup/지지도)를 구해보면 A 항목은 101, 103 고객이
           구매했으니깐  2 이고, B항목은 3, C항목도 3 ... 이런식으로 구매된 횟수를 카운트 한 결과가  C1 이다. 
           이때 기준 횟수를 2 즉 구매횟수가 2미만인 항목은 제외를 한다 라는 기준을 세운다. (최소 지지도)
           이 기준에 의하면 C1 테이블에서 제외할 항목은 구매횟수가 1인  D 항목이고 D 항목을 제외한 새로운
           후보집합 L1 을 도출할 수 있다.

[2단계]  L1 후보집합을 기준으로 2개항목 조합을 해서 구매빈도수 즉 지지도를 구한다. 
           그러면 C2 테이블을 만들 수 있다. 이 조합중에서 최소지지도인 2를 충족하지 못하는 (A,B) , (A,E) 조합을
           제외하면 L2 라는 새로운 후보집합을 도출할 수 있다

[3단계] 마찬가지로 L2 후보집합을 기준으로 이번에는 3개항목을 조합해서 구매빈도수(지지도)를 구해본다.
          (A,B,C) , (A,B,E), (A,C,E) ,(B,C,E) 조합이 나올수 있는데 이때 2단계에서 최소지지도에 못미쳐서 제외된 조합이
          (A,B), (A,E) 였기 때문에 (A,B,C) , (A,B,E), (A,C,E) 조합들에서   (A,B), (A,E) 조합이 부분집합으로 포함된 건
          제외해야 하기 때문에 결국 (B,C,E) 조합만 남게 된다. 
          (B,C,E) 조합의 지지도를 구해보면 2 가 되고 이는 최소지지도를 충족하므로 후보집합이 될 수 있다.

           
           
 

 

728x90
반응형
LIST
728x90
반응형
SMALL

연관규칙이란....

연관규칙분석(Association Rule Analysys)이란 그냥 나열되어 있는 원본 데이터들에 대해서 데이터들간의 연관관계를 탐색하는 무방향성 데이터마이닝 기법중에 하나이다.
보통 마트의 고객들이 구매한 상품간의 연관관계를 찾을 때 많이 사용되는 분석기법이라서 '장바구니 분석' 이라고도 한다.  예를 들어.. 남성 고객이 마트에 가서 구매한 품목을 보니깐 맥주와 기저귀를 같이 구매하는 경우가 많이 나타나면 마트 진열대에 맥주와 기저귀를 같이 배치하는 한다던지 (매장진열), 또 라면을 살때 스윙칩을 같이 사는 형태가 많이 발견된다면 이 두 상품을 합친 패키지 상품을 개발한다던지..(GS25의 오모리김치찌게맛 스윙칩) 여성 고객은 편의점에서 주로 우유와 커피라서 편의점에 들어가면 진열대 가장 잘 보이는 곳에 우유와 커피 제품을 진열하는 것을 볼수 있는데 이런 것들이 모두 연관규칙분석을 통해 효과적인 매장 진열, 패키지상품의 개발, 교차판매 전략수립에 많이 이용된다.
다시 연관규칙을 정의한다면 "데이터들에 대한 발생빈도를 기반으로 데이터간에 연관관계를 찾는 데이터마이닝 기법" 이라고 할수 있다.

데이터마이닝 (Data Mining)

데이터마이닝이란 어떤 데이터들에 대해서 패턴,유사성 등의 관계를 찾아내서 모델을 만든 다음에 새로운 신규 데이터가 들어오는 경우 이 모델에 넣어서 결과를 도출하는 것을 말한다.

데이터마이닝이란 데이터내에서 어떠한 방법(순차 패턴, 유사성 등)에 의해 관심 있는 지식을 찾아내는 과정을 말하는 것으로 대용량의 데이터 속에서 유용한 정보를 발견하는 과정이며, 기대했던 정보뿐만 아니라 기대하지 못했던 정보를 찾을 수 있는 기술을 의미한다. 데이터 마이닝을 통해 정보의 연관성을 파악함으로써 가치있는 정보를 만들어 의사결정에 적용함으로써 이익을 극대화시킬 수 있다. 기업이 보유하고 있는 일일 거래 데이터, 고객 데이터, 상품 데이터 혹은 각종 마케팅 활동의 고객 반응 데이터 등과 이외의 기타 외부 데이터를 포함하는 모든 사용 가능한 Raw 데이터를 기반으로 감춰진 지식, 기대하지 못했던 경향 또는 새로운 규칙 등을 발견하고, 이를 실제 비즈니스 의사 결정 등을 위한 정보로 활용하고자 하는 것. 데이터 마이닝의 적용 분야로 가장 대표적인 것은 데이터베이스 마케닝 분야이다.
[네이버 지식백과] 데이터 마이닝 [data mining] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 전산용어사전편찬위원회)


연관규칙의 특징

특징 설명
장바구니 분석 구매 내역 분석을 통해 동시에 구매될 가능성이 있는 상품의 연관관계를 찾는다.
또는 A제품을 구매 후 B제품을 구매할 가능성이 높은 경우 해당 제품들을 나란히
진열을 하는 경우.
자율학습기법
(Unsupervised Learning)
자율학습의 반대말인 지도학습을 먼저 설명하면 지도학습(supervised Learning)이란 이미 목표변수, 목표값이 정해진 상태에서 데이터를 분석하는 것을 말하며, 자율학습이란 목표변수, 결과값을 모르는 상태에서 데이터를 분석해서 데이터간의 관계를 분석해서 결과값을 도출해내는 분석기법이다. 자율학습기법에 대표적인 것이 바로 연관규칙분석이다.  
   1) 자율학습기법 (Unsupervised Learning)
        - 연관규칙분석
        - 군집분석 :  수많은 데이터들을 2개그룹, 3개그룹 등으로 분류
   2) 지도분석기법 (Supervised Learning)
        - 신경망 분석
        - 의사결정나무 분석
        - 사례기반
        - 로지스틱 회귀분석
탐색적 기법 조건반응(if then else)으로 표현되므로 이해가 쉬윔
 - 만일 A가 일어난다면 B가 일어난다. 
 - 상품 A를 구매하면 상품 B도 구매를 한다.
 - 어떤 Item 집합의 존재가 다른 Item 집합의 존재를 암시
즉 함께 구매하는 상품의 조합이나 패턴을 파악
목적변수 미존재 목적변수(Target Variable) 없이 특성의 조합으로 규칙을 표현하며, 특정한 변수가 아닌 모든 변수 또는 특성에 대하여 예측
규칙간의 독립성 규칙들 간에는 서로 영향을 주지 않기 때문에 하나의 고객이 여러 개의
규칙에 해당 될 수 있음


연관규칙 도출과정


연관규칙 측정기준

< 출처 : 정보관리기술사 118회 모임 - 두드림 >

  *  지지도/신뢰도/향상도에 대한 자세한 설명은 다음 편에서....


연관규칙의 결과 유형

결과유형 설명
Useful Result 분석결과가 마케팅 측면에서 유용한, 쓸만한 결과가 나옴.
예) 맥주와 기저귀 상품과의 구매관계
Trivial Result 어떤 새로운 분석결과가 아닌 기존 마케팅 정책에 의해 연관성이 높게 나온 경우
먼가 새롭게 발견된 구매패턴이 아니고 기존 마케팅 활동 결과로서 예상이 되는
결과를 말함.
예) 정비계약을 맺은 고객이 많은 설비를 구매하더라..  -> 이는 정비계약에 의해
     자연스럽게 따라오는 설비 구매 형태일뿐
Inexplicable Result
(설명할수 없는 결과)
의미를 발견하기 위해 많은 고민이 필요한 경우
예) 새로 철물점을 개업하면 화장시 문고리가 많이 팔림.. -> 연관관계가 있는건지
     고민이 필요함..



활용분야

분야 내용
교차판매 (Cross Selling)
묶음판매 (Bundling)
A제품을 구매한 고객이 B제품을 추가로 구매할 수 있도록 유도하는 전략에 사용
예) 맥주와 기저귀, 양복과 넥타이
상품진열 고객의 구매패터을 고려하여 매대상품을 진열
예) 편의점에 제일 잘보이는 곳에 우유와 커피를 나란히 진열
부정탐지 (Fraud Detection) 신용카드나 보험금 수령 패턴을 분석하여 도난카드나 보험사기 행위를 적발
Catalog Design 상품의 배치문제, 패키지 상품의 구성, 쿠폰발행, 카탈로그의 구성, 신상품의카테고리 설정 등에 활용 가능
첨부 우편물 우편물 내용과 첨부파일과이 관계분석


연관규칙의 주의점

1. 연관규칙분석은 원인과 결과 즉 인과관계를 찾는 게 아니라는 것이다. 맥주가 원인이고 기저귀가 결과라는
   뜻이 아니라 , 맥주와 기저귀가 같이 조합을 이룬다는 뜻이다..
2. 연관규칙 즉 자율탐색기법(Unsupervised Learning) 은 목표변수(Target Variable) 이 없다.. 이 말이  
   무슨 말이냐면.. 연관규칙 분석에 의해 나온 결과값에 대해서 맞다, 안맞다 를 판단하는게 아니라는
   뜻이다. 예를 들어 맥주를 산 고객은 기저귀를 같이 구매를 한다 라고 결과가 나왔지만 이 것이
   정답이 아닐수도.. 즉 맥주를 산 고객이 무조건 기저귀를 사는 것은 아니라는 뜻이다.

728x90
반응형
LIST
728x90
반응형
SMALL

데이터베이스의 교통 신호등

데이터베이스의 목적중에 가장 큰 것은 데이터의 공유라고 할 수 있다.
따라서 데이터베이스는 여러 사용자가 동시에 접근해서 데이터를 Insert , update , delete
할 수밖에 없다.  사거리 교통신호등이 없다고 생각해보자.. 아마 사방에서 차들이
제각기 주행하면서 아마도 충돌사고가 날 것이다. 데이터베이스도 마찬가지다. 여러 사용자가
동시에 데이터에 접근을 하기 때문에 사거리 교통신호등 처럼 교통정리를 안해주면 데이터는
정합성이 깨지면서 엉망이 될 것이다.
그래서 데이터베이스에서는 이러한 데이터에 대한 접근 즉 Transaction 에 대한 4원칙 즉
ACID를 따르도록
되어 있으며 이 ACID를 보장하기 위해서는 Isolation Level (격리수준) 을 결
정해서
적용해야 한다.

Transacton 이란?

트랜잭션(Transaction) 에 대한 개념 정의를 먼저 할 필요가 있다.
데이터베이스에서 트랙잰션(Transaction) 이란 데이터에 대한 하나의 논리적 실행 단계를
말한다.  좀 어려운 용어정의인데.. 예를 들자면  계좌이체를 생각해 보면 계좌이체는
A라는 송신자 통장에서 돈을 빼서 B라는 수신자의 통장에 돈을 넣는 2가지 단계로 
이루어 지듯이 이 두단계에서 데이터에 대한 처리를 하는 논리적 행위를 트랜잭션
(Transaction) 이라고 한다.
그런데 만약 A송신자 통장에서 돈만 빠져나가고 B 수신자 통장에는 오류가 나서 돈이
안들어 왔다면 정말 큰일이다. 따라서 트랙잭션은 이 다음에 설명할 ACID 를 반드시
충족해야 한다.

데이터베이스의 읽기 이상 현상 (Read Phenomena)

데이터베이스에서 Isolation level 에 따라 발생할 수 있는 이상현상들을 정리해보면..

유형 내용 해결방안
Dirty Read 트랜잭션 T1 에서 A = 5 로 Update 하고 아직 commit 를 않았는데 다른 트랜잭션  T2가 이 A 값을 읽을 수 있도록 허용하는 경우 Dirty Read가 발생 할수 있다. 즉.   T1이 Update를 수행한 후 아직 commit 도 안했는데 다른 트랜잭션 T2가 A 를 select 했을 때 5 가 나올 경우 , T1 트랜잭션이 rollback을 했을 경우 결국 A 값은 5가 아님에도 T2 는 5로 잘못 읽는 (Dirty Read) 현상이 발생한다 공유 Lock 을 걸어서 T1이 A 에 접근하고 있는 동안 다른 트랜잭션이 접근하지 못하게 함.
Non Repeatable Read T1 트랜잭션이 같은 쿼리를 두번 실행했는데 그 결과값이
다른 경우, 즉 T1 이  select 를 두번 하는 사이에 T2 트랜잭션이 update 나 delete 를 한 경우
트랜잭션 완료 시까지 수정/삭제 제한
Phantom Read T1 트랜잭션이 같은 쿼리를 두번 수행 시 첫번째 실행시에 
없던 레코드가 두번째 실행시에 튀어 나오는 경우 
T1 트랜잭션이 읽은 데이터는 T2 트랜잭션에서 갱
신, 삭제하지 못할 뿐 아니라 중간에 새로운 레코드 삽입(Insert)까지 불허


데이터베이스의 Isolation Level (고립수준) 유형

유형 내용 읽기 이상 현상
Read Uncommitted  트랜잭션  T1이 아직 commit 하지 않은 데이터를 다른 트랜잭션 T2가 Read 하는 것을 허용 Dirty Read 
오라클은 미지원
Read Committed 트랜잭션  T1이 commit 을 한 데이터만 다른 트랜잭션 T2가 Read 하는 것을 허용 Dirty Read는 막을 수 있지만
Non Repeatable Read와 Phantom Read 는 막을 수없음
(대부분의 DBMS가 채택)
Repeatable Read 선택 트랜잭션 T1이 읽은 데이터는 T1이 종료될 때 까지는 다른 트랜잭션이 수정/삭제 (Update/Delete) 를 허용하지 않음
단 삽입(Insert) 은 허용 함.
Dirty Read와 Non Repeatable Read까지는 발생을 막을수 있으나 Phantom Read 는 막을 수없음
Serializable 선행 트랜잭션 T1이 읽은 데이터는 T이 종료될 때 까지 다른 트랜잭션이 수정/삭제는 물론 삽입 까지 허용하지 않음 Dirty Read와 Non Repeatable Read와 Phantom Read 까지 모두 막을 수 있음
(완벽하지만 실제 현실적으로는 불가능에 가깝다)



Isolation Level 과 읽기 이상 현상의 관계를 정리하면 다음과 같다

Isolation Level Dirty Read Non Repeatable Read Phantom Read
Read Uncommitted  가능 가능 가능
Read Committed 불가능 가능 가능
Repeatable Read 불가능 불가능 가능
Serializable 불가능 불가능 불가능



데이터베이스의  Isolation Level 과 동시성과의 상관관계

위에서 설명한 4가지 Isolation Level 중에서 Serializable 레벨이 가장 읽기 이상 현상을 모두 방어할 수 있는 방법이기
는 하지만 대신 그만큼 트랜잭션들이 동시에 병렬적으로 실행되지 못하고 하나씩 하나씩 실행순서대로 실행이
되기 때문에 대기시간이 늘어나고 전체적으로 performance 가 떨어 질수 밖에 없다. 
반대로 Read Uncommitted 는 그냥 트랜잭션 의 수행을 동시에 수행 가능하기 때문에 동시성이 높아진다.
이렇게 Isolaton Level 과 동시성(Concurrent) 은 서로 Trade-off  관계이다.

 

728x90
반응형
LIST

+ Recent posts