본문 바로가기

Computer Science37

Airbnb New User Bookings 데이터 시각화 - Kaggle Project(4) 저번 포스팅에 이어서 데이터 시각화를 이어서 진행하겠습니다. 저번 데이터분석에서 signup_app이 주로 Web일 때 예약할 가능성이 높음을 확인할 수 있었습니다. 그럼 이번엔 signup_app과 첫 예약한 장소 Destination이 어떠한 관계를 가지고 있는지 확인해보도록 하겠습니다. 코드 먼저 보겠습니다. #destination_country table stats by signup appt = table(airbnb$signup_app, airbnb$country_destination) print(signif(t / rowSums(t) * 100, digits=2)) 확률(%)로 보기 위해 t/rowSum(t)*100 과 같은 작업을 추가한 것입니다. 결과는 아래와 같습니다. 한눈에 보기 쉽게 .. 2017. 11. 11.
Airbnb New User Bookings 데이터 시각화 - Kaggle Project(3) 이번 포스팅에선 앞서 가공한 데이터를 이용해 데이터 시각화를 해보겠습니다. 지금 가지고 있는 Variable은 총 28개 있으며 현재 변수들 간에 서로 어떠한 상관관계가 있는지 모릅니다. 그래서 어떻게 시작해야할 지 감이 안잡힐 수도 있습니다. 우선 본 프로젝트의 목표를 다시 한번 확인하겠습니다. "새로운 가입자가 최초로 예약할 장소를 예측하자!" 그러므로 기존의 사용자가 어떠한 상태에서 예약을 했는지, 예약을 했다면 어디를 맨 처음 예약했는지 확인해 볼 필요성이 있습니다. 우선 가입날짜와 처음 예약한 날짜와의 상관관계가 있는지 확인해보겠습니다. 아래에서 코드와 실행결과를 확인할 수 있습니다. # date_first_booking by date_account_created airbnb %>% sample.. 2017. 11. 10.
Airbnb New User Bookings 데이터 읽기 및 가공 - Kaggle Project(2) 본 포스팅을 Kaggle의 yYaMamoto님의 kernel을 인용하여 작성했습니다 이 글에서는 airbnb 데이터를 읽고 가공하는것에 대해 알아보겠습니다.사용한 언어는 R입니다. 데이터 분석을 시작할 때 제일 먼저 해야하는 건 무엇일까요? 당연히 분석을 위한 데이터를 확보하는 것입니다. 데이터를 확보하고 읽는 것은 매우 중요합니다. 그리고 분석을 편하게 하기 위해 적절한 가공이 필요합니다. 예를 들어 다음과 같은 날짜 데이터가 있다고 가정합시다. 2017년 8월 12일 이 날짜는 한글과 숫자로 이루어져있기 때문에 R 혹은 Python을 이용해 읽었을 때 문자열로 읽을 가능성이 큽니다. 나중에 날짜로 정렬을 할 수도 있고 특정 날짜 범위내의 데이터만 필요할 경우도 생기기 때문에 적절한 변형이 필요합니다... 2017. 11. 9.
SVM - Support Vector Machine 머신러닝의 갈래는 아래와 같이 나뉠수 있습니다. 예측모델과 군집모델도 더 자세하게 분류할 수 있지만, 이 글에서 설명할 것은 SVM이기 때문에 분류모델만 자세히 적었습니다.머신러닝 전체적 분야에 대한 설명은 다음에 정리해서 포스팅하겠습니다. 위 그림과 같이 SVM은 분류모델 중 하나입니다.분류모델은 쉽게 말해 기존의 데이터를 특징 별로 분류하는 것을 나타냅니다. 예를 들어 A,B,C 특징을 가지고 있는 데이터는 Group1 ,D,E,F 특징을 가지고 있는 데이터를 Group2라고 분류할 수 있을것입니다.이 때 새로운 데이터가 들어오면 Group1에 속하는지 Group2에 속하는지 판단할 수 있을 것이고 데이터의 특징을 보다 쉽게 파악할 수 있을 것입니다. 다시 말해 데이터를 어떻게 , 잘 분류할 것인가!.. 2017. 11. 1.
Airbnb New User Bookings - Kaggle Project(1) 본 프로젝트는 2015년에 Kaggle Competition에 올라왔던 프로젝트입니다.데이터분석을 배워보기 위해 위 프로젝트를 시작해볼 생각이고, 여러 유저가 작성해주신 Kernels도 읽어보고 많이 인용할 예정입니다. 먼저 프로젝트 소개와 데이터에 대해 소개하겠습니다. 이제 막 Airbnb에 가입한 New 사용자는 190개 이상의 국가 중 34,000개 이상의 도시의 숙소를 Airbnb를 통해 예약할 수 있습니다. 이 사용자가 어느 도시 및 국가를 처음으로 방문할 것인지 예측할 수 있다면, Airbnb는 맞춤 컨텐츠를 제공해 줄 수 있으며 첫 예약하기까지의 사용자의 시간을 줄여줄 수 있을것입니다. 본 프로젝트의 목표는 어느나라의 유저가 처음 어느곳을 예약할 지 예측하는 것입니다. 사용할 데이터는 인구통.. 2017. 10. 31.
세마포어(Semaphore)와 뮤텍스(Mutex) 여러 쓰레드들은 자원을 공유하고, 프로세스간 메시지를 전송하면서 간혹 문제가 발생할 수 있습니다. 즉, 공유된 자원에 여러 프로세스 , 쓰레드가 동시에 접근하면서 문제가 발생합니다. 공유된 자원 속 하나의 데이터는 한번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 할 필요성이 있는데이를 위해 고안된 것이 Semaphore(세마포어)입니다. 유명한 화장실 예제로 쉽게 설명해보겠습니다. 공중 화장실은 한번에 1명만 사용할 수 있다고 가정하겠습니다.어떤 사람이 사용하고 있는데 다른 누군가가 갑자기 들어와서 같이 쓰자고 하면... 생각만해도 이상하지요..?이를 막기 위해 화장실 열쇠를 만들 수 있습니다.열쇠를 가지고 있는 한 사람만 화장실을 이용하고, 열쇠가 없는 사람은 밖에서 대기를 하죠. 여기서 열쇠.. 2017. 10. 13.
메모리 관리기법, 페이징과 세그멘테이션 메모리의 용량은 한정적이므로 여러 응용 프로그램의 사용을 위해 효율적인 메모리 관리 기법이 필요합니다. 메모리 관리기법을 효율적으로 사용하여 외부 및 내부 단편화를 해결할 수 있습니다. 메모리 관리기법은 여러가지 있는데 그 중 가장 많이 쓰이는 것은 가상 메모리관리 기법입니다. 이와 관련된 페이징 , 세그멘테이션기법을 살보겠습니다. Paging(페이징) 물리메모리를 사용할 때, 페이지를 고정크기의 프레임단위로 나눕니다.논리메모리도 같은 프레임단위인 페이지로 나누어 프레임과 페이지를 대응하게 하여연속적인 물리메모리가 아니더라도 원하는 크기의 프레임을 사용할 수 있도록 하는 기능입니다. 프레임(Frame) : 물리 메모리를 일정한 크기로 나눈 블록페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록 .. 2017. 10. 9.
외부단편화와 내부단편화 외부단편화 (External fragmentation) 프로그램을 할당하고 난 다음 아주 작은 크기로 남은 조각들이 생겨 사용할 수 없는 작은 공간들이 많이 생길 수 있습니다. 이 공간들을 합치면 요구되는 공간을 할달할 수 있음에도 불구하고 연속적인 공간이 아니라서 할당하지 못하는 상황을 외부 단편화라고 합니다. 아래 그림을 통해 살펴보겠습니다. 프로세스 A,B,C사이의 총 8K의 공간이 남아있습니다. 프로세스 D는 7K의 공간을 필요로 하므로, 남은 공간은 충분합니다. 그러나 분할하여 할당할 수 없으므로 프로세스D를 할당할 수 없는 문제가 발생합니다. 내부단편화 (Internal fragmentation) 메모리를 할당하는 최소 블록 크기를 10K라고 가정합시다. 만약 7K만큼의 공간을 사용하더라도 1.. 2017. 10. 7.
스트래티지 패턴(Strategy Pattern) 스트래티지 패턴(Strategy Pattern) 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어이 접근점에서 서로 교환가능하도록 하는 패턴 또한 알고리즘을 정의하고 각각을 캡슐화하여 교환해서 사용가능 하도록 하는 패턴 이와 같이, 각 알고리즘은 캡슐로 정의되어 있고 필요할 때 서로 교환만 하기 때문에알고리즘의 추가 및 수정에 편리합니다. 아래는 기본적인 Strategy 패턴을 나타냅니다. Client는 Strategy를 가지고 있습니다. Strategy는 한개를 가질 수도 있고 여러개를 가질 수 있습니다.Strategy 인터페이스를 통해 세 개의 Strategy(A,B,C)가 캡슐화되어 있음을 알 수 있습니다. 이와 같이 각 알고리즘은 캡슐화되어 분리되어 있고 만약 StrategyA에 수정이.. 2017. 10. 5.
반응형