전체 글 58

딥러닝(Deep learning) 살펴보기 1탄

이번 포스트에서는 Deep learning에 대해 살펴볼 예정입니다. 이번 포스트는 Reference에 있는 내용을 정리한 것입니다. Deep learning은 대세가 되었습니다. 주변에서 딥러닝이라는 이야기가 많이 들립니다. 딥러닝이란 무엇인지 알아보도록 하겠습니다. 오늘날 딥러닝을 가능하게 해준 3가지가 있습니다. 빅데이터 데이터가 많은게 깡패입니다. GPU 빨리 연산하는게 장땡이죠. 알고리즘 예전에 잘 안되던 것(학습)을 잘되게 많은 연구자들이 연구하였습니다. 그럼 딥러닝을 이용해서 할 수 있는 것을 한번 볼까요? 딥러닝의 가장 좋은 활용 사례라고 할 수 있는 이미지 인식을 한번 보도록 할게요. 컴퓨터에게 동물의 그림을 보고 맞출 수 있도록 하는 것이 그 예가 되겠습니다. 그럼 코드로 바로 볼까요?..

Oozie workflow pattern - 2

해당 포스트는 이전한 블로그에서도 확인할 수 있습니다.Oozie workflow pattern - 2 이전 포스트에는 Oozie의 워크플로우 패턴중 하나인 Point-to-Point 패턴에 관해서 알아보았습니다. 이번 시간에는 fork-and-join 패턴에 대해 알아보도록 하겠습니다. fork-and-join pattern fork-and-join 패턴은 Fan-out 패턴이라고도 합니다. 이와 같은 형태의 워크플로우는 여러 액션들이 나누어 실행한 후 해당 액션들이 다 정상적으로 완료된 후 다음 액션을 수행해야하는 경우 많이 사용합니다. 즉, 다음 액션이 실행되기 전에 모든 선행 액션이 완료되는 것을 전제로 하겠다는 것입니다. 말로 하니까 약간 이해하기 어렵네요. 예제를 통해 알아보도록 하겠습니다. 워..

Oozie workflow Pattern - 1

해당 포스트는 이전한 블로그에서도 확인할 수 있습니다.Oozie workflow pattern - 1 Oozie가 무엇인지 궁금한 분들을 Apache Oozie 알아보기라는 이전 포스트를 참고하시기 바랍니다. 일반적으로 Oozie에서 많이 사용되는 워크플로우 패턴에 대해서 알아봅시다. 순차적 액션 수행 (Point-to-Point Pattern) 가장 간단한 형태로 수행하는 워크플로우 형태가 되겠습니다. 말그대로 순차적으로 액션을 수행할 때 사용합니다. 예제를 한번 살펴볼까요? 간단한 예제입니다. 예제 워크플로우의 모습은 아래와 같습니다. 하이브를 사용하여 데이터 셋에 대한 집계를 수행한 후 스쿱을 사용하여 RDBMS로 내보내는 워크플로우입니다. 이와 같은 패턴을 Oozie의 workflow.xml로 나..

Apache Oozie 알아보기

Oozie 개요 Oozie는 정식 홈페이지에 나와 있듯이 Hadoop ecosystem에서 사용하는 Workflow Scheduler(혹은 orchestration) 프레임워크이다.Oozie에서 제공하는 기능은 크게 아래의 3가지와 같다. Scheduling 특정 시간에 액션 수행 주기적인 간격 이후에 액션 수행 이벤트가 발생하면 액션 수행 Coordinating 이전 액션이 성공적으로 끝나면 다음 액션 시작 Managing 액션이 성공하거나 실패했을 때 이메일 발송 액션 수행시간이나 액션의 단계를 저장 Oozie Terminology Action 우지에서 실행할 수 있는 하나의 작업 단위 MapReduce 작업, Spark 작업, Shell script 등 Workflow Action들의 제어와 의존 ..

빅탑(Bigtop)을 이용한 아파치 하마(Hama) 설치하기

Hama on Bigtop 이번 포스팅에서는 Apache Bigtop를 이용하여 하마를 설치하는 방법에 관해 이야기해보겠다. 아파치 빅탑은 아파치 재단의 탑 레벨 프로젝트로 빅데이터 오픈 소스들(대표적인 것으로 hadoop, spark, hadoop ecosystem projects 등)을 패키징(rpm, deb 등), 테스트, 가상화를 지원해준다. 간단히 말해서, 빅데이터 오픈소스들의 설치와 같은 것을 사용자들이 편하게 할 수 있도록 도와주는 프로젝트이다. 여기서 제공하는 프로젝트 중에 빅탑을 이용하여 아파치 하마를 설치하는 방법을 살펴보겠다. Apache Hama는 BSP(Bulk Synchronous Parallel) 모델을 기반으로 하여 데이터 분석(예를 들어, Machine learning, G..

유클리드 호제법(Euclidean Algorithm)

유클리드 알고리즘(Euclidean Algorithm) 최대공약수를 구하는 알고리즘으로, 일반적으로 사람이 최대공약수를 구할 경우 직관적으로 구할 수 있지만 컴퓨터는 그렇지 않다. 이 경우 유클리드 알고리즘을 사용하면 컴퓨터에서 손쉽게 최대공약수를 구할 수 있다. 유클리드 알고리즘임의의 두 정수 u, v에 대해(1) v가 u보다 크다면 v와 u의 값을 바꾼다.(2) u = u - v (3) u가 0이면 v가 최대공약수, 0이 아니면 (1)로 돌아간다. 소스코드 #include using namespace std; int main(void) { int u = 280; int v = 30; int tmp = 0; while (u > 0) { if (v > u) { tmp = u; u = v; v = tmp;..

Algorithm 2015.08.08

다형성 (Polymorphism)

다형성이란? 다형성은 상속과 함께 객체지향 언어의 중요한 특징중 하나이다. 다형성은 상속과 관계가 있기 때문에 앞선 포스팅에 있는 상속을 미리 읽어 보는 것을 추천한다.객체지향에서 다형성의 의미는 '다양한 형태의 객체를 참조할 수 있는 것'을 의미한다. 자바에서는 한 타입의 참조 변수를 이용하여 여러 가지 타입의 객체를 참조할 수 있도록 기능을 제공하여 다형성을 제공하고 있다. 결론부터 말하면, 부모 클래스 타입의 참조 변수를 이용하여 자식 클래스의 인스턴스를 참조할 수 있다는 것이다. class Tv { boolean power; int channel; void power(); void channelUp(); void channelDown(); } class CaptionTv extend Tv { St..

Programming/Java 2015.07.12

제어자(Modifier)

1. Introduction 제어자는 클래스, 변수 혹은 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 2. static static은 멤버변수, 메서드, 초기화 블럭에 사용될 수 있다. static이 의미하는 것은 아래와 같다. Member variables 모든 인스턴스에서 공통적으로 사용되는 클래스 변수가 된다.(전역 변수처럼) 클래스 변수는 인스턴스를 생성하지 않고 사용가능하다. 클래스가 메모리에 로드될 때 생성된다. Method 인스턴스를 생성하지 않아도 호출이 가능한 static 메서드를 생성할 때 사용 static 메서드 내에서는 일반적인 멤버 변수를 사용할 수 없다. 3. final final은 변경될 수 없는 의미를 가지고 있다. 변수에 사용되면 변경할 수 없는 상수(c나 c..

Programming/Java 2015.06.28

로지스틱 회귀(Logistic Regression) #1

1. Introduction 로지스틱 회귀에 관한 포스팅에 앞서서 먼저 최적화(Optimization) 알고리즘에 관해 이야기 하고자 한다. 생활 속에서 우리는 대부분 최적화 문제를 많이 접하게 된다. 일상에서 최적화 문제는 어떤 것들이 있을까? 예를 들어보자. '서울에서 부산까지 가장 빠른 시간에 가려면 어떻게 가야하는가?', '가장 적은 양의 연료로 가장 큰 힘을 내도록 하기 위해서는 어떻게 엔진을 설계해야 하는가?', '캐나다까지 가장 적은 비용으로 가려면 어떻게 해야 하는가?' 최적화라는 것은 이러한 문제를 효과적으로 처리하는 방법을 말한다. 최적화 알고리즘을 미리 언급하는 이유는 이후에 설명하는 회귀가 바로 최적화 알고리즘을 이용하기 때문이다. 회귀(Regression)란 무엇일까? 회귀란 Fi..

Machine learning 2015.06.26

오버라이딩 (Overriding)

1. 오버라이딩이란? 부모 클래스로부터 상속 받은 메서드의 내용을 변경하는 것 class Point { int x; int y; String getLocation() { return "x :" + x + ", y :" + y; } } class Point3D extends Point { int z; Point3D(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } String getLocation() {// 오버라이딩 return "x :" + x + ", y :"+ y + ", z :" + z; } } 위의 코드와 같이 상속 받은 클래스의 메서드를 그대로 사용하지 않고 자신에 맞게 변경하는 것을 오버라이딩이라고 한다. 2. 오버라이딩의 조건 메서..

Programming/Java 2015.06.24
반응형