왜 우리는 유도된 선택을 할 수밖에 없는가
·
Why?
선택의 착각과 설계된 자유의지"오늘 저녁 무엇을 먹을까?" 우리는 매일 수백 가지 선택을 한다고 합니다. 레스토랑에서 메뉴를 고르고, 쇼핑몰에서 옷을 선택하고, 온라인에서 상품을 주문하죠. 그런데 정말 우리가 "선택"하고 있는 걸까요? 선택 설계의 숨겨진 손소비자는 본인이 선택했다고 느끼지만, 그 선택지가 어떻게 만들어졌는지 놓치는 경우가 많습니다.실제로는 유도된 선택을 하는 경우가 많기 때문이죠. 마케팅에서는 이것을 선택 설계 [Choice Architecture] 라고 부릅니다. 예를 들어:스타벅스에 가서 아메리카노를 주문할 때를 생각해보세요. "사이즈는 어떻게 하시겠어요?"라는 질문을 받으면, 우리는 톨(Tall), 그란데(Grande), 벤티(Venti) 중에서 선택한다고 생각합니다.하지만 실제로..
왜 Top-K 문제는 중요할까?
·
Why?
Top-K 문제는 다음과 같은 질문들로 요약됩니다:"가장 많이 등장한 요소 K개를 뽑으려면 어떻게 해야 할까?""주어진 수열에서 가장 큰 값 K개를 빠르게 추출하고 싶다""검색어 중 가장 자주 나온 것 5개는 무엇인가?" 위와 같은 문제들은 실무적으로 매우 자주 등장합니다.실시간 인기 검색어 시스템가장 많이 팔린 상품 TOP 10로그에서 자주 발생한 에러 TOP N추천 알고리즘에서 유저가 가장 선호한 태그 K개 추출이 문제를 해결하는 알고리즘 전략은 크게 3가지가 있습니다.전략활용 자료구조시간복잡도전체 정렬 후 상위 K개 추출리스트 + 정렬O(n log n)최소 힙 유지heapq (Min Heap)O(n log k)빈도수 기반 카운트 + 정렬Counter + 정렬O(n log n) 방법 1 – 전체 정렬..
왜 '데이터 모델링'에서 '정규화(Normalization)'를 과도하게 적용하면 성능이 저하될 수 있는가?
·
Why?
실무 데이터베이스에서 "정규화는 무조건 좋은 것"일까? 오늘은 정규화를 과도하게 적용했을 때 발생할 수 있는 성능 저하 문제를 실제 쿼리, ERD예시, 성능 비교 결과를 통해 적어보도록하겠습니다.정규화란 무엇인가?정규화(Normalization)는 중복 데이터를 제거하고, 데이터의 일관성과 무결성을 유지하기 위해 테이블을 나누는 작업입니다.일반적으로 다음과 같은 단계로 이루어집니다:1NF: 컬럼은 원자값만 갖도록2NF: 부분 함수 종속 제거3NF: 이행적 함수 종속 제거BCNF ~ 5NF: 고급 정규형 (주로 학문적 용도)정규화는 이론적으로 매우 강력한 도구이며, 대부분의 데이터베이스 입문 교재는 이를 적극적으로 추천합니다.하지만 실무에서는 반드시 성능과 함께 고려되어야 합니다.정규화 vs 반정규화 ER..
왜 에러 로그를 잘 설계하고 분석해야 하는가?
·
Why?
1. 에러 로그, 단순한 출력 이상이어야 한다.에러 로그는 단순한 콘솔 출력이 아니다.복잡한 데이터 파이프라인 환경에서는, 작은 에러 하나가 수십 개의 다운스트림 작업에 영향을 줄 수 있다.로그는 곧 진단 도구이자, 미래의 나 또는 동료를 위한 트러블슈팅 가이드다.2. 로그 레벨 (Log Level) 에 대한 이해로그는 발생한 이벤트의 심각도에 따라 레벨을 구분한다.이래는 일반적인 로그 레벨이다레벨설명DEBUG개발 및 디버깅 용도. 상세한 내부 상태를 출력INFO정상적인 실행 흐름에 대한 정보WARNING문제가 될 수 있는 상황. 시스템은 계속 동작함ERROR오류 발생. 기능 일부가 실패했으나 서비스는 유지CRITICAL 시슽엠 전체에 영향을 줄 수 있는 치명적인 오류 정확한 로그 레벨 구분은 추후 분석..
A/B TEST 진행 시 대조군과 실험군의 비율을 비슷하게 맞추는 이유는?
·
Why?
A/B Test의 목적은 더 가치 있는 변수를 식별하여 최적의 시안을 선정하는 것입니다. A/B Test의 결과가 표본 자체보다는 전체 모집단을 나타내기를 원하기 때문에 편향을 제거하는 것이 중요합니다. 대조군과 실험군의 비율의 차이가 많이 발생하면 실험군과 대조군의 차이가 실제 실험군 내에 발생하는 효과를 과소평가하게 됩니다. 그렇게 되면 테스트보다 더 큰 효과가 발생할 수 있습니다. 또는 반대로 진행하게 되면 테스트보다 더 작은 효과가 발생할 수 있게 되는 셈입니다. 그래서 테스트에 영향을 준다고 생각한 부분을 가설에 접속 했기 때문에 그 부분을 제외하고는 테스트에 영향을 줄만한 변수들을 제외 시키기 위함입니다. - A집단과 B집단이 균일하게 나누어져야 한다. - A집단과 B집단이 서로에게 영향을 미..
seed()는 왜 지정할까?
·
Why?
컴퓨터 프로그램에서 발생하는 난수는 엄밀한 의미에서 난수가 아닙니다. 특정 시작 숫자를 정해주면 컴퓨터의 정해진 알고리즘에 의해서 마치 난수처럼 보이는 수열을 생성하게 됩니다. 이때 시작하는 숫자가 seed인 셈이죠. 따라서 동일한 시작 숫자를 설정하면, 동일한 난수 생성 패턴이 나타나게 됩니다. 우리가 작성한 코드에 대해 동일한 결과 재현에 활용할 수 있습니다. 여기서 가장 중요한 것은 알고리즘의 미묘한 성능 차이를 확인해야하는 경우에 데이터의 특성에 따른 차이를 제어할 수 있도록 해야하는 점 입니다. 아래에 있는 예시코드를 보겠습니다. import numpy as np import random np.random.seed(42) # 대한민국 외국인 비율이 33%인 5000명의 인구 데이터 생성 stud..
왜 제너레이터는 메모리 사용을 효과적으로 사용할까?
·
Why?
리스트 VS 제너레이터 먼저 바로 결과 값을 보자 # 숫자 1 ~ 10000 3배로 만든 결과를 리스트 VS 제너레이터 import sys list_data = [i * 3 for i in range(1, 10000 + 1)] generator_data = (i * 3 for i in range(1, 10000 + 1)) print(sys.getsizeof(list_data)) # sys.getsizeof = Return the size of object in bytes. print(sys.getsizeof(generator_data)) # 87616 # 112 위의 코드를 보기만 하더라도 제너레이터가 확연히 메모리 사용량이 줄어든 것을 볼 수 있다. 왜 그럴까?? 리스트는 데이터 저장에 필요한 메모리를..
머신러닝과 비교했을 때, 딥러닝이 가지고 있는 장단점은?
·
Why?
딥러닝은 머신러닝보다 데이터에 더 의존 —> 딥러닝은 데이터 양에 비례한 성능을 갖기 때문에 머신러닝보다 훨씬 많은 양과 크기의 데이터가 필요하다. 머신러닝 : 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야 인공지능의 한 분야 딥러닝은 인공 신경망을 기반으로 한 방법 머신러닝의 한 분야 딥러닝의 deep은 머신러닝보다 데이터의 양이 많아지고 중간 처리과정이 깊어져서 딥러닝이라고 함 머신러닝 : 사람을 학습시키는 과정에서 착안한 방법을 사용해서 어떤 데이터의 입력 값과 이에 대응한 출력 값을 알려주면 출력방법에 대해 스스로 학습함 —> 특성공학이 중요 사람이 개입함 딥러닝 : 머신러닝과 같이 스스로 학습한다는 점에서는 동일하나, 출력 값에 대한 정보를 학습..
왜 Cloud 방식으로 데이터를 저장할까?
·
Why?
클라우드의 장점 신속한 인프라 도입 : 온프레미스방법의 경우 인프라를 구축하기위해 물리적인 기계, 공간, 가용인력이 필요하나, 클라우드서비스는 빠르게 인프라를 도입할 수 있다. 초기비용이 온프레미스보다 적게 듬 인터넷만 있으면 서버관리 가능 온프레미스 장점 보안이 아주 좋다 인프라를 직접 구축하다 보니 어마어마한 데이터 처리가 가능 인터넷 없이 엑세스 가능(단, 사무실에서만) 데이터 백업에 좋음 클라우드 단점 보안에 약함 인터넷 필수 온프레미스 단점 구축이 오래 걸림 돈이 많이 들어감 서버 관리자 구하기도 힘든데 3교대 근무이다 보니 많이 나가려고함(회사마다 다름) 재택하려면 VPN으로 회사에서 맞춰줘야함 다만 느려짐.. 기업 73%가 온프레미스로 애플리케이션 다시 이전…“하이브리드 클라우드 미래 밝다”..
PDP의 해석 시 유의할 점
·
Why?
몇몇 PDP는 특성 분포를 나타내지 않음 분포를 생략하는 것은 데이터가 거의 없는 부분을 과대해석할 수 있다. x축의 데이터 포인터나 히스토그램을 보여주면 이 문제가 해결 할 수 있다. 이질적 효과(Heterogeneous effect)가 드러나지 않음 이질적 효과? 겉보기에는 비슷하지만 사실상 다른 영향을 끼치는 서로 이질적인 요소를 가리킨다. 예를 들어, 하나의 특성이 커지면 커질수록 예측치가 커지고, 동시에 작으면 작을수록 예측치가 커진다고 합시다. 이 경우 PDP는 수평선으로 그려져 특성의 영향도는 없는 것으로 보여질 것이다. => 개별 조건부 기대치(Individual Conditional Expectation)를 그려 이종효과를 찾아낼 수 있다. 현실적으로 변수가 두 개를 초과할 경우 그래프로..