본문 바로가기

분류 전체보기56

지식 베이스(Knowledge base)에 대해 알아보자 지식 그래프(Knowledge graph)보다 지식 베이스(Knowledge base)를 먼저 알아봤어야 순서상 맞았던 것 같다. 지식 베이스의 기본적인 정보에 대해 알아보자. 약어 * KB : Knowledge base Knowledge base란? 지식 베이스(Knowledge base)는 분석 시스템 중 하나이다. AI 에이전트가 사용될 분야와 관련된 지적 활동과 경험을 통해서 축적한 전문 지식 그리고 문제 해결에 필요한 사실과 규칙 등이 저장되어 있는 데이터 베이스이다. 초기에는 'Knowledge base'란 용어는 'database'라는 용어와 구별하기 위해서 만들어졌다. 1970년대에 사실상 모든 대형 관리 정보시스템은 데이터를 관계형 혹은 계층적 데이터베이스 시스템(RDMBS)에 저장했다... 2021. 10. 8.
지식 그래프(Knowledge Graph)가 무엇인지 알아보자 날리지 그래프 기반 무슨 프로젝트를 한단다(바쁜데 ㅜㅜ). 기술조사 좀 해오라니 밤새 조사해가야겠다. 관련 지식이 없어서 기본 우선 기본 정보부터 정리해보려 한다. * KG : Knowledge Graph * KB : Knowledge Base Knowledge Graph 지식 그래프(Knowlege Graph)는 개체, 사건 또는 개념과 같은 실체에 대한 상호 연결된 설명 모음을 뜻한다. 지식 그래프는 컨텍스트 내의 링킹 및 의미론적인 메타데이터를 저장하며, 이러한 방식으로 데이터 통합, 통일, 분석, 공유(integration, unification, analytics, sharing)를 위한 프레임 워크를 제공한다. 몇 년 전부터 빅 데이터에서 스마트 데이터로 단어의 유행이 옮겨 갔다. 전례 없는 .. 2021. 10. 7.
ETL, ELT의 4가지 주요 차이점 내가 생각하는 머신러닝, 데이터 엔지니어링/사이언스 분야에서의 가장 중요한 단계는 ETL이다. ETL은 정답이 없고 가장 많은 시간이 소요되기도 하고, 가장 많은 실수가 일어나기도 하며, 개발자의 통찰력에 따라 최종 결과물이 크게 좌우되기도 한다. 이렇게 중요한 ETL이 슬슬 ELT방식으로 변화하고 있다. 이번 글에서는 ETL과 ELT의 정의 및 주요 차이점과 방식의 변화가 생기는 이유 등을 정리해보고자 한다. * 이 글에서 설명되는 ETL와 ELT는 각각 ETL 프로세스, ELT 프로세스와 동일한 의미를 가진다. E, T, L 이란? ETL / ELT은 모두 다음 세 가지 단계를 포함한다. E/Extract(추출) : 원본 데이터베이스 또는 데이터 소스에서 데이터를 가져오는 것을 말한다. ETL을 사용.. 2021. 4. 26.
3차원 펜윅 트리(Fenwick Tree/Binary Indexed Tree/Segment Tree) 최근 3차원 공간의 부분합을 많이 구해야 일이 생겼다. 속도가 느려서 팬윅트리를 이용하여 해결하고자 했는데, 3차원으로 가니 직관적이지 않다. 조금 공부를 했고, 3차원 팬윅트리 코드를 완성 시켜보았다. 까먹지 않기 위해 자체 PS 문제를 제작, 솔루션을 남겨본다. * 문제 설명 512^3 공간에서 인풋으로 주어진 범위 내의 '1' 을 카운트하여 반환하는 함수 작성 * 제약사항 힙 메모리 : 1gb 미만 스텍 메모리 : 1mb 미만 CPU TIME : 코드 참조 #include #include #include #include const int SIZE = 512; // 코드를 읽고 PASS를 출력하게 하는 CountDefect 함수를 작성하시오. // 제약사항 HEAP MEMORY < 1gb int Co.. 2021. 4. 16.
Cachegrind - cache, branch prediction 측정/분석/프로파일링 프로그램을 최적화하다가 if문 순서에 따른 성능이 이상하게 나와서 branch hazard와 관련한 성능 측정이 필요한 일이 생겼다. 구글링 결과 Valgrind를 이용하면 측정할 수 있을 것 같다. Valgrind Valgrind는 동적 분석 도구를 구축하기 위한 프레임 워크이다. 메모리 관리, 스레딩 버그 등등을 감지하고 프로그램을 자세하게 프로파일링 할 수 있는 도구들이 있다. 그중에서도 CacheGrind 기능을 이용하면 캐시 미스(cache miss), branch mis-prediction 등 cpu 단에서의 오버헤드들을 관찰할 수 있고, 성능 향상에 이용할 수 있다. Valgrind는 오픈소스로 GNU Genral Public License 2에 따라 무료로 이용할 수 있다. 사전 지식 일반.. 2021. 4. 15.
알고리즘 문제풀이 시간 단축을 위한 팁 (2) 1편에 이어서 몇 가지 더 써 보고자 한다. Cache를 고려하자 이 내용은 너무 기본적인 내용이라 넣을까 말까 고민을 했는데, 의외로 모르는 사람들이 많은듯해서 한 번 더 상기하고자 작성한다. 기본적으로 컴퓨터는 하나의 값을 읽어올 때 딱 그 변수를 읽어오는 것이 아니라. 주변에 있는 값을 포함해서 한 블록을 통째로 준비시킨다. 왜냐하면 통상적으로 주변에 있는 값들을 연속적으로 읽을 확률이 높기 때문이다. 따라서 연속해서 사용할 값은 쓴다면 연속한 위치에 있는 게 좋다. // 1000x1000 array 요소의 총 합을 반환 해주는 함수 void badSum(int a[1000][1000]) { int sum = 0; for(int x = 0 ;x < 1000 ; x++) for(int y = 0 ; .. 2021. 3. 31.
170422 조금 이상한 큐브 보호되어 있는 글 입니다. 2021. 3. 30.
알고리즘 문제풀이 시간 단축을 위한 팁 (1) 라떼만해도 알고리즘 문제풀이 사이트라고 하면 백준, 알고스팟, 코드잼 같은 사이트 밖에 없었던 것 같은데, 우후죽순 많은 사이트들이 생겼고, 사이트들의 문제를 기반으로 많은 신입/경력 채용이 이루어지는 것 같다.(최근 이직 준비를 하면서 알게됨) 블로그에 알고리즘 카테고리를 하나 추가하면서, 중상급 이상의 문제에서 적용할 수 있는 테크닉, 풀이 접근방법 등을 정리해보고자 한다. 문제풀이 초/중급이라면 문제풀이를 할 때 어떤 알고리즘이 가장 최적화된 시간 복잡도로 풀이할 수 있는지 직관을 먼저 기르는 것을 추천한다. * 알고리즘 문제풀이에서만 해당되는 내용이며 실무에서는 정반대의 접근법으로 코드 작성을 해야 할 수도 있다. 이 점을 주의해야 한다. Function call 최소화 간단한 코드라면 funct.. 2021. 3. 29.
210327 보호되어 있는 글 입니다. 2021. 3. 27.
STL - Vector 삽입/삭제/정렬/복사 등 사용법 예제 임베디드 쪽 개발하는 현업에서 뛰다 보니 STL을 쓰지 않고 필요 기능만 구현해서 쓴다. 이직을 준비중인데 STL 사용법들이 잘기억나지 않아 복기 겸 정리해보고자 한다. 기본 동작 vector v; vector v(5); // 초기화 0, 5칸 vector v(5, 1); // 초기화 1, 5칸 v.push_back(1); // 마지막에 삽입 v.pop_back(); // 마지막 원소 제거 v.clear(); // 모두 제거 v.insert(1,2,3);// 1번째 위치에 3값을 2개 삽입 v.insert(1,2);// 1번째 위치에 2값을 삽입 v.erase(iter);// iter가 가르키는 놈을 삭제 v.erase(iter1, iter2);// iter1부터 iter2가 까지 범위 삭제 v.empt.. 2021. 3. 10.
Apache Spark - Master, Slave 구성 별 메모리, 코어 수 설정하기 AWS EMR을 이용해 Apache Spark를 실행할 때 마스터와 슬레이브 수에 따라 적절한 메모리, 코어수를 구하는 Cheatsheet을 사용하고 있다.(무려 5년이나 된 자료이다.) 아직까지 이걸 사용하고 있는 이유는 더 좋은 계산식을 찾는 것도 힘들뿐더러 데이터 특성마다 적절한 메모리, 코어 분배수는 달라지기에 차라리 ETL을 진행하면서 Ganglia로 모니터링 후 조금씩 튜닝하는 게 시간적으로 효율이 더 좋다는 생각.(대충 귀찮다는 뜻) 사용법 1. 노드, 코어수, 메모리 등 자원 입력 1. 하단에 Clsuter Mode와 Client Mode 중 본인이 사용하는 모드를 클릭. 나는 클러스터 모드를 사용한다. 2. 좌측 초록색 셀에 슬레이브 노드수, 노드당 메모리, 노드당 코어수를 적는다 3. .. 2021. 3. 9.
AWS EMR에서 매번 같은 버전의 아나콘다 사용하기 AWS EMR을 통해 ETL을 매번 작업하다 보면 콘다 버전이 꼬이는 경우가 있는데 그럴 경우 아나콘다 설치 파일을 s3에 저장해놓고 EMR 실행 시 부트스트랩 코드를 통해 설치해주면 된다. 내가 주로 쓰는 부트스트랩 코드는 다음 두가지다. #!/bin/bash # echo "Updating Anaconda (findspark, boto3)..." >> ~/install.log; echo `date` >> ~/install.log #/mnt/anaconda/bin/conda install -c pyspark -y /mnt/anaconda/bin/conda install -c conda-forge findspark -y /mnt/anaconda/bin/conda install libgcc=5.2.0 -y .. 2021. 3. 9.