2025 내일배움캠프 QAQC_2기

2025 내일배움캠프 QAQC_2기 본캠프 33일차

mingdoremi 2025. 6. 27. 20:40

안녕하세요! 오늘은 본캠프 33일차입니다!

오늘은 금요일!! 오늘 하루도 파이팅하고 내일 쉬어용~~

 

오늘의 베이직반 문제!

1번. 막대 그래프 그리기

import matplotlib.pyplot as plt
fruits = ['Apple', 'Banana', 'Orange']
sales = [150, 200, 120]

1. xlabel은 fruit
2. ylabel은 sales
3. title은 fruit sales
fruits 리스트를 x축 레이블로, sales 리스트를 y축의 막대 높이로 사용하여 과일별 판매량을 나타내는 막대 그래프를 그려라.

import matplotlib.pyplot as plt
fruits = ['Apple', 'Banana', 'Orange']
sales = [150, 200, 120]

plt.bar(fruits, sales)
plt.xlabel('fruit')
plt.ylabel('sales')
plt.title('fruit sales')
plt.show()

2번. 원형 그래프 그리기

import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
sizes = [30, 25, 20, 25] # 비율

sizes 리스트의 값을 비율로 계산하여 원형 그래프를 그리며, 각 조각에 labels로 이름을 붙이고, 퍼센트(autopct)로 표시합니다(소수점 1자리로 표시). startangle=90은 90도에서 시작하도록 회전시키세요.

import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
sizes = [30, 25, 20, 25]

plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title('Pie Chart')
plt.show()

3번. 히스토그램 그리기

import matplotlib.pyplot as plt
scores = [75, 80, 85, 90, 70, 65, 95, 82, 78, 88, 72, 91, 68]

1. 점수 데이터를 5개의 구간으로 나누고, 각 구간에 해당하는 학생 수를 세어서 막대 그래프로 표시합니다.
2. 막대 테두리를 검정색으로 설정
3. x축 라벨: score
4. y축 라벨: student
5. 그래프 제목은 student score

import matplotlib.pyplot as plt
scores = [75, 80, 85, 90, 70, 65, 95, 82, 78, 88, 72, 91, 68]

plt.hist(scores, bins = 5, edgecolor = 'black')
plt.xlabel('score')
plt.ylabel('student')
plt.title('student score')
plt.show()

 

어려운 머신러닝 배우다가 오랜만에 그래프 시각화 복습을 하니 재밌어요...!

 

챌린지 문제!

1번. "분포 지표를 활용한 반도체 공정 품질 데이터 해석"

'첨단 반도체 생산 라인'에서는 포토레지스트(Photoresist) 도포 공정의 균일성(Uniformity)을 품질 지표로 관리하고 있습니다. 균일성이 낮으면 칩 수율에 치명적입니다. 엔지니어는 도포 두께의 균일성 편차를 수치화하고, 이 편차 데이터의 분포 특성을 심층적으로 분석하고자 합니다. 특히, 매우 정밀한 공정이라 이상치 하나도 수율에 큰 영향을 미칠 수 있어, 데이터의 꼬리 부분과 중앙 집중도를 면밀히 살펴보고자 합니다.

다음 중 위 시나리오에서 수집된 도포 두께의 균일성 편차 데이터의 특성을 설명한 것으로 가장 적절한 것은?

 

A. 수집된 편차 데이터의 최빈값이 평균과 중앙값보다 현저히 작다면, 이는 균일성 편차가 주로 높은 쪽으로 치우쳐 분포하며, 양의 왜도(Positive Skewness)를 가질 가능성이 높다.

B. 이 데이터의 표준편차가 낮다는 것은 편차 값들이 넓은 범위에 걸쳐 분산되어 있음을 의미하므로, 공정 균일성이 불안정하다고 판단할 수 있다.

C. 만약 이 데이터의 첨도(Kurtosis) 값이 매우 높게 나타난다면, 이는 균일성 편차 데이터가 평균 주변에 극도로 밀집되어 있고, 극단적인 이상치(Outlier)가 발생할 확률이 낮음을 시사한다.

D. 측정된 균일성 편차 데이터의 분포가 음의 왜도(Negative Skewness)를 보인다면, 이는 편차 값이 주로 낮은 쪽에 집중되어 있고, 소수의 매우 높은 편차 값들이 분포의 왼쪽 꼬리를 길게 만들었음을 의미한다.

 

해설

⭕️ A. 정답: 양의 왜도(Positive Skewness)는 데이터의 꼬리가 오른쪽으로 길게 늘어진 형태를 의미합니다. 이 경우, 대부분의 데이터가 왼쪽에 집중되어 있어 최빈값 < 중앙값 < 평균 순서의 경향을 보입니다. 즉, 최빈값(가장 자주 나타나는 값)이 평균과 중앙값보다 현저히 작다면, 데이터가 높은 쪽으로 치우쳐 있고 꼬리가 오른쪽으로 길게 늘어질 가능성이 높아 양의 왜도를 가집니다.

❌ B. 오답: 표준편차가 낮다는 것은 데이터 값들이 평균에 밀집되어 있다는 것을 의미합니다. 이는 공정 균일성이 안정적임을 시사합니다. 표준편차가 높아야 데이터가 넓게 분산되어 있다는 뜻입니다.

C. 오답: 첨도(Kurtosis) 값이 매우 높게 나타난다는 것은 데이터가 평균 주변에 극도로 밀집되어 있으면서도, 동시에 극단적인 이상치(Outlier)가 발생할 확률이 높고 분포의 꼬리가 두껍고 길다는 것을 의미합니다 (Leptokurtic 분포). 꼬리가 얇다는 것은 첨도 값이 낮음을 의미합니다.

D. 오답: 음의 왜도(Negative Skewness)는 데이터의 꼬리가 왼쪽으로 길게 늘어진 형태를 의미합니다. 이는 데이터 값이 주로 높은 쪽에 집중되어 있고, 소수의 매우 낮은 편차 값들이 분포의 왼쪽 꼬리를 길게 만들었음을 의미합니다.

2번. 공정 능력 분석 및 이상치 탐지 기법의 이해

'자동차 엔진 부품 제조업체'는 엔진 블록의 실린더 보어(Cylinder Bore) 직경을 정밀하게 관리합니다. 직경은 정규 분포를 따른다고 알려져 있으며, 고객사 규격은 90.00mm ± 0.03mm 입니다. 품질 관리팀은 공정 능력을 평가하고, 공정에서 발생하는 비정상적인 직경 값을 탐지하여 즉시 조치하고자 합니다.

 

다음 중 위 시나리오에 대한 설명으로 옳지 않은 것은?

 

1. 측정된 실린더 보어 직경 데이터의 평균과 표준편차를 이용하여 Cp(공정 능력) 및 Cpk(공정 능력 지수)를 계산하면, 현재 공정이 규격 범위 내에서 얼마나 잘 관리되고 있는지를 평가할 수 있다.

2.실린더 보어 직경이 규격 상한(USL)에 가깝게 치우쳐 있다면, Cpk값은 Cp값보다 작아지며, 이는 주로 상한을 벗어나는 불량 발생 가능성이 높음을 시사한다.

3.만약 공정 평균이 90.01mm, 표준편차가 0.01mm로 계산되었다면, 90.05mm로 측정된 실린더 보어는 Z-score가 4.0이므로 통계적으로 매우 드문 이상치(Outlier)로 판단할 수 있다.

4.IQR(사분위수 범위) 기반 이상치 탐지 방법은 데이터가 정규분포를 따른다고 가정할 때 Z-score 기반 방법보다 항상 더 정확하게 이상치를 식별한다.

 

해설

⭕️ A. 정답: Cp와 Cpk는 공정의 산포가 규격 범위 내에 얼마나 들어오는지, 그리고 공정 평균이 규격 중심에서 얼마나 벗어나 있는지를 동시에 고려하여 공정 능력을 평가하는 핵심 지표입니다.

⭕️ B. 정답: Cpk는 공정 평균이 규격 중심에서 벗어난 정도까지 고려하므로, 공정 평균이 어느 한쪽 규격 한계에 치우쳐 있으면 Cpk는 항상 Cp 보다 작거나 같아집니다. 평균이 상한에 치우치면 상한을 벗어나는 불량이, 하한에 치우치면 하한을 벗어나는 불량이 발생할 가능성이 높아집니다.

⭕️ C. 정답: Z-score 계산: (90.05−90.01)/0.01=0.04/0.01=4.0. 일반적으로 Z-score의 절댓값이 3을 초과하면 이상치로 간주합니다. 따라서 4.0은 유의미한 이상치로 볼 수 있습니다.

 D. 오답: IQR 기반 이상치 탐지(Box Plot의 기준)와 Z-score 기반 이상치 탐지(3-sigma Rule 등)는 모두 이상치를 식별하는 유용한 방법이지만, 데이터가 정규분포를 따른다고 가정할 때 Z-score 기반 방법이 항상 더 정확하다거나 우월하다고 단정할 수 없습니다.

각 방법은 고유한 기준과 가정을 가지며, 데이터의 특성과 이상치의 정의에 따라 더 적합한 방법이 다를 수 있습니다. 특히 Z-score는 평균과 표준편차에 기반하므로 극단적인 이상치에 민감하게 반응할 수 있습니다.

 

수치형 변수 변환

  1. Log 변환
    • 목적: 왜도가 있는 분포를 정규분포에 가깝게 변환
    • 적용: 양의 왜도가 큰 경우 효과적
  2. Box-Cox 변환
    • 목적: 데이터를 정규분포에 가깝게 변환
    • 적용: 양수 값에만 적용 가능
  3. 앙상블 모델

여러 모델의 예측을 결합하여 더 나은 결과를 얻는 방법

 

배깅 (Bagging: Bootstrap AGGregatING)

원래 데이터에서 여러 번 샘플링하여 다양한 데이터셋을 만들고, 각각에 대해 독립적으로 모델을 학습시킵니다. 마치 여러 의사가 각자의 경험을 바탕으로 독립적인 진단을 내리는 것과 비슷합니다.

  • 배깅: 랜덤 포레스트
    • 여러 개의 결정 트리를 독립적으로 학습
    • 각 트리가 서로 다른 데이터와 특성을 사용

부스팅 (Boosting)

이전 모델이 잘못 예측한 데이터에 더 많은 가중치를 두어 순차적으로 모델을 개선합니다. 마치 의사가 이전의 잘못된 진단으로부터 배워 진단 능력을 향상시키는 것과 유사합니다.

  • 부스팅: XGBoost, LightGBM
    • 이전 모델의 오차를 보완하는 방향으로 학습
    • 높은 예측 성능으로 실무에서 널리 사용됨

앙상블 모델의 장점

  1. 더 안정적이고 강건한 예측 가능
  2. 과적합 위험을 줄일 수 있음
  3. 더 높은 예측 성능을 얻을 수 있음

앙상블 모델의 단점

  1. 학습과 예측에 더 많은 시간과 자원이 필요
  2. 모델이 복잡해져서 해석이 어려워질 수 있음
  3. 적절한 앙상블 방법과 파라미터 선택이 중요 (하이퍼 파라미터 튜닝 필요할 수 있음)

결정 트리

의사결정 규칙을 나무 형태로 도표화한 것

  • 일련의 질문을 통해 데이터를 분류하거나 예측하는 모델
    • 마치 스무고개 게임처럼 특정 기준에 따라 데이터를 순차적으로 나누어 결론에 도달
    • 각 내부 노드는 하나의 특성(feature)에 대한 조건을 나타내며, 이 조건에 따라 데이터가 왼쪽 또는 오른쪽 가지로 분리됨
    • 트리는 불순도(지니 계수나 엔트로피)가 가장 크게 감소하는 방향으로 특성과 분할 기준을 선택하면서 성장하며, 이 과정은 특정 종료 조건(최대 깊이, 최소 샘플 수 등)에 도달할 때까지 반복됩니다.
  • 결정 트리 장단점
    • 장점 : 모델의 의사결정 과정을 시각적으로 표현할 수 있어 해석이 쉽다
    • 단점 : 과적합되기 쉽다
      • 해결 방법 : 가지치기(pruning)와 같은 기법을 사용합니다.
  • 분류와 회귀 문제 모두에 사용할 수 있으며, 수치형과 범주형 변수를 자연스럽게 처리할 수 있다는 장점도 있습니다. 결정 트리는 단독으로도 사용되지만, 랜덤 포레스트나 그래디언트 부스팅과 같은 더 강력한 앙상블 모델의 기본 구성 요소로도 널리 활용
  • 불순도
    • 각 노드에서 데이터가 얼마나 섞여있는지를 측정하는 지표
    • 노드에 포함된 데이터가 단일 클래스로만 구성되면 불순도는 0
    • 모든 클래스가 균등하게 섞여 있으면 불순도는 최대

랜덤 포레스트

여러 개의 결정 트리를 생성하고, 이들의 예측을 종합하여 최종 결정을 내리는 앙상블 모델

 

랜덤 포레스트 작동 원리

  1. 부트스트랩 샘플링 (Bootstrap Sampling)
    • 원본 데이터에서 복원 추출로 여러 개의 학습 데이터셋을 생성
    • 예를 들어, 10,000명의 대출 데이터가 있다면, 각 트리는 10,000개의 무작위 샘플(중복 허용)로 학습
    • 이 과정에서 일부 데이터는 여러 번 선택되고, 일부는 선택되지 않을 수 있음
  2. 특성의 무작위 선택 (Random Feature Selection)
    • 각 분기점에서 가용한 모든 특성이 아닌 일부 특성만 고려합니다
    • 예를 들어, 총 20개의 특성(소득, 나이, 신용점수 등) 중 무작위로 5개만 선택하여 최적 분할을 찾습니다
    • 이를 통해 각 트리가 서로 다른 관점에서 데이터를 바라보게 됩니다
  3. 개별 트리의 학습
    • 트리 1: 소득과 DTI를 중요하게 고려
    • 트리 2: 연체이력과 LTV를 중점적으로 평가
    • 트리 3: 신용점수와 직장 안정성을 주로 확인
  4. 앙상블 예측 (Ensemble Prediction)
    • 분류 문제: 각 트리의 예측을 투표로 결정 (예: 100개 트리 중 65개가 '상환가능' 예측)
    • 회귀 문제: 각 트리의 예측 평균 사용 (예: 상환 확률 평균 65%)

랜덤 포레스트 장단점

  • 장점
    • 과적합 위험이 낮음 (여러 트리의 예측을 평균내기 때문) 여러 트리의 예측을 평균 내어 안정적인 예측 성능을 보장함. 개별 트리의 오류가 상쇄되어 일반화 성능이 향상됨
    • 특성 중요도를 쉽게 계산할 수 있음 각 특성이 예측에 미치는 영향을 수치화하여 제공, 중요 변수를 쉽게 파악 가능
    • 이상치에 강건함 여러 트리의 앙상블 특성으로 인해 이상치나 노이즈에 강건한 예측 가능
    • 대규모 데이터셋에서도 잘 작동함 대규모 데이터셋에서도 안정적인 성능으로 보이며, 병렬 처리를 통해 학습 효율을 높일 수 있음
  • 단점
    • 계산 비용과 자원 요구량 다수의 트리를 동시에 운용해야 하므로 메모리와 처리 시간이 많이 필요합니다. 예를 들어 100개의 트리를 사용할 경우, 단일 트리 대비 100배의 자원이 필요할 수 있습니다.
    • 모델의 복잡성과 해석의 어려움 각 트리가 서로 다른 특성과 기준으로 예측을 하기 때문에, 최종 결정의 정확한 이유를 설명하기 힘듦. 예를 들어, 대출 거절 사유를 고객에게 명확하게 설명해야 하는 상황에서 "여러 요인을 종합적으로 고려했을 때"라는 모호한 설명밖에 할 수 없음. 이는 금융 규제가 엄격한 환경에서 중요한 단점이 될 수 있음
    • 하이퍼파라미터 튜닝의 복잡성 최적의 성능을 얻기 위해서는 여러 하이퍼파라미터(트리의 개수, 최대 깊이, 최소 샘플 수 등)를 적절히 설정해야함. 예를 들어, 트리 수를 100개에서 1,000개로 늘리면 성능이 향상될 수 있지만, 어느 정도가 최적인지 찾기 위해서는 많은 실험과 시간이 필요

들어보기는 했는데 잘 모르는 내용이라 복습이 필요하네요.. 어려워용 쿄쿄

 

오늘도 수고 많으셨습니다!!!!!

주말 잘 보내시고 월요일에 뵐게요!!