지식은 나눌 때 더 강해진다
-
Airflow cli로 데이터 백필하기(위해서 삽질한 과정들)
정확히는 Airflow cli로 특정 task만 백필하기가 제목이다. 우리 팀은 Airflow로 대부분의 batch job을 스케줄링 하고있다. 매일 새벽에 수십 수백건의 테이블들이 전날 들어온 데이터들을 적재한다. 소스로부터 오는 데이터도 있지만, 데이터 사이언티스트분들이 구현하고 관리하는 mart들도 새벽 배치에서 적재되는데, 이 mart 테이블의 스키마가 변경되거나 쿼리 로직이 변경되는 일이 꽤 자주 있다. 그럴 때 해줘야하는 일은 1. catalog schema 변경 2. data backfill이다. 그 중 2번은 나같은 데이터 엔지니어의 역할인 경우가 많다. 우선, Airflow자체에서 backfill용 cli를 제공한다. https://airflow.apache.org/docs/apache-..
-
<무신론자를 위한 종교> 알랭 드 보통
"이 책은 기적, 영(靈), 또는 불타는 덤불 같은 이야기를 믿을 수 없어 하는 사람들을 위한 것이다" 아, 제목부터 흥미롭다. 어딘가 중립기어를 세게 박고 읽기 시작해야 할 것만 같은 책 제목이란 말이다. 아니나 다를까 알랭 드 보통은 무신론자임에도 불구하고 뇌에 힘을 세게 주고 중립기어를 박았다. 어느 진영에도 편중되어 있지 않은 채 이성적으로 종교를 해석한다. 알랭 드 보통의 책은 거의 다 읽은 것 같다. 보통의 책은 어려운 단어를 많이 쓰지 않고, 문장의 개연성이 좋아서 술술 읽히는 편이라 좋아한다. 다만, 이 책은 보통의 책이라서 읽은 건 아니었다. 아는 사람에게 추천을 받았는데, 집에 와서 찾아보니 보통의 책이었던 것. 사랑이야기만 쓰는 아저씬줄 알았는데 말이다. 나는 무신론자다. 종교를 미워..
-
성찰
요즘 많이 하는 생각 크롬 브라우저는 오래 켜두면 입력이 밀린다 가끔 꺼줘야 됨 좋은 사람이 되자 좋은 사람이란 무엇인가? 내가 생각하는 좋은 사람이란 마음이 평온한 사람이다. 무언가를 말하려는 사람보다 그 말을 할 이유가 없다는 것을 아는 사람이다. 자유란 내 마음대로 하는 것이 아닌, 그 행동을 굳이 할 필요가 없다는 걸 아는 것이다. 윤리란 윤리가 무엇인지 끊임없이 질문하는 행위인 것 처럼 말이다. 자유는 '마음대로'가 아닌, '놓아줌'으로 부터 오는 여유다. 또한, 자신의 상처로 타인을 투영하지 않는 사람이다. 사람은 누구나 상처가 있고 대부분은 타인으로부터 상처를 받으며, 그렇기에, 모순적으로 타인으로부터 상처를 치유받으려한다. 그 과정에서 상대에게 같은 상처를 주기도 한다. 단단한 사람은 타인..
-
mac에 하둡(3.3.0) 설치하기
환경 - macOS Big Sur (버전 11.2.2) - Hadoop 3.3.0 Home brew로 설치하는 방법 포스팅하겠습니다. 맥 터미널을 열고 $ brew install hadoop # 설치 경로 # 3.x.x 부분은 설치하신 버전에 맞게 자동으로 경로 생성 됨 /usr/local/Celler/hadoop/3.x.x/libexec 설치가 완료 됐으면 몇 가지 세팅을 추가해준다. 1. hadoop-env.sh 세팅 $ cd /usr/local/Celler/hadoop/3.x.x/libexec/etc/hadoop $ vim hadoop-env.sh 해당 파일을 열면 주석처리 된 글들이 나올 것이다. 맨 아랫줄에 다음을 추가해주자. export HADOOP_OPTS="-Djava.net.preferI..
-
HTTP protocol 쿠키와 세션
HTTP protocol 쿠키, 세션 HTTP 프로토콜.. 기본적으로 웹서버와 클라이언트가 통신을 할 때 마다 서버는 클라이언트가 누구인지 계속 인증하는 과정이 필요하다. 그 이유는 HTTP 프로토콜이 connectionless, stateless한 특성이 있기 때문이다. Connectionless : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어버리는 특성 Stateless: 통신이 끝나면 상태를 유지하지 않는 특성 이 때 인증과정에서 사용되는 것이 쿠키와 세션이다. 예컨데, 쿠키와 세션이 없으면 우리는 페이지를 이동할 때 마다 계속해서 로그인을 해야 할 것이다. 서버가 클라이언트를 기억하지 못하기 때문이다. Cookie 쿠키는 서버에서 클라이언트에게 저장하도록 시키는 정보다. 보통 클라이언트..
-
Spring Boot와 sqlite3 연동, JPA, Hibernate, SQLDialect
Spring Boot와 sqlite3 연동하기 Code: https://github.com/C-YooJin/lite (해당 게시물은 깃허브 코드를 참고하면서 보는 것을 권장합니다.) 1. Spring Boot 프로젝트를 생성한다. 나는 보통 빌드 툴로 maven을 사용하기 때문에 pom에 Spring web, Spring Data JPA, sqlite 디펜던시를 추가해주자. org.xerial sqlite-jdbc 3.21.0.1 2. SQLDialect를 설정해준다. JPA로 어플리케이션을 개발하게 되면 개발자가 직접 JDBC 레벨에서 SQL문을 작성하는게 아니고 JPA가 이를 대신해주게 되는데 그 때 필요한게 Dialect다. SQLDialect는 데이터베이스간의 SQL문법 차이를 보정해주기 위해 J..
-
REVIEW - How to Be Single
Just one last screw for old times’ sake, before you go and settle down with somebody else? - I’m sorry. This is my fault. - Oh, my god. This is it! This is the dick-sand. I’m falling into your dick-sand right now. - I’m so obsessed with the idea of being in love, that I just, it’s like... I completely lose myself. Like, I forget what I want and I just disappear. I’m like the horse in The Neveren..
-
JAVA Selenium NoSuchElementException, elementclickinterceptedexception 해결
JAVA Selenium 데이터 크롤링을 하게됐다. 자바를 메인언어로 바꾸겠다고 마음 먹은지 6개월정도 지났나 이제 좀 익숙해져 가고 있다. 두려움을 떨쳤다는 것 만으로도 스스로 기특하다고 생각하고 있다. 파이썬에서 자바로 언어를 바꿀 때 가장 답답한 부분은 함수형 사고방식에서 OOP형 사고방식으로 바꾸는 거였다. 뭐든 모르면 쫄기 마련인데, 하다보면 사실 몰랐을 뿐 어려운 건 아니었다는 생각을 하게 된다. 셀레니움 쓰다보면 자주 맞닥뜨리는 에러랑 간단한 해결법이다. 이런 글이라도 도움 되는 사람이 있겠지. 1. NoSuchElementException 셀레니움을 쓰다보면 제일 많이 보이는 에러다. 그런 엘리먼트는 없어~ 이런 느낌이다. 기본적으로 셀레니움은 다음 코드를 가장 많이 사용한다. import..
-
<고독의 매뉴얼> 리뷰
"일상을 지배하던 고정관념의 독재가 멈추고 새로움에 관한 사유가 가능해지기를" 개인적인 이야기 대학교 3학년 때 백상현 교수님 수업을 들었다. “대중예술의 이해” 였던가, 뭐 비슷한 이름의 교양이었던 것 같다. 수업 내용은 프로이트, 라깡의 관점에서 다양한 인물이나 미술작품을 정신분석적 관점에서 해석해보는 수업이었다. 공학도였던 나는 철학에 대한 목마름을 교양수업에서 채웠다. 여담이지만, 공대생들이 대학에서 인생을 배우려면 발품을 팔아야한다. 공대 교수님들은 "버블소트는.."부터 수업을 시작하시기 때문에 인생은 무엇인가, 우주의 먼지일 뿐인 나는 왜 이렇게 삶에 집착하는가 에 관심이 있는 공대생이라면 교양 수업을 적극 활용하는 것을 추천한다. 리뷰에 앞서 개인적인 이야기를 좀 하고싶다. 책 리뷰가 궁금하..
-
Connect MySQL with DBeaver
MySQL이랑 SQL 클라이언트 프로그램중 하나인 DBeaver를 연결해보자. 연결 과정에서 계속 에러가 나서 한 시간 정도 삽질을 했는데, DATABASE 자체를 연결하려는 게 문제의 시발점이었다. 일단, 데이터베이스가 아닌, 내 로컬의 MySQL 자체를 연결해야 된다는 점을 확실히 해 두자. 일단 난 로컬이랑 연결을 했기때문에 설정 값이 위와 같다. 서버와 연결 했으면 192.168.**.** 같은 값이 Server Host 부분에 들어 갈 것이다. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tkfkdgo'; 이게 내 MySQL에 USER를 설정해주는 명령어인데, ALTER이 들어간 이유는.. 이런 저런 삽질 끝에 ..
-
Mac MySQL 설치와 DB, TABLE 생성
사이드 프로젝트를 하고 있는데 무슨 DBMS를 쓸지 고민하다가 Replication이 비교적 잘 지원된다는 점에서 MySQL을 선택했다. 그냥 설치하는 김에 기록. mac은 보통 homebrew로 오픈소스를 설치한다. MySQL도 마찬가지다. 우선 homebrew update를 해주자. $ brew update 업데이트가 끝났으면 설치해주면 된다. 우선 mysql의 버전부터 확인해보자 $ brew search mysql 음, 그렇군. 확인했으니 설치하자. $ brew install mysql 중간중간 보이는 brew 맥주 이모지가 바삭한 튀김과 맥주를 떠올리게 하지만 잘 참아보자. 설치가 완료 되었다면 내 맥에 brew list를 확인해보자. mysql이 잘 들어와 있으면 설치 성공이다. $ brew l..
-
SSH 로컬 포트 포워딩 (SSH 터널링)
SSH 로컬 포트 포워딩 (SSH 터널링) 포트 포워딩 방식에는 3가지가 있는데(Local, Remote, Dynamic), 이번 포스팅에서는 회사에서 주로 쓰고 있는 Local Port Forwarding만 다룰 것이다. 로컬 포트 포워딩을 이해하기 위해서는 3가지 주인공이 필요하다. SSH-Client : 웹 서버로의 접근을 원하는 서버 혹은 Local PC SSH-Server : 접근할 웹 서버를 담고 있는 서버, 22번 포트가 열려 있다고 가정할 때 이것을 통해서 웹 서버에 접근한다 Web server : SSH-Client가 접근을 원하는 웹 서버, Nginx 서버고 80번 포트에 바인딩 돼 있다고 가정하자 좀 더 직관적인 이해를 위해 그림 추가 그림을 보면 클라이언트가 SSH-Server에 접..
-
Spark로 HDFS 데이터 활용하기 (+ pandas, time range filter)
python 기반입니다 HDFS 데이터 spark로 불러오기 HDFS(Hadoop File System)으로 저장 돼 있는 데이터를 주피터 노트북에 불러와서 스파크 데이터 프레임으로 활용하는 일이 종종 있다. 첫 번 째로 Spark Session을 열어줘야 된다. SparkSession은 인스턴스 생성을 위한 build() 메서드를 제공하는데, 이 메서드를 통해 인스턴스를 재사용 하거나 새로 생성할 수 있다. from pyspark.sql.session import SparkSession import pyspark.sql.functions as F # SparkSession 인스턴스 생성 spark = SparkSession.builder.appName('deepjin').getOrCreate() 위 과..
-
[Linux] screen 명령어로 백그라운드 프로세스 띄우기
screen은 서비스를 데몬으로 동작시킬 수 있게 해주는 명령어다. 데몬이란 리눅스 시스템이 가동될 때 실행되는 백그라운드 프로세스의 일종이다. A daemon is a long-running background process that answers for services. The term originated with Unix, but most operating systems use daemons in some form or another. In Unix, the names of daemons conventionally end in "d". Some examples include inetd, httpd, nfsd, named, and lpd. ㅡ 인디아나 주립대학교 날리지베이스에 정의된 daemon in..
-
[Kafka] 카프카 주요 개념 정리
Apache Kafka는 분산 메시징 시스템(A high-throuhput distributed messaging system)이다. 2011년 링크드인에서 처음 개발 됐다. 자사 웹사이트의 이벤트 체크 목적으로 만들어지기 시작했고 2014년 아파치 재단으로 이관 됐다. Architecture 카프카는 발행-구독(publish-subscribe) 모델을 기반으로 동작한다. Producer가 데이터를 발행하고, Consumer가 구독하는 토픽의 데이터를 가져오는 구조다. 중간에서 Producer가 전달하는 데이터를 받는 클러스터를 Broker라고 한다. 고가용성(Fault tolerant, High Availability) 및 확장성(Scalability) 카프카를 논할 때 이 두 가지 특성이 빠지면 섭하..
-
[Kafka] 카프카 실행, 토픽 생성, 메시지 테스트
Flafka(Flume + Kafka)를 구성하기 위한 카프카 테스트 (mac 기준) KAFKA 실행 Flume에서 데이터를 보내기 위해 알맞은 kafka 토픽을 생성해야 된다. zookeeper가 kafka의 노드를 관리하기 때문에 zookeeper부터 실행시켜보자. cf) 주키퍼랑 카프카는 모두 homebrew로 설치했고, HOME PATH 설정을 마쳤다. property 경로는 아래를 참고하면 된다. # zookeeper config PATH $KAFKA_HOME/conf/zookeeper.properties # kafka config PATH $KAFKA_HOME/conf/server.properties KAFKA_HOME 같은 경우는 본인이 카프카를 설치한 경로로 bash에 저장해주자. mac같..
-
Spring Boot 의존성 설정 (spring-boot-starter, spring-boot-starter-parent)
(Maven 기준) 파이썬에 pip이 있다면 자바 스프링에는 maven, gradle같은 빌드 툴이 있다. 스프링은 빌드 툴로 부터 어플리케이션에 필요한 라이브러리를 다운로드 받아 사용한다. 자바 라이브러리간의 관계를 의존성이라고 부르는 것 같다. 스프링의 의존성은 버전 영향을 많이 받는다. 스프링 부트 의존성(spring boot dependencies)은 org.springframework.boot라는 groupId를 사용한다. 전형적으로 메이븐 pom 파일이 spring-boot-starter-parent 프로젝트로부터 상속받고, 하나 혹은 두 개 이상의 Starters를 선언한다. 또한, 스프링 부트는 실행가능한 jar를 만들기 위해 선택적으로 Maven plugin을 제공한다. 개발 분야에 따라..
-
Flume OG, NG, Property
Apache Flume 심화 지난 글에서 Apache Flume(이하 플룸)에 대한 기본 개념을 살펴봤다. 업무에서 쓰다보니 깊어지는 내용들이 있어서 좀 더 정리해보려고 한다. Flume OG / Flume NG OG = Old Generation / NG = Next Generation의 약자다. Flume OG의 몇 가지 이슈와 한계를 해결하기 위해 몇 가지 코어 클래스와 시스템이 리팩토링 되었다. Flume OG Flume OG는 Agent Node, Collector Node, Master Node로 나뉘어 있다. Agent가 모은 로그 데이터를 Collector로 보내고, Collector가 어떤 저장소로 데이터를 전송할지 정해준다. 그리고 이런 데이터 플로우를 컨트롤 해주는 게 Master의 ..
-
뉴필로소퍼 Vol 9. 삶을 죽음에게 묻다 - 리뷰
삶을 죽음에게 묻다 읽기 전 나는 어떤 형태로든(애인, 친구, 가족) 내 영역으로 들어온 사람에게 죽음에 대해 자주 묻는 편이다. '죽음에 대해 생각해 본 적 있어?' 하고 뜬금없이 불편한 주제를 꺼낸다. 대부분이 당황하지만, 결국 덤덤하게 생각을 나눴던 사람들은 지금 내 곁에 있다. 부정적인 이야기는 하고 싶지 않다며 도망갔던 사람들은 지금 내 곁에 없다. 본격적으로 죽음을 탐구하기 전에 내가 왜 이런 행동을 하는지 고민해봤다. 우선, 개인적으로 어떤 어려움, 힘든 일, 고통을 겪게 되면 그것을 일상의 작은 것으로 만들고 싶다. '별 것 아닌 일'로 만들면 내 마음이 편해지기 때문이다. 솔직히 여린 내 마음을 지키는 방법이라 하겠다. 아픔을 억지로 끄집어 내고, 사람들과 이야기하면서 내면 깊은 곳의 상..
-
Elastic Search, Log Stash, Kibana (ELK Stack) 기초
Elastic Search, Log Stash, Kibana 기초 드디어 ELK 형제를 우리 집에 데리고 왔다. 이 삼형제는 (순서대로)데이터를 저장하고, 데이터를 필터링 및 변환 해주고, 다양하게 시각화 해 주는 녀석들이다. 모두 오픈소스다. 요즘 개발자들은 오픈소스를 적재적소에 활용할 줄 아는 능력이 정말 중요해졌다. 보통 ELK라고 해서 Elastic Search -> Log Stash -> Kibana 순서대로 설명하지만, 나는 L -> E -> K 순서로 설명해보겠다. 데이터 흐름 순서가 그렇기 때문이다. 수집 로그들이 log stash를 거쳐 ES에 저장 되고, 그것을 기반으로 Kibana에서 보여주는 방식이다. Log Stash 다양한 소스에서 데이터를 동시에 수집해 변환하고, 저장소로 전달..
-
Apache Flume 기본 개념 정리
Apache Flume (아파치 플룸) 기본 개념 정리 오늘 소개 할 Apache Flume(이하 플룸)은 클라우데라에서 처음 개발 돼, 아파치 소프트웨어 재단으로 이관 됐다. 로그데이터를 깔끔하게 수집하는 데 이만한 게 없으며, 많은 기업들에서 실제 서비스 로그데이터 관리를 위해 사용하고 있다. 전체적인 구조를 간단하게 보자면 다음과 같다. 내가 이해한 구조는 위 그림과 같은데 (직접 그림), 서비스 서버에서 수집되는 로그를 Flume Agent가 Flume Collector가 있는 host로 보내는 것이다. Collector에 설정값을 통해 Sink를 정해주는데, sink란 수집 된 로그데이터를 저장해놓을 데이터베이스를 값으로 갖는다. sink는 위에 그려놓은 HDFS, Kafka 이외에도 열 가지가..
-
[번역] 넷플릭스에서의 파이썬
넷플릭스 테크 블로그 포스팅 중 'Python at Netflix'을 직접 번역했습니다. 한국어로 어색하지 않으면서도 추가되거나 빠지는 내용이 없도록 번역하다 보니 문장이 매끄럽지 않습니다. 오탈자가 있다면 댓글로 알려주시기 바랍니다. 넷플릭스의 Pythonistas로부터 쓰여졌고, Amjith Ramanujam에 의해 조정되고 Ellen Livengood에 의해 편집 됨 우리 중 많은 사람들이 PyCon에 갈 준비를 하기 때문에, 우리는 넷플릭스에서 파이썬이 어떻게 쓰이는지에 대해 공유하고자 한다. 우리는 파이썬을 전체 콘텐츠의 생태주기를 통해 사용하는데, 어떤 콘텐츠를 펀딩할 것인지부터 최종 비디오를 제공하는 CDN을 운영하는 것까지, 1억 4천 8백만 명의 회원들을 대상으로 한다. 우리는 많은 파이..
-
Codility: PermCheck
문제A non-empty array A consisting of N integers is given.A permutation is a sequence containing each element from 1 to N once, and only once.For example, array A such that: A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2is a permutation, but array A such that: A[0] = 4 A[1] = 1 A[2] = 3is not a permutation, because value 2 is missing.The goal is to check whether array A is a permutation.Write a function:def ..
-
Codility: OddOccurrencesInArray
문제 A non-empty array A consisting of N integers is given. The array contains an odd number of elements, and each element of the array can be paired with another element that has the same value, except for one element that is left unpaired.For example, in array A such that: A[0] = 9 A[1] = 3 A[2] = 9 A[3] = 3 A[4] = 9 A[5] = 7 A[6] = 9the elements at indexes 0 and 2 have value 9,the elements at i..
-
Codililty: CyclicRotation
문제 An array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is moved to the first place. For example, the rotation of array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7] (elements are shifted right by one index and 6 is moved to the first place).The goal is to rotate array A K times; that is, each elemen..
-
ADsP 합격
여러분 제가 국가 공인 데이터 분석 준전문가 자격시험에 합격했습니다~!~!~!~~!!! 설마 했는데 '합격'이란 두 글자를 직접 보니 너무 기쁘네요. 흑흑. 목표를 향해 오늘도 한 발짝 더 성장한 것 같습니다. 저는 출퇴근 시간에 요약집을 보면서 암기할 거리들을 눈에 익혔던게 도움이 많이 됐던 것 같아요. 공부 기간은 일주일이지만, 사실 그 전부터 데이터 마이닝, 통계분석을 실제로 사용하고 있었기에 좀 더 수월했지 않나 생각이 듭니다. 책은 작년에 가볍게 사 두었던 데이터에듀라는 출판사의 교재와 올해 새로 구입한 데이터분석 준전문가 한권으로 끝내기! 이 두권을 번갈아 보며 책마다 부족한 부분을 채워넣듯이 필기하면서 공부했어요. 시험 이틀전부터는 문제를 들입다 풀고 오답하고 풀고 오답하면서 하루종일 보냈던..
-
정형(Structured), 반정형(Semi-Structured), 비정형(Unstructured) 데이터
정형(Structured), 반정형(Semi-Structured), 비정형(Unstructured) DATA 안녕하세요. 공부하다가 정형, 반정형, 비정형 데이터에 대해서 잘 정리 된 글을 보고 포스팅하러 왔어요. 사실 전 정형, 비정형 데이터만 있다고 알고 있었는데 반정형 데이터 라는 것도 존재하더군요! 포스팅을 위해 공부 하다보니 엄격하게 나누자면 Quasi-Structured Data 형태도 있다고 해요. 그러나 3개로 분류하는 게 일반적이라고 하니, 이 세가지에 대해서만 포스팅을 하겠습니다. 저는 언제나 기초가 중요하다고 생각해요. 초석이 단단해야 좋은 데이터맨이 될 수 있다고 생각합니다. 따라서, 이런 꿀팁들은 까먹기전에 정리합시다~:) 정형 데이터 (Structured Data)데이터를 다루는..
-
사분위수(Quartiles)와 Box plot
사분위수(Quartiles)와 Box plot 안녕하세요! 오늘은 사분위수와 box plot에 대해 정리해보려고 합니다. 사분위수를 이해해야 box plot을 이해할 수 있어요. 우선 사분위수에 대해서 알려드릴게요! 사분위수 (Quatiles)데이터가 주어졌을 때, 위치의 기준을 정해서 Q1부터 Q3을 부여해줍니다. 그 기준은 다음과 같아요. p = 0.25 / 제 1분위수 / 1st quartile / \(Q_1\)p = 0.5 / 제 2분위수 / 2nd quartile / \(Q_2\)p = 0.75 / 제 3분위수 / 3rd quartile / \(Q_3\) Box plot (box whisker plot)박스플롯은 통계학에서 수치적 자료를 표현하는 그래프입니다. 우선 상자부터 보겠습니다. 상자의 ..
-
SVM (Support Vector Machine)_개념편
SVM (Support Vector Machine) 안녕하세요. 오늘은 Data Classification에서 우수한 성능을 자랑하는 Support Vector Machine에 대해서 포스팅 해보려고 합니다. 실습은 나중에 따로 포스팅 할 예정이라, 간단한 개념만 몇 개 짚고 넘어갈게요 :) SVM은 Supervised Learning중에서도 Classification을 할 때 유용하게 쓰여요. SVM을 쉽게 표현하자면 어떤 DATA SET이 있을 때, 데이터 사이에 선을 그어서 잘 구분해주는, 그 선을 찾는것이 목적입니다. 그 선을 우리는 hyperplane 이라고 불러요. 자, 위와 같은 분포를 가진 데이터가 있다고 가정합시다. 우리는 어디서 어떻게 선을 그어야 데이터를 가장 잘 나눴다고 할 수 있을..
-
PCA (Principal Component Analysis)
PCA (Principal Component Analysis) PCA는 데이터 분석을 위한 전처리 과정에서 차원을 축소(dimension reduction)하기 위해 사용되는 기법입니다. 상관관계가 있는 변수끼리 가중선형결합(weighted linear combination)해서 변수를 축소시킵니다. 데이터를 시각화 할 때 3차원까지는 그렇다 쳐도 4차원을 넘어가는 순간 곤란해지곤 하는데, PCA를 통해 2차원으로 축소시키면 평면상에 나이스하게 그래프를 그려낼 수 있죠. PCA를 적용하면 noisy한 차원을 제거해주고, 밀접하게 연관된 차원끼리 합쳐주기 때문에 noise를 감소시켜 줍니다. 또한 데이터를 적은 공간에 저장함으로써 메모리 사용량을 줄여주고, 용량이 적어지면 퍼포먼스가 좋아지는 것은 당연하겠..
-
모집단(Population), 표본추출(Sampling), 표본(Sample)
안녕하세요! 좋은 월요일 점심입니다. 저는 컴퓨터공학도라서 통계를 잘 몰라요. 고등학교 3학년을 마지막으로 통계에 손을 대 본 일이 거의 없다고 볼 수 있죠. 고등학교 때 통계기본이 아주 막바지 단원에 있었는데, 다른 수학 단원보다 조금 재미있게 공부했던 기억은 납니다ㅎㅎ 자, 데이터 분석에서 뗄래야 뗄 수 없는 통계! 모른다고 마냥 손 놓고 있을 수는 없겠죠? 일을 하다보니 점점 더 그 필요성이 절박해지더라구요. 그래서 제가 공부를 시작했습니다. 오늘은 통계의 첫 걸음. 마치 컴공에서 print('Hello World!')와 같 다고 볼 수 있는 모집단, 표본추출, 표본의 관계에 대해 간단히 정리하며 본 카테고리를 시작해보려고 합니다. 짧지만, 시작이 반이니까요! 모집단(母集團, Population)자..