Posts by Category

Data Science

자연어 처리 - 한국어 띄어쓰기

자연어 처리(Natural Language Processing)는 데이터 사이언스의 큰 난관이자 유망주? 중 하나인데, 영어에 비해 한국어 분석은 특유의 구조적 문제와 더불어(받침의 존재, 다양한 신조어: 멍멍이-댕댕이, 잁럻겛 쓿멶 핞굵 삻람많 읽읅 숡 있읆 등) 관련 연구(가져...

추천 시스템 - SVD

추천 시스템은 사용자들이 평가한 상품들에 대한 정보를 학습하여 아직 평가하지 않은 상품에 대한 점수를 예측하는 모델이다. 여러 추천 시스템 모델 중 Netflix Prize competition에서 좋은 성과를 거둔 SVD에 대해 정리했다.

회귀 분석 - (2) 확률론적 모형

이전에 살펴본 결정론적 모형은 계산한 가중치의 신뢰도를 부트스트래핑(bootstrapping) 이라는 방법으로 구해야 한다. 반면, 확률론적 모형에서는 부트스트래핑 없이도 회귀분석 결과의 통계적 특성을 구할 수 있다. 확률론적 선형회귀 모형에서는 데이터가 확률 변수로부터 생성된 표...

회귀 분석 - (1) 결정론적 모형

14년도 계량 경제학 수업을 들을 때 처음 봤지만, 이제야 조금이나마 알 것 같다. 회귀 분석은 데이터가 어떤 특정한 경향을 보인다는 가정 하에 그 경향성을 찾아 설명하는 것이 목적이다.

blog

Jekyll 블로그 첫 포스트

Jekyll을 이용해 첫 포스트를 써본다. Hexo로 한번 만들어 봤더니 크게 어렵..지 않을 줄 알았는데, 어렵긴 하다. 이 포스트가 fix없이 한방에 올라가기나 했으면 좋겠다.

programming

Hive table 다루기

하둡&제플린 환경에서 sql사용 유저에게 데이터를 사용할 수 있도록 하는데는 hive 테이블이 제일인 것 같습니다. 이 포스트는 19년 8월 12일에 최초 작성되었으며, 필요에 따라 업데이트할 예정입니다.

[Airflow] Subdag 활용하기

재사용할 여지가 많은 task들을 묶어 subdag로 만들어 보겠습니다. 이렇게 하면 지저분한 과정들을 묶어서 한눈에 프로세스를 파악하기도 편하고, 관리도 쉬워집니다.

[Airflow] docker를 활용한 초간단 설치하기 2

지난 포스트에 이어 CELERY EXECUTOR를 사용하는 에어플로우, 도커로 설치하기 입니다. 설치 앞부분을 위한 깃레포, 도커이미지를 받아오는 부분은 이전 포스트를 확인해주세요.

[Airflow] docker를 활용한 초간단 설치하기

docker를 이용하여 airflow를 로컬에 설치하던 것보다 더 쉽게 설치해보겠습니다. 에어플로우를 더 아름답게 쓰기 위해서는 executor, db 설정이 필요한데, 모든 환경설정이 그렇듯이 설치할 부품들이 늘어날수록 고통도 늘어납니다. 이런 상황에서 docker는 그런 ...

Spark SQL - 로우 분리하기

데이터를 다루다보면 하나의 로우를 여러개로 분리해야하는 상황이 온다. 다음은 explode 를 활용한 예

Spark SQL - ROWID 대체

Spark SQL에서 Oracle의 ROWID와 같은 기능을 사용해보자 한다. ROWID는 인덱스의 핵심이라고도 하는데, 이를 활용하여 중복제거, 유일성 부여 등의 작업이 가능하다.

Spark SQL - UPDATE 대체

spark sql에서는 update를 지원하지 않는다. (작성일 기준) RDD의 특성에 대해 생각해 보면 그 이유는 어렵지 않게 떠올릴 수 있지만, UPDATE를 주로 사용하는 오라클 쿼리를 spark버전으로 포팅하려는 입장(필자)에서는 굉장히 아쉬운 부분이다. 그래서 공부도 할 ...

Spark SQL - 기초

SparkSQL은 이름처럼 스파크 내에서 SQL문법을 사용 가능하게 하는 awesome한 도구다. 따라서 스파크를 코딩에 친숙하지 않은 구성원들이 마치 oracle을 사용하는 것 마냥 이용이 가능하다. (물론 다소간의 노력은 필요하다.)

오늘의 에러 - 180813

신경망 모델을 클래스로 구현해보던 중 Saver에서 에러(ValueError: No variables to save)가 발생했다.

오늘의 에러 - 180808

이번에도 경로(PATH) 문제였다. docker를 이용해 mysql을 열면서, host OS에 마운트하는 코드였다. (컨테이터가 제거되어도 안에 있는 데이터는 남기기 위한 마운트)

SQL] Pivot quiz

엑셀의 피벗을 생각했는데 sql에서는 뭔가 다르더라. 하지만 결과물은 같다. Hackerrank > SQL > Advanced Select > Occupations

SQL] LENGTH vs CHAR_LENGTH

안 쓰던 SQL을 연습하면서 퀴즈를 풀다 보니, 한가지 의문이 생겼다. length나 char_legth나 같은 값을 내는 것 같은 데, 왜 두 개나 있을까? 예전부터 쓰던 문법이라 그런 것인가 싶었지만 다른 이유가 있었다.

Text Alignment - 문자열 정렬

python 문자열 정렬 기능 첫 번째 인자의 길이만큼 문자열을 할당하고, 문자열 제외 나머지 공간은 두 번째 인자(default=' ')로 채운다.

round(3.5) == round(4.5) 는 왜 True 일까?

해커랭크를 풀면서 발생한 에러다. 문제를 풀던 중, 홀수의 숫자를 반으로 나눈 값의 몫 + 1의 값이 필요했다. 예를 들어 7을 받으면 4, 9를 받으면 5를 반환하면 되었다. 3.5나 4.5나 반올림하면 4, 5 이런 식으로 나오니까 round를 썼다. 결과는 에러.

오늘의 에러 - 180723

해당 디렉토리에 있는 파일들의 확장자를 바꿔주는 코드를 실행하려다가 에러가 났다. 디렉토리 주소, 원 확장자, 바꿀 확장자 이렇게 세 개의 인자가 필요하다. 코드의 문제는 아니었고(내가 쓴 코드가 아니니까), 실행 방식의 문제였다.

hackerrank - ginortS

해커랭크에서 쉬운 문제에도 고전하는 경우가 종종 있는데, 자주자주 이렇게 푸는 습관을 가져야겠다.

pythonic tools - Combinatoric iterators

itertools에는 순열과 조합에 관련된 결과를 뱉는 iterators 또한 구현되어 있다. 순열, 조합에 대한 코딩 알고리즘 문제를 종종 볼 수 있는데, itertools만 알아놔도 아주 간단히 해결이 가능하다. 못 쓰게하면 어쩔 수 없지만.

pythonic tools - itertools

대망의 itertools. python3 공식 문서의 순서대로 정리했다. Infinite iterator 3개, 아닌 것 12개. combination은 따로 정리해야겠다.

pythonic tools - asterisk

python의 숙련도를 높여보고자 itertools를 공부하려고 보니 iterable, iterator, generator, 그리고 asterisk까지 서로 엮여있는 상황이라… 함께 공부하는 것이 나은 듯 하다. 어떤 공부든 요약 정리를 하다 보면 이해가 잘 되는 편이라, 오늘도 ...

비전공자가 이해한 Hadoop - Pig

피그(Pig)는 대용량 데이터 집합을 분석하기 위한 플랫폼으로 아파치 하둡(Apache Hadoop)을 이용하여 맵리듀스(MapReduce)를 사용하기 위한 높은 수준의 스크립트 언어와 이를 위한 인프라로 구성되어 있다. - wiki

비전공자가 이해한 Hadoop - Spark

스파크에 대해 알게 되었을 때, 가장 헷갈렸던 부분은 하둡과의 관계였다. 하둡 생태계의 한 부분이면서 하둡의 대체재라니. 하지만 실상은 대체재라기 보다는 보완재였다.

git cheatsheet

초기 설정 후에는 주로 add, commit, push만 가지고 git을 써왔는데(이마저도 atom을 사용하면 클릭 몇 번으로 대체된다), 한계가 느껴져서 새로운 기능을 쓰게 될 때마다 정리를 하려고 한다.

비전공자가 이해한 Hadoop

빅-데이터 세상에서, 데이터의 규모가 조금만 커져도 컴퓨터 한대로는 단순히 데이터를 불러오는 것조차 힘겨워지는 경우가 생긴다. 이를 해결하기 위해 Hadoop 을 이용하는 경우가 많아졌다. 데이터 엔지니어의 롤을 가진 분들이 주로 활용하는 툴.

비전공자가 이해한 docker

도커를 사용하기 위한 가장 기초적인 것들을 정리하였다. linux 환경을 기초로 작성. 혹시 맥을 사게 된다면 맥 환경도 추가해야지.