20240414 TIL

2026. 4. 14. 11:16TIL

📢 오늘의 목표

🚩코드카타를 하면서 기본적인 코딩 역량을 키운다.

🚩통계분석에 대해 배우면서 기존에 배웠던 내용과 어떻게 접목 시킬지 고민한다.

 

🚩라이브 세션을 통해 통계 분석 역량을 키운다.


📅 TIL

❇️Code Kata

더보기

😊 문제 33

https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

> 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

def solution(s):
    answer = ''
    list(s)
    lst = sorted(s,reverse=True)
    answer = answer.join(lst)
    return answer

 

*️⃣출력 형식이 문자열이므로 answer =' ' 형태로 두고 문자열을 리스트 형식으로 바꿔서 정렬하기 쉽게 만들었다.
그리고  소문자부터 대문자 순으로 큰순으로 정렬하기 위해 reverse=True를 이용해서 분류 방향을 바꾸었다. 그리고 answer에 join 함수를 메쏘드 함수로 써서 결과를 도출했다.

근데 하다보니깐 answer 함수를 처음에 ''으로 정의 안해도 문제가 풀릴 거 같아서

def solution(s):
    list(s)
    lst = sorted(s,reverse=True)
    answer = ''.join(lst)
    return answer


이렇게 바꿔서 했더니 결과가 동일하게 나왔다.

 

그리고 같은 알파벳인데 대소문자가 다르면 어떨까에 대해 고민해보아서

s = "Zzbfjdre" 인 케이스를 추가해서 돌려봤더니

결과가 "zrjfedbZ"으로 생각한 결과대로 나와서 같은 문자라도 올바르게 sort하는 것을 확인하였다!

❇️ 오전 라이브 세션

더보기

통계의 기초와 기술 통계

머신 러닝 2년 ~ 3년

그 전에는 통계가 들어갔다.

머신러닝은 최근에 많이 사용!

기술 통계와 추론 통계

한번 생산하면 대량으로 생산 > 일일히 확인 x


품질은 감이나 경험이 아니라 데이터

 

통계없이 진정한 판정 x

제조 라인에서 불량율이 2%에서 3%로 증가했을 때 이게 우연인가 공정 이상인가

기술 통계 vs 추론 통계

기술 통계: 기술 데이터를 있는 그대로 요약(평균 불량율, 치수 분포)

추론 통계: 표본에서 모집단의 특성을 추론(샘플링)

 

데이터 분석의 과정

문제 정의(y)> 가설 설정(x1,x2,x3,x4)> 데이터 수집(x1-데이터, x2-데이터...) 에너지의 80%~90%> 분석(EDA,통계적 방법(),머신 러닝/딥 러닝 - XAI) > 결론

통계 VS 머신러닝

 

파라미터 셉타를 훈련 시켜서 결괏값을 도출

 

추론 통계는 x값을 뽑아서 전체에 얼마나 영향을 끼치는 지

머신 러닝은 저 함수의 틀을 짜는 것

블랙 박스 > 어떤 영향을 미치는 지 알 수 없음
XAI를 이용하면 x > y 관계 알 수 있음

베타 값의 크기로 얼마나 영향을 미치는 지 알 수 있음

통계는 공정 판정, 원인 분석, 규격 검증에 사용

머신 러닝은 자동 불량 탐지, 이미지 검사, 예측에 적합

공정에 문제 발생 > 가설 검정
어떤 요인이 원인인가  > ANOVA
이 차이가 우연인가 (p-value)
불량이 발생할 것인가 > 예측
어떤 패턴에서 불량이 나오는가 > 분류
새 데이터에서도 불량을 잡을 수 있는 가 > (일반화)


통계랑 머신 러닝의 비교


모집단과 표본


다 물어 보는 건 비효율적 > 샘플링

모집단 > 오늘 생산된 전체 10,000 제품

표본 > 그 중 검사를 위해 추출한 50개 샘플
전수 검사 vs 샘플링 검사: 비용, 시간, 파괴 검사 여부에 따라 결정

범주 - 연속
범주 - 범주

연속 - 범주

연속 - 연속


변수 유형을 나타내는 것이 중요!

 

독립 변수,종속 변수가 무엇인지

 

왜 중요한가?

 

데이터의 방식에 따라 분석 방식이 바뀜

산술 평균: 50개 샘플의 치수 평균

가중평균(): 라인별 생산량이 다를 때 평균 불량률 계산

절사평균(): 상하 5% 제거해서 이상치를 줄인다.

 

평균의 함정

평균이 규격 중심에 있어도 개별값이 규격을 벗어날 수 있다.
평균은 합격인데 불량이 나온다 > 산포를 본다

어제 배운 내용!

 

박스 플롯 vs 바이올린 플롯

 

표준 편차를 쓰는 이유

분산으로 나타내면 단위가 뻥튀기 되서 보기가 힘듦> 원래 단위로 복원하는 표준편차로 산포를 볼 수 있다.

왜도: 분포의 비대칭 정도
우편향, 좌편향> 공정 상단, 하단에서 불량 발생

첨도

히스토그램에서 bin 값이 중요> 얼마나 촘촘하게 나타낼것인지

우리가 저번에 질문한 내용인 위의 점을 제거해도 되는 가에 대한 해답 > 제거 x

실제 공정에서 많이 한다.

QQ - plot이 대각선이면 정규 분포에 가깝다.

 


사번 같은 경우는 수치형으로 들어오기에 범주형으로 바꿔준다.

❇️ 통계학 기초 2주차

더보기

📊모집단과 표본

 

*️⃣모집단 : 관심이 되는 전체 집단

*️⃣ 표본: 모집단에서 추출한 일부

 

 

🗯️표본을 사용하는 이유?

*️⃣ 현실적인 제약

비용과 시간의 제약 때문에 > 전수 조사를 하기에는 비용과 시간이 많이 든다. 반도체를 예로 들면 월에 68만장에 달하는 웨이퍼가 생산되는데 이걸 전부 전수 조사하기는 힘들다.

 

*️⃣  대표성

잘 설계된 표본은 모집단을 대표할 수 있다! > 표본을 보고 모집단을 추정 가능
표본을 무작위로 뽑는다면 모집단의 다양한 특성 나타낼 수 있다.

 

*️⃣ 데이터 관리

데이터 처리의 용이성 > 전체 데이터를 다루는 것보다 표본 데이터를 다루는게 데이터 처리에 용이

데이터 품질 관리를 할 때도 오류나 이상값을 식별하기 쉬움

 

*️⃣ 모델 검증 용이

모델 적합도 테스트 > 표본 데이터를 사용하면 통계적 모델 검증 가능 잘 설계된 표본이라면 표본이 모집단을 대표 가능

 

✅ 전수조사

모집단 전체를 조사한다. 대규모로 진행할 경우 비용과 시간이 많이 들지만 전부를 검사하는 만큼 불량품이 나갈 확률이 현격하게 준다.

 

표본 조사

표본만을 조사하는 방법 표본이 대표성을 가진다면 전수 조사에 비해 비용과 시간이 적게 든다.
모든 데이터를 수집하기 힘들때 표본 조사 시행 Ex) 도시 연구, 의료 연구, 시장 조사, 정치 여론 조사

 

import numpy as np
import matplotlib.pyplot as plt
# 모집단 생성 (예: 국가의 모든 성인의 키 데이터)
population = np.random.normal(170, 10, 1000)
# 표본 추출
sample = np.random.choice(population, 100)
plt.hist(population, bins=50, alpha=0.5, label='population', color='blue')
plt.hist(sample, bins=50, alpha=0.5, label='sample', color='red')
plt.legend()
plt.title('population and sample distribution')
plt.show()

*️⃣ 여기서 np.random.nomal(170,10,1000)은 정규 분포를 따르는 난수를 생성하는 함수로 평균인 170을 중심으로 표준편차가 10이고 데이터 갯수(size)는 1000개이다.

 

*️⃣ np.random.choice(population, 100)는 이렇게 만든 정규 분포에서 임의의 값을 샘플링 하는 것으로 
numpy.random.choice(a, size=None, replace=True, p=None) 구조에서 a는 샘플링할 배열이고, size는 샘플링 추출 갯수, replace는 복원 추출(동일 요소를 여러 번 선택)을 할것인지, p는 각 요소가 선택될 확률이고 총합은 1이다.

*️⃣ plt.hist에서 bins는 갯수 또는 경계를 의미!
ex) bins = 40이면 구간을 40개로 나눈다

 

표본 오차와 신뢰 구간

🗯️표본 오차

*️⃣ 표본을 통해 계산된 통계량과 모집단 간의 값 차이

 

*️⃣ 표본 크기가 클 수록 표본 오차는 작아짐

 

*️⃣ 표본이 모집단을 완벽하게 대표하지 못하기 때문에 발생

*️⃣ 표본이 클수록 오차가 감소

*️⃣ 표본을 무작위로 샘플링 할수록 오차가 감소

🗯️신뢰구간

*️⃣ 모집단의 특정 파라미터에 대해 추정된 값이 포함될 것으로 기대되는 범위

 

*️⃣ 신뢰구간 계산법

 

*️⃣ 신뢰구간 = 표본 평균 ± z × 표준 오차

 

*️⃣ 여기서 z는 신뢰도에 따라 일정한 값을 지닌다. 신뢰수준이 95%면 z = 1.96(고등학교 때 배운 내용)

 

✨ 모집단과 표준 분포


*️⃣ 붉은색 점선은 모집단의 평균, 파란색 점선은 표본 평균(1번 그림에서는 동일)

*️⃣  표본 크기가 커질수록 표본 평균이 모집단 평균에 가까워지는 경향성

 

✨신뢰구간

*️⃣  표본의 분포와 95%의 신뢰구간

*️⃣  파란색 점선은 표본의 평균, 녹색 점선은 신뢰구간의 상한과 하한

*️⃣  신뢰구간은 모집단의 평균이 포함될 것으로 예상되는 범위 → 95% 확률로 이 범위 안에 평균이 있다.

🌈수학점수 표본으로부터 모집단의 평균 범위를 계산해보자

import scipy.stats as stats
# 표본 평균과 표본 표준편차 계산
sample_mean = np.mean(sample)
sample_std = np.std(sample)
# 95% 신뢰구간 계산
conf_interval = stats.t.interval(0.95, len(sample)-1, loc=sample_mean, scale=1)
print(f"표본 평균: {sample_mean}")
print(f"95% 신뢰구간: {conf_interval}")
# 표본 평균: 171.92950961782373
# 95% 신뢰구간: (np.float64(169.94529266631505), np.float64(173.9137265693324))

 

*️⃣ scipy.stats는 통계 분석을 위한 라이브러리

*️⃣  stats.t.interval은 t 분포의 신뢰 구간을 계산하는 데 이용

*️⃣ scipy.stats.t.interval(alpha, df, loc=0, scale=1)에서 alpha는 신뢰수준(95%, 99%), df는 자유도(변수 갯수) 일반적으로 표본 크기 -1, loc는 일반적으로 표본 평균, scale은 일반적으로 표본 표준 오차 → 모집단 표준 편차를 모집단의 크기의 제곱근 만큼 나눔

📊 정규 분포

종 모양의 대칭 분포고 대부분 데이터가 평균 주위에 몰려있다.

 

표준 편차는 분포의 산포도를 나타냄

 

가장 일반적인 형태의 분포(키, 시험 점수 등)

#정규분포 생성
normal_dist = np.random.normal(170, 10, 1000)
# 히스토그램으로 시각화
plt.hist(normal_dist, bins=30, density=True, alpha=0.6, color='g')
# 정규분포 곡선 추가
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = stats.norm.pdf(x, 170, 10)
plt.plot(x, p, 'k', linewidth=2)
plt.title('normal distribution histogram')
plt.show()

📊 긴 꼬리 분포

데이터의 분포가 한 쪽 끝에 몰려있는 분포

 

데이터가 대칭적이지 않고 비대칭적

 

여러 종류의 분포를 포함(파레토 분포, 멱함수 등)

 

소득 분포, 웹사이트 방문자 등 일부 데이터가 매우 많을 때 이런 분포를 보임

# 긴 꼬리 분포 생성 (예: 소득 데이터)
long_tail = np.random.exponential(1, 1000)
# 히스토그램으로 시각화
plt.hist(long_tail, bins=30, density=True, alpha=0.6, color='b')
plt.title('long tail distribution histogram')
plt.show()

 

📊 스튜던트 t 분포

*️⃣ 표본이 작을 때 정규 분포 대신 사용

 

*️⃣ 자유도가 커질수록(표본이 많을수록) 정규 분포에 가까워짐 → 정규 분포의 일종인가..?

 

*️⃣ 모집단의 표준편차를 알 수 없고, 표본의 크기가 작을 때 사용

 

*️⃣ 약물 시험이나 반별 시험 성적 비교할 때

# 스튜던트 t 분포 생성
t_dist = np.random.standard_t(df=10, size=1000)
# 히스토그램으로 시각화
plt.hist(t_dist, bins=30, density=True, alpha=0.6, color='r')
# 스튜던트 t 분포 곡선 추가
x = np.linspace(-4, 4, 100)
p = stats.t.pdf(x, df=10)
plt.plot(x, p, 'k', linewidth=2)
plt.title('student t distribution histogram')
plt.show()

 

📊 카이제곱분포

*️⃣ 범주형 데이터의 독립성 검정이나 적합도 검정에 사용되는 분포

 

*️⃣ 자유도에 따라 모양이 다르다.

 

*️⃣ 상관 관계나 인과 관계를 판별하려고 하는데 변수끼리 완전히 다른 성질의 변수인 경우 사용

ex) 성별이나 나이에 따른 선거 후보 지지율, 독립성 검정, 적합도 검정

 

*️⃣ 범주형 데이터인 경우 사용

# 카이제곱분포 생성
chi2_dist = np.random.chisquare(df=2, size=1000)
# 히스토그램으로 시각화
plt.hist(chi2_dist, bins=30, density=True, alpha=0.6, color='m')
# 카이제곱분포 곡선 추가
x = np.linspace(0, 10, 100)
p = stats.chi2.pdf(x, df=2)
plt.plot(x, p, 'k', linewidth=2)
챕터2-6 : 카이제곱분포 2plt.title('카이제곱 분포 히스토그램')
plt.show()

📊 이항 분포

*️⃣ 결과가 2개 나오는 상황일 때 사용하는 분포

 

*️⃣ 연속되지 않는 값을 가지기 때문에 이산형 분포라고도 함

 

*️⃣ 보통은 독립 시행에 대한 결과가 이렇게 나옴

 

*️⃣ 성공 확률이 p 일때 n회 실행한 결과 
 
*️⃣무작위로 선택된 100개의 제품 중 불량품의 수는 이항 분포를 따름

 

# 이항분포 생성 (예: 동전 던지기 10번 중 앞면이 나오는 횟수)
binom_dist = np.random.binomial(n=10, p=0.5, size=1000)
# 히스토그램으로 시각화
plt.hist(binom_dist, bins=10, density=True, alpha=0.6, color='y')
plt.title('이항 분포 히스토그램')
plt.show()

 

📊푸아송 분포

*️⃣ 단위 시간 또는 면적 당 발생하는 사건수를 모델링 하는 데 이용

 

*️⃣ 평균 발생률이 λ인 사건이 단위 시간이나 면적에 따라 얼마나 발생하는 지 나타냄

 

*️⃣ 단위 시간 당 희귀하게 발생하는 사건의 수를 모델링하는 데 적합

 

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
# 푸아송 분포 파라미터 설정
lambda_value = 4 # 평균 발생률
x = np.arange(0, 15) # 사건 발생 횟수 범위
# 푸아송 분포 확률 질량 함수 계산
poisson_pmf = poisson.pmf(x, lambda_value)
# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.bar(x, poisson_pmf, alpha=0.6, color='b', label=f'Poisson PMF (lambda
plt.xlabel('Number of Events')
plt.ylabel('Probability')
plt.title('Poisson Distribution')
plt.legend()
plt.grid(True)
plt.show()

📊분포 정리하기

 

진짜 많네....

 

 

결국 모든 길은 정규분포를 통합니다!

🗯️분포를 어떻게 고르면 좋을까?

⭐데이터가 충분하다 → 무조건 정규 분포

 

데이터가 작다 → 스튜던트 t- 분포

 

일부 데이터가 매우 크고 전체적으로 큰 영향  → 롱 테일 분포

 

범주형 데이터의 독립성 검정, 적합도 검정 → 카이 제곱 분포

 

결과가 두개만 나옴 → 이산 분포

 

특정 시간, 공간에서 발생하는 사건 → 푸아송 분포

❇️ 오후 라이브 세션

더보기

머신 러닝은 기계학습 또는 머신러닝은 기계(컴퓨터)가 학습을 할 수 있도록 하는 연구분야

기계학습 또는 머신러닝은 기계(컴퓨터)가 학습을 할 수 있도록 하는 연구분야

 

어떤 컴퓨터 프로그램이 특정 작업(T)에 대해 성능 지표(P)로 측정했을 때, 경험(E)을 통해 성능이 향상된다면, 그 프로그램은 학습한다고 말할 수 있다! by Tom Mitchell 교수

 

작업(T): 제품의 결함 탐지, 생산 공정 모니터링, 품질 평가

성능 지표(P): 정확도, 정밀도, 재현율 등

경험(E): 수집된 생산 데이터, 검사 기록, 공정 센서 데이터 등

전처리 > 머신 러닝 전에 많이 해야한다!!!

Ex) 장비 이상 탐지(T)를 분류하는 모델을 만들기

장비 센서 데이터 셋(E)을 통해 장비 이상 탐지 분류 모델을 실행하고 정확도 확인 하고 모델 업데이트를 통해 정확도를 향상시킴!

 

딥 러닝 → 머신 러닝 → AI 순으로 그 개념의 범위가 넓어짐

AI는 마치 인간처럼 학습 및 추론을 할 수 있도록 만들어진 프로그램

머신 러닝: 데이터를 활용해 명시적으로 프로그래밍되지 않고도 학습할 수 있는 알고리즘

 

딥 러닝: 머신 러닝의 종류로 인공 신경망을 이용해 거대한 데이터셋을 학습하는 방법

 제조업에서 머신러닝의 역할

 

품질 데이터의 자동 분석

머신 러닝은 대규모 품질 데이터를 자동으로 처리하고, 데이터 패턴과 상관관계를 분석하여 공정의 품질 문제를 실시간으로 식별합니다.

 

⭐공정 이상 탐지 및 예측 (hot한 분야)

머신 러닝 기반 이상 탐지 모델은 공정 데이터에서 비정상적인 패턴을 감지하여, 결함 가능성을 사전에 예측하고 문제를 해결할 시간을 제공합니다.
→ 우리가 궁극적으로 하려는 목표이자 공정 분야에서 해결해야하는 가장 큰 문제

 

결함률 감소와 생산성 향상

머신 러닝은 결함 예측과 공정 최적화를 통해 제품의 결함률을 줄이고, 생산성을 높이는 데 기여합니다.

 

 

온도 시계열 데이터

단점: 검사 결과가 2시간 뒤에 들어옴

 

 

지도 학습은 모든 데이터를 다 알려주고 정상인지 불량인지도 다 학습

 

비지도 학습은 답을 알려주지 않고 결과를 도출

 

강화 학습은 로봇쪽에서 많이 사용하는 방법이라 데이터 분석에서는 사용 x

지도 학습

정답이 있는 데이터를 활용해 데이터를 학습시키는 것입니다. 입력 값(X data)이 주어지면 입력값에 대한 Label(Y data)를 주어 학습시킨다.

 

 

Xdata는 Gender, Age, salary 모두 다!

Ydata는 구매 여부

지도 학습이기 때문에 정답이 필요

 

입력 데이터: 레이블(정답)이 포함된 데이터가 필요. (지도 학습)

출력 데이터: 입력 데이터를 특정 범주로 분류한 결과.

알고리즘: 로지스틱 회귀, 의사결정트리, 랜덤 포레스트, SVM, 뉴럴 네트워크 등

 

이진 분류 (Binary Classification):

정상/비정상의 두개의 카테고리로 분류

Ex) 질병 진단, 이메일 필터링

 

다중 분류 (Multiclass Classification):

데이터가 세 개 이상의 카테고리로 분류되는 경우.

Ex) 이미지 분류, 학생의 성적 등급 분류

 

다중 레이블 분류 (Multilabel Classification):

하나의 데이터가 여러 개의 카테고리를 가질 수 있는 경우.
거의 사용x

Ex) 코미디 영화이면서 액션 영화일 수 있음

 

2. 회귀 (Regression)

데이터를 기반으로 연속적인 숫자 값을 예측하는 작업

 

선형 회귀 (Linear Regression)


데이터가 직선 형태로 분포한다고 가정하여 예측.

간단하고 직관적이며, 관계를 설명하는 데 적합.

 

y = ax+b 형태

 

 

다항 회귀 (Polynomial Regression)

 

데이터를 비선형적으로 모델링할 때 사용.

예시: 곡선 형태로 변하는 데이터의 온도 변화 예측

대부분의 데이터는 다항 회귀에 가까움

 

항의 갯수가 늘어날 수록 정확해지지만 계산 시간이 더 걸림

 

릿지 회귀(Ridge Regression) / 라쏘 회귀(Lasso Regression)

다중 공선성 문제를 해결하기 위해 규제를 추가한 선형 회귀.

예시: 재무 데이터에서 중요한 변수를 추출하여 미래 수익 예측.

이런게 있다 정도만 알자... 잘 안씀

 

결정 트리 회귀 / 랜덤 포레스트 회귀

의사결정 트리를 기반으로 데이터를 나누어 예측.

예시: 복잡한 데이터에서 공정 품질 예측.

아키네이터가 이런 식

 

조건 A를 만족하고, B를 만족하고 .... 모든 걸 만족하는 경우는 점점 줄어듬

 

(b) 회귀의 예시 사례

매출 예측

사례: 국내 대형 유통사 이마트는 매출 예측을 위해 머신러닝 알고리즘을 활용합니다. 상품 판매 데이터, 날씨, 행사 일정, 지역별 구매 데이터를 분석하여 특정 점포와 상품의 매출을 예측합니다. 이를 통해 효율적인 재고 관리와 공급망 최적화를 이룹니다.

알고리즘: 회귀 분석, 랜덤 포레스트 회귀.


주택 가격 예측

사례: 직방이나 호갱노노와 같은 국내 부동산 플랫폼은 머신러닝을 활용해 주택 가격을 예측합니다. 지역별 거래 데이터, 평수, 층수, 학군, 대중교통 접근성 등을 활용하여 사용자들에게 합리적인 가격 정보를 제공합니다.

알고리즘: 선형 회귀, 결정 트리 회귀.


공정 품질 관리 (QA/QC)

사례: LG화학은 배터리 생산 공정에서 머신러닝 기반 품질 관리 시스템을 활용합니다. 제조 단계에서 온도, 압력, 공정 시간을 입력 데이터로 활용해 배터리의 두께와 전류 용량을 예측하여 불량률을 최소화합니다.

알고리즘: 서포트 벡터 회귀(SVR), 랜덤 포레스트 회귀.


날씨 예측

사례: 기상청과 **한국전력공사(KEPCO)**는 전력 수요와 공급 예측을 위해 날씨 데이터를 분석합니다. 머신러닝을 통해 특정 지역의 기온, 강수량, 풍속을 예측하여 에너지 수요와 공급의 균형을 맞춥니다.

알고리즘: Lasso 회귀, 다항 회귀.


5. 주식 가격 예측

사례: 삼성증권과 같은 국내 금융사들은 머신러닝을 활용하여 주식 시장 데이터를 분석합니다. 과거 종가, 거래량, 매수/매도 패턴, 환율, 경제 지표 등을 사용해 특정 주식 종목의 미래 주가를 예측합니다.

알고리즘: XGBoost, 시계열 회귀 모델(ARIMA 기반).


에너지 사용량 예측

사례: 한전 KDN은 건물별 전력 사용 데이터를 머신러닝으로 분석하여 시간대별 전력 소비량을 예측합니다. 이를 통해 전력 효율성을 높이고 전력 피크를 효과적으로 관리할 수 있습니다.

알고리즘: 랜덤 포레스트 회귀, Gradient Boosting Machines(GBM).

비지도 학습이란?

정의: 비지도 학습은 레이블이 없는 데이터를 분석하여 데이터 간의 관계, 그룹, 패턴 등을 찾는 알고리즘

목적: 데이터 내부의 숨겨진 구조나 특징을 발견하여, 사람이 알지 못했던 새로운 인사이트를 제공

정답이 없기 때문에 정확도보다는 데이터 간의 유사성과 차이를 측정하는 데 중점.

주로 탐색적 데이터 분석(EDA)과 데이터 전처리 단계에서 활용

 

클러스터링(Clustering)

데이터를 유사한 그룹으로 묶는 작업

넷플릭스의 컨텐츠 유사성

차원 축소(Dimensionality Reduction)

데이터를 더 간결하고 중요한 특징들만 남기는 작업입니다.

예시:

수많은 센서 데이터를 몇 가지 중요한 지표로 요약.

대표 알고리즘:

PCA(주성분 분석), t-SNE, UMAP.

 

연관 규칙 학습(Association Rule Learning)

데이터 간의 상관관계를 발견하는 작업입니다.

예시:

장바구니 분석: "우유를 사면 빵도 살 확률이 높다."

사용자 행동 분석: "특정 영화를 본 사람은 다른 특정 영화를 볼 가능성이 높다."

 

강화 학습 (Reinforcement Learning)

보상을 통해 상은 최대화, 벌은 최소화하는 방법으로 행위를 강화 

Scikit-learn 라이브러리

scikit-learn(사이킷런)은 파이썬을 대표하는 머신러닝 분석을 할 때 유용하게 사용할 수 있는 라이브러리. sklearn이라고 약어를 쓰기도 한다.

 

자주 쓰는 tool

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn import svm
from sklearn import tree
from sklearn.ensemble import RandomForestClassifier

 

쉽게 말해 import는 가방을 통째로 가져오기!

from .. import는 가방에서 특정 물품을 꺼내오기

 

가방을 열고....필통을 열고....왜냐면 되게 데이터가 많고 복잡....

 

머신러닝 모델링  

 

모델로 해결하고 싶은 문제가 무엇인지 확실하게 정의

 

타겟이 있는 데이터인지? 그렇지 않은지? (y값)

 

타겟이 있다면 분류 문제인가? 회귀 예측 문제인가?

 

타겟이 없는 데이터에서 어떤 가치를 뽑아내고 싶은지

 

지도 학습 vs 비지도학습

 

 

데이터 전처리

 

데이터 수집

문제 해결에 사용하기 위한 데이터를 수집합니다. 데이터는 잘 정리가 되어 있는 경우도 있고, 그렇지 않은 경우도 있습니다.
예를 들어 시계열 데이터는 데이터 타입을 바꿔줘야함

 

데이터 클리닝

분석에 적합한 형태로 데이터를 정제하고 가공하는 단계입니다.

데이터 타입 확인

결측치 처리 및 이상치 제거

정규화(Normalization)

 

피쳐 엔지니어링 (Feature Engineering)

피쳐 엔지니어링은 다양한 독립변수 중에서 분석에 활용하기 위한 변수를 적절하게 선택하거나, 필요에 따라서 새로운 변수를 생성하는 과정

 

도메인 지식 등을 활용 > 의미없는 데이터가 의미 있는 데이터로 바뀜! > 도메인에 대한 공부도 꼭 해야겠다.

 

탐색적 데이터 분석(EDA)을 통해 변수 상관관계 분석

 

데이터 분할

분석에 사용하기 위한 데이터를 나누는 작업입니다.

보통 Train/Test 데이터로 구분하거나 Train/Validation/Test 데이터로 구분

Train : Test의 비중은 보통 6:4 또는 7:3 8:2 정도로 나눕니다.

시계열 데이터의 경우는 특정 시점을 기준으로 데이터를 나눕니다.

 

모델링

학습에 사용할 모델을 선택하고 모델을 생성합니다.

모델의 종류

지도 학습 - 분류 및 회귀(예측)

선형 회귀 (예측)

로지스틱 회귀 (분류)

랜덤 포레스트 (분류, 예측)

서포트 벡터 머신 (분류, 예측)

다층 퍼셉트론 (분류, 예측)

비지도학습 - 군집 분석

주성분 분석(PCA)

계층적 군집화

K-means

DBSCAN

 

🤦🏻‍♀️ SVR? 다중 퍼셉트론? PCA?모델링에 익숙해지면 도전해볼 내용이니 참고만하시면 될 거 같습니다.

당장 배울 내용은 아니지만 제조 데이터 분석에서 자주 사용되는 모델입니다.

 

학습 데이터를 이용해 모델을 학습시킵니다.

테스트 데이터를 이용해 모델을 이용한 예측을 진행합니다.

성능 지표를 활용해 모델의 성능을 평가합니다.

 

분류 모델

정확도(Accuracy)

정밀도(Precision)

재현율(Recall)

회귀 모델

MSE(Mean Squared Error)

RMSE(Root Mean Squared Error)

MAE(Mean Absolute Error)

 

군집 분석의 경우 군집화된 결과물을 직접 확인하며 성능을 평가

 

모델 성능을 끌어올리기 위해 모델의 하이퍼파라미터 값을 변경하며 위 과정을 반복합니다.

 

하이퍼 파라미터(Hyper Parameter)란?

모델을 학습하기 전에 사용자가 직접 값을 설정해줘야 하는 변수입니다.

동일한 모델이더라도 어떤 값을 설정하느냐에 따라 모델 성능이 달라질 수 있습니다.

 

이게 다 모임.... 어렵다

 

'TIL' 카테고리의 다른 글

20260416 TIL  (1) 2026.04.16
202060415 TIL  (1) 2026.04.15
20260413 TIL(🎂)  (0) 2026.04.13
20260410 TIL  (0) 2026.04.10
20260409 TIL  (0) 2026.04.09