Welcome! 🙋‍♂️ View more

전체 글 40

[D/L] CNN 이란? (feat. DACON)

CNN(Convolutional Neural Networks)이란? 이미지인식과 음성 인식 등의 주변 정보에 영향을 받는 데이터에 적합한 딥러닝 기법이다. Ex. 흰색 와이셔츠 이미지가 있다면 흰색의 픽셀 주변에는 흰색일 확률이 높다. 이러한 형상이 가진 정보를 CNN은 이해할 가능성이 높다. 만약 이런 데이터를 1차원 데이터로 바꾼 다음 단순 딥러닝을 적용하게 된다면 이러한 형상이 가진 공간정보를 제대로 살릴 수 없다. CNN의 구조 1. Convolution (합성곱 연산) 사람은 사물을 인식할 때 이미지 전체를 보는 것이 아니라, 사물의 위치를 본다. 이부분에 해당되는 것이 Filter이다. 즉 객체를 단순 1차원 데이터로 바꾸는 것이 아니라 객체가 인식된 정보를 점으로 나타내어 1차원 데이터로 바..

Data 📊/AI 2022.01.16

[CS] 객체 지향 프로그래밍

객체 지향 프로그래밍 이란? 현실 세계는 사물(객체)로 이루어져있고, 발생하는 사건들은 사물간의 상호작용을 통해 이루어진다. 여기에서 착안하여 클래스를 이용해 연관있는 객체의 속성과 행위를 하나로 묶고, 그 객체들 간의 상호작용을 구현하는 프로그래밍 방법이다. 장단점 장점 재사용성 남이 만든 클래스를 가져와서 그 속의 속성과 함수를 사용할 수 있고, 상속을 통해 확장하여 사용할 수 있다. 코드 중복 제거 코드의 중복을 제거하여 코드 불일치를 방지할 수 있다. 유지보수 많은 인스턴스들이 한 클래스 내 변수와 함수를 사용한다. 함수에 버그가 있다면 그 부분만 수정하면 따로 인스턴스들의 수정이 필요 없다. 단점 개체 수가 증가하면 용량이 커질 수 있고, 처리 속도가 상대적으로 느리다. 5가지 키워드 1. 추상..

Engineering 💻/CS 2022.01.16

[Hadoop] 오케스트레이션 (feat. Oozie, Airflow)

데이터 추출 배치 작업과 데이터 분석 파이프라인은 독립적인 여러 단계로 구성되어있으며, 각 단계마다 다른 기술이 사용될 수 있다. 이런 파이프라인 작업에 대한 오케스트레이션 및 스케줄링과 같은 복잡한 상호 의존 관계를 나타낼 방법이 필요하다. Oozie 하둡에서 사용되는 작업 스케줄링 및 실행 프레임워크이다. 우지서버는 하둡 작업을 직접 실행하지 않고, 하둡 클러스터에 맡기는 아키텍처 덕분에 가볍다 따라서 수백 개의 액션을 동시에 쉽게 실행할 수 있다. 프로세스 Client: XML 파일로 정의된 작업을 제출한다. 처리 과정이 플로우 차트와 비슷하다고 볼 수 있다. Workflow Engine: 기본 실행단위인 액션을 구성하고, 연쇄적으로 함께 실행돼야 하는 액션을 묶어 워크플로우를 구성한다. Sched..

[Leetcode/Python] 5. Longest Palindromic Substring

🤔 문제. Palindromic Substring: 거꾸로 뒤집어도 같은 문자열, 예를들어 aaa, baaab 등. 🤗 풀이. 문자열 DP 문제이다. start포인트와 길이를 담을 변수를 지정한다. (기존 Palindromic Substring의 정보를 저장할 용도) for문을 실행하여 end포인트를 이동시켜준다. 특정 조건일 때 start 포인트와 길이를 변경한다. 기존 Palindromic Substring에 end포인트의 문자를 포함했을 때, Palindromic을 만족한다. Ex. aaa 기존 Palindromic Substring에 end포인트의 문자와 Substring의 앞의 문자를 포함했을 때, Palindromic을 만족한다. Ex. baaab HTML 삽입 미리보기할 수 없는 소스

[Leetcode/Python] 48. Rotate Image

🤔 문제. 2차원 배열을 시계방향으로 돌리는 간단한 문제입니다. 🤗 풀이. [단순 구현] 처음 풀었던 방식은 순수한 구현이었다. 끝에서 부터 한 바퀴씩 돌며 좌표를 담는 xy_list와 값을 담는 v_list를 만든 뒤, v_list 값을 수정해서 matrix를 재구성하였다. 통과는 했지만, 실행 시간이 오래걸렸다. HTML 삽입 미리보기할 수 없는 소스 [간단한 방법] 위에서는 2차원 배열을 1차원 배열로 바꿔서 풀려는 시도를 했다. 하지만 2차원 배열을 전체적으로 움직이며 푸는 방법이 있었다. matrix를 행을 중심으로 뒤집는다. matrix를 대각선을 중심으로 뒤집는다. HTML 삽입 미리보기할 수 없는 소스 실행속도는 2배 정도 차이난다... 역시 알고리즘 문제는 구현 전에 생각을 해야한다! 😓

[Hadooop] 분석용 SQL 엔진 (feat. Hive, Impala, Presto)

맵리듀스와 스파크가 아주 유연하고 강력한 프레임워크이긴하지만, 이를 사용하려면 개발/배포/운영에 익숙해야한다. 하지만 대부분의 분석 기법은 SQL을 기반으로 하며, 복잡한 절차없이 분석 작업이 선호될 때가 있다. 그래서 하둡에 저장되는 데이터를 SQL과 비슷한 인터페이스로 사용할 수 있게 해주는 도구를 들이 생겨났다. 이들은 내부적으로 맵리듀스나 스파크를 근간으로하지만, 독자적인 연산 엔진을 갖춘 것도 있다. 각 엔진은 데이터를 쿼리하거나 대량 데이터를 저장하는 데 중점을 둔다. Hive 하둡에 사용되는 데이터 웨어하우징 기술이다. HDFS에 저장된 정형 데이터를 하이브QL로 쿼리할 수 있게 만든 최초의 기술이다. 이는 ETL, 대용량 데이터 처리, 오프라인 배치 작업, 보고서 데이터 생성 등에 적합하다..

[Leetcode/Python] 15. 3sum

🤔 문제. Array에서 3개를 골라 0이 되는 sub-array를 구하는 문제입니다. 처음에는 2Sum을 구한 후에 하나씩 확인하며 구성하는 것으로 구현했는데, 시간초과가 나버렸습니다... 시간을 좀 더 들여 고민한 결과 정렬 후 투포인트로 문제를 풀었습니다. 🤗 풀이. Array를 sort한다. for문을 통해 값을 하나 잡고, left/right 포지션을 지정한다. 투포인트를 옮기면서 합이 0이되는 Array를 저장한다. (이때 중요한 점은 정답에 같은 Array는 포함되지 않도록 함으로 같은 과정을 최소화하는 방향으로 진행한다.) HTML 삽입 미리보기할 수 없는 소스

릿코드 파이참 연결

알고리즘을 공부하기 위해서 릿코드의 문제를 풀어보고자 했다. 파이썬이 주언어라서 파이참을 자주 이용하는데, 릿코드와 파이참을 연결할 수 있다고 하여 연결하여 사용하고 있는 중이다. 파이참에 릿코드 연결하기 File > Settings > Plugins > Leetcode 검색 > Install 클릭 > OK 클릭 우측에 leetcode 창이 나타난다. 우선 릿코드를 실행하기 위해서 로그인을 하면 문제를 풀 수 있다. 릿코드 플러그인에서는 아래와 같은 다양한 기능을 사용할 수 있는데, 자주 사용하는 기능은 아래와 같다. 테스트 케이스로 코드 실행하기 테스트 케이스 구성하기 코드 제출하기 타이머 실행 이제 릿코드 플러그인 도움받아 편리하게 알고리즘 공부를 즐겨보자! 👊

[Hadoop] 연산 프레임워크 (feat. MapReduce, Spark, Flink)

대다수 프레임워크는 사용자가 정의하거나 합성한 임의의 연산을 잘게 나눠서 분산 실행한다. Hadoop MapReduce 대용량의 데이터를 분산/병렬 컴퓨팅 환경에서 처리하기 위해 제작된 모델이다. 단순한 구조에도 불구하고, 강력하고 견고하며 확장성이 높다. 큰 데이터가 들어왔을 때, 데이터를 블록으로 나누고 각 블록에 대해서 Map Task와 Reduce Task를 수행한다. Map Task: 파일에 있는 각 레코드를 Key-Value형태로 변환한 결과를 반환한다. (보통 블록당 하나의 Map Task가 배정되는 것이 이상적) Reduce Task: 하나의 키에 대한 여러 값의 집계 또는 결합해서 입력값의 개수보다 더 작은 개수의 결과값을 산출한다. 처리 과정 예시 단어 개수를 세기 위한 파일을 HDFS..

[Hadoop] 핵심 컴포넌트 (feat. HDFS, YARN, ZooKeeper, Hive Metastore)

하둡 에코시스템 빅데이터 활용을 극대화 하기위한 분산 스토리지와 연산 기능을 갖춘 프로젝트. 흔히 '하둡'이라하면 일반적으로 하둡을 중심으로 만들어진 프로젝트와 프레임워크 전부를 의미한다. 핵심 컴포넌트 HDFS (Hadoop Distributed File System) 확장성과 장애 허용성을 가진 분산 파일 시스템 파일 수정이나 삭제가 불가능하고, 추가만 가능하다. 따라서 대규모 데이터를 저장하는 데 탁월하다. 데이터를 분산하여 저장하기 때문에, 개별 디스크나 데이터노드 또는 랙에 장애가 발생하더라도 데이터 안정성이 유지 데이터노드를 클러스터에 추가하기만 하면 파일시스템 용량이 늘어남 클러스터 저장이나 연산 등 하나 이상의 기능을 제공하기 위해 협력하는 서버 조합을 말한다. 워커노드: 데이터 처리/연산..

[DW] 데이터 웨어하우스 기초

데이터 웨어하우스란? 다양한 시스템에서 데이터를 공통의 형식으로 추출하여 적재된 분석용 중앙 데이터베이스를 의미한다. 사용자의 의사결정에 도움을 주기 위해 설계되었다. 만약 분석을 위해 필요한 큰 쿼리들을 시스템에서 사용하는 데이터베이스에 직접 요청한다면 부하로 인해 서비스에 영향을 미칠 수 있다. Ex. 분석을 위해서 1년 간의 고객데이터를 운영되고 있는 데이터베이스에 요청하게 된다면 과도한 트래픽에 의해서 장애가 날 수 있다. 데이터 웨어하우스의 성격 주제지향성 데이터 웨어하우스는 구축 전 사용 목적이 정의되어있다. DW의 데이터들은 이용자에게 이해하기 쉬운 형태로 제공된다. 통합성 여러 소스의 데이터를 통합해서 분석이 가능하다. (데이터 속성의 이름, 단위 등의 일관성을 통합한다.) 시계열성 시간에..

[DB] 데이터베이스 기초

데이터베이스란? 데이터베이스란 여러 사람들이 공유하고, 사용될 목적으로 통합하여 관리되는 데이터의 집합 데이터 베이스를 사용하기 이전에는 파일 시스템을 이용하여 데이터를 관리했다. 이렇게 저장된 파일들을 업무에 사용할려고 하니... 각 데이터가 중복에다가 형태가 다르다는 문제가 발생하게되었다. 이러한 파일 시스템의 단점을 극복하기 위해서 나타난 시스템이 데이터베이스(DB)이다. 데이터베이스의 특징 1. 데이터의 독립성 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성 > 3-스키마 구조를 통해 구현 파일 시스템의 응용 프로그램과 데이터가 상호 밀접하게 연결되어있다. 논리적 독립성: 응용 프로그램에 영향을 주지 않고, DB 논리적 구조를 변경할 수 있는 능력 / 많은 응용 프로그..

Engineering 💻/DB 2022.01.10