목록전체 글 (76)
속도 < 방향
실전 시계열 분석을 보며 정리했습니다. [Last updated : 2022-09-14] 정의 시계열 분석은 시간 순서대로 정렬된 데이터에서 의미있는 요약과 통계 정보를 추출하는 것이다. 과거 행동 진단뿐만 아니라 미래 행동 예측에도 사용된다. 1.1 다양한 응용 분야의 시계열 역사 '과거가 미래에 어떤 영향을 주는가?' 와 같은 인과관계를 다루는 질문으로 시계열 분석에 대해 일축할 수 있다. 1.1.1 시계열 문제로서의 의학 존 그란트(John Graunt)는 1500년대 초반부터 사망 기록 연구를 시작하여, 특정 연령대에 있는 사람이 다음 생일 전에 사망할 확률을 구했다. 그란트는 처음으로 사람의 건강을 문서에 기록한 통계학자이다. 하지만 당시에는 찬밥 신세를 받았다. 그 이유는 당시 생리학, 해부학..
Work 데이터 분석가와 머신러닝 엔지니어로서 필요한 자질은 어떠한 것들이 있을까? 도메인 지식이 있다는 가정 하에 , 리서치를 하며 데이터에 대한 직관력과 인사이트를 키울 수 있겠지만 도메인 지식이 없을 때는 리서치만으로 해결되지 않는다. 도메인 없이는 컬럼명부터 이해가 가지 않는 경우가 굉장히 많다. 이번 달은 도메인 지식이 없던 데이터를 다루며 직관력과 인사이트를 얻는 방법을 많이 배웠다. 또, 데이터 파이프라인과 서빙까지의 전반적인 flow 에 대한 학습도 필수적이라는 걸 알았다. 그저 파이프라인 구축에 관심이 있어요~ 라고 말하는 사람이 아니라 직접 구축하고 적재하고 모델까지 서빙할 줄 아는 사람이 되어야 한다. 이미지 데이터를 원천으로 수집하고 가공하고 라벨링하는 과정을 겪으며, 정제 데이터만..
Reference : CS 공부 비서, 티스토리 Q&A Q. 컴파일러와 인터프리터의 차이가 무엇인가요? A. 나의 답변 * 컴파일러는 인풋언어(고급어)를 객체어(기계어)로 변환하고, 하드웨어에 종속적이다. 번역 진행 시 전체 코드를 검사한 뒤에 실행한다. 반면 인터프리터는 line by line으로 번역을 진행하고, 하드웨어에 종속되지 않는 특징이 있다. Best Answers ★ㅇ*님의 답변 컴파일러와 인터프린터는 사람이 작성한 코드(고급언어)를 컴퓨터가 이해할 수 있는 언어(기계어)로 변환하는 작업을 수행해주는 역할을 한다. 컴파일의 경우 고급언어를 한 번에 번역한다. 인터프린터의 경우 고급언어를 한 줄씩 번역을 진행하기 때문에 컴파일 보다 실행시간이 빠르다는 장점이 있다. 그러나 번역을 할 때 실행..
많이 늦은 상반기 회고지만, 더 늦기 전에 작성해보려 한다. Work 커리어를 데이터 사이언스 분야로 전환하고 난 후 첫 취업을 하였고, 하루하루 배움의 연속이었다. 부족한 역량을 채우기 위해 추가적인 공부가 필요해서 업무도 공부도 열심히 하였다. 동료 연구원들과 선임, 책임연구원분들의 이야기를 들으며 데이터를 다룰 때 고려해야 하는 부분이 내 생각보다 훨씬 많다는 것도 배웠다. 넘겨 짚지 않아야 하는 건 당연하고, 다양한 경우의 수를 생각하며 플랜을 짤 수 있는 방법을 습득하였다. 리서치를 하며 모델에 대한 지식을 넓혔다. 혼자 paper를 읽으며 공부를 했을 때는 '아 여기서는 이 구조에서 이러한 특징을 살려 이러한 부분을 develop했고, 그래서 이러한 점이 개선되었구나' 이러한 플로우로 이해를 ..
[last updated Aug 05, 2022] reference book : 구글 브레인 팀에게 배우는 딥러닝 with TensorFlow.js 서문 그동안 대부분의 딥러닝 프레임워크(Tensorflow 등)들은 파이썬으로 쓰여있어서, 파이썬이 익숙치 않은 사람들이 프레임워크를 다루는 것에 어려움이 있었다. 구글 브레인 팀은 자바스크립트와 Tensorflow 를 연결하여 자바스크립트 개발자들도 머신 러닝 모델을 구축하고 배포할 수 있도록 하며, 새로운 종류의 on-device 컴퓨팅을 가능하게 만들었다. Tensorflow.js는 자바스크립트를 통해 신경망을 다루며 다양한 데이터 형태의 인풋이 가능하도록 하며 사전학습모델(pre-trained model)을 활용한 학습, fine-tuning, 더 나..
Reference : CS 공부 비서, midas님의 velog Q&A Q. 트랜잭션의 각 격리 수준에 대해서 설명하고, 각 수준에서 일어날 수 있는 문제에 대해 설명해주세요 A. 나의 답변 * 트랜잭션은 데이터베이스의 논리적 수행 단위라고 할 수 있는데, 가지고 있는 여러가지 특징 중 격리성에 대한 특징이 있다. 격리성이란 트랜잭션들이 동시에 실행될 때 서로 영향을 미치지 않도록 격리하는 성질을 의미한다. * 격리 수준은 4가지로 나눌 수 있는데, 하위 단계로 갈수록 격리 수준이 높아지지만 동시처리의 성능은 떨어진다. 1) Read Uncommitted 2) Read Committed 3) Repeatable Read 4) Serializable Best Answers ★김*님의 답변 격리성 관련 문제..
카카오톡 플러스 친구에 좋은 채널이 있어 추가하였다. 하루에 한 개씩 CS 공부를 할 수 있도록 질문을 보내주고 , 답변자에 한하여 그 날이 마무리될때쯤 베스트 답변을 취합하여 다시 알려주는 좋은 채널이라 덕분에 나도 틈날때마다 개념을 정리하려 한다. Reference : CS 공부 비서, 동기와 비동기의 개념, 동기와 비동기의 개념과 차이 Q&A Q. 동기(Synchronous)와 비동기(Asynchronous), 블로킹(Blocking)과 논-블로킹(Non-blocking)에 대해 설명해주세요 A. 나의 답변 * 동기는 요청을 보내는 동시에 결과값을 받을 수 있도록 동시에 일어나는 것에 초점을 맞춘 방식이다. 비동기는 반대로 요청과 결과가 동시에 일어나지 않는다. * 블로킹은 원래는 스포츠(농구)용어..
[last updated Jul 13, 2022] reference : 한빛미디어 혼공단, 오라클, 위키백과, planhoster, 메일리 ● 데이터베이스, DBMS의 개념 DataBase(데이터베이스) 란 특정 기업이나 조직 또는 개인이 필요에 의해 논리적으로 연관된 데이터를 일정한 형태로 정리해 놓은 것으로, 쉽게 말해 데이터 조직화되거나 구조화된, 통합하여 관리되는 자료의 집합을 의미한다. 줄여서 DB 라고도 표현한다. 보통 데이터베이스가 데이터베이스 자체로 존재하기보다는, 데이터베이스 관리자들은 관리 프로그램을 통해 관리를 하는데 이 소프트웨어를 DBMS (DataBase Management System) 라고 한다. Oracle, SYBASE 등이 DBMS에 해당한다. 데이터베이스 자체만으로는 ..
edwith CS50강의를 보며 정리했습니다. 합병정렬 합병정렬은 원소가 한개가 될 때까지 계속 반으로 나누다가 다시 합쳐나가며 정렬을 하는 방식이다. 합병 정렬은 버블 정렬, 선택 정렬, 삽입 정렬보다 훨씬 빠르고 간결하고 깔끔하게 표현할 수 있다. 합병정렬의 시간복잡도 상한선은 $nlogn$이다. 다른 정렬의 최소 상한선은 $n^2$이고, 이는 $nlogn$보다 크다. 합병정렬은 시간적으로 빠르지만 단점도 존재한다. 합병 정렬은 더 많은 공간(메모리)을 사용한다. 8개의 자료가 있다고 하면, 세 번을 나눈다. $log28$은 3이다. 그리고 그 한번을 실행할 때마다 자료를 n번씩 봐야했기 때문에 $nlogn$으로 표현할 수 있다. 합병 정렬은 병합하는 알고리즘을 포함한다. 실행시간으로 표현을 한다면,..
edwith CS50강의를 보며 정리했습니다. 시간복잡도 앞서 배운 정렬을 진행할 때마다 시간이 소요되는데, 어떤 알고리즘을 수행하는 데 걸리는 시간을 시간복잡도라고 한다. 물리적인 시간이 아닌, 주어진 n개의 값을 활용하여 일반화한 복잡도를 의미한다. 일반적으로, 연산 횟수를 세며 이것이 측정 단위가 된다. 알고리즘을 수행할 때 걸리는 시간을 기준으로 효율성을 분석하는 것이다. 시간의 효율성이란 결국 알고리즘에서 비교와 교환 등이 일어날 때 연산자의 처리 횟수가 적다는 의미이며, 연산자의 처리 횟수가 적다는 건 시간의 복잡도가 낮다는 의미이다. 따라서 시간 복잡도가 낮을수록, 연산자의 사용 횟수가 적을수록 효율성이 높은 알고리즘이 된다. 예를 들어 버블 정렬이라면, 총 n개의 물체를 정렬할 때라고 가정..