데이터전처리 Data Preprocessing
05 데이터통합
목차 1. 개체식별 2. 중복 3. 상관분석 4. 데이터값충돌탐지및해결 데이터전처리 (Data Preprocessing) - 05 데이터통합 3
1. 개체식별
개체식별문제Entity Identification Problem 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 데이터통합 data integration 은여러데이터저장소로부터온데이터의합병 데이터웨어하우스 data warehouse 나데이터마이닝 data mining 같은데이터분석작업은다수의원천데이터로부터하나의통일된데이터저장소로결합시키는통합작업필요 데이터원천은데이터베이스, 데이터큐브 data cube, 플랫파일 flat file 등다양한형태로존재 여러데이터원천들로부터데이터를통합할때, 동일한의미의개체들이서로다르게표현되어있을경우, 어떻게일치시킬수있을까? 개체식별문제Entity Identification Problem 데이터전처리 (Data Preprocessing) - 05 데이터통합 5
개체식별문제Entity Identification Problem customer_id = cust_number customer A 데이터베이스 cust B 데이터베이스 데이터전처리 (Data Preprocessing) - 05 데이터통합 6
개체식별문제Entity Identification Problem 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 데이터분석가나컴퓨터가개체들이같은것인지식별할수있을까? 메타데이터의활용이중요 각속성의메타데이터는이름과의미, 데이터타입, 허용되는값의범위, 무규칙 (null rule) 등을포함 스키마통합과정에서오류를피하기위해메타데이터활용필요 메타데이터를이용해데이터변환에서도사용 A 데이터베이스는성별값으로 M, F 사용 B 데이터베이스는성별값으로 1, 2 사용 데이터전처리 (Data Preprocessing) - 05 데이터통합 7
개체식별문제Entity Identification Problem 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. A 데이터베이스의 customer 테이블의 customer_id 와 B 데이터베이스의 cust 테이블의 cust_number 가기본키 primary key 이고, 두속성모두동일한데이터타입과도메인을가지고있다면, 두속성은이름은다르지만동일한속성으로판단가능 데이터통합시일원화된속성으로정의가능 customer 테이블과 cust 테이블간의튜플연계도가능 데이터전처리 (Data Preprocessing) - 05 데이터통합 8
개체식별문제Entity Identification Problem 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 데이터베이스의어떤속성을다른데이터베이스의속성과동일성여부판단시종합적으로고려할사항 속성의데이터타입과도메인 기본키여부 참조무결성 ( 외래키 ) referential constraint : 참조하는테이블의외래키 foreign key 의속성값은반드시참조하는테이블의기본키 primary key 속성값중하나여야함 함수적종속관계functional dependency 데이터전처리 (Data Preprocessing) - 05 데이터통합 9
함수적종속성Functional Dependency 속성 X, Y 에대하여, x1( X)=x2( X) 이면, y1( Y)=y2( Y) 임을보장할때, 속성 Y 는함수적으로종속됨 X Y 로표기 X 는결정자 determinant Y 는의존자 dependent X 가 Y 를함수적으로결정 Y 가 X 에함수적으로종속 데이터전처리 (Data Preprocessing) - 05 데이터통합 10
함수적종속성Functional Dependency 학번 학생이름 학과 201841231 홍길동 컴퓨터공학과 201859341 이순신 기계공학과 201911214 김철수 경영학과 학번에의해학생이름과학과는고유하게구분 학과속성은학번에함수적으로종속 학번은결정자, 학생이름과학과는종속자 학번 { 학생이름, 학과 } 데이터전처리 (Data Preprocessing) - 05 데이터통합 11
함수적종속성Functional Dependency 학번 과목코드 성적 학생이름 201841231 1800100 A 홍길동 201841231 2113100 A+ 홍길동 201841231 3921211 B+ 홍길동 201859341 2113100 A 이순신 201859341 3921211 A 이순신 201911214 1800100 B+ 김철수 학번 학생이름 { 학번, 과목코드 } 성적 { 학번, 과목코드 } 학생이름 학생이름을결정짓는요소는학번 성적을결정짓는요소는학번과과목코드 학생이름은학번과과목코드에의해서도고유하게구분가능 학생이름의경우함수적종속성이두개 데이터전처리 (Data Preprocessing) - 05 데이터통합 12
함수적종속성Functional Dependency 부분함수적종속Partial Functional Dependency 속성집합 Y 가속성집합 X 전체가아닌부분에도함수적으로종속 { 학번, 과목코드 } 학생이름 학생이름이속성집합 Y 이고, { 학번, 과목코드 ) 가속성집합 X 일때, 학생이름은 { 학번, 과목코드 } 에도함수적으로종속되며 X 의일부인학번에도함수적으로종속 완전함수적종속Full Functional Dependency 속성집합 Y 가속성집합 X 전체에대해서함수적으로종속된경우 { 학번, 과목코드 } 성적 성적이속성집합 Y 이고, { 학번, 과목코드 } 가속성집합 X 인상태에서, 성적은 { 학번, 과목코드 } 의어떤부분집합에도종속되지않음 학번만으로성적을결정지을수없고, 과목코드만으로성적을결정지을수없음 데이터전처리 (Data Preprocessing) - 05 데이터통합 13
2. 중복
유도속성derived attribute 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 어떤속성은다른속성이나속성의집합으로부터유도가능 연령속성은생년월일속성의유도속성 총점속성은각과목점수속성집합의유도속성 일반적으로데이터베이스조회성능을높이기위해반정규화과정에서유도속성정의 반정규화 de-normalization 정규화 normalization 의반대개념으로유도속성의정의 릴레이션의수직 / 수평분할등이존재 일반적으로정규화는데이터중복을제거하는과정, 반정규화는성능향상을위해중복을허용하는과정 유도속성은성능향상에도움이되지만, 데이터중복을허용하는과정으로데이터불일치문제발생 월소득속성값이 100 만원인데연소득속성값이 1,000 만원 ( 둘중하나의속성값에오류가존재 ) 데이터전처리 (Data Preprocessing) - 05 데이터통합 15
정규화되지않은테이블 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 정규화되지않은테이블의사용은데이터중복의원인이됨 일부러정규화하지않은채테이블을사용하는경우, 조인을피함으로성능을향상시키지만, 이러한테이블구조는데이터중복으로인한데이터일관성저해문제발생 예를들어, 이름과주소정보를키로사용하여구매자주문을저장하는데이터베이스 같은이름에다른주소를갖는경우에대해데이터불일치발생 정규화관점에서구매자주소는구매자의구매품목과는별개의테이블에저장필요 구매테이블의키가 ( 구매자번호 + 구매일시 ) 라고가정할때, 주소는키에부분함수적종속관계에있으므로제 2 정규화원칙에따라구매자번호와함께별도의테이블로분리설계해야함 그러나조회성능향상을위해테이블을분리하지않았을때에는같은구매자번호에대해서다른주소가존재할가능성은언제든지있음 데이터전처리 (Data Preprocessing) - 05 데이터통합 16
정규화가필요한이유 불필요한데이터중복으로공간낭비와이상 anomaly 발생 삽입이상 Insertion Anomaly : 새데이터를삽입하기위해불필요한데이터도삽입하는문제 갱신이상 Update Anomaly : 중복튜플중일부만변경하여데이터가불일치되는모순의문제 삭제이상 Delete Anomaly : 튜플삭제시필요한데이터까지함께삭제되는데이터손실문제 데이터전처리 (Data Preprocessing) - 05 데이터통합 17
삽입이상 Insertion Anomaly 학번학생이름학과과목코드성적 201841231 홍길동컴퓨터공학과 1800100 A 201841231 홍길동컴퓨터공학과 2113100 A+ 201841231 홍길동컴퓨터공학과 3921211 B+ 201859341 이순신기계공학과 2113100 A 201859341 이순신기계공학과 3921211 A 201911214 김철수경영학과 1800100 B+ 아직수업을하나도수강하지않은학생의경우, KEY 가 STUDENT_ID, COURSE_ID 로사용되고있으므로삽입불가 ( 기본키컬럼은 NULL 불가 ) 삽입하려면 수강미정 과같은과목코드를불필요하게삽입해야함 데이터전처리 (Data Preprocessing) - 05 데이터통합 18
갱신이상 Update Anomaly 학번 학생이름 학과 과목코드 성적 201841231 홍길동 컴퓨터공학과 1800100 A 201841231 홍길동 컴퓨터공학과 2113100 A+ 201841231 홍길동 컴퓨터공학과 3921211 B+ 201859341 이순신 기계공학과 2113100 A 201859341 이순신 기계공학과 3921211 A 201911214 김철수 경영학과 1800100 B+ 이순신 이 기계공학과 에서 컴퓨터공학과 로전과하면전체학과정보변경필요 모두변경하지않은경우 이순신 이 기계공학과 인지 컴퓨터공학과 인지알수없음 데이터전처리 (Data Preprocessing) - 05 데이터통합 19
삭제이상 Delete Anomaly 학번 학생이름 학과 과목코드 성적 201841231 홍길동 컴퓨터공학과 1800100 A 201841231 홍길동 컴퓨터공학과 2113100 A+ 201841231 홍길동 컴퓨터공학과 3921211 B+ 201859341 이순신 기계공학과 2113100 A 201859341 이순신 기계공학과 3921211 A 201911214 김철수 경영학과 1800100 B+ 김철수 가 1800100 과목을수강취소할경우, 김철수 에대한행을삭제하게됨 수강취소를반영하기위해서 김철수 학생정보가삭제되는이상발생 데이터전처리 (Data Preprocessing) - 05 데이터통합 20
정규화Normal Form 중복요소를찾아제거해나가는과정 제 1 정규화 : 하나의속성이원자값 atomic value 을갖도록설계를변경하는과정 제 2 정규화 : 주식별자가아닌속성들중에서주식별자전체가아닌일부속성에종속된속성을찾아제거하는과정 제 3 정규화 : 주식별자가아닌속성들중에서종속관계에있는속성을찾아제거하는과정 데이터전처리 (Data Preprocessing) - 05 데이터통합 21
제1정규화1NF, First Normal Form 학번 과목코드 성적 학생이름 학과 등록금 201841231 1800100, 2113100, 3921211 A, A+, B+ 홍길동 컴퓨터공학과 350 201859341 2113100, 3921211 A, A 이순신 기계공학과 400 201911214 1800100 B+ 김철수 경영학과 320 학번 과목코드 성적 학생이름 학과 등록금 201841231 1800100 A 홍길동 컴퓨터공학과 350 201841231 2113100 A+ 홍길동 컴퓨터공학과 350 201841231 3921211 B+ 홍길동 컴퓨터공학과 350 201859341 2113100 A 이순신 기계공학과 400 201859341 3921211 A 이순신 기계공학과 400 201911214 1800100 B+ 김철수 경영학과 320 데이터전처리 (Data Preprocessing) - 05 데이터통합 22
제2정규화2NF, Second Normal Form 학번 과목코드 성적 학생이름 학과 등록금 201841231 1800100 A 홍길동 컴퓨터공학과 350 201841231 2113100 A+ 홍길동 컴퓨터공학과 350 201841231 3921211 B+ 홍길동 컴퓨터공학과 350 201859341 2113100 A 이순신 기계공학과 400 201859341 3921211 A 이순신 기계공학과 400 201911214 1800100 B+ 김철수 경영학과 320 { 학번, 과목코드 } 성적 { 학번, 과목코드 } 학과 { 학번, 과목코드 } 등록금 학번 학과 학번 등록금 학과 등록금 부분함수종속성 데이터전처리 (Data Preprocessing) - 05 데이터통합 23
제2정규화2NF, Second Normal Form 학생 성적 학번 학과 등록금 201841231 컴퓨터공학과 350 201859341 기계공학과 400 201911214 경영학과 320 학번 과목코드 성적 201841231 1800100 A 201841231 2113100 A+ 201841231 3921211 B+ 201859341 2113100 A 201859341 3921211 A 201911214 1800100 B+ 정규화를통해분리된릴레이션들은조인을통해원래의구조로복원가능 두릴레이션모두제 1 정규형에속하고, 기본키가아닌모든속성이기본키에완전종속 삽입이상 : 새로운학과가생기지만, 등록된학생이없다면학번속성이 NULL 삭제이상 : 201911214 학번이자퇴하는경우, 경영학과에대한정보가사라짐 데이터전처리 (Data Preprocessing) - 05 데이터통합 24
제3정규화3NF, Third Normal Form 기본키가아닌모든속성이기본키에이행적함수종속이되지않으면제 3 정규형 이행적함수종속 Transitive Functional Dependency : X, Y, Z 에대해서 X Y 이고 Y Z 이면, X Z 가성립 (Z 가 X 에이행적으로함수종속 ) 학생릴레이션의함수적종속성 학번 학과 학과 등록금 학번 등록금 이행적함수종속관계는 [X, Y], [Y, Z] 릴레이션으로분리 학번 학과 등록금 201841231 컴퓨터공학과 350 201859341 기계공학과 400 201911214 경영학과 320 학번 학과 201841231 컴퓨터공학과 201859341 기계공학과 201911214 경영학과 학과 등록금 컴퓨터공학과 350 기계공학과 400 경영학과 320 데이터전처리 (Data Preprocessing) - 05 데이터통합 25
3. 상관분석
상관분석Correlation Analysis 두속성간의엄격한함수적종속관계가성립하지는않지만, 상관분석을통해한속성이다른속성을얼마나강하게암시하는지를데이터를통해측정 두속성간에상관도가높다면두속성을중복으로보고그중하나의속성을제거할수있음 두속성간의상관도는데이터타입에따라다르게구함 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. https://t1.daumcdn.net/cfile/tistory/23334c41525365a31e 데이터전처리 (Data Preprocessing) - 05 데이터통합 27
상관계수Correlation Coefficient 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 수치속성에대해서속성 A 와 B 의상관계수 r A,B = σ i=1 N a i Aҧ Nσ A σ B b i തB = σ i=1 N a i b i NAҧ തB Nσ A σ B N: 튜플의개수 a i, b i : 튜플 i에서의속성 A, B의값 A ҧ, തB : 속성 A, B의평균값 σ A, σ B : 속성 A, B 의표준편차 1 r A,B +1 : 상관계수결과값범위 r A,B 0 : 속성 A, B 는양의상관관계 positively correlated, 즉 B 값이증가함에따라 A 값이증가 r A,B 0 : 속성 A, B 는음의상관관계 negatively correlated, 즉 B 값이증가함에따라 A 값이감소 r A,B = 0 : 속성 A, B 는독립적이며둘사이에상관관계가없음 데이터전처리 (Data Preprocessing) - 05 데이터통합 28
상관계수Correlation Coefficient 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 상관계수 r A,B 의절대값이클수록더강한상관성이있다는의미 일반적으로두속성간상관성이클수록중복속성으로판단해서하나의속성을분석대상에서배제해도분석결과에큰영향을주지않음 상관관계가인과관계를직접의미하는것은아님 어떤지역의병원수와자동차수사이에상관관계를발견해도병원수와자동차수사이의어떤인과가존재한다기보다는두속성다인구에대한인과관계로보는것이타당 상관분석상강한상관관계를나타낸다고하더라도중복속성여부를판단할때는해당분야도메인지식을충분히고려해서최종판단하는것이바람직함 데이터전처리 (Data Preprocessing) - 05 데이터통합 29
카이제곱검정Chi-Square Tests 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 범주형 ( 이산형 ) 데이터인경우, 속성 A 와 B 사이의상관관계는피어슨 Pearson 의카이제곱 χ 2 검정에의해측정가능 속성 A 가 c 개의범주값 a 1,a 2,,a c 를가진다고가정 속성 B 가 r 개의범주값 b 1, b 2,,b r 를가진다고가정 속성 A 와 B 에의해구성되는튜플은 c 개의열과 r 개의행으로구성되는분할표로표현 A i,b j 를속성 A 가 a i 를가지고, 속성 B 가 b j 를가지는튜플이라고할때 χ 2 의정의 c r χ 2 = i=1 j=1 = o ij e ij 2 e ij o ij : A i,b j 에대한관측도수 observed frequency ; 실제로존재하는 A i,b j 튜플수 e ij : A i,b j 에대한기대도수 expected frequency ; 확률적으로기대되는 A i,b j 튜플수 데이터전처리 (Data Preprocessing) - 05 데이터통합 30
카이제곱검정Chi-Square Tests 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 기대도수 e ij 계산식 e ij = count(a = a i) count(b = b j ) N N : 데이터튜플수 count(a = a i ) : 속성 A 에대하여 a i 를갖는튜플수 count(b = b j ) : 속성 B 에대하여 b j 를갖는튜플수 χ 2 통계량은속성 A 와 B 가독립이라는가설을검증 카이제곱검정은자유도 r 1 c 1 을갖는유의수준에근거하여검정 데이터전처리 (Data Preprocessing) - 05 데이터통합 31
4. 데이터값충돌탐지및해결
데이터값충돌탐지및해결 이현호, Python 과 SQL 을활용한실전데이터전처리, 카오스북, 2018. 서로다른데이터원천의데이터들을통합할때동일한개체에대해서도속성값이다를수있음 표현 representation, 척도 scaling, 부호화 encoding 등의차이 거리를나타내는속성으로어느 DB 에서는미터 meter 단위로다른 DB 에서는마일 mile 단위로저장 학생성적데이터로어느 DB 에서는과목별점수가저장되고, 다른 DB 에서는총점과평균만저장 동일한개체의동일한값이데이터원천에따라다르게표현되어있는경우, 데이터통합시에기준을정하여데이터값을변환하여통합시키는것이필요 통합과정에서 DB 의속성을일치시킬때데이터구조에도주의를기울여야함 원천시스템의기능적종속성과제약사항들이목표통합시스템의것과일치해야함 어느시스템에서는할인이총주문금액에적용되는반면다른시스템에서는주문을구성하는개별항목에적용 데이터의의미적이질성과데이터구조는데이터통합시에여러문제를발생시킴 여러유형의문제들을신중하게해결하여통합데이터의중복과불일치문제를최소화
데이터전처리 (Data Preprocessing) - 05 데이터통합 34