ADP 공부하기 4

비정형 데이터마이닝

텍스트 마이닝

  • 입력된 텍스트를 구조화해 그 데이터에서 패턴을 도출 후, 결과를 평가 및 해석
  • 다양한 포맷의 문서로부터 텍스트를 추출
  • 자연어로 구성된 비정형 텍스트 데이터 속에서 정보나 관계를 발견

텍스트마이닝 기능 : 문서 요약, 분류, 군집, 특성 추출

Corpus

  • 데이터의 정제 통합 선택 변환의 과정을 거친 구조화된 단계
  • ‘tm’패키지에서 문서를 관리하는 기본 구조, 문서들의 집합

tm패키지 함수

  • VCorpus() : 문서를 Corpus class로 만들어줌. 결과는 r메모리에만
  • PCorpus() : 문서를 Corpus class로 만들어 R 외부 db나 파일로 관리
  • DirSource(), VectorSource(), DataframeSource() : 디렉토리, 벡터, 데이터 프레임으로부터 코퍼스 생성을 위한 소스를 만들어 줌
  • tm_map(x,FUN) : x데이터에 대해 FUN을 적용

FUN에 들어가는 함수

as.PlainTextDocument : XML문서를 text로 전환 stripWhitespace : space 제거 removewords, stopwords(“english”) : 띄어쓰기, 시제 표준화 DocumentTermMatrix : 코퍼스로부터 문서별 특정 문자 빈도표 TermDocumentMatrix : 코퍼스로부터 단어별 문서의 빈도표

Term-Document Matrix

문서를 plain text로 전환, 공백 제거, lowercase변환, 불용어(stopword)처리, 어간추출(stemming) 등의 작업을 수행하고 문서번호와 단어 간 사용여부 또는 빈도수를 이용해 matrix만듬

Directory

텍스트마이닝 분석 시 사용하고자 하는 단어들의 집합

감성분석

문장에서 사용된 단어의 긍정과 부정 여부에 따라 전체 문장의 긍정/부정 판별

한글처리

KoNLP 등 사용, rJava패키지, JRE프로그램 설치해야함 명사를 추출할 때는 extractNoun(“문장”) 함수

워드 클라우드

단어들을 크기, 색 등으로 나타내어 구름 등과 같은 형태



## 사회연결망 분석

SNA

  • 개인과 집단들 간의 관계를 노드,링크로 모델링
  • 제이콥 마리노(개념), 바르네스(1954에 처음)

SNA 분류

  • 집합론적 방법
    • 객체들 간의 관계를 관계 쌍으로 표현
  • 그래프 이론을 이용한 방법
    • 객체를 점으로 표현, 연결은 선으로 표현
  • 행렬
    • 관계가 존재하면 1, 그렇지 않으면 0
    • 행과 열이 같은 개체가 배열(1원), 다른 개체(2원)
    • 준연결망 : 고객-상품 행렬에서 사람들 사이에 상호작용이 없어도 관계를 인위적으로 설정
    • 고객 트랜잭션(고객이 동일한 상품을 1개 이상 구매하면 직접적인 상호작용이 있다고 표현)
    • 상품을 동시에 구매 -> 서로 상호관계에 있음


연결 정도 중심성 - 한점에 직접적으로 연결된 점들의 합
- 한점에 얼마나 많은 다른 점들이 관계를 맺고 있는지를 기준으로 중심에 위치하는 정도를 계량화
-연결된 노드 수가 많을 수록 연결정도 중심성이 높아짐
근접 중심성 - 한점에 직접적으로 연결된 점들의 합
- 근접 중심성이 높을 수록 네트워크의 중앙에 위치
매개 중심성 - 네트워크 내 한 점이 담당하는 매개자 혹은 중개자 역할
- 한 노드가 연결망 내의 다른 노드 사이의 최다 연결 경로 위에 위치하면 할수록 그 노드의 매개 중심성이 높음
위세 중심성 - 자신의 연결정도 중심성으로부터 발생하는 영향력과 자신과 연결된 타인의 영향력을 합함
- 위세가 높은 노드들과 관계가 많을수록 자신의 위세도 높아짐
- 보나시치 권력지수 : 연결된 노드의 중요성에 가중치를 둬 노드의 중심성 측정


### SNA적용 분석용 솔루션 : KXEN, SAS, XARACT,Indiro, Onalytica, Unicet, Inflow, Pagek 등 MapReduce(분산 처리 기술)을 활용, Giraph(하둡 기반 그래프 프로세싱 프레임워크) RHadoop, RHIPE : R과 하둡 연동

SNA단계

  1. 그래프 생성
  2. 그래프를 목적에 따라 가공, 분석
  3. 커뮤니티를 탐지하고 각 노드의 역할을 정의해 어떠한 ROLE로 다른 객체들에게 영향력을 더 효율적으로 줄 수 있는지를 정의
  4. 위 결과를 데이터화하여 다른 데이터마이닝 기법과 연계하는 단계
  • 데이터화는 SNA를 통해 얻어진 커뮤니티의 프로파일을 해당 그룹의 연령,성별 등과 같은 고객 프로파일 평균값으로 산출해 그룹에 속할 개별 고객 속성에 그룹 넘버와 ROLE을 결합해 추가하는 단계임

R에서의 SNA

네트워크 레벨 통계량 degree, shortest paths, reachability, density, reciprocity, transitivity, triad census

커뮤니티 수를 측정하는 방법

WALKRAP알고리즘

  • 일련의 random walk과정을 통해 커뮤니티를 발견
  • 각 버텍스(그래프 꼭지점)를 하나의 커뮤니티로 취급해 점차 더 큰 그룹을 병합하면서 클러스터링
  • 코드를 실행하면 군집화 개수와 그래프 결과가 나타남
1
2
friend_comm = walktrap.community(m182,step=200,modularity=TRUE)
dend = as.dendrogram(friend_comm,use.modularity=TRUE)

Edge Betweenness method

  • 그래프에 존재하는 최단거리 중 몇 개가 그 edge를 거쳐가는 지를 이용해 edge-betweenness점수 측정
  • 높은 edge-betweenness점수를 갖는 edge가 클러스터를 분리하는 속성을 가짐
1
2
edge.betweenness.community(m182)
plot(as.dendrogram(friend_comm))

활용방안

몇 개의 집단으로 구성되고 집단 간 특성은 무엇이고 해당 집단에서 영향력 있는 고객은 누구이고 시간의 흐름과 고객 상태의 변화에 따라 다음에 누가 영향을 받을지를 기반으로 fraud, churn/acquisition prediction, product recommendation 등에 활용

updatedupdated2021-01-202021-01-20
Load Comments?