Alroha

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 4주차 본문

IT/Kakao cloud 부트캠프

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 4주차

헤이로하 2025. 9. 1. 13:29

8월 25일 - 파이썬 심화(함수·모듈·OOP·파일 I/O)


1. 람다 함수(lambda)

  • 이름 없는 익명 함수임(어디서나 즉시 정의·사용이 가능하다는 의미).
  • 단일 표현식에 적합함(복잡한 로직은 일반 def 권장).
  • 함수형 프로그래밍(Functional Programming, 함수를 데이터처럼 다루는 스타일)을 지원함 → 함수를 일급 객체(First-class citizen) 로 취급(변수에 저장/인자로 전달/결과로 반환 가능).
  • map, filter, reduce(리스트 등 컬렉션을 순차 처리해 하나의 결과로 접는 함수)와 함께 자주 사용함.
  • 함수 공장 패턴에서 특정 설정을 가진 함수를 간단히 만들어낼 때 유용함.
# 제곱 리스트 만들기
squared = list(map(lambda x: x*x, [1,2,3]))

2. 클로저(Closure)

  • 함수 안에서 정의된 내부 함수가 외부 함수의 변수(자유변수)를 계속 기억하는 구조를 말함(“외부함수 먼저 호출 → 내부함수 반환 → 외부 스코프 값을 유지”의 흐름임).
  • 데이터와 기능을 함께 묶어 모듈화·은닉에 유리함.
def make_adder(n):            # 외부 함수
    def add(x):               # 내부 함수(클로저)
        return x + n          # 외부 변수 n을 기억함
    return add

plus5 = make_adder(5)         # 외부함수 결과(내부함수)를 변수에 저장
print(plus5(10))  # 15       # n=5 상태를 유지한 채 동작함

(부가설명) “외부함수를 먼저 매개변수에 저장 후 내부함수의 기능을 이해”한다는 느낌은, 위에서 plus5 = make_adder(5)로 상태가 주입된 함수 객체를 만든 뒤 그 함수를 호출하며 동작을 파악한다는 뜻임.

3. 데코레이터(Decorator)

  • 기존 함수의 기능을 수정/확장하는 특수한 함수(함수를 감싸는 디자인 패턴).
  • 관심사 분리와 중복 제거에 유리함. 예: 웹 서비스에서 모든 엔드포인트에 로그인 검사를 붙이고 싶을 때 @login_required 한 줄로 해결.
def logger(fn):
    def wrapper(*args, **kwargs):
        print(f"[CALL] {fn.__name__}")
        return fn(*args, **kwargs)
    return wrapper

@logger
def hello(): print("hi")

4. 모듈과 패키지(Module & Package)

  • 모듈(Module): .py 파일 하나(변수·함수·클래스 포함). 코드 재사용과 구조화의 기본 단위임.
  • 패키지(Package): 여러 모듈을 디렉터리 구조로 묶은 것.
  • 라이브러리(Library): 목적별로 묶인 모듈·패키지의 모음(예: NumPy, Pandas, Matplotlib 등등).

- 임포트 할 경우

  • 절대 경로 임포트 권장(PEP 8). 패키지 내부가 복잡할 때만 상대 경로 임포트 사용을 고려함.

- ✨TIP!

  • 모듈은 작게 쪼개는 편이 가독·유지보수에 유리함(한 화면 내에서 읽히는 길이가 효율적).
  • 맥북 환경 주의: 기본 python이 Python 2일 수 있음. python3로 설치되는 경우가 많아 python3 main.py로 실행해야 함. (!! 꼭 기억)

- 패키지 관리: pip (Python Packaging Installer)

  • 자주 쓰는 명령어 정리
    • pip list : 설치된 패키지 목록 조회
    • pip show 패키지명 : 메타정보 확인
    • pip uninstall 패키지명 : 제거
    • pip install -r requirements.txt : 의존성 일괄 설치
    • pip freeze > requirements.txt : 현재 환경을 요구사항 파일로 저장
  • + requirements.txt 활용
    • 현재 환경 저장: pip freeze > requirements.txt
    • 필요한 패키지만 저장(리눅스/맥):
      pip freeze | grep -E 'numpy|pandas|matplotlib' > requirements.txt
    • 필요한 패키지만 저장(윈도우):
      pip freeze | findstr "numpy pandas matplotlib" > requirements.txt
  • 장점: 동일한 개발 환경 재현, 의존성 충돌 방지, 팀 협업 통일, 배포 자동화, 문서화에 유리함.

- 가상환경(venv)

  • 프로젝트별 독립 실행환경을 제공함(패키지 충돌 방지).
  • 생성: python -m venv .venv → 활성화(mac): source .venv/bin/activate → 비활성화: deactivate.

- 표준 라이브러리(Standard Library)

  • 파이썬은 “배터리 포함(batteries included)” 철학을 따름 → 파일 I/O, 네트워킹, 정규식, JSON 등 풍부한 기본 라이브러리 제공함.

5. 클래스와 객체지향(OOP, Object-Oriented Programming)

  • 현실 모델링: 객체(데이터=속성, 동작=메서드) 간 상호작용으로 시스템 구성.
  • 특징 4가지
    • 캡슐화(Encapsulation): 데이터와 메서드를 객체 캡슐 안에 묶어 보호함(복잡성 감소·유지보수 향상).
    • 상속(Inheritance): 기존 클래스를 재사용해 새로운 클래스를 확장함.
    • 다형성(Polymorphism): 동일 인터페이스가 다르게 동작함(오버라이딩으로 구현).
    • 추상화(Abstraction): 본질만 남기고 상세는 숨김(복잡성 관리).
  • 클래스는 객체를 생성하는 템플릿임(객체지향의 실현 도구).
  • 추상 클래스/인터페이스는 “무엇을 해야 하는지(계약)”만 정의하고 구현은 하위 클래스에 위임함 → 설계와 구현 분리, 확장성 향상.
  • 면접 팁: “구현 시 단일 책임을 지키는 편”, “인터페이스로 의존(Dependency Inversion) 하는 편”처럼 자신의 룰을 일관되게 말하기가 좋음.

5. 속성과 메서드

  • 속성: 클래스 변수(모든 인스턴스가 공유) vs 인스턴스 변수(각 인스턴스 독립).
  • 메서드
    • 인스턴스 메서드: self를 통해 객체 상태를 다룸.
    • 클래스 메서드: @classmethod, cls로 클래스 전체를 다룸.
    • 정적 메서드: @staticmethod, 상태 접근 없이 관련 기능만 제공.

7. 상속·오버라이딩·추상클래스

from abc import ABC, abstractmethod

class Vehicle(ABC):                 # 추상 클래스
    @abstractmethod
    def drive(self):                # 구현 강제
        pass

class Car(Vehicle):                 # 상속
    def drive(self):                # 오버라이딩(다형성)
        print("Run on road")

class Boat(Vehicle):
    def drive(self):
        print("Sail on water")

def go(v: Vehicle): v.drive()

go(Car())   # Run on road
go(Boat())  # Sail on water

8. 객체지향 설계 원칙(SOLID) -> 중요!!

- 개발할때 지켜야하는 원칙으로 이 원칙에 따라 설계하는 것이 중요하다.

S (Single Responsibility) 단일 책임 원칙. 한 클래스는 변경 사유가 오직 하나여야 함.
O (Open/Closed) 확장에는 열려 있고, 수정에는 닫혀 있어야 함.
L (Liskov Substitution) 자식 타입은 부모 타입을 대체할 수 있어야 함.
I (Interface Segregation) 용도별로 인터페이스를 분리해야 함.
D (Dependency Inversion) 추상화에 의존하고 구체 구현에 의존하지 말아야 함.

9. 파일 입출력(File I/O)

각 모드의 용도

r 읽기 모드(기본). 설정 파일/로그 분석 등.
w 쓰기(덮어쓰기) 모드. 결과 저장.
a 추가 모드. 로그 누적 등.
b 바이너리 모드. 이미지·오디오(다른 모드와 함께 사용: rb, wb).
t 텍스트 모드(기본). 텍스트 파일 처리.
x 배타적 생성(파일이 없을 때만). 기존 파일 보호.
+ 읽기/쓰기 겸용(다른 모드와 함께: r+, w+ 등).
# 기본 패턴
f = open('data.txt', 'r', encoding='utf-8')
content = f.read()
print(content)
f.close()   # 파일은 꼭 닫아야 함

권장: 컨텍스트 매니저를 사용하면 자동으로 닫힘.

with open('log.txt', 'a', encoding='utf-8') as f:
    f.write("line\n")
  • readline() : 한 줄씩 읽음.
  • readlines() : 전체 줄 리스트로 읽음.
  • 주의: 이진 파일은 rb/wb로 열어야 함.

+ (Additional)주요 인코딩(encoding) 4종

인코딩 특징/용도

UTF-8 웹 표준. 전 세계 문자를 효율적으로 표현. 권장 기본값.
UTF-16 2바이트 기반. 일부 윈도우/문서 포맷에서 사용. BOM 이슈 주의.
CP949(EUC-KR 확장) 한국어 윈도우 레거시에서 자주 보임. 호환성 목적일 때만 사용.
ISO-8859-1(Latin-1) 서유럽 문자셋. 레거시 시스템에서 종종 등장.

+ 오늘의 과제

https://github.com/heyroha/KakaoCloud/tree/main/HW/8%EC%9B%94%2025%EC%9D%BC

 

KakaoCloud/HW/8월 25일 at main · heyroha/KakaoCloud

Contribute to heyroha/KakaoCloud development by creating an account on GitHub.

github.com

=> 회고: 클래스나 함수 안에서 구현할때 단일 매개변수나 간단한 문법만 적용하다가 딕셔너리의 key,value값 및 에러처리, 리스트형 등등 여러가지를 결합하려고 하니까 너무 어려웠다.. 그래도 gpt도움 받으면서 다듬어가긴 했는데 우선 클래스 부분 많이 연습해 보면서 다양한 문법을 함수안에 구현하는 법을 익혀야 겠다는 생각이 들었다. 얼마전까지는 클론 코딩 하거나 예제를 연습하면서 코드를 참고한다는게 아무생각 없이 따라 쓰는건가 하는 회의감 들때도 있었는데, 쓰다보니 어떤 부분에서는 어떤 구문이 반복적으로 나오는지 감을 익히고 있다는 걸 느끼게 된다. 또, 전에 파이썬 배울때는 심화 내용은 그냥 참고용으로만 보다가, 요즘에는 데코레이터나 제네레이터같은 함수 구조를 익히면서 코드 짤때 어떻게 더 효율적으로 사용해볼 수 있을까에 대해서 생각하게 되는 것 같다!


8월 26일 - 파이썬 심화

🔹 파일 읽기 / 쓰기 함수

읽기 read() 파일 전체 내용을 문자열로 읽음
  readline() 한 줄씩 읽음
  readlines() 전체 줄을 리스트로 반환
쓰기 write() 문자열 하나를 파일에 기록
  writelines() 문자열 리스트를 순차적으로 기록
  • CSV 작성 시 딕셔너리(dict) 타입을 그대로 활용할 수 있어 구조화된 데이터 기록이 용이함.

🔹 컨텍스트 매니저 (with 구문)

  • with는 Context Manager(컨텍스트 매니저) 문법을 통해 자원 해제 자동화를 보장한다.
  • 예외가 발생하더라도 파일이 안전하게 닫히므로 권장되는 방식임.
with open("data.txt", "r", encoding="utf-8") as f:
    for line in f:
        print(line.strip())

🔹 바이너리 파일 처리

  • 바이너리 데이터 → 문자열 : Base64 인코딩을 활용
  • 간단 암호화/복호화 : XOR 연산 방식 활용 가능
  • 주요 라이브러리:
    • 이미지 → PIL(Pillow)
    • 오디오 → wave, pydub
    • 영상 → opencv, moviepy
    • 바이너리 구조 처리 → struct

🔹 CSV 처리

  • csv 모듈로 기본 읽기/쓰기 가능
  • 딕셔너리 기반 처리(DictReader, DictWriter)도 지원

🔹 Shutil / pathlib / 백업 스크립트

shutil 고수준 파일 연산 지원 (복사 copy, 이동 move, 압축 make_archive)
pathlib 객체 지향적 파일 경로 관리(Path 객체로 exists, glob 등 활용)
백업 스크립트 위 두 모듈을 조합하여 주기적으로 파일을 다른 위치에 복사·압축해 백업 자동화 구현 가능

2️⃣ 예외 처리(Exception Handling)

  • 프로그램 실행 중 발생하는 예상치 못한 상황(예외)을 처리하여 비정상 종료를 막고 안정성을 확보.
  • 에러(Error): 문법 오류 등으로 실행 자체 불가
  • 예외(Exception): 실행 중 발생하며 적절한 처리로 흐름 제어 가능

🔹 파이썬 구문

try:
    f = open("data.txt")
except FileNotFoundError as e:
    print("파일을 찾을 수 없습니다:", e)
else:
    print("정상 실행됨")
finally:
    print("항상 실행되는 블록")
  • try: 실행할 코드
  • except: 예외 발생 시 처리
  • else: 예외가 없을 때만 실행
  • finally: 예외 여부 상관없이 반드시 실행

🔹 자주 발생하는 예외

TypeError 잘못된 타입 사용
ValueError 잘못된 값 전달
KeyError 딕셔너리에 존재하지 않는 키
NameError 정의되지 않은 변수
AttributeError 없는 속성/메서드 접근
FileNotFoundError 파일 없음
PermissionError 권한 부족
OverflowError 수치 계산 범위 초과
  • 주의사항: 빈 예외 블럭 (except: pass)은 피해야 함 → 디버깅을 어렵게 만듦
  • 로깅(logging) 모듈을 활용해 예외 발생 시 로그 기록 가능

3️⃣ 함수형 프로그래밍(Functional Programming)

  • 정의: 계산을 수학적 함수 평가로 취급하는 프로그래밍 패러다임
  • 특징: 불변성, 순수 함수, 고차 함수, 선언적 프로그래밍 지향
순수 함수(Pure Function) 동일 입력 → 항상 동일 출력, 부작용 없음
불변성(Immutability) 데이터 상태 변경 대신 새로운 데이터 생성
고차 함수(Higher-order Function) 함수를 인자로 받거나 결과로 반환
커링(Currying) 여러 인자를 받는 함수를 인자를 하나씩만 받도록 분해

🔹 파이썬 지원 도구

  • 내장: lambda, map, filter, reduce
  • 모듈: functools, itertools

4️⃣ 이터레이터(Iterator)와 제네레이터(Generator)

🔹 이터레이터

  • 이터레이션(iteration): 객체 요소를 하나씩 순차 접근하는 과정
  • 이터러블(iterable): 반복 가능한 객체 (list, tuple, dict, set, str)
  • 이터레이터(iterator): __iter__()와 __next__()를 구현하여, 내부 상태를 유지하며 한 번에 하나의 요소를 반환하는 객체
nums = [1, 2, 3]
it = iter(nums)
print(next(it))  # 1

🔹 제네레이터

  • yield 키워드를 이용해 간단히 이터레이터 생성 가능
  • 메모리를 적게 사용하며, 데이터 스트리밍 처리에 적합
def gen():
    for i in range(3):
        yield i

for v in gen():
    print(v)   # 0,1,2

+실습하면서 모르는 문법 모아두는중!

https://al-roha.tistory.com/8

 

🐍Python 문법 모음

data.get("value", 0) * 2 와 data.get("value") * 2의 차이- data.get("value", 0) * 2"value"라는 키가 존재하면 해당 값을 가져와서 2를 곱한다.키가 없으면 0을 반환하고, 0에 2를 곱해 결과는 0이 된다.에러가 발생하

al-roha.tistory.com

+ 오늘의 과제

https://github.com/heyroha/KakaoCloud/tree/main/HW/8%EC%9B%94%2026%EC%9D%BC/hw_26

 

KakaoCloud/HW/8월 26일/hw_26 at main · heyroha/KakaoCloud

Contribute to heyroha/KakaoCloud development by creating an account on GitHub.

github.com

+  (Add)과제 구현시 권한확인 및 권한 제거

# 권한 확인
ls - file name

# 소유자의 읽기 권한 제거
chmod u-r filename

# 그룹의 읽기 권한 제거
chmod g-r filename

# 기타 사용자의 읽기 권한 제거
chmod o-r filename

# 모두의 읽기 권한 제거
chmod a-r filename

 


8월 27일 - 파이썬 심화

1️⃣ 동시성과 병렬 처리

🔹 개념 구분

구분 정의 특징

동시성(Concurrency) 여러 작업을 번갈아 가며 실행 단일 코어에서도 가능
병렬성(Parallelism) 여러 작업을 실제로 동시에 실행 다중 코어 필요
  • GIL(Global Interpreter Lock): 파이썬 인터프리터는 한 번에 하나의 스레드만 실행되도록 제한하는 메커니즘.

2️⃣ 스레드(Thread)

🔹 주요 매개변수

  • target: 실행할 함수
  • args: 위치 인자(튜플)
  • kwargs: 키워드 인자(딕셔너리)
  • daemon: 데몬 여부(메인 종료 시 함께 종료되는 백그라운드 스레드)
  • name: 스레드 이름

🔹 주요 메서드

메서드 설명

start() 스레드 실행 시작
join([timeout]) 스레드 종료까지 대기
is_alive() 현재 실행 여부 확인
daemon 데몬 여부 속성
name 스레드 이름 속성
ident 스레드 식별자

🔹 고급 기능

  • Condition: 특정 조건이 만족될 때까지 대기/알림 제공
  • 스레드 간 통신: queue 모듈 활용
    • put(): 항목 추가
    • get(): 항목 제거 및 반환
    • qsize(), empty(), full() 상태 확인
    • task_done(), join() 작업 완료/대기

3️⃣ 프로세스(Process)

  • 프로세스는 독립된 메모리 공간을 가지며 실행되는 단위.
  • 스레드와 달리 완전히 분리된 작업장처럼 동작한다.
  • 멀티프로세싱(multiprocessing)은 여러 프로세스를 동시에 실행하는 방식.

🔹 주요 메서드

메서드/개념 설명

Lock 한 번에 하나의 프로세스만 공유 데이터를 수정 가능하게 함(동기화)
Pool 프로세스 풀을 미리 생성해 작업 분산 처리, 재사용하여 비용 절감, 결과 수집 용이
Queue 프로세스/스레드 간 안전한 데이터 통신 (락 내장, 충돌 방지)

4️⃣ 비동기 프로그래밍(Async I/O)

🔹 개념

  • 순차 처리: 앞 작업이 끝나야 다음 실행 (blocking).
  • 비동기 처리: 작업을 시작하고 기다리지 않고 다음 실행, 완료되면 알려줌.
  • 키워드: async def, await
  • 활용: 네트워크 요청, 파일 I/O, DB 쿼리 등 대기 시간이 긴 작업에 최적.

🔹 aiohttp

  • HTTP 비동기 라이브러리, 웹 요청을 효율적으로 처리할 때 사용.

5️⃣ 순차 / 병렬 / 비동기 비교

구분 실행 방식 I/O 작업 CPU 연산 적합 사례

순차(Sequential) 하나 끝나야 다음 실행 ❌ 비효율적 ✅ 단순 작은 스크립트
병렬(Parallel) 여러 스레드/프로세스 동시에 실행 ✅ 가능 ✅ 효과적 이미지 처리, 계산
비동기(Async) 이벤트 루프에서 대기 겹쳐 처리 ✅ 매우 효율적 ❌ 효과 없음 웹 크롤링, API 호출
  • 순차 = 단순하지만 느림
  • 병렬 = 여러 코어로 실제 동시에 실행
  • 비동기 = 한 코어에서 대기 시간 겹쳐 효율적으로 실행

+ 오늘의 과제

https://github.com/heyroha/KakaoCloud/tree/main/HW/8%EC%9B%94%2027%EC%9D%BC/hw_27

 

KakaoCloud/HW/8월 27일/hw_27 at main · heyroha/KakaoCloud

Contribute to heyroha/KakaoCloud development by creating an account on GitHub.

github.com

+ 회고..

스레드랑 프로세스는 이론 공부할때도 너무 힘들어서 피하곤 했는데, 이렇게 코드까지 뜯어보려니까 머리 터질 것 같다..^^ 
근데 비교실험 하면서 수치가 딱딱 보이니까 결과볼때 재미있긴 하다!


8월 25일 - 데이터 분석

1️⃣ 넘파이(NumPy)

  • 정의: NumPy(Numerical Python)는 과학 계산을 위한 핵심 라이브러리
  • 주요 기능: 고성능 배열 객체와 수치 연산 제공
  • 브로드캐스팅(Broadcasting)
    • 서로 다른 크기의 배열 간 연산 시 자동으로 크기를 맞추어 계산하는 기능
    • 작은 차원의 배열이 더 큰 차원으로 확장되어 연산됨

구분 예시

배열 크기 다름 [1,2,3] + 10
결과 [11,12,13]

2️⃣ 판다스(Pandas)

  • 정의: 파이썬 데이터 분석을 위한 라이브러리
  • 특징:
    • Excel처럼 표 형태 데이터(행·열) 처리
    • SQL처럼 필터링, 정렬, 그룹화, 조인, 집계 기능 제공
    • 피벗 테이블GROUP BY 같은 분석 지원
    • NumPy 기반으로 구축 → 빠른 계산 성능 상속

🔹 Series (1차원)

  • 인덱스가 부여된 데이터 구조
  • 엑셀의 **단일 열(column)**과 유사
  • 특징:
    • 레이블 접근 가능 (인덱스 기반)
    • 벡터 연산 지원 (모든 데이터에 연산 적용)
    • NaN 같은 누락값 처리 지원

🔹 DataFrame (2차원)

  • 행과 열 구조를 가진 테이블
  • 각 열은 서로 다른 데이터 타입 가능
  • 구성 요소: index(행), columns(열), values(값)
  • df.describe() → 기본 통계 요약(mean, std, min, max, 사분위수)

3️⃣ 데이터 분석 지표

🔹 데이터 공분산(Covariance)

  • 두 변수가 함께 어떻게 변하는지를 측정
  • 계산: 각 변수가 평균에서 떨어진 정도의 곱의 평균

해석 의미

양수 한 변수가 증가하면 다른 변수도 증가 경향
음수 한 변수가 증가하면 다른 변수는 감소 경향
0 근처 선형 관계 약함

⚠️ 단점: 값의 크기가 데이터 단위에 의존 → 해석 어려움


🔹 데이터 상관관계(Correlation)

  • 공분산을 표준편차로 나눈 값 (단위 제거)
  • 값 범위: -1 ~ 1

상관계수 의미

1에 가까움 강한 양의 상관관계
-1에 가까움 강한 음의 상관관계
0 근처 선형 관계 없음
  • 장점: 단위와 상관없이 비교 가능
  • 예시:
    • 점수 vs 출석률 = 0.7 → 출석이 높을수록 점수도 높음
    • 점수 vs 출석률 = -0.3 → 출석이 적을수록 오히려 점수 약간 높음
    • 점수 vs 출석률 = 0.1 → 거의 관련 없음

4️⃣ 데이터 병합(Merge)

  • SQL의 조인(Join)과 유사하게 키 값 기준으로 DataFrame 결합

조인 방식 설명

내부 조인(inner) 교집합, 양쪽에 모두 있는 데이터만
왼쪽 조인(left) 왼쪽 데이터 모두 포함
오른쪽 조인(right) 오른쪽 데이터 모두 포함
외부 조인(outer) 합집합, 양쪽 데이터 모두 포함

5️⃣ 데이터 전처리(Data Preprocessing)

  • 정의: 원시 데이터(Raw Data)를 분석/머신러닝에 적합하게 변환하는 과정
  • 중요성: 프로젝트 시간의 **70~80%**를 차지
  • 주요 이유:
    • 결측치·이상치 제거 → 분석 정확성 확보
    • 중복 제거 → 자원 절약
    • 데이터 정제 → 모델 성능 향상

🔹 데이터 처리 3단계

  1. 수집(Data Collection): 다양한 소스에서 원시 데이터 확보
  2. 전처리(Data Preprocessing): 결측치·이상치 제거, 타입 변환, 중복 제거, 정규화/표준화
  3. 가공(Data Processing): 특성 공학, 집계/그룹화, 인코딩, 차원 축소

6️⃣ AI/머신러닝을 위한 데이터 가공

  • 수치형 데이터 변환: 범주형 → 원-핫 인코딩 / 라벨 인코딩
  • 텍스트 데이터: TF-IDF, Word2Vec 등 벡터화
  • 데이터 스케일링: 정규화(0~1), 표준화(평균=0, 표준편차=1)
  • 차원 축소: 불필요한 특성 제거 → 차원의 저주 방지
  • 데이터 분할: 훈련/검증/테스트 세트, 시계열은 시간 순서 고려

7️⃣ 데이터 품질의 중요성

  • GIGO 원칙(Garbage In, Garbage Out): 잘못된 데이터 → 잘못된 결과
  • 데이터 편향: 편향된 입력 → 편향된 모델
  • 데이터 완전성: 불완전한 데이터 → 일반화 성능 저하

8️⃣ 이상치(Outlier) 탐지 및 제거

🔹 IQR(Interquartile Range) 방법

  • 개념: 데이터의 중간 50% 범위(Q3 - Q1)
  • 기준: Q1 - 1.5×IQR ~ Q3 + 1.5×IQR 벗어난 값 → 이상치
  • 장점: 극단값에 덜 민감, 비정규분포에서도 사용 가능
  • 단점: 1.5 배수 기준이 임의적, 작은 데이터셋에 부정확

🔹 Z-Score 방법

  • 공식:

Z=X−μσZ = \frac{X - \mu}{\sigma}

  • 기준: |Z| > 3 → 이상치로 간주 (전체 데이터 0.3% 미만)
  • 통계적 의미:
    • Z=1 → 68%
    • Z=2 → 95%
    • Z=3 → 99.7%
  • 장점: 정규분포에서 효과적, 명확한 기준
  • 단점: 정규분포 가정 필요, 이상치에 의해 왜곡될 수 있음

본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 2기(B-log) 리뷰로 작성 되었습니다.

AIaaS, AIaaS마스터클래스2기, 개발자교육, 부트캠프, 스나이퍼팩토리, 카카오엔터프라이즈, 카카오클라우드, 클라우드개발자, 클라우드엔지니어, 한국생산성본부