※ 베이즈 정리를 모르는 분들은 나이브 베이즈를 알기에 앞서 베이즈 정리에 대해서 먼저 이해해야 한다. 확률의 함정을 간파, 베이즈 정리(Bayes' Theorem) 확률의 함정을 간파, 베이즈 정리(Bayes' Theorem) 베이즈 정리는 일반인들이 알고 있던 통계의 지식을 무너트리는 역할을 한다. 물리학도가 양자역학의 개념을 배울 때 새로운 신세계가 열리는 것처럼 통계에서 베이즈가 그런 역할을 하는 것 needjarvis.tistory.com 나이브 베이즈(Naïve Bayes Classification)의 개념 - 데이터가 각 클래스에 속할 특징 확률을 계산하는 조건부 확률 기반의 분류 방법이다. - 나이브(Naïve) : 예측한 특징이 상호 독립적이라는 가정 하에 확률 계산을 단순화, 나이브라는..
베이즈 정리는 일반인들이 알고 있던 통계의 지식을 무너트리는 역할을 한다. 물리학도가 양자역학의 개념을 배울 때 새로운 신세계가 열리는 것처럼 통계에서 베이즈가 그런 역할을 하는 것 같다. 실제로 통계학도 사이에서도 베이즈 정리는 또 다른 통계의 세계이며, 필자의 부하직원에게 베이즈 정리에 대해서 잘 아는가에 대해 물어봤을 때 "저는 그쪽이 아니라 정통파입니다"라는 답변을 들었을 정도이다. 베이즈 정리에 대한 대표적인 예시로, "확률 게임"에 나온 예시이다. 자동차 사고로 사망한 사람의 40%는 안전띠를 매지 않았다고 한다. 그렇다면 60% 안전띠를 매고 죽었다는 의미인데 안전띠가 더 위험한 것이 아닌가? 위 예시를 보면 정말 그럴듯해보인다. 상대방이 통계를 잘 모르면 아무말을 못하고 당할 것만 같다. ..
파이썬을 하는 사람들이라면 필수적인 라이브러리인 판다스(Pandas)는 다양한 데이터의 핸들링이 가능한데 자바 개발자라면 기겁을 할만큼(대다수 파이썬 라이브러리들이 대개 그렇지만) 사용방법이 매우 쉽다. 각자 엑셀 데이터가 있겠지만, 혹시나 원활한 실습을 원하는 분들도 있을테니 그런 분들은 아래의 엑셀 파일을 다운로드 하면 된다. 키움증권과 카카오뱅크 FAQ 위 파일은 아래와 같이 2개의 시트(Sheet)로 구성되어 있고, 첫번째 시트는 4개의 키움증권 FAQ 데이터, 두번째 시트는 2개의 카카오뱅크 FAQ 데이터이다. 데이터구조 엑셀 읽기 코드 import pandas as pd excel_data = pd.read_excel('c:/project/faq.xlsx') # print를 하면, sheet ..
최근에 개발을 배우기 시작한 사람들은 거의다 알고 있을 것 같은데 네이버 코딩폰트(개발폰트)가 나오기 전에 현업으로 뛰는 사람들 중에 코딩폰트를 모르는 사람들이 꽤 있는 것 같다(필자도 최근에 우연히 알게 됨) 그전에는 courier new가 가독성이 좋아서 IDE 툴(ex: 이클립스)을 설치할때마다 해당 폰트로 바꾸는 것이 시작이었는데 D2coding 폰트를 알게 된 이후 이 폰트로 바꾸게 되었다. 네이버에서 오로지 개발을 위해서 만든 폰트이기 때문에 당연히 개발할 때 폰트 가독성이 상당히 뛰어나다. 버전은 2018년 6월 이후로 업데이트를 하고 있지 않는데 더이상 수정할 필요가 없을 만큼 잘 만들었다는 의미로 받아들여도 될 것 같다. github.com/naver/d2codingfont naver/d..
우리팀은 대화를 회사 메신저를 활용하지 않고 디스코드를 사용하고 있다보니 디스코드에 흥미를 느끼게 되었고 디스코드로 뭔가 제품을 시연하는 것이 상당히 편리하다는 것을 깨닫게 되었다. 별도의 데모 페이지를 구축하는 것보다 디스코드 봇을 만들어서 시연을 하게 되면 업무의 능률도 빠르고 필자처럼 back-end api를 만드는 사람에게 상당히 유용해 보인다. 디스코드는 다양한 언어를 제공해주지만 라이트하게 가기 위해서 파이썬으로 진행하려 한다. 처음에는 자바로 진행하려 했지만 목업 수준을 만들기 위해서 자바로 하는 것만큼 바보 같은 것이 없기 때문에 우선 Python으로 한 후 막히는 부분이 있으면 그때 자바를 고려할 예정이다. 라이브러리 설치 D:\Project\bots\discord>pip install ..
불현듯, 자바에서 제공하는 랜덤함수의 속도 차이가 있을까 궁금해서 테스트를 해보기로 했다. 자바는 기본적으로 java.util.Random 클래스와 Math 클래스에서 제공하는 random이 있는데 둘의 차이점은 Math는 별도로 import를 할 필요가 없고, Random은 import하는 대신 좀 더 자유롭게 커스터마이징 할 수 있다는 정도가 있을 수 있겠다. Random 클래스로 1000만번 nextInt 호출하기 우선 가장 많이 사용되는 Random 클래스의 nextInt를 1000만번 호출해보도록 한다. 다만 예제에서 nextInt값을 total로 담은 후, 최종적으로 total값을 뿌린다. 이렇게 한 이유는 보편적으로 Random을 사용할 때 정수값을 많이 호출하기 때문이다. import ja..
디지털 트윈(Digital Twin)은 미국의 GE(General Electric)가 2014년에 처음으로 제안한 용어로 2018년 가트너가 선정한 트렌드 기술 10에 포함할 정도로 중요하며 이 기술은 컴퓨터에 현실을 녹이는 것을 말한다. 대표적으로 구글 어스(Google Earth) 그리고 약간 벗어날 순 있지만 도시를 게임에 옮긴 GTA, 최근에는 도시를 똑같이 컴퓨터로 옮기는 작업등이 디지털 트윈이라 할 수 있다. 원래 디지털 트윈은 공장의 생산성 개선을 위해 나온 것으로 제품을 컴퓨터에 그대로 녹여낸다면 공장 관리자는 실시간으로 어느 곳이 문제가 있는지 쉽게 파악할 수 있다는 개념이다. 디지털트윈(Digital Twin)의 개요 디지털 트윈의 개념(정의) - 물리적(Physical) 세계와 동일한..
우리나라 사람들만큼이나 게임을 좋아하는 나라는 전세계 어느나라에도 없다. 그리고 전세계에서 가장 빠른 인터넷을 자랑하고 있고 한국에서 파생한 특이한 문화인 PC방도 있으며 가장 게임을 잘하는 민족이기도 하다. 그런데 게임 만드는 수준은 이 한국의 욕망을 따라가지 못하는 것 같다. 한때 게임개발을 전공했었고 실제로 게임개발을 했던 관련자로 이번에 세븐나이츠2를 하면서 이 더러운 감정을 여기에 끄적끄적 적고자 포스팅을 한다. 한국모델형 게임모델의 시작 리니지 스타크래프트(Starcraft)가 전국을 강타하고 디아블로(Diable) 2가 전국적으로 센세이션을 불러들일 때 한국의 중소업체가 만든 만화책 기반의 한 게임이 선풍적인 인기를 끌게 된다. IMF로 전국에 엄청난 실업자들이 생겨나고 있어서 할일 없이 P..
Intro 교착상태는 사실 교착상태라는 말보다는 Deadlock이라는 말을 훨씬 많이 사용하고 있으며, 개발자라면 한번 정도는 경험해볼만한 상황이기도 하다. 필자같이 데이터 분석가라면 대용량의 데이터를 처리하기 때문에 다른 사람들보다 이러한 상황을 자주 경험해봤다. 왜냐하면 다중 프로세스에서 발생하기 때문에 대용량을 처리하는 상황(최고의 속도를 위해서 수많은 Thread들과 마이크로서비스 등을 사용하기 때문)은 그야말로 최적의 상황이기 때문이다. 다중 프로세스 무한대기 상태, 교착상태의 개요 교착상태(Deadlock)의 개념 - 다중 프로세스(process) 환경하에 서로 다른 프로세스가 각자 자신이 소유한 자원을 포기하지 않고 상대 프로세스의 자원을 무한정 기다리고 있는 상태 - 교착상태에 있는 프로세..
B-Tree의 개요 B-Tree의 개념 - 데이터를 정렬하여 탐색, 삽입, 삭제 및 순차 접근이 가능하도록 유지하는 트리형 자료구조 - 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 자료구조의 일종 - 대부분의 이진 트리는 항목이 삽입될 때 하향식으로 구성되지만 B-트리는 상향식으로 구성됨. - B는 Balanced의 의미이며, leaf node가 한쪽 방향으로 쏠리는 현상이 적음 - B-Tree 에서 B를 Bi로 인식하는 사람들이 많으나, Balanced이다. 일반적인 트리와 다르게 자식노드가 3개 이상이 될 수 있기 때문이다. B-Tree의 특징 각 노드는 1/2이상 채워져야 하며 모든 리프 노드(leaf node)는 같은 레벨 (균형 트리) 탐색, 추가, ..
트랜잭션(Transaction)의 개요 트랜잭션의 개념 - 한번에 수행되어야 할 데이터베이스의 일련의 Read, Write 연산을 수행하는 단위 - 하나의 논리적 기능을 수행하기 위한 데이터베이스 처리작업의 단위 - 데이터베이스의 일관된 상태를 다른 일관된 상태로 변화시킴 트랜잭션의 특징(ACID) 원자성(Atomicity) - 트랜잭션은 분해가 불가능한 최소의 단위로 연산 전체가 처리 되거나 처리 되지 않아야 됨 (All or Nothing) - Commit/Rollback 연산 일관성(Consistency) - 일관성 있는 데이터베이스 상태를 보존함 - 트랜잭션 실행이 성공적으로 완료된 상태면, 데이터베이스는 모순이 없이 일관된 데이터 상태를 유지 고립성(Isolation) - 트랜잭션이 실행 중에 ..
함수적 종속성(Functional Dependency)의 개요 함수적 종속성의 개념 - 데이터베이스(Database, DB)의 릴레이션(Relation)에서 두 개의 애트리뷰트(attribute) 집합 간 제약의 일종 - 데이터들이 어떤 기준값에 의해서 항상 종속이 되는 현상 - Y는 X에 함수적으로 종속된다라고 정의하고 X -> Y로 표기 - X를 결정자(determinant set)라 하고, Y는 종속자(dependent attribute)라 한다. 함수적 종속성의 필요 종속된 테이블에 데이터를 배치하여 반복 차단 이상현상을 제거할 경우 데이터의 정합성을 유지할 수 있음 정규화 작업 수행 시 가장 중요한 작업으로 제2 정규형에서 BCNF까지 적용 함수 종속 다이어그램 (Functional Depend..