네트워크 기반 추천 알고리즘에 대해 궁금하신 독자는 관련 논문을 찾아보기 바란다. 구슬 학술검색에서 ‘social network recommender system‘로 검색하면 관련 논문 다수를 찾아볼 수 있다. - P292
사람 추천과 같은 쌍방향 추천 시스템을 상호 추천 시스템이라고 하며 전통적인 추천 시스템 알고리즘과는 다소 다른 알고리즘을 써야 한다. - P292
협업 필터링 알고리즘은 다수의 사용자들 평가 데이터를 협력적으로 이용하여 추천 스코어를 산출한다. 추천 시스템은 평가 매트릭스에 빈 부분을 예측하는 방식으로 동작한다. - P293
협업 필터링 알고리즘의 가장 기본 아이디어는 결측값은 관련된 사용자 및 아이템의 관찰값으로 추정 가능하다는 점에 있다. 협업 필터링은 크게 사용자 기반과 아이템 기반 두 가지 형태로 나뉜다. - P293
사용자 기반 협업 필터링은 사용자 A와 비슷한 성향의 사용자들을 추정하는 게 핵심이다. 사용자 A가 평가하지 않은 결측값들을 사용자 A의 동료 그룹이 평가한 평점을 가중 평균하여 추정한다. - P293
이외에 아이템 기반 협업 필터링이 있다. 사용자 A의 아이템 B에 대한 평점을 추정하기 위해서 아이템 B와 유사한 아이템 셋 S를 지정한다. 아이템 셋 S에 해당하는 아이템들을 사용자 A가 평가한 과거 평점을 기반으로 A의 B에 대한 평가를 추정한다. - P294
콘텐츠 기반 추천 알고리즘은 아이템 자체의 설명적 특성을 추천 알고리즘에 활용한다. 사용자의 평가 또는 구매 행동 패턴이 아이템 정보와 결합된다. - P294
콘텐츠 기반 추천 시스템은 충분한 사용자-아이템 평점 데이터가 확보되지 않은 새로운 아이템에 대한 추천을 할 때 협업 필터링 알고리즘을 대체할 수 있다는 이점이 있다. 그러나 협업 필터링 알고리즘과 비교할 때 비슷한 아이템이 계속 추천될 수 있는 단조로움이 단점으로 지적된다. - P294
협업 필터링과 콘텐츠 기반 추천 시스템은 서로 상호보완 관계에 있기 때문에 두 알고리즘을 결합한 하이브리드 추천 형태로 알고리즘을 만드는 경우도 많다. - P295
지식 기반 추천 시스템은 자주 구매되기 힘든 고가 아이템을 추천할 때 유용하다. 예를 들어 부동산, 자동차, 명품, 금융 서비스들은 개인이 빈번하게 구매하기 힘든 아이템이기에 지식 기반 추천 시스템이 안성맞춤이다. 간혹 구매가 있긴 하지만 그 빈도가 너무 낮기 때문에 너무 과거의 일이라 학습 모델에 사용할 수가 없다. - P295
고가의 물품들을 구매할 때에는 한두 가지 특성만 고려하는 게 아니라 여러 특성을 복합적으로 고려해야 해서 과거 몇몇의 데이터로 학습하기가 어렵다. - P295
고가 물품과 같이 과거 학습데이터 양이 한정되어 있고 여러 요소를 복합적으로 고려해야하는 경우에 지식 기반 추천 시스템이 활용될 수 있다. 지식 기반 추천 시스템은 사용자의 명시적인 쿼리에 따라 추천이 된다. 예를 들어 가격 상한선, 하한선을 사용자가 지정하면 그에 맞는 아이템 리스트 후보군이 도출될 수 있다. 한 개의 쿼리만 지정하는 게 아니라 복합적인 쿼리를 넣을 수 있어 복합적인 쿼리 모두를 만족시키는 아이템 리스트를 추출할 수 있다. - P296
지식 기반 추천 시스템은 사용자의 쿼리를 실시간으로 받아야 하기 때문에 웹 인터액티브 개발이 필요하다. 그리고 그 안에 사용자의 취향을 반복적인 질문을 통해 얻어내는 기능, 영역 필터 기능이 필요하다. - P296
지식 기반 추천 시스템은 콘텐츠 기반 추천 시스템과 아이템의 설명적 특성을 활용한다는 공통점이 있다. 차이점은 콘텐츠 기반 추천 시스템이 과거 사용자의 행동을 기반으로 추천 하는 것에 반해 지식 기반 추천 시스템은 실시간 사용자 요구에 따라 추천한다는 점이다. - P296
최근에는 딥러닝의 발달로 딥러닝 기반 추천 알고리즘도 꽤 쓴다. 다만 딥러닝의 핵심은 높은 정확도에 있는데 추천 시스템은 사람의 미묘한 감성과 심리가 반영되기 때문에 딥러닝을 사용한다고 해도 엄청나게 놀라울 정도의 성능 향상이 일어나지 않는다. 괜히 딥러닝을 사용했다가 성능은 크게 향상 안 되는데 계산 연산량만 늘어나서 일부러 사용 안하는 경우도 많다. 따라서 다른 도메인에 비해서는 아직까지 전통적인 방법이 더 많이 활용되고 있다고 볼 수 있다. - P297
텍스트 마이닝은 텍스트 형태의 데이터를 알고리즘에 기초하여 수집, 처리, 분석하는 연구기법을 통칭한다. 알고리즘을 적용하려면 기본적으로 수치형 데이터여야 한다. 따라서 텍스트의 단어 또는 문장을 숫자화 또는 벡터화하여 알고리즘에 적용하여야 한다. - P298
텍스트 마이닝이 각광받게 된 이유는 간단하다. 오늘날과 같이 텍스트가 폭발적으로 넘쳐나는 시기에 전통적으로 사람이 일일이 텍스트를 다 읽고 내용을 분석하는 방식이 거의 불가능하기 때문이다. - P298
텍스트 마이닝을 하기 위해서는 전처리가 굉장히 중요하다. 텍스트 전처리의 품질에 따라 딥러닝, 머신러닝 알고리즘을 적용한 결과가 달라지기 때문이다. 또한 언어마다 전처리 방법이 조금씩 다르기 때문에 언어별로 따로 익혀야 한다. 그렇다고 모든 언어를 다 알 필요는 없다. 나는 영어, 한국어 텍스트 전처리 방법만 익히고 있다. 그 외 언어는 분석할 일이 거의 없고 만약 그 외 언어를 분석할 일이 생기면 번역기를 통해 영어로 번역 후 영어 텍스트 마이닝 기법을 적용한다. - P300
한국어 텍스트 전처리는 주로 형태소 분석기를 사용한다. 한국어는 단어마다 조사, 어미가 붙어있는 특이한 형태이다. 따라서 영어처럼 띄어쓰기 단위로 단어를 나누어 분석하면 이상하게 분석이 된다. 예를 들어 ‘행복‘이라는 단어가 ‘행복한‘, ‘행복하게‘, ‘행복하다‘, ‘행복이‘, ‘행복은‘과 같이 여러 어미, 조사와 함께 올 수 있다. 단순하게 띄어쓰기 단위로 나누어 분석하면 위에서 열거한 예시가 모두 다른 단어로 구분되어 분석될 것이다. 따라서 우리는 여기서 ‘행복‘이라는 명사만 추출해서 분석해야 한다. 이렇게 형태소에 따라 단어를 뽑아주는 역할을 형태소 분석기가 수행한다. - P300
형태소 분석기를 스스로 만들 필요는 없다. 오픈소스로 나와 있는 여러 형태소 분석기들 중 적당한 것을 골라 쓰면 된다. 여러 형태소 분석기중 mecab 형태소 분석기가 성능이 가장 우수한 것으로 알려져 있다. 최근에는 카카오에서 개발한 khaiii도 많이 쓰인다. 다만 khaiii는 윈도우 운영 체제는 지원하지 않는다는 단점이 있다. 아무튼 한국어는 형태소 분석기를 활용해 명사, 형용사, 동사 등의 주요 형태소만 추출한 후 텍스트 마이닝 알고리즘을 적용하면 된다. - P301
mecab : https://github.com/taku910/mecab 참고. 한국어판은 https://bitbucket.org/eunjeon/mecab-ko-dic/src/master 참고. - P300
khaiii : https://github.com/kakao/khaiii - P300
전처리를 조금 더 잘하고 싶다면 신조어 추가, 같은 단어 동일시 정도만 수동으로 해주면 된다. 신조어 추가의 경우 새로 나온 단어들은 형태소 분석기로 추출이 안 되기 때문에 수동으로 해줘야한다. - P301
형태는 다 다르지만 의미상 다 똑같은 단어이기에 이 경우는 같은 단어라는 점을 하드코딩으로 명시해주어야 한다. 분석하려는 텍스트의 주요 핵심어들만 이런 처리를 해주면 된다. 모든 단어들을 일일이 이런 식으로 처리하기는 사실상 불가능하기 때문이다. - P301
영어의 경우에는 전처리 작업이 여러 개로 나뉜다. 앞으로 말한 전처리 작업을 착실히 모두 수행해주어야 의미 있는 텍스트 분석 결과가 나올 것이다. 물론 모두 파이썬 또는 R 코드로 수행할 줄 알아야 한다. 우선 대소문자를 통일해야 한다. 컴퓨터는 알파벳은 같지만 대소문자가 다른 단어에 대해서는 서로 다르게 인식한다. 따라서 모든 단어들을 모두 대문자 또는 모두 소문자로 변환해서 분석하는 게 좋다. 일반적으로 모두 소문자로 변환해서 분석하곤 한다. - P301
둘째, 숫자 표현은 제거해야 한다. 텍스트 데이터는 문자뿐만 아니라 숫자도 포함한다. 숫자도 분명한 의미가 있기는 하다. 하지만 문맥에 따라서 숫자 표현이 서로 달라질 수 있기 때문에 통일성있는 분석을 위해 숫자는 제거하고 분석하는 게 일반적이다. - P302
셋째, 문장부호, 특수문자, 이모티콘은 제거한다. 이러한 것들은 분석에 별 도움이 안 되는 경우가 많다. 느낌표, 물음표가 많다는 점이 크게 결과 해석에 도움이 되지 않는다. ‘^^‘와 같은 웃는 문자나 카카오톡 이모티콘도 크게 결과 해석이 도움이 되지 않는다. 글을 쓰는 사람이 별 생각 없이 이러한 기호를 남발하는 경향이 많아 오히려 결과 해석에 독이 될 수도 있고 기호까지 고려하게 되면 지나치게 복잡해질 수 있다. 물론 때에 따라서는 이러한 기호도 알고리즘에 적용하기도 한다. 트위터 텍스트의 경우 글자 수 제한이 있기 때문에 글을 쓰는 사람들이 단어와 함께 여러 가지 기호로 강조를 하는 경우가 많다. 이러한 경우는 문장 부호, 특수 문자, 이모티콘도 함께 고려하여 분석하는 게 타당할 수 있다. - P302
넷째, 불용어는 삭제한다. 단순히 텍스트 데이터의 모든 단어들을 빈도순으로 나열하면 ‘the‘가 가장 많이 나올 것이다. 하지만 ‘the‘는 단순히 관사일 뿐 큰 의미가 없다. 이러한 단어들을 불용어라고 하는데 사전 단계에서 삭제한 후 분석을 해야 유의미한 결과를 얻는다. 불용어 리스트는 한정되어 있기에 불용단어 리스트에 해당하는 단어들만 매칭하여 삭제하면 된다. - P303
다섯째, 어근 동일화 처리를 해야 한다. ‘play‘라는 단어는 ‘played‘, ‘playing‘과 같이 여러 형태로 바뀔 수 있다. 이러한 단어들을 모두 ‘play‘로 치환해주어야 한다. 어근 동일화 처리를 위한 라이브러리들이 몇 개 있는데 포터 어간 추출 알고리즘Porter stemming algorithm이 가장 보편적으로 쓰이고 있다. - P303
여섯째, 엔그램 적용을 해야 한다. 엔그램이란 번 연이어 등장하는 단어들의 연쇄를 뜻한다. 예를 들어 ‘United States‘는 띄어쓰기 단위로 United‘, ‘States‘ 각각을 추출하여 분석하는 것보다 ‘United States‘로 한꺼번에 분석하는 게 타당하다. 이 경우는 n=2인 바이그램bigram이 되겠다. 보편적으로는 n=3인 트라이그램까지 적용하여 분석한다. - P303
텍스트 마이닝은 딥러닝, 머신러닝 알고리즘이 가장 활발히 적용되는 분야로 무수히 많은 알고리즘이 존재한다. 각 알고리즘은 세부 목적에 맞도록 제작되어 있어서, 알고리즘을 하나하나 살펴보기보다는 각각의 텍스트 마이닝 방법의 목적이 무엇인지 살펴보는 게 전체적으로 이해하는데 적합하다. - P304
우선 핵심어 분석이 있다. 가장 기본적인 텍스트 마이닝이다. 논문을 쓸 때 필수적으로 5~6개 키워드를 써야하는데 이를 알고리즘으로 추출한다고 생각하면 된다. 가장 기본적으로는 단순히 빈도가 가장 많은 단어를 핵심어로 볼 수 있다. 좀 더 깊이 들어가면 TF-IDF와 같은 통계적 가중치를 이용해 핵심어를 추출할 수 있다. 아니면 텍스트 구조, 단어 순서 등을 복합적으로 고려한 딥러닝 모델을 통해 핵심어를 추출 할 수도 있다. - P304
둘째, 연관어 분석이 있다. 단어들은 각각 쓰이기보다는 단어 간에 서로 연관관계를 보이며 쓰이는 경우가 대부분이다. 특정 단어와 단어 간의 연관도를 계산하는 방식도 여러 알고리즘으로 나뉜다. 가장 간단하게는 같은 문장 또는 같은 문서에 함께 출현한 빈도가 있을 수 있다. 또는 구매 관리 지수 Purchasing Manager Index. PMI와같은 통계적 방식이나 Word2Vec 과 같은 딥러닝 방식으로 연관도를 측정할 수 있다. - P304
단순히 두 단어 간의 연관도를 측정하는 것에서 벗어나 전체적인 단어들 간의 모든 연결관계를 네트워크로 표현하기도 한다. ...(중략)... 그 모든 단어들 간의 연결 관계는 단순히 두 단어의 연관도를 넘어 전체 네트워크 경로에서 특정 단어의 중심성을 나타낼 수 있다. 연결 중심성, 근접 중심성, 매개 중심성과 같은 지표가 대표적이다. - P305
토픽 모델링은 텍스트 마이닝 방법 중 가장 많이 쓰이는 방법이다. 텍스트 데이터 전체를 의미적으로 군집하여 주요 토픽 몇 개를 도출하는 방식이다. 토픽 모델링을 통해 전체 텍스트를 일일이 읽지 않고도 어떠한 내용들이 적혀있는지 알 수 있다. - P305
토픽모델링 출력방식은 군집 분석과 유사하다. 전체 텍스트를 몇 개의 군집(토픽)으로 나누고 각 군집(토픽)에 해당하는 주요 단어 리스트를 추출해준다. 잠재 디리클레 할당Latent Dirichlet Allocation, LDA이 가장 보편적으로 쓰이는 방법이며 구조적 토픽 모델링 Structural Topic Modeling, STM, 비음수 행렬 분해Non-negative Matrix Factorizaion, NMF 등의 방법들도 자주 쓰인다. - P306
넷째, 감성 분석이 있다. 텍스트에는 감정이 들어갈 수 있다. 특히 정치, 연예 관련 사회문화 텍스트에 감성이 더욱 고조되는 경향이 있다. 감정은 긍정/부정으로 크게 나뉠 수 있고 좀 더 세부적으로 들어가면 놀람/행복/슬픔/두려움/흥분/재미 등과 같이 잘게 나눌 수도 있다. 이렇게 텍스트를 사람의 감성으로 분류하는 기법이 감성 분석이다. 가장 쉽게 사용하는 방법은 텍스트에 단어들을 일일이 감성 사전과 매칭하여 분류를 하는 방식이다. - P306
딥러닝, 머신러닝 기반으로도 감성 분석을 한다. 텍스트-감성 라벨링이 있는 학습셋으로 모델을 생성 후 새로운 텍스트에 대해서 감성 정도를 도출하는 방식이다. 가장 많이 사용하는 학습셋으로는 영어는 IMDB 영화 리뷰 텍스트이고 한국어는 네이버영화 리뷰 평점셋이다. 알고리즘은 순환 신경망 계열의 시계열 딥러닝 알고리즘이 많이 쓰인다. - P307
다섯째, 문서 요약 기술이 있다. 방대한 텍스트를 짧은 몇 개의 문장으로 요약해주면 훨씬 빠르고 쉽게 이해할 수 있다. 대표적으로 네이버 뉴스에 요약봇이라는 문서 요약 기술이 적용되어 있다. - P307
문서 요약은 크게 추출 요약과 생성 요약 2가지로 나뉜다. 추출 요약은 전체 텍스트에서 핵심 문장들 몇 개를 추출해서 이어붙이는 방법이다. 반면에 생성 요약은 아예 요약문을 알고리즘이 새로 생성하는 방식이다. 핵심 문장을 추출하는 방식은 통계적 방식 또는 딥러닝 방식 모두 사용할 수 있다. 추출 요약이 더 간단하고 성능이 좋아 보편적으로 쓰인다. 생성 요약의 경우는 seq2seq 알고리즘이 많이 쓰이는데 아직까지 실제 비즈니스에 적용되는 경우는 드물다. - P307
자동 번역, 음성 인식(Speech to Text, STT), 이미지 자동 캡션 등 텍스트 마이닝이 활용되는 목적은 꽤 많다. 텍스트 마이닝은 활용되는 목적도 다양하지만 언어마다 알고리즘이 적용되는 방식이 상이하기 때문에 특히 더 많은 연구가 필요한 분야이다. 단순히 컴퓨터, 통계뿐만 아니라 언어적인 측면도 함께 고려되어야 하는 경우가 많아 대형 IT기업의 자연어 처리팀에는 언어학 출신들도 포진해 있다. - P308
프로세스 마이닝은 이벤트 로그를 기반으로 운영 프로세스의 분석을 지원하기 위한 데이터 마이닝 기법이다. 프로세스 마이닝 기술은 이벤트 데이터를 사용하여 사람, 기계 및 조직이 실제로 무엇을 하고 있는지 보여준다. - P309
ERP 또는 CRM 같은 정보 시스템은 모든 로그 데이터를 실시간으로 적재한다. 프로세스 마이닝은 IT 시스템의 이 데이터를 활용하여 프로세스 모델 또는 프로세스 그래프를 만든다. 여기에서 종단 간 프로세스를 검사하고 세부 사항 및 변형에 대해 통찰을 제공해준다. 알고리즘은 이상 현상의 원인에 대한 통찰력을 제공할 수 있다. 이러한 시각화와 알고리즘을 통해 경영진은 프로세스가 의도한 대로 작동하는지 확인할 수 있으며, 그렇지 않은 경우 최적화에 필요한 리소스를 할당한다. - P310
프로세스 마이닝에 필요한 필수적인 데이터 항목들이 있다. 다른 데이터 분석 알고리즘과 다소 다른 형태의 데이터이기 때문에 사전에 필요 항목들을 수집하기 위한 시스템을 구축해두어야한다. 모든 시스템 로그들은 인스턴스instance, 작업자worker, 활동activity, 시간timestamp, 튜플 형태로 저장되어야 한다. - P310
대부분의 정보 시스템은 이렇게 구조화된 데이터 적재 시스템을 미리 구축해두지 않았다. 시스템 적재 시스템을 아예 고치기 어려울 경우에는 여러 곳에 흩어져 있는 테이블 안의 데이터들을 직접 가공해야 한다. 이러한 데이터 추출 및 가공 업무도 프로세스 마이닝의 중요한 부분 중 하나이다. - P311
프로세스 마이닝은 크게 3가지 목적을 지닌다. 우선 발견 목적이 있다. 발견 기술은 이벤트 로그를 받아들여 그대로 모델을 산출한다. 대표적으로 알파 알고리즘이 있다. 알파 알고리즘은 이벤트 로그를 받아들여 전체 프로세스를 페트리넷Petri-net으로 간결하게 표현해준다. 단순히 페트리넷으로 표현해주었을 뿐인데 전체적인 안목으로 프로세스를 살펴볼 수 있어 경영자에게는 큰 도움이 될 수 있다. - P312
두 번째 목적은 적합성 검사이다. 여기에서는 기존 프로세스 모델을 동일한 프로세스의 이벤트 로그와 비교한다. 적합성 검사는 로그에 기록된 현실이 모델과 일치하는지 또는 그 반대인지 확인하는데 사용할 수 있다. - P312
적합성 검사는 규범과 현실간의 편차를 감지 및 설명하고 이러한 편차의 심각도를 수치로 표현한다. - P312
세 번째 목적은 프로세스 향상이다. 일부 이벤트 로그에 기록된 실제 프로세스에 대한 정보를 사용하여 기존 프로세스 모델을 확장하거나 개선할 수 있다. 적합성 검사가 규범과 현실 사이의 편차를 측정하는 반면, 향상 목적의 프로세스 마이닝은 현실 모델을 변경하거나 확장하는 것을 목표로 한다. 예를 들어 두 활동이 순차적으로 모델링 되었지만 실제로는 순서에 상관없이 어떤 순서로든 발생할 수 있는 경우 이를 반영하도록 모델을 수정할 수 있다. - P312
프로세스 마이닝은 거대 조직 시스템 안의 로그데이터 분석을 기반으로 한다. 그런 이유로 개인이 이러한 데이터를 얻기는 쉽지 않다. 건설사, 제조업, 대학 병원과 같은 대형 조직 프로세스에서 필요한 연구 분야이다. 따라서 텍스트 마이닝, 이미지 분석과 같은 대중화된 연구 분야에 비해서는 연구 활동이 활발하지는 않다. 하지만 본인이 조직 프로세스 이해와 개선에 관해 관심이 있다면 도전해볼만한 연구 분야이다. 연구자가 많지 않기 때문에 이 분야의 선구자가 되기도 쉽고 상대적으로 고난이도의 수학적 알고리즘이 사용되지 않는 분야이기 때문이다. - P317
|