본문 바로가기

Cerificate/빅데이터분석기사

[빅데이터분석기사 필기] 3과목 - 빅데이터 모델링 (5/5)

728x90
반응형

  지난 포스트에서는 딥러닝을 다뤘다. 이번엔 비정형 데이터 분석기법을 공부하고자 한다. 이 글은 데이터에듀에서 발행한 '빅데이터 분석기사 필기' 교재 2권의 208~225페이지에 해당하는 내용을 토대로 정리하였다. 

디지털 데이터의 10%가 정형 데이터이고 나머지 90%는 비정형 데이터이다.
- IT 시장분석 전문기관 IDC -

※ 출처가 있는 이미지를 클릭하면 원 사이트로 접속된다.


 

 

Index

     

    5장 비정형 데이터 분석기법

    1절 비정형 데이터

    • 비정형 데이터 : 형식이 정해지지 않은 데이터. 구조와 형태가 다르고 정형화되지 않은 문자, 음성, 이미지 등
    • 데이터 유형
      • 정형 데이터 : RDBMS, CSV 등
      • 반정형 데이터 : 형태 (스키마, 메타데이터 등)가 있고, 연산 불가. 보통 API 형태로 제공. XML, HTML, JSON 등
      • 비정형 데이터 : 주로 NoSQL에 저장. 소셜 데이터, 영상, 이미지 등
    • 비정형 데이터 종류 : 텍스트, 이미지, 음성 및 영상, 로그 등
    • 분석기법 : 비정형 데이터 마이닝 - 비정형 데이터를 정형 데이터로 만든 후, 분류, 군집화, 회귀분석과 같은 방법론 적용.
      • 텍스트 마이닝, 오피니언 마이닝, 사회연결망 분석, 군집 분석 등

    2절 텍스트 마이닝 

    1. 텍스트 마이닝 개요

    • 다양한 형태의 문서로부터 텍스트를 획득하고, 문서별 단어의 행렬을 만들어 분석을 수행하거나 인사이트를 발견하는 것.
    • 여러 포맷의 문서에서 텍스트를 추출해 하나의 레코드로 만들고 단어 구성에 따라 데이터마트를 구성.
    • 단어 간의 관계를 활용해 감성 분석, 워드 클라우드 등을 수행하고 정보화, 분류, 소셜 네트워크 분석 등에 활용.
    • 텍스트 마이닝은 문서 분류 (테마별 분류, 지도 학습), 문서 군집 (성격이 유사한 문서끼리 그룹화, 비지도 학습), 정보 추출 등을 하고자 자연어 처리 NLP, 컴퓨터 언어학을 활용.

    2. 텍스트 마이닝 프로세스

    • 텍스트 수집 - 텍스트 전처리 - 텍스트 분석 - 텍스트 시각화 순
    • 1) 텍스트 수집 : 텍스트 저장소에서 다운로드 or 웹페이지 크롤링
      • 코퍼스 Corpus : 데이터의 정제, 통합, 선택, 변환 과정을 거치고 구조화된 텍스트 데이터. 데이터 마이닝에 활용 가능. R의 텍스트 마이닝 패키지, tm에서 문서를 관리하는 기본 구조.
    • 3) 텍스트 전처리 : 코퍼스의 복잡성을 줄이는 것이 핵심.
      • (1) 토큰화 Tokenization : 코퍼스에서 토큰이라 불리는 단위로 나누는 작업.
      • 토큰의 단위는 어절, 형태소 (뜻을 가진 가장 작은 단위), 음절 등이 될 수 있음.
        • A) 단어 토큰화 : 토큰 기준을 단어로 해 문장 부호를 제거하는 것.
        • B) 어절 토큰화 : 토큰 기준을 어절 word segment로 하여 띄어쓰기를 기준으로 잘라냄. 한국어와는 맞지 않음.
        • C) 형태소 토큰화 : 형태소 morpheme이 토큰 기준. 한국어에서 영어 단어 토큰화와 유사하게 처리하려면 형태소 토큰화를 수행해야 함. 조사 분리 필요.
        • D) 품사 태깅 part of speech tagging : 단어의 의미를 제대로 파악하고자 각 단어의 품사를 구분한 것.
      • (2) 불용어 처리 Stopword Removal : 데이터에서 유의미한 단어 토큰만 사용하고자 무의미한 단어를 제거하는 것. NLTK에서는 100여개 영단어를 패키지에서 미리 정의.
      • (3) 정제 & 정규화
        • A) 정제 Cleansing : 코퍼스에서 노이즈를 제거하는 것. 토큰화 단계에서 지속적으로 진행됨.
        • B) 정규화 Normalization : 표현 방법이 다른 단어를 통합시켜 표현
        • 표기가 다른 단어 통합, 대소문자 통일, 불필요 단어 제거, 정규 표현식 등
      • (4) 어간 추출 & 어근 추출 : 코퍼스의 단어 수를 줄이는 기법.
        • A) 어근 Lemma : 단어의 기본형. 예) am, are, is ☞ be동사
        • B) 어간 추출 Stemming : 정해진 규칙만으로 단어를 잘라내는 어림짐작의 작업. 어근 추출에 비해 섬세함이 떨어짐.
      • (5) 텍스트 인코딩 : 문서를 유의미한 숫자의 행렬 (벡터)로 바꾸는 것
        • A) 원 핫 인코딩 One-Hot Encoding : 텍스트 내 n차원의 단어를 각각 n차원의 벡터로 표현하는 방식. 각 단어에 고유한 정수 인덱스를 부여함. 
        • 단어가 포함되는 인덱스에 1, 나머지에 0을 넣어 표현한 벡터를 원 핫 벡터라고 함. (0,0,1,0,0)
        • 단어가 증가할수록 벡터의 저장 공간이 커지고 단어 유사도를 표현하지 못하는 한계.
        • B) 말뭉치 Bag of Word : 단어의 등장 순서를 감안하지 않고 각 인덱스 위치에 단어 토큰의 등장 횟수를 적은 벡터를 생성
        • 단어의 빈도를 수치화하기에 해당 문서의 성격, 주제를 판단하는 작업에 적합. 추천에 활용
        • C) TF-IDF (Term Freqency-Inverse Document Frequency) : 각 단어의 중요도라는 개념을 가중치로 부여. 가중치는 TF * IDF로 계산. 
        • TF(t,d) : 문서 d 내의 각 단어 t의 빈도. / IDF(t,D) : 단어 t가 등장한 문서 D의 역수
        • D) 워드 임베딩 Word Embedding : 단어를 벡터로 바꿔주는 모델. 분산표상 (비슷한 분포를 가진 단어의 주변 단어도 비슷한 의미를 지님) 개념 적용.
        • 원핫인코딩과 다르게 한 단어가 미리 정의된 차원에서 연속형의 값을 갖는 벡터로 표현되어 필요한 벡터 공간이 적고, 각 차원이 정보를 갖고 있어 벡터 간 유사도 도출 가능.
        • 00년대, NNLM 방법론 → 2013, 구글 Word2Vec 방법론
    • 4) 텍스트 분석 
      • 전처리가 끝나면 복합명사, 신조어 등에 대한 후처리 절차를 거쳐 데이터 분석 및 시각화 시행
      • (1) 토픽 모델링 : 문서에 담긴 여러 주제를 찾는 기법. 의미 연결망 분석 SNA 종류 중 하나. 텍스트 내 단어의 빈도를 분석해 전체 데이터를 관통하는 잠재적 토픽을 자동으로 추출하는 분류를 진행하기에 쟁점 (프레임) 분석에 활용됨. LDA, ATM 등의 방법이 있음.
      • (2) 감성 분석 Sentimental Analysis : 문장에서 주관점 감정을 나타내는 정보를 찾아 성향을 분석하는 것. 입력된 긍정/부정 단어 개수에 따라 문장의 성격 판단. 대규모 웹 문서가 필요해 자동화된 분석 방법을 사용. 제품, 브랜드에 대한 선호도 파악, 오피니언 마이닝에 필수적 분석 기술.
      • 버즈 모니터링 : 온라인에서 특정 테마에 대한 여론을 분석하는 것. 기업에서는 SNS의 댓글을 실시간 분석함.
      • (3) 텍스트 분류 : 텍스트를 지정한 카테고리로 분류하는 지도학습 기법. 과거에는 머신러닝 (SVM 등)을 많이 활용했으나 최근에는 딥러닝 (CNN, RNN 등) 기법을 활용하는 추세.
      • (4) 텍스트 군집화 : 벡터 연산으로 단어 벡터 간 유사도를 구하고 이를 토대로 비슷한 의미를 지닌 단어가 가깝게 모여 군집 형성 가능
    • 5) 텍스트 시각화
      • 시각화 기법으로 워드 클라우드 의미 연결망 분석 Semantic Network Analysis가 있음
      • (1) 워드 클라우드 : 텍스트 데이터의 특징을 도출하기 위해 활용.
      • (2) 의미 연결망 분석 : 문서에 있는 단어의 구조적 관계로 의미를 분석하는 것. 정보 단위가 되는 단어 or 구를 각각의 노드를 이루는 개념으로 간주. 개념 간 연결 상태를 링크로 표현.
      • 정제된 데이터의 빈도를 계산해 키워드를 선정하고 매트릭스 데이터로 만들어 의미 연결망 분석에 활용. (R에서는 TermDocumentMatrix를 씀)

    3. 정보 검색의 적절성

    • 정보 검색 혹은 자연어 처리에서 분석 결과를 평가하는 척도로 정확도와 재현율 사용.
      • 정확도 Precision : 모델이 참이라고 예측한 결과 중 실제로 참인 경우의 비율
      • 재현율 Recall : 실제로 참인 것 중 모델이 참이라고 예측한 결과의 비율.

    출처 : Wikipedia

     

    3절 사회연결망 분석 

    • 정의 : 개인과 집단 간의 관계를 노드와 링크를 모델링하여 분석하는 방법론. 개인 or 집단이 하나의 노드이고 노드 사이의 연결은 선으로 표현.
    • SNA 분류
      • 집합론적 방법 : 객체  간의 관계를 쌍으로 표현.
      • 그래프 이론을 이용한 방법 : 객체를 점으로 표현, 연결은 두 점을 연결하는 선으로 표현.
      • 행렬을 이용한 방법 : 객체를 행과 열에 대칭하게 배치. 객체 사이에 관계가 있다면 1을, 없으면 0을 입력.
      • 준연결망 quasi network : 고객-상품행렬에서 상품 구매자 간의 관계가 없어도 인위적으로 설정해 고객 간, 상품 간의 관계를 나타낸 네트워크.
    • 네트워크 구조 파악 기법
      • 중심성 : 연결정도 중심성 (한 점에 직접 연결된 점들의 합), 근접 중심성, 매개 중심성, 위세 중심성 (보나시치 권력지수 - 위세 중심성의 일반적 형태)
      • 밀도, 구조적 틈새, 집중도도 있음.
    • SNA 적용
      • 통신, 소셜 미디어, 게임산업에서 관심 높음.
      • 분석용 솔루션으로 KXEN, SAS, XTRCT 등이 있고 MapReduce라는 분산 처리 기술을 활용하거나 하둡 기반의 Giraph로 SNA를 적용함.
    • SNA 단계 : 그래프 생성 - 그래프 가공, 분석 단계 - 커뮤니티 탐색 & 객체(노드)의 역할 정의 - 결과를 데이터화하여 타 데이터 마이닝 기법과 연계
      • 데이터화 : SNA로 입수한 커뮤니티 프로파일을 고객 연령, 성별 등과 같은 고객 프로파일 평균값으로 산출하고 고객 속성에 그룹 넘버와 롤을 결합하는 방법으로 이루어지고 있음.
    • R에서의 SNA
      • 네트워크 레벨 통계량 : degree, shortest paths 등
      • 커뮤니티 수 측정 community detection
        • 1) WALKTRAP 알고리즘 : 각 버텍스 vertex (꼭지점)를 하나의 커뮤니티로 간주해 더 큰 그룹을 병합하며 클러스터링.
        • 2) Edge Betweenness method : 그래프의 최단거리 중 몇 개가 edge(연결)를 거치는지를 근거로 edge-betweenness 점수 측정. 이 점수가 높은 edge가 클러스터를 분리하는 속성을 가짐.

     

    #library
    #install.packages("igraph")
    library(igraph)
    
    tomo <- graph.data.frame(data); tomo
    summary(tomo)
    
    vcount(tomo)  #--- Vertex 노드의 수 
    V(tomo) #--- Vertex
    
    ecount(tomo) #--- Edge 선의 개수
    E(tomo)  #--- Edge
    
    get.edge.attribute(tomo, "friend_tie")     #--- Edge attribute
    get.edge.attribute(tomo, "social_tie")     #--- Edge attribute
    get.edge.attribute(tomo, "task_tie")       #--- Edge attribute
    
    mFriend <- delete.edges(tomo, E(tomo)[get.edge.attribute(tomo, name = "friend_tie") == 0])
    mSocial <- delete.edges(tomo, E(tomo)[get.edge.attribute(tomo, name = "social_tie") == 0])
    mTask <- delete.edges(tomo, E(tomo)[get.edge.attribute(tomo, name = "task_tie") == 0])
    
    summary(mFriend)
    plot(mFriend)
    
    mFriend <- as.undirected(mFriend, mode = "collapse")  #--- 방향이 없는 그래프로 변경
    mFriend <- delete.vertices(mFriend, V(mFriend)[degree(mFriend) == 0]) #--- 고립되어 있는 노드를 네트워크에서 제거
    
    summary(mFriend)
    plot(mFriend)
      
    # walktrap
    mFriend_wt <- walktrap.community(mFriend, steps = 200, modularity = TRUE)
    plot(as.dendrogram(mFriend_wt, use.modularity = TRUE))
    mFriend_wt$modularity
    
    # Edge Betweenness method
    mFriend_eb<-edge.betweenness.community(mFriend)
    plot(as.dendrogram(mFriend_eb, use.modularity = TRUE))

     

    walktrap

     

    ※ walktrap 패키지 업데이트로 인한 default값 등의 변화로 교재와 다른 결과가 나온다고 생각됨.

     

    Edge Betweenness method

     

    ♧ 예상문제 오답 정리

    • 데이터 종류
      • 비정형 : 형태가 없으며 연산 불가
      • 반정형 : 형태가 있으며 연산 불가
    • 웹 마이닝 종류 : 웹 내용, 웹 사용, 웹 구조 마이닝 등
    • 사회 연결망 분석 SNA
      • SNA 주요 속성 : 응집력, 명성, 구조적 등위성, 범위, 중계 등
      • 분석 방법 : 집합론 (쌍), 그래프, 행렬
      • 최근에는 독립 네트워크 사이의 관계에 대한 연구가 활발.
      • 1원 모드 매트릭스 : 행과 여레 같은 개체가 배치된 매트릭스.
      • 중심성 측정 방법 : 연결정도, 위세, 근접, 매개 중심성.
    • VCorpus (short for Volatile Corpus) : 메모리에서만 텍스트 문서 유지, 관리
    • 텍스트마이닝
      • 기능 : 문서요약, 문서분류, 문서군집, 특성추출
      • TDM - Sparcity : 0인 원소가 차지하는 비율.
      • 순서 : 토큰화 - 불용어 설정 - 정제, 정규화 - 어근, 어간 추출 - 인코딩 순
      • 원핫인코딩 : 문서를 유의미한 숫자의 행렬로 바꾼느 것, 각 단어에 고유한 정수 인덱스 부여.
    • 감성분석
      • 개별 문장 분석에 오류가 있다면 전체적인 추이 파악 난이도가 상승함.
      • 텍스트 내용의 객관성은 따지지 않고, 긍부정 여부만 집중.

     


    • 220818 R코드 추가 예정 (220823 추가 완료)
    • 220824 R코드 주석 수정 (당일 완료)

     

     

    728x90
    반응형