품질관리(QAQC) 데이터 부트캠프(본캠프)

본캠프_5주차(목)_TIL

Wat_zy 2025. 10. 16. 09:03

✅ 오늘 한 것

알고리즘 문제, 기초 프로젝트(대본 작성 & 영상 촬영), 개인 과제 피드백 


✏️ 오늘 배운 점

def solution(n):
    list = []
    while n > 0:
        list.append(n%3)
        n = n // 3
    list = list[::-1]
    result = 0
    for i, value in enumerate(list):
        result += (3**i)*value
    return result

숫자 n을 3진법을 사용하여 배열한 이후 3진법으로 변환된 숫자를 뒤집어 다시 10진법으로 바꾸는 문제였다.

3진법이라고 하였기에 낮은 n을 예시로 3을 나눠보며 어떠한 흐름으로 만들어지는지 확인한 이후에 코드 작성을 진행하여 n >0일 때, list에는 나머지를 추가하면서 n은 3으로 계속 나눠준다면 3진법으로 만들어진 리스트를 받아볼 수 있으며 이를 슬라이싱을 활용하여 뒤집어준 후 인덱스와 값을 한번에 불러올 수 있는 enumerate()를 활용하여 result 변수에 10진법으로 만들어지는 수를 담아서 반환할 수 있었다.


마지막으로 ppt에 작성된 내용을 읽어보면서 오타를 수정하고 더 나은 문장으로 작성이 가능하다면 수정을 진행하는 등 여러 가지 변환점을 적용시켰다.

이후 ppt 슬라이드 별로 적절한 대본 작성을 진행하여 금요일에 진행할 기초 프로젝트 발표에 있어 마지막 준비를 완료하였다.

발표 스크립트

1 “안녕하십니까. 저희는 ‘데이터가 이끄는 품질 혁신: 비용 절감과 고객 만족을 위한 데이터 기반 전략 제안’을 발표할 3조입니다. 오늘은 제조 결함 데이터를 통해 어떻게 비용을 줄이고 고객 만족을 높였는지 말씀드리겠습니다.”
2

“본 프로젝트는 임영재 튜터님과 조은정 튜터님의 지도 아래, 저희 팀원 윤우경, 이규환, 장우석, 김종욱님이 함께 진행했습니다. 각자 데이터 분석, 시각화, 보고서 통합, 발표를 분담하며 효율적으로 협력했습니다.”
3 “발표는 프로젝트 개요, 팀 구성과 역할, 수행 절차, 분석 과정과 결과, 그리고 마지막으로 자체 평가 순으로 진행하겠습니다.
4

“저희의 목표는 ‘비용 절감’과 ‘고객 만족 향상’입니다. 이를 위해 제조 결함 데이터를 분석했으며, 공정상의 문제를 수치적으로 밝혀내고 데이터 기반 개선 전략을 수립하는 것을 중점으로 했습니다.”
  데이터 분석을 시작하기 전, 다섯 가지 가설을 세웠습니다. 

비용 절감을 위한 가설로
첫째, 모든 결함이 비용에 미치는 영향은 다를 것이다.
둘째, 특정 결함은 공정상의 근본적인 원인과 강한 상관관계를 보일 것이다.
셋째, 현재의 검사 방식이 비효율적으로 운영되고 있을 것이다.

고객 만족 향상을 위한 가설로
넷째, 현재의 심각도 등급은 실제 재무적 손실을 제대로 반영하지 못할 것이다.
다섯번째, 대시보드를 구축하면 장기적인 고객 만족도를 올릴 수 있을 것이다.

지금부터 데이터 분석 프로세스에 따라 저희가 이 가설들을 어떻게 증명하고 해결책을 찾아냈는지 보여드리겠습니다."
5 “저희는 역할을 체계적으로 분담했습니다. 우경님은 데이터 분석을, 우석님은 분석 설계 담당을, 종욱님은 개선안 설계를 담당했고, 저는 총괄을 맡으며 협업 과정에서 서로의 역량을 보완했습니다.”
6 “이번 기초 프로젝트는 10월 3일부터 16일, 추석 연휴를 사이에 두고 총 2주의 기간동안 프로젝트를 진행하였습니다.”
7 “데이터 분석으로는 파이썬을 이용해 info(), describe(), head(), isnull().sum(), duplicated()을 통해 데이터를 전반적으로 점검했습니다. 1,000건의 데이터 중 결측치와 중복이 모두 0건으로 데이터 타입 또한 무결한 데이터셋이었기에 데이터 분석으로 바로 넘어갈 수 있었습니다.”
8 품질 지표는 진양성률을 통해 확인하고자 하였습니다.
이는 불량을 정확히 불량으로 판별한 비율을 의미하며,
검사 공정이 얼마나 정확하게 작동하는지를 평가하는 데 활용했습니다.


분석은 Pandas, Seaborn, Matplotlib를 사용했습니다. Python은 대용량 데이터 처리와 시각화에 강점이 있으며, 이를 통해 결함 간의 상관관계와 비용 변동을 직관적으로 확인할 수 있었습니다.

공정 분석 기법으로는 결함이 발생하게 된 근본 원인을 분석하여 결함 빈도수를 줄이고 전체적인 비용 절감을 목표로 하였습니다.

개선 전략으로는 AI 기반 기술 도입과 스마트 팩토리를 활용하여 검사 정확도를 향상시켜 핵심 목표인 비용 절감으로 이어질 수 있도록 하였습니다.
9 저희 에게 데이터를 맡긴 큐파르타 제조 공장은 최근 불량률 증가로 생산 비용이 급등하고 고객 만족도가 하락한 상황이었습니다. 저희의 분석 목표는 불량률을 줄이고 검사 공정을 최적화해 비용을 줄이며, 고객 신뢰를 회복하는 것입니다.”
10 “저희는 분석에 앞서 ‘위치와 심각도에 따라 비용을 크게 차지하는 결함이 있을 것이다’
라는 가설을 세워서 결함, 심각도, 위치를 그룹화 하여 평균 수리비 계산을 했습니다. 결함 위치별 평균 수리비를 비교한 결과, 내부 결함은 심각도가 낮아도 수리비가 높았고, 부품 결함은 심각도가 높을수록 비용이 급증했습니다. 특히 표면 결함은 심각도와 무관하게 항상 높은 비용을 보여, 추가 분석이 필요했습니다.”
11 “그래서 최대 출혈점을 찾은후 이러한 표면 결함은 우연이 아닐 것이라고 생각하여
특정 결함 유형과 강한 상관관계를 가질 것이라고 생각하여 결함 유형과 위치 간 상관관계를 분석했습니다. 그 결과 표면 결함은 구조 및 외관 결함과 높은 상관관계를 보였고, 내부·부품 결함은 기능적 결함과 연관이 깊었습니다. 이를 통해 표면 결함은 구조·외관 개선으로, 내부 결함은 기능 개선으로 줄일 수 있음을 확인했습니다.”
12 저희는 비용 절감을 위해 가장 많이 비용이 드는 결함을 파악하고 구조 결함이 현재 검사 방식에 비효율적이지 않을 거라고는 가설을 세웠습니다. 
13 “구조 결함 검사 방식별 자원 투입을 분석한 결과, 전체 검사 인력의 70%가 수동 검사에 집중되어 있었습니다. 그러나 수동 검사 성과는 자동 검사와 유사했습니다. 즉, 인력 투입 대비 효율이 낮았던 것입니다.”
  “자동화 검사는 구조·외관 결함 탐지에 강점을 보였고, 수동 검사는 기능 결함에 더 적합했습니다. 따라서 자동화 검사에는 외관 결함 중심 검사를 맡기고, 수동 검사는 기능 결함 검사로 역할을 재정의해야 효율이 높아집니다.”
14 지금까지의 가설과 전처리, 시각화를 바탕으로 수동 검사 비율을 줄이고 자동 검사 비율을 높였을 때의 예상 검사 비용을 시각화로 만들었습니다.
초반에는 자동검사가 설비 투자로 인해 높은 비용이 발생하지만, 생산량이 약 2,857개를 넘어서면 수동 검사보다 비용 절감 효과가 나타나는 것을 확인할 수 있었습니다. 그래서 총합 하여  첫째는 효율성 둘째는 검사 전문성  셋째는 미래성장이라는 근거로 공장 자동화를 해야한다는 것을 알 수 있었습니다.
15 또한 현재 심각도는 고객의 고통과 재무적 손실을 반영하지 못하는 것을 파악하여 결함의 발생 빈도와 평균 수리비를 결합한 새로운 위험 우선순위 지수, RPN을 도입했습니다. RPN 순위로 재정렬하자, 기존에 간과된 결함이 상위에 올랐습니다. 이로써 고객 관점의 품질 관리 우선순위를 새롭게 정의할 수 있었습니다.”
16 저희는 앞으로 고객 만족도를 향상 시키고자 실시간 대시보드를 구축하고 정기적으로 리뷰한다면 사전 예방 조직으로 장기적인 고객 만족도를 달성 할 수 있다고 생각합니다. 그래서 시계열데이터로 데이터를 한눈에 보이게 대시보드를 만들었습니다.
17 “해당 그래프는 검사방법에 따른 결함유형을 나타낸 시계열 데이터인데, 평균을 넘는 데이터 포인트들이 규칙적으로 확인되었습니다. 
18

이러한 변동 패턴은 특히 수동 검사 부문에서 주로 관찰되는 현상으로, 단순히 공정 과정상의 문제만을 의미하는 것이 아니라 인적오류가 주기적으로 발생할 가능성을 암시합니다. 다양한 가능성이 존재하지만 QC직원이 진행하는 수동 검사의 경우, 교대 변경 직후, 신입 작업자 투입 시기, 장비 보정 주기 만료 시점 등 결함 발생이 집중되는 경향이 흔하게 관찰될 수 있습니다. 즉, 사람의 숙련도나 작업환경 변화가 품질에 직접적인 영향을 미치기 때문에 작업자 교육 강화 및 교대 간 품질 일관성 관리가 굉장히 중요한 요소가 될 수 있겠습니다.”
19 월별 결함 위치별 수리비를 보면 표면과 부품의 결함 수리비는 1분기때 관찰된 문제를 다음 분기 때 어느 정도 잡은 것을 볼 수 있지만, 아직 수리비가 우상향을 띄고 있어 해결책을 강구할 필요가 있습니다. 여기서 가장 시급한 문제점은 내부 결함의 수리비는 계속 증가하고 있으며 3분기에는 이것을 대응하여 결함을 줄일 방법이 필요하다는 점입니다.
20 “이번 분석을 통해 저희 팀은 AI 기반 검사 자동화와 스마트 공정 구축을 핵심 개선 방향으로 제시했습니다.

먼저, 비접촉 비파괴검사(NDT)에 AI를 접목하면 생산 속도를 유지한 채 검사 비용을 줄일 수 있습니다. 또한, 자동 검사 알고리즘의 정밀도를 높여 오탐지율을 낮추면 불필요한 수리와 재작업을 줄여 진양성률을 효과적으로 개선할 수 있습니다.

다음으로, 스마트 팩토리화를 통한 공정 자동화입니다. AI 기반 고해상도 검사 시스템을 활용하면 미세한 결함을 실시간으로 감지하고, 라인 내 자동 보정을 통해 불량품 유입을 즉시 차단할 수 있습니다. 로봇과 공정 툴은 토크나 전류 같은 핵심 변수를 정밀하게 제어해 오차가 발생하면 즉시 작업을 중단시켜 제조 오류를 최소화합니다.

마지막으로, 고객 서비스(CS) 측면의 대응 강화입니다. 제조 과정에서 결함을 100% 제거하는 것은 어렵기 때문에, 신속한 대응과 투명한 피드백을 통해 고객 만족도를 높이는 것이 중요합니다. 이를 통해 제품 신뢰도와 브랜드 이미지를 함께 향상시킬 수 있습니다.

결국, 수동검사보다는 AI 기술을 중심으로 한 검사·공정·서비스의 고도화가 생산 품질과 효율을 동시에 끌어올릴 핵심 전략이라고 할 수 있습니다.”
21 “해당 자료들은 저희가 발견한 인사이트 도메인 지식을 첨가하기 위해 사용한 자료들로, 실제 공정에서 결함을 대처하는 방법과 관련 사례들을 알아보았습니다. 결함 유형별 불량율을 낮추는 방법을 알아보며 다양한 방법의 결함개선법을 참고하여 현실적인 개선안을 제시해보았습니다.”
22 “저희는 프로젝트 초기에 작성한 기획서를 충실히 따르며, 여러 가설을 세우고 이를 검증하는 과정을 통해 다양한 인사이트와 개선안을 도출할 수 있었습니다. 하지만, 개별적으로 가설에 대한 분석을 진행한 이후 코드를 통합하여 상당한 시간이 소요되었다는 단점도 존재했습니다. 처음 진행한 프로젝트로 어려움도 많았지만, 향후 대시보드 구축과 지수 평활법을 활용한 심화 분석을 진행한다면 한층 더 성장할 수 있을 것이라 생각합니다.”
23 “프로젝트 결과물의 완성도 평가에서는 평균 8.3점을 받아 비교적 높은 평가를 받았습니다. 이번 프로젝트를 선택한 이유는 도메인이 겹치지 않는 선에서 결함 데이터 분석을 경험해보고자 결정했는데, 도메인에 대한 지식이 부족해 튜터님들의 피드백을 충분히 반영하지 못한 점이 작은 아쉬움으로 남았습니다.”
24 “프로젝트 진행 중에는 팀원 모두가 시각화 작업에 참여하며 높은 참여도를 보였습니다. 이번 경험을 통해 분석의 전반적인 흐름과 실무 프로젝트의 구조를 이해하게 되었고, 이는 큰 성장의 기회가 되었다고 생각합니다.”
25 “마지막으로 프로젝트의 개선점에 대해 말씀드리면 협업 초기 단계에서 코드 스타일의 표준화와 도메인 지식의 보강이 필요하다고 생각합니다. 또한 향후 스파르타 강의를 통해 대시보드 기술을 심화 학습하여 실무에서 활용 가능한 시스템으로 발전시키고자 합니다. 
이상으로 3조의 발표를 마치겠습니다. 감사합니다.”

위와 같은 스크립트를 가지고 내일 발표를 진행하여 처음으로 제대로 구성된 프로젝트를 완료할 수 있게 되었다.


문제1-2) 해당 문제의 아래 코드부분에서 오류가 있었는데요,

# 2) Temperature 열 결측치를 해당 열의 평균값으로 대체

df.describe()

df = df['Temperature'].fillna(df['Temperature'].mean())

 

이렇게 하면 DataFrame 전체를 덮어쓰게되면서 df가 Temperature 열만 남은 "Series" 유형으로 바뀌어요.

따라서

df['Temperature'] = df['Temperature'].fillna(df['Temperature'].mean())

이렇게 df의 ['Temperature'] 만 덮어써야 합니다.

 

Replace함수는 잘 사용하고 있습니다.

이런 함수들은 자주쓰면 손이 기억하지만 안에 파라미터 순서에 대해서 까먹는 경우도 있는데요 (보통 사용법에 대해 colab의 경우 마우스오버하면 나오지만..)

df['Defects'] = df['Defects'].replace(9999, np.nan)

이런 코드가 있다고 했을 때 함수들은 보통 "개체.replace( A,B ) " 이런식으로 글자를 왼쪽에서 오른쪽으로 읽는 것처럼 A를 B로 대체하겠다! 이렇게 생각하시면 대부분의 함수 파라미터 순서 외우기가 쉬울 겁니다.

 

3-1 문제)

"생산량은 1000~1025에 66% 정도 분포하고, 1225~1250에 33% 정도 분포한다."라고 해주셨는데 이 숫자들의 의미가 어떤 것인지 더 구체적으로 써주면 좋을 것 같아요.

예를 들어,"표본 수가 3개로 매우 적고, 전체 데이터셋에도 결측치가 존재하여 현재 데이터만으로 생산량의 특징을 결론짓는 것은 매우 위험하다. 정확한 분석을 위해서는 더 많은 데이터 수집과 결측치 발생 원인 파악이 선행되어야 한다." 이런식으로 그래프의 의미에 대해 현업과 소통하듯이 얘기하면 좋습니다.

 

현업과는 통계용어는 최대한 빼고 원인,결과 직관적으로 / 같은 직무분과는 아는 용어로 얘기하면 좋습니다. " describe() 결과를 보면 평균(mean, 1085)이 중앙값(50%, 1006)보다 훨씬 높습니다. 이는 소수의 높은 값(1248) 하나가 평균을 왜곡시키고 있다고 볼 수 있습니다. 따라서 이 데이터에서는 평균보다 중앙값(median)이 데이터의 중심을 더 잘 대표한다고 말할 수 있습니다. " 이런 느낌으로도 많이 얘기해요.

 

3-2문제) "결함률은 Low, Medium, High 부분에서 모두 33.3%로 동일한 수치를 나타내고 있다" 라고 해석을 작성해주셨는데 주석에 추가로

# 이처럼 균등한 분포는 데이터 처리 과정에서 분위수를 기준으로 데이터를 3등분했기 때문에 나타난 결과로 해석됩니다.

# 따라서 이 결과만으로 '불량률 발생 빈도가 모든 구간에서 동일하다'고 결론짓기에는 무리가 있습니다. 이렇게 그래프 자체에 대한 내용(범주 카테고리 이름과 % ) + 그래프가 의미하는 바 ( 불량률 발생 빈도가 모든 구간 동일하다고 단정X) 이렇게 작성하시면 좋을 것 같습니다.

 


📌추가로 해야할 점

기초 프로젝트 발표, SQLD

'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글

본캠프_6주차(월)_TIL  (0) 2025.10.20
본캠프_5주차(금)_TIL  (0) 2025.10.17
본캠프_5주차(수)_TIL  (0) 2025.10.15
본캠프_5주차(화)_TIL  (0) 2025.10.14
본캠프_5주차(월)_TIL  (0) 2025.10.13