반응형

전체 글 339

[SQL] 부정 논리 연산자(not in 등) 과 Null의 관계

실무에서 SQL쿼리를 사용하다 보면 Where 조건에 in과 not in 조건을 많이 사용할 텐데, not in(부정 논리 연산자)을 사용할때 주의하여야 한다. 그 이유는 NULL 때문이다.부정연산자부정 논리 연산자의 경우 위 표처럼 같지 않은 경우를 필터링할 때 사용하는 연산자이다.주로 not in이나 '', '!=' 등을 많이 사용한다. 부정 연산자와 Null의 관계결론부터 말하자면 부정 연산자를 사용하면 Null값이 모두 누락되게 된다.예시를 확인해보자 (샘플데이터 쿼리는 포스팅 최하단에 있음)SELECT * FROM orders WHERE 1=1 AND product_id not in (101,102)원래 의도는 product_id가 101,102인 것만 제외하고 조회하고 싶..

SQL & DB/PostgreSQL 2024.07.08

[PostgreSQL] Json(Jsonb) 컬럼 Query 방법 (->, ->>과 json_array_elements)

이번 포스팅에서는 PostgreSQL에서 Json(Jsonb)로 이루어진 컬럼을 Query 하는 방법을 알아봅니다. Json과 Jsonb의 차이Json의 특징입력된 텍스트의 원본을 그대로 저장 Json은 데이터를 불러올때 입력된 텍스트를 파싱해야하기 때문에 시간이 오래 걸림원본을 그대로 저장하기에 의미없는 공백등을 저장Json 객체 내의 key 순서가 보장되며, 중복된 key가 있는 경우도 중복되어 저장Jsonb의 특징Jsonb는 분해된 바이너리 형식으로 저장 (데이터를 정제하여 저장)Jsonb는 파싱할 필요가 없기 때문에 시간이 적게 걸림공백을 저장하지 않음객체들의 key순서를 보장하지 않으며, key를 중복해서 저장하지 않음. 입력에 중복된 key가 지정된 경우 마지막 값으로 대체객체들의 key순서를..

SQL & DB/PostgreSQL 2024.07.07

[PostgreSQL] generate_series을 활용한 날짜/시간 더미 데이터 생성 (월단위, 일단위, 시간단위)

날짜/시간 더미 데이터 생성이번 포스팅에서는 postgresql에서 generate_series 함수를 활용하여 날짜 및 시간 더미 데이터를 생성하는 방법을 알아봅니다.generate_seriesgenerate_series (start,stop[,step])일련의 숫자를 생성하는 함수. 시작과 끝, 증가 단계를 설정할 수 있음start : 시작 값입니다.stop : 시리즈의 끝값.step : 각 연속 숫자 사이의 증분 값. 선택 사항이며, 기본값은 1예시)SELECT generate_series(1, 10) as cnt 월 단위 데이터 더미 생성 (year-month)2024년 1월부터 12월까지의 더미 데이터 생성"generate_series(0,11)"을 활용하여 0부터 11까지 sequence를 생..

SQL & DB/PostgreSQL 2024.06.30

[인과추론] A/B Test 설계 시 실험군 간의 누출 및 간섭

A/B Test 설계 시 실험군 간의 누출 및 간섭이번 포스팅에서는 A/B Test 설계를 할 때 실험군 간 간섭이 되는 경우와 이를 해결하는 방법을 알아봅니다.A/B Test 분석의 가정 : SUTVASUTVA : Stable Unit Treatment Value AssumptionA/B Test의 내적타당성을 지키기 위한 가정 중 하나 (생존 편향, SRM 등 3장 참고)각 그룹의 unit의 행동은 다른 그룹의 unit에 영향을 받지 않음 (독립)만약 안방의 스위치를 눌렀는데 불이켜지고, 다른 방에 영향을 주지 않는다면 이는 독립이라고 할 수 있음하지만 안방의 스위치를 눌렀는데, 다른 방에 불이 켜치거나, 두꺼비집이 내려가 불이 안켜진다면 독립이라고 할 수 없음SUTVA 가정을 위반한 경우 : 간섭(..

[Machine Learning][머신러닝] XGBoost의 개념과 예제 코드

XGBoost(Extra Gradient Boost)XGBoost란Gradient Boost 알고리즘을 기반으로 개선해서 나온 모델.캐글 경진대회에서 상위에 입상한 데이터 과학자들이 사용한 것을 알려저 유명해짐.Gradient Boost의 단점인 느린수행시간을 해결하고 과적합을 제어할 수 있는 규제를 제공하여 성능을 높임.두가지 개발 방법Scikit-learn  XGBoost 모듈 사용파이썬 XGBoost 모듈 사용XGBoost의 장점높은 성능 (실제로 Kaggle에서 XGboost가 상위권을 다수 차지)효율성, 유연성 ,휴대성이 뛰어남여러 파라미터를 조절해 가며 최적의 Model을 만들 수 있음과적합 방지신경망에 비해 시각화가 쉽고, 직관적임자원이 많으면 더 빠르게 학습시킬 수 있음Cross Valid..

Data Analysis & ML 2024.05.16

[Machine Learning][머신러닝] 릿지/라쏘/엘라스틱넷 (정규화 회귀분석)

릿지/라쏘/엘라스틱넷 (정규화 회귀분석) 모델링을 하다보면 과적합될때가 많은데 이때 과적합을 막는 방법은 모델에 규제를 가하는 것이다. 보통 선형회귀 모델링에서는 모델의 가중치를 제한함으로써 규제를 하는데, 이번 포스팅에서는 모델의 가중치를 제한하는 회귀분석인 릿지, 라쏘, 엘라스틱넷에 대해 알아본다.  정규화 방법론Regularized Method, Penalized Method, Contrained Least Squares선형회귀 계수(Weight)에 대한 제약 조건을 추가함으로써 모형이 과도하게 최적화되는 현상, 즉 과최적화를 막는 방법과최적화는 계수 크기를 과도하게 증가하는 경향이 있기에, 정규화 방법에서의 제약 조건은 일반적으로 계수의 크기를 제한하는 방법규제 (Regularization)선형..

Data Analysis & ML 2024.05.15

[Hadoop/Spark] YARN의 구성요소와 작동방식

YARN세부 리소스 관리가 가능한 범용 컴퓨팅 프레임웍각 Application (MapReduce, HBase 등) 실행에 필요한 Resource(Cpu, Memory, Disk)를 할당하고 모니터링MapReduce의 단점을 극복하기 위해 하둡 2.0부터 제공CF) MapReduce란 : https://ysyblog.tistory.com/347 [Hadoop] 맵리듀스(MapReduce) Programming맵리듀스 프로그래밍 특징 큰 데이터를 처리할 수 있는데에 목표 데이터 셋의 포맷도 하나로 단순화하였고, 변경 불가 데이터 셋의 포멧은 Key, Value의 집합이며 변경 불가(immutable) 데이터 조작은ysyblog.tistory.com YARN의 구성요소ClusterJob 수행을 위해 여러 대..

[Spark] Spark 소개 및 Spark관련 정보 모음 (Spark 구성요소, 작동방식 등)

Spark 란버클리 대학의 AMPLab에서 아파치 오픈소스 프로젝트대규모 데이터를 처리하기 위한 클러스터 컴퓨팅 프레임워크 Java로 개발되었으며 Python, Sql, Scala등의 언어들을 지원하여, 어떤 언어로 개발하든 성능에 큰 이슈 없도록 설계Hadoop와 달리 MapReduce 로직중 Map를 메모리에서 처리하기에 Hadoop보다 속도가 빠름빅데이터 처리 관련 다양한 기능 제공https://spark.apache.org/releases/spark-release-3-5-0.html Spark Release 3.5.0 | Apache SparkSpark Release 3.5.0 Apache Spark 3.5.0 is the sixth release in the 3.x series. With sig..

[Spark] Spark Action의 구성요소(Job, Stages, Tasks)와 Spark의 연산 (Transformations /Actions / Lazy Execution)

Job, Stages, TasksAction -> Job -> 1+ Stages -> 1+ Tasks (큰 순서대로) Action Job을 하나 만들어내고 코드가 실제로 실행됨Lazy Execution Job 하나 혹은 그 이상의 Stage로 구성됨 Stage는 Shuffling이 발생하는 경우 새로 생김 Stage Stage는 기본적으로 Shuffling없이 실행될 수 있는 Narrow Dependencies Task들의 집합DAG의 형태로 구성된 Task들 존재 여기 Task들은 파티션 수 만큼 병렬 실행이 가능 Task 가장 작은 실행 유닛으로 Executor에 의해 실행됨 Lazy Execution /Transformations /ActionsSpark의 연산은 Transformation과 Act..

[Spark] Spark 프로그램 구조 (Driver, Executor), Spark Cluster Manager

Spark 프로그램 실행 환경개발/테스트/학습 환경 (Interactive Clients)노트북 (주피터, 제플린)Spark Shell프로덕션 환경 (Submit Job)spark-submit (command-line utility): 가장 많이 사용됨데이터브릭스 노트북:노트북 코드를 주기적으로 실행해주는 것이 가능REST API:Spark Standalone 모드에서만 가능API를 통해 Spark job 실행실행코드는 미리 HDFS등의 파일 시스템에 적재되어 있어야함Spark 프로그램의 구조1. Driver실행되는 코드의 마스터 역할 수행 (YARN의 Application Master)컨테이너를 하나 잡아서 돌게됨.사용자 코드를 실행하며 실행 모드(client, cluster)에 따라 실행되는 곳이 달..

반응형