TF-IDF를 이용하여 문서의 크기를 구하는 방법을 앞 강의에서 살펴봤다. 이번에는 이 문서들에서 대해 검색어를 처리하는 부분을 알아보기로 한다. 다음과 같은 검색어가 주어졌다고 해보자. 검색어 "new new york"에 대한 쿼리 벡터를 구하면 다음과 같다. 0.584란 값이 값자기 어디에서 나왔는지 궁금할수도 있을 듯 하다. 이전 강의에서 살펴본 각각의 단어의 IDF를 생각해보면 된다. new의 IDF값은 0.584이고, 전체 문서에서 2번 중 검색어도 2번 나왔으므로 2/2가 된다. 문서의 크기와 마찬가지로 검색어의 크기도 제곱하고 더한 후, 루트를 구하면 0.652가 나온다. 이제 유사도를 구하기위해서 문서와 검색어의 거리를 측정해보자. 거리를 구할 때는 유클리드 거리나 코사인 거리를 주로 사용..
텍스트 문서를 기반으로 벡터 모델에 대해서 정리해 보려고 한다. 문서의 텍스트를 처리할 때 특정 단어가 몇 번 나왔는지를 주로 세어본다. 많이 나온 단어일수록 중요하기 때문이다. 그러나 "그리고", "the", "a"와 같이 모든 문서에서 많이 나오는 단어들은 실제로 의미가 없다. 그래서 TF-IDF라는 가중치를 사용하게 된다. TF(Term Frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내고, DF(Document Frequency)는 단어가 문서내에서 흔하게 등장한다는 것을 나타낸다. 그래서 DF의 역수인 IDF(Inverse Document Frequency) 구해서 TF와 IDF를 곱한 값인 TF-IDF를 가중치로 사용한다. 다음과 같은 텍스트로 구성된 3개의 문서가 ..
데이터 모델링이란 무엇일까? 먼저 데이터를 기반으로 모델을 만드는 것을 생각해 볼 수 있다. 그러나 처음부터 모델을 만드는 것에 집착하는 것은 바람직하지 않다. 너무 추상적이기도 하고, 어떤 모델을 어떻게 만들어야 할지 막막하기만 하다. 다른 측면에서 데이터 모델링을 정의해 보면, 데이터 모델링은 데이터의 속성을 설명할 수 있고 이해하는 것이라 할 수 있다. 흔히 데이터 분석을 이야기할 때, 먼저 데이터의 특성을 파악하라고 한다. 데이터의 특성을 파악하기 위해서는 다음 세 가지 항목을 알아야 한다. 데이터 구조, 데이터 연산, 그리고 데이터 제약조건이다. 특히 데이터 제약조건은 데이터 의미를 파악하는데 유용하게 활용할 수 있다. 데이터 구조 데이터 구조는 정형(structued), 반정형(semi-str..
이제 본격적으로 빅데이터 가치 창출을 위한 5단계의 프로세스를 살펴보기로 한다. 이것은 일반적인 빅데이터 분석 과정인 "데이터 획득 - 데이터 준비 - 데이터 분석 - 시각화 - 활용"을 의미한다. 데이터 획득 (Acquire) 데이터 획득은은 단순히 데이터를 수집하는 것만을 의미하지 않는다. 먼저 데이터 셋을 명확하게 정의해야 한다. 어떤 데이터들이 있고, 해당 데이터의 특성이 무엇인지를 명확하게 설정해야 한다. 그리고 나서 데이터를 검색해보거나 쿼리를 할 수 있어야 한다. 개인적으로는 이 단계에서 데이터 속성을 파악하는 것이 중요하다고 생각한다. 데이터에 어떤 항목들이 포함되어 있고, 그것이 무엇을 의미하는 지를 알아야 올바른 가설 또는 문제를 정의할 수 있다. 데이터 준비 (Prepare) 데이터 ..
빅데이터는 초기의 개념 정의, 그리고 기술 적용의 단계를 넘어 활용으로 나아가고 있다. 가치 창출을 위한 빅데이터 활용 측면에서 빅데이터 모델링에 대해 살펴보고자 한다. 알리스테어 크롤과 벤저민 요스코비치가 쓴 린 분석(Lean Analytics)에 보면, "행동을 변화시키지 않는다면 잘못된 지표이다" 라는 이야기가 나온다. 빅데이터 분석만 하고 아무런 행동도 하지 않는다면 무의미하다는 것이다. 즉, 빅데이터 분석의 최종 목표는 반드시 실행이어야 한다. 다양하고 수많은 데이터에서 인사이트를 찾고 이를 실행에 옮기는 것이야말로 진정한 빅데이터의 활용이자 데이터 과학이라 할 수 있다. 그러나 빅데이터에서 인사이트를 찾아내는 것 자체가 어려울 수 있다. 인사이트를 찾기 위해서는 무엇을 해야 할까? 당연히 분석..
본 퀴즈는 University of California, San Diego의 Super Computer Center, Paul Rodriguez님의 강의에 포함된 내용이다. 해당 퀴즈에 대한 답은 올려놓지 않을 계획이므로 아래 내용을 잘 따라하고 직접 풀어보기 바란다. 하둡 맵리듀스 Join 활용 예제 를 참고하면 쉽게 구현할 수 있을 것이다. 아래 예제에 따라 데이터 파일을 생성하고 조인하는 맵리듀스를 파이썬으로 구현해 보도록 하자. 1. 퀴즈에 사용할 데이터 파일을 생성하는 다음 파이썬 소스를 make_join2data.py 파일로 저장한다. #!/usr/bin/env python import sys # ------------------------------------------------------..
하둡 맵리듀스를 활용하다 보면 서로 다른 유형의 데이터 셋을 조인해야 하는 경우가 종종 있다. SQL에서 테이블간 조인을 생각해 보면 된다. Word Count 예제를 기반으로 맵리듀스의 조인을 고려해 보자. 특정 단어의 개수를 세는데 파일 하나는 전체 기간을 대상으로 하고, 다른 파일은 월별로 각 단어의 개수를 나타낸다고 해보자. 아래의 두 파일을 하나로 합쳐서 형태로 합쳐서 출력하는 부분을 하둡 맵리듀스로 구현해보는 것이다. join1_FileA.txt able,991 about,11 burger,15 actor,22 join1_FileB.txt Jan-01 able,5 Feb-02 about,3 Mar-03 about,8 Apr-04 able,13 Feb-22 actor,3 Feb-23 burger..
하둡 스트리밍을 활용하면 맵리듀스 잡을 실행가능한 스크립트, 쉘 프로그래밍/파이썬/자바/R 등으로 처리할 수 있다. 하둡 스트리밍에 대해서는 Apache Hadoop Streaming을 참고하면 된다. 이번 강의에서는 기본 하둡 예제인 Word Count를 파이썬으로 구성한 후, 하둡 스트리밍으로 맵리듀스를 적용하는 예제를 살펴보기로 한다. 하둡 스트리밍 명령어는 다음과 같이 사용법을 확인할 수 있다. > hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar --help 1. 먼저 파이썬으로 맵 함수를 만들어 보자. WordCount에서 맵 함수는 파일의 각 라인별로 읽어서 공백으로 자른 다음, Key: 단어, Value: 1로 출력하면 된다. > ged..
클라우데라의 QuickStartVM에서 HDFS 명령어를 테스트해보자. 하둡 파일 시스템의 전체 명령어는 하둡(Hadoop) 파일시스템 (HDFS) 명령어 정리~를 참고하기 바란다. 아래 내용은 University of California, San Diego의 Mahidhar Tatineni 교수 자료를 참고했다. 1. -ls 명령어로 현재 하둡 파일 시스템에 내용을 확인할 수 있다. VM에서는 /hbase, /solr 등의 디렉토리 구성을 볼 수 있다. > hdfs dfs -ls / 2. -mkdir을 사용하여 예제로 쓸 /user/test 디렉토리를 생성한다. > hdfs dfs -mkdir /user/test > hdfs dfs -ls /user/ 3. 리눅스의 dd 명령어를 통해 1GB의 대용량 ..
passwd 파일에서 아이디, 이름, 홈디렉토리를 가져오는 피그 예제를 살펴봤다. 이번에는 하둡 완벽 가이드에 나왔던 연도별 최고 온도를 계산하는 예제를 살펴보기로 하자. 해당 예제에 대한 설명은 Hive & Pig - 하둡(Hadoop)의 맵리듀스를 보다 편하게~ 를 참고하기 바란다. 1. 먼저 예제로 사용할 sample.txt 파일을 만들어 보자. > vi sample.txt 2. 년도 온도 품질 순으로 탭을 공백으로 다음과 같이 입력하고 저장한다. 3. 생성한 sample.txt 파일을 하둡 파일 시스템의 /user/cloudera에 업로드하고 확인한다. > hdfs dfs -put sample.txt /user/cloudera > hdfs dfs -ls /user/cloudera 4. pig를 실..