내일배움캠프(QC,QA_5기)

[내일배움캠프_QA/QC 5기] 31일차 _ AI 리터러시 | 기초 통계 4강, 5강, 6강

qc-standard 2026. 4. 20. 21:05

2026/04/20 Mon.

● 문제 대체 코드카타 2문제
● 머신러닝 기초 완강
● AI 리터러시 / 데이터 리터러시 완강
기사 시험 접수
● 라이브세션 복습
 주간 목표 ↓
   자격증 공부

 


⊙ 코드카타 2문제

https://qc-standard.tistory.com/58

 


⊙ AI 리터러시

● 1강

더보기

☑️ AI?

  • 능동적으로 비선형 상황을 처리하는 SW
  • 선형 : 단편적으로 표현가능한 상황
    비선형 : 단편적으로 표현하기 어려운 문제

☑️ 규칙기반과 패턴 학습

  • 기계 학습 :지도학습(규칙기반) / 비지도학습(패턴기반) / 강화학습(보상기반)
  • 지도 학습 = 규칙 기반
    : 
    기술자의 의도대로 규칙기반 / 정답 데이터를 알려주며 해당 로직을 수행하도록 학습시키는 방법
    : 
    장점 -  특정 상황에 빠르고 정확하게 처리 단점 유연성이 떨어질 수 있다
    : 
    단점 - 정답셋이 있어야한다
    : 
    ex - 스팸 메일 분류, 질병진단 등
  • 비지도 학습 = 패턴 기반
    : 특정 군집, 패턴을 인식 / 많은 정보 속에서 특정 공통점 차이점 인식
    : 장점 - 정답 데이터 필요 없음
    : 단점 - 명확한 정답이 없어서 해석하기 나름
    : ex - 상품 추천, 범죄위험 지역 예측 
  • 상황에 따라 규칙/패턴 학습 모두 사용 → 복합 학습방법 사용하는 추세

☑️ 분류형 / 생성형 AI 사례

  • 분류형 = 분류 최적화 : 그림, 글(스팸), 신호(심전도) 등 다양한 정보 분류 - ex) SVM / NAIVE BAYES
    생성형 = 생성 최적화 : 어떤 직접 산출물이 발생하면 다 생성형 - ex) LLM - GPT/GROK/CLOUDE

☑️ 내 직무에서 사용하는 AI를 조사할 것

🔬 도메인 : 제약 / 바이오

1. 분석 데이터 처리 & 이상 탐지

  • HPLC, GC, UV 등 시험 데이터 자동 해석
  • 이상 패턴(Outlier) 감지
  • OOS(Out of Specification) 예측

✔ 대표 솔루션

  • Watson
    → 품질 데이터 분석 및 이상 패턴 탐지 (글로벌 제약에서 활용)
  • SAS
    → 통계 기반 QC 데이터 분석 (공정/시험 결과 분석)
  • Spotfire
    → QC 데이터 시각화 + AI 기반 패턴 분석

2. 실험 자동화 + 스마트 QC주요

  • 시험 자동화
  • 실험 조건 최적화
  • 반복 시험 최소화

○ 대표 기술

  • Thermo Fisher Scientific
  • Agilent Technologies
👉 이 회사들의 장비(HPLC, GC)에 AI 기능이 붙으면서
  • 자동 피크 분석
  • 자동 적합성 판단
    같은 기능이 점점 강화되는 중

3. 공정 품질 예측 (PAT + AI)

  • 제조 중 품질 예측 (Real-time release testing)
  • 배치 실패 예방

 관련 개념

  • Process Analytical Technology
  • 머신러닝 기반 품질 예측 모델
👉 QC보다는 QC + 생산 사이 영역
👉 앞으로 QC 업무를 많이 바꿀 핵심 기술

4. 문서 자동화 & GMP 대응

  • 시험 기록서 자동 작성
  • deviation/OOS 보고서 초안 생성
  • 규정(GMP) 체크

○ 사용되는 도구

  • ChatGPT
  • Microsoft Copilot
👉 실제로 QC에서
  • SOP 정리
  • 보고서 작성
  • 감사 대응 준비
    이쪽에서 활용 증가 중

5. 미생물 QC - (✔ 요즘 뜨는 분야)

  • Colony 자동 카운팅
  • 미생물 동정
  • 오염 탐지

○ 관련 기술

  • 이미지 분석 AI (Computer Vision)
👉 전통적으로 사람 눈으로 하던 영역 → AI로 빠르게 대체 중

📌 핵심 정리 (현실적인 관점)

  1. 데이터 분석 보조 (가장 많이 사용)
  2. 시험 자동화 (장비 중심)
  3. 문서 작성 효율화
  4. 미생물 검사 자동화 (성장 중)
👉 QC 담당자의 업무를 더 빠르고 정확하게 만드는 도구 수준

 

● 2강

더보기

● 생성형 AI와 LLM의 원리

 

☑️ LLM

  • Large Laanguage Model = 거대 언어 모델
  • 사람의 언어를 인식하고 이해해서 답변하는 ai 모델 언어를 먹고 언어를 뱉는 AI - 보통 생성형 AI
  • SW는 예측할뿐 언어를 이해하는건 아님 - 기계적 측면 이해=문맥을 분석 해 다음 문장을 예측
  • ex) 눈을 감다 = 눈 + 을 + 감 + 다  + 눈을 + 감다로 하나하나 쪼개서 분석하여 기계적 이해
    문장을 수치화(벡터화)하는 방법 - 임베딩
    임베딩한 정보를 트랜스포머 연산을 통해 이해
    트랜스포머 알고리즘은 실제 의미를 조합하기 위한 로직

☑️ Fine-tuning, RAG

  • LLM 성능을 높이기 위한 대표적인 방법
  • Fine-tuning(미세조정)
    : LLM의 특정 매개변수를 수정하는 작업 = LLM 자체 알고리즘 조정
    : 새로운 Data set 학습, LLM 답변 자유도 값(Temperature) 수정, LLM 답변 최대 길이를 수정하거나,,,,,
    : 장점 - 비교적 작업 속도가 빠르다 매개변수만 조정하면 되니까
    : 단점 - 결과를 보는데까지 시간이 오래걸림 → 결과가 마음에 들지 않으면 새로 미세조정해야함
  • RAG(레그)(검색증강생성)
    : LLM이 참고해서 답변을 만들 수 있는 새로운 정보 장을 활용하는 방법 = 기존 학습된 내용에 추가적인 정보를 주는 것
    : 단순 스크래핑이 아닌 LLM이 스스로 학습해서 가공하여 다시 보여주는게 RAG
    : 장점 - 별도의 학습을 시키지 않아도 됨
    : 단점 - RAG 설계, 구축, 적용, 유지보수 작업 필요 - 이 비용이 정말 많이 듦
  • 기술자는 두 방법을 모두 사용하는 추세

 

● 3강

더보기

☑️ 프롬프트?

  • 프롬프트 엔지니어링 = 지시문 공학
  • LLM한테 입력하는 모든 문장이 사실 프롬프트
  • LLM의 정체성, 주임무, 사용자 설정을 하기 위해서 프롬프트 = LLM에게 던지는 지시문

☑️ 프롬프트 요소

  1. instruction(지시) - LLM이 수행해야하느 명령 
  2. input Data(입력값) - LLM이 받아 들일 값, 그림, 글 등등
  3. context(문맥) - 추가적인 정보, 어조, 말투
  4. output indicator(출력지시자) - 출력 틀, 양식
  5. example(예시) - 사용자가 원하는 추가적인 예시
    (항상 구성요소가 적용되지는 않음)

☑️ 매개변수

  • 자유도(Temperature) : LLM 답변 자유도를 설정하는 값
    : 자유도가 높으면 환각(=AI가 헛소리하는거) 발생
    : 자유도가 너무 낮으면 추론 능력이 낮음
  • 최대토큰수(token)수 : LLM이 소화할 수 있는 최대 토큰 수
    : 토큰 LLM이 문장을 자르는 기준
    : LLM 용량이 클수록 토큰 수를 늘릴 수 있음

☑️ 프롬프트 기법 종류

프롬프트 조정활동 = 프롬프트 엔지니어링

  • < zero shot prompting >
    : 모델에 예시 없이 원하는 작업을 지시하는 일반적인 기법사전 학습된 일반적인 지식만으로 문제 해결하는 방법
    : GPT한테 하던 프롬프트
    : 장점 - 별도의 학습을 수행하지 않고 명료하게 작성하면 되므로 사용자 입장에서 직관적으로 간편
    : 단점 - LLM의 기존 학습된 내용에 오로지 의존
  • < Few shot prompting >
    : 프롬프트 내에 소수의 관련 예시를 포함시켜서 aI 모델 성능을 향상시키느 프롬프트 엔지니어링 기법
    : 장점 - 예시를 포함하여 다음 출력 결과를 예상할 수 있음
    : 단점 - 예시가 명확해야하며 정확한 답변을 원할 수록 더 많은 예시와 예외처리 필요
  • < chain-of-thought Prompting (생각의 사슬) = COT >
    : 복잡한 문제를 해결할 때, 정답을 바로 제시하는 대신 사고 과정을 단계별로 거쳐 추론하도록 유도하는 방식
    : = 답을 내놔!!가 아닌 어떤식으로 답변을 생각했는지 과정까지 줘, 추론 근거를 붙여줘
    : 장점 - LLM이 추론해 나가는 과정을 볼 수 있어 만약 잘못 추론한 부분이 있으면 피드백하기 쉬움
    : 단점 - 필요없는 내용까지 방대해질 수 있으며 답변 후처리 가공이 필요할 수 있음
  • < Tree of Thoughts(생각의 나무)=TOT >
    : 복잡한 문제를 해결 과정을 나무처럼 여러가지 가능성을 탐색하고 최적의 경로를 찾는 방식
    : 장점 - 여러 해결책을 구할 수 있음 
    : 단점 - 어느답이 가장 적절한지 환각은 없는지 검증을 해야하거나 검증이 어려움
    : 답변 방법 가지 수를 제한하는 방법도 꽤 좋음
  • < Structured Prompting(구조화 지시) >
    : 구조를 갖춰서 절차지향적으로 프롬프트를 작성하는 방법 = 기계가 이해하기 쉬운 프롬프트
    : 장점 - LLM이 절차를 수행하는데 가장 직관적인 방법
    : 단점 - 사람보다는 기계 입장의 프롬프트를 이해하도록 작성하는데 초점이 맞춰져 있음
  • < Generated Knowledge Prompting(지식 생성) >
    : 응답 정확도와 추론 능력을 향상시키기 위한 프롬프트 엔지니어링 기법
    : = 추론하는 과정을 한번 더 점검할 수 있도록 도와주고 사용자가 약간의 정보를 더해 줌
    : = 학습을 하면서 답변할 수 있도록 해주는 기법
    : 장점 - 모델이 지식을 정리하고 사고 기반을 만들기 때무에 정확도와 추론력 향상에 도움
    : 단점 - 생선된 지식이 부정확할 경우 잘못된 정보를 기반으로 답이 더 크게 틀릴 위험

 

● 4강

더보기

☑️ 실습

  • Do!! 찾아!! - 명령조 형태가 더 잘 찾음

☑️ 과제 - 취득하고 싶은 자격증에 대한 요점 요약 핵심 암기노트 만들기

  • Do!! 찾아!! - 명령조 형태가 더 잘 찾음
  •  
  • 빅데이터 분석 기사에 대해 알려줘 : 제로샷
  • 빅데이터 분석기사를 학습할꺼야(배경지식) 이 자격증을 취득하기 위해 요점 정리하는 꿀팁 알려줘
    (퓨 샷)
    - 요점 정리에서 2020년도 미만 자료는 제거해
    - 요점정리 할 때는 목록으로 표시해 (list 형식으로)
  • (COT기법)
    빅데이터 분석기사를 학습할꺼야(배경지식) 이 자격증을 취득하기 위해 요점 정리하는 꿀팁 알려줘
    - 너의 추론 과정을 알고 싶다/답변과정을 보여줘
  • 2025년 최신 ai 동향 자료에 대해서 요약해서 찾아
  • (스트럭처드 프롬프팅)
    위 자료를 바탕으로 보고서를 만들어라

    {
    "system" : "너는 AI 관련 자료 보고서를 작성하는 전문가이다.",
    "user" : "위 자료를 바탕으로 보고서를 만들어라"
    "data" : "1. 보고서 양식은 '요약보고서'이다"
                          " 2. 날짜는 오늘 날짜로 작성"
    "3. 작성자는 르탄이"
    "4. 속성은 개요, 구성요소 내용 근거 인용"
    "5. 제익 마지막에 결제란"
    }
  • 위 자료를 (제로샷) 편집할 수 있게 해라 - 보고서를 보면서 수정할 수 있음
    단 근거를 첨부할 때는 너가 어떻게, 왜 그렇게 추론했는지 과정을 나한테 설명해라.

☑️ 과제 - 취득하고 싶은 자격증에 대한 요점 요약 핵심 암기노트 만들기

  • <퓨 샷 프롬프팅>
    품질경영기사 바이오화학제품제조기사 AdsP 산업안전기사 4개의 자격증에 대해 알려줘
    -각 시험 구성에 시험 시간, 과목을 넣어서 줘

1. 품질경영기사

① 필기시험 (객관식, 과목당 20문항)
  • 시험시간: 총 150분 (과목당 약 30분)
  • 과목
    1. 통계적 품질관리
    2. 품질경영
    3. 생산관리
    4. 신뢰성관리
    5. 실험계획법
② 실기시험 (필답형 + 작업형)
  • 시험시간: 약 2시간 30분
  • 내용:
    • 품질관리 계산 문제 (핵심)
    • 공정능력, 관리도, 샘플링 등 실무형 문제
👉 특징:
→ “계산 + 이론 혼합형” (특히 계산 비중 매우 큼)

2. 품질경영기사

① 필기시험 (객관식)
  • 시험시간: 총 150분
  • 과목
    1. 생물공학개론
    2. 미생물공학
    3. 생화학
    4. 생물반응공학
    5. 분리정제공정
② 실기시험 (필답형)
  • 시험시간: 약 2시간
  • 내용:
    • 배양공정, 효소반응, 반응속도식
    • 공정 계산 및 이론 서술
👉 특징:
→ “전공 깊이 + 공정 이해” 중심

3. AdsP(데이터분석 준전문가)

① 필기시험 (객관식)
  • 시험시간: 90분
  • 문항: 총 50문항
  • 과목
    1. 데이터 이해
    2. 데이터 분석 기획
    3. 데이터 분석
👉 특징:
→ 계산보다 “개념 + 용어 + 흐름” 위주
→ SQL, 통계 기초 조금 포함

※ 실기 없음 (필기 1회로 끝)

4. 산업안전기사

① 필기시험 (객관식)
  • 시험시간: 총 150분
  • 과목
    1. 산업안전관리론
    2. 인간공학 및 시스템안전공학
    3. 기계위험방지기술
    4. 전기위험방지기술
    5. 화학설비위험방지기술
② 실기시험 (필답형 + 작업형)
  • 시험시간: 약 2시간 30분
  • 내용:
    • 법규 암기 (중요)
    • 재해 사례 분석
    • 계산 문제 일부 포함
👉 특징:
→ “암기 비중 매우 높음 + 법규 싸움”
  • <퓨 샷 프롬프팅>
    4개 자격증 동시에 준비하는 현실적인 공부 순서를 시험 날짜, 교안, 참고사항들을 고려해 하루 공부 루틴을 짜줘
    - 시험 날짜 :
    - 참고  : 식후 혈당스파이크의 영향을 매우 많이 받아 졸음이 심한편
    - 참고 : 점심시간 PM 1~2 | 저녁시간 PM 6~7
    - 참고 : 교안

🔥 전체 전략 (시험 날짜 기준 우선순위)

1순위

  • 품질경영기사 → 계산

2순위

  • AdsP → 암기 + 개념 (막판 몰아치기 가능)

3순위

  • 산업안전기사 → 법규 암기 (후반 집중)

⚠️ 당신 상황 최적화 핵심

✔ 식후 졸림

점심/저녁 이후 = 암기 ❌ → 가벼운 영상 or 복습

✔ 집중 황금 시간

오전 / 저녁 8시 이후

🧠 하루 공부 루틴 (실행용)

🌅 오전 (최고 집중 시간) 09:00 ~ 12:00

👉 품질경영기사 (핵심 시간)
  • 09:00 ~ 09:50 → 계산 문제 1유형 (관리도 / 공정능력)
  • 10:00 ~ 10:50 → 계산 문제 2유형 (샘플링 / 신뢰성)
  • 11:00 ~ 12:00 → 틀린 문제 다시 풀기
👉 규칙
  • “이해 ❌ → 유형 암기 ⭕”
  • 손으로 무조건 풀기

🍚 점심 (13:00 ~ 14:00)

👉 식사 + 산책 10분 (필수)
👉 혈당 스파이크 방지 팁
  • 밥 → 반공기
  • 단백질 먼저 먹기

💤 점심 이후 (14:00 ~ 16:00)

👉 졸림 시간 = 가벼운 공부
  • 바이오 인강 or 교안 읽기
  • 머신러닝 영상 1개 (필수 수행)
👉 절대 금지
  • 계산 문제 (효율 최악)

☀️ 오후 2차 집중 (16:00 ~ 18:00)

👉 바이오화학제품제조기사 집중
  • 16:00 ~ 17:00 → 생화학 / 미생물
  • 17:00 ~ 18:00 → 반응공학 / 분리공정
👉 방법
  • “읽고 → 바로 말로 설명하기”
  • 그림 그리면서 이해

🍽 저녁 (18:00 ~ 19:00)

👉 식사 + 휴식

🎥 필수 고정 시간

  • 19:00 ~ 20:00 → 라이브 강의
  • 머신러닝 영상 → 점심 이후에 처리 완료

🌙 저녁 집중 (20:00 ~ 23:00)

👉 가장 중요한 2차 골든타임

20:00 ~ 21:00

→ 품질경영기사 (약점 보완)

21:00 ~ 22:00

→ 바이오 기출 or 요약

22:00 ~ 23:00

→ AdsP (가볍게 누적)
👉 AdsP 전략
  • 하루 1시간이면 충분 (지금 단계)

🧩 맞춤 공부법

1. 50분 공부 → 10분 휴식 (무조건)

2. “문제 먼저 → 이론 나중”

3. 공부 시작할 때

👉 “딱 1문제만 풀자” (진입 장벽 제거)

🚨 현실 체크 (중요)

이 일정에서 합격 가능성:
  • 품질경영기사 → 중상 (계산만 잡으면 가능)
  • 바이오 → 중 (이해력 중요)
  • AdsP → 상 (막판 몰아치기 가능)
  • 산업안전 → 중 (시간 부족 가능)

🔥 한 줄 핵심

👉 오전 = 품질 계산 / 오후 = 바이오 이해 / 밤 = 복습 + AdsP

 

 

● 5강

더보기

AI 윤리의 대표적인 위험 요소 환각, 저작권, 개인정보 발생

 

☑️ Hallucination(환각)?

  • = 할루시네이션
  • 실제로 존재하지 않거나 잘못된 정를 보여주는 것
    : 질문과 다른 답변, 실존하지 않는 답변 등
  • Why?
    : AI가 학습된 내용에 한계가 있기 때문에 답변을 생성하는데 의도와 벗어난 동작을 하게 됨
    : 오작동이 아니라 확률 예측의 특성 때문에 발생하는 현상
  • 환각을 줄일 수 있는 방법
    : 온도값을 낮추거나 / 제한점 설계(특정한 정보를 제공하지 말라고 하는 것) / 추가 학습 등
  • 어떻게 윤리 문제에 치명적일까?
    : 그릇된 내용이 사용자에게 전달 될 수 있기 때문에
    : 잘못된 정보를 사용자가 인식하지 못하고 그대로 이용할 수 있기 때문이다
    → 검증을 해봐야 함

☑️ 개인정보침해, Red Flag(위험징후)

  • 개인정보침해
    : 특정된 어떤 사람에 대한 정보를 무단으로 수집, 사용, 유출 등 목적에서 벗어난 모든 활동의 의미
  • Red Flag = 위험징후 ↔ Green Flag
    : '뭔가 위험할 것 같은데?'라는 느낌에 사용되는 보안용어
  • 개인정보침해 사례
    : 사용자가 해킹관련 AI가 특정 인물에 대한 정보를 취득
    : 거짓된 정보를 찹혀 생성한 답변
  • 개인정보침해에 대응하기 위한 방법
    : 민감한 정보 및 개인정보에 대해 입력을 하지 말 것 → 익명화&가명화처리해서 사용할 것
    : 후처리로 를 통해 레드 플래그 검열
    : 직접 허락을 구할 것 
    : 반드시 목적에 맞는 범위에서 사용할 것
    : 데이터 3법 : 개인정보보호법, 정보통신망법, 신용정보법

☑️ 저작권과 출처 표기

  • 저작물 : 저작권법에 의해 독창성과 저작권을 인정받을 수 있도록 보호를 받는 특정 생성물
  • 저작물로 인정받기 위해 : 생성자의 사상과 감정이 독자적으로 독창성 있게 투영된 생성물이여야한다!!
  • 저작권법 : 저작권자의 권리를 보장하고 무분별한 저작물의 남용을 막고 보호하기 위한 법률을 의미
  • 저작권 침해 : 원저작권자의 동의없이 2차 창작물 생성하거나, 동의없이 저작물의 정보를 변경 및 활용하는 모든 것
  • 저작권자에 대한 출처 표기!! 인용불가라면 동의 구하던가 쓰지 말기
  • AI 생성물은 저작권 보호 받지 않음

 

 


 

 ⊙ 통계학 기초 - 4강 <회귀 Regression>

● 회귀

  • 현재 가지고 있는 데이터를 가지고 특정 값을 예측해 보는 것

☑️ 선형회귀

  • 하나의 독립 변수(X)와 하나의 종속 변수(Y) 간의 관계를 직선으로 모델링하는 방법

☑️ 단순선형회귀 - 회귀식

  • Y = β0 + β1X
  •  β0는 절편 | β1는 기울기(=x계수) → 1차함수 생각하면 이해 쉬움

☑️ 단순선형회귀 - 특징

  • 독립 변수(=X)의 변화에 따라 종속 변수(=Y)가 어떻게 변화하는지 설명하고 예측
     X가 변화함에 따라 Y의 변화를 예측 및 설명 
  • 데이터가 직선적 경향을 따를 때 사용
  • 간단하고 해석이 용이
  • 데이터가 선형적이지 않을 경우 적합하지 않음

☑️ 단순선형회귀 - 예시
    : 하나의 독립 변수와 종속 변수와의 관계
를 분석 및 예측 할 때 사용

  • 광고비(X)와 매출(Y) 간의 관계 분석
    → 현재의 광고비를 바탕으로 예상되는 매출을 예측 가능

☑️ 단순선형회귀 - 실습

더보기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
 

# 예시 데이터 생성
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 데이터 분할
# 학습모델 | 테스트 모델 구분
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 단순선형회귀 모델 생성 및 훈련
model = LinearRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 회귀 계수 및 절편 출력
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)

# 모델 평가
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)

# 시각화
plt.scatter(X, y, color='blue')
plt.plot(X_test, y_pred, color='red', linewidth=2)
plt.title('linear regeression')
plt.xlabel('X : cost')
plt.ylabel('Y : sales')
plt.show()
  • sklearn(싸이킬런) : 머신러닝 함수
  • 데이터 분할 = 학습모델(train) | 테스트 모델(test) 구분
  • coef = coefficient = X 계수
  • intercept = 절편
  • mse
    : 가장많이쓰는 회귀평가 지표 = 오차의 수치화
    : 낮을수록 좋음
  • r² (알스퀘어)
    : 회귀가 얼마나 설명력을 잘 갖추고 있느냐
    : 높은수록 좋음

 

 

● 다중선형회귀

  • 두 개 이상의 독립 변수(X1, X2, ..., Xn)와 하나의 종속 변수(Y) 간의 관계를 모델링
  • 많이 쓰는 선형회귀

 

 

  • 변수 2개로 그린 데이터 시각화
  • 대각선으로 데이터가 나열되어 있는걸 볼 수 있음
  • 공간상에서도 선형이라는 걸 알 수 있음

 

 

 

 

 

 

 

 

☑️ 단중선형회귀 - 회귀식

  • 변수의 개수 만큼 X, X의 계수가 늘어남

 

☑️ 단중선형회귀 - 특징

  • 여러 독립 변수의 변화를 고려하여 종속 변수를 설명하고 예측
  • 종속변수에 영향을 미치는 여러 독립변수가 있을 때 사용
  • 여러 변수의 영향을 동시에 분석할 수 있음
  • 변수들 간의 다중공선성 문제가 발생할 수 있음 
  • ❓다중공선성 ( Multicollinearity)
    독립 변수들 간에 높은 상관관계가 있는 경우 → 문제를 일으 킬 수 있음
○ 무슨 문제?

 모델의 성능과 해석에 여러 가지 문제를 일으킬 수 있음
 각 변수의 개별적인 효과를 분리해내기 어려워져 회귀의 해석을 어렵게 만듦
 실제로 중요한 변수가 통계적으로 유의하지 않게 나타날 수 있음
○ 어떻게 진단?

 상관계수를 계산하여 상관계수가 높은(약 0.7) 변수들이 있는지 확인해볼 수 있음
 분산 팽창 계수 (VIF)를 계산하여 VIF값이 10이 높은지 확인하는 방법으로 다중공선성이 높다고 판단할 수 있음
○ 해결 방법

  가장 간단한 방법으로는 높은 계수를 가진 변수 중 하나를 제거
 주성분 분석(PCA)과 같은 변수들을 효과적으로 줄이는 차원 분석 방법

 

☑️ 단중선형회귀 - 예시
    : 2개 이상의 독립 변수와 종속 변수
와의 관계를 분석 및 예측

  • 다양한 광고비(TV, Radio, Newspaper)과 매출 간의 관계 분석
    → 현재의 광고비(TV, Radio, Newspaper)를 바탕으로 예상되는 매출을 예측 가능

☑️ 단중선형회귀 - 실습

더보기



# 예시 데이터 생성
data = {'TV': np.random.rand(100) * 100,
        'Radio': np.random.rand(100) * 50,
        'Newspaper': np.random.rand(100) * 30,
        'Sales': np.random.rand(100) * 100}
df = pd.DataFrame(data)

# 독립 변수(X)와 종속 변수(Y) 설정
X = df[['TV', 'Radio', 'Newspaper']]
y = df['Sales']

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 다중선형회귀 모델 생성 및 훈련
model = LinearRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 회귀 계수 및 절편 출력
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)

# 모델 평가
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)
  • 회귀계수 = 독립변수 개수만큼 생성됨

 

 

● 범주형 변수

  • 회귀에서 범주형 변수의 경우 특별히 변환을 해주어야 함

☑️ 범주형 변수 

  • 수치형 데이터가 아닌 주로 문자형 데이터로 이루어져 있는 변수가 범주형 변수

☑️ 범주형 변수 - 종류

  • 순서가 있는 범주형 변수
    : 옷의 사이즈 (L, M, …), 수능 등급 (1등급, 2등급, ….)과 같이 범주형 변수라도 순서가 있는 변수에 해당
  • 순서가 없는 범주형 변수
    : 성별 (남,여), 지역 (부산, 대구, 대전, …) 과 같이 순서가 없는 변수에 해당
    : 3개 이상인 경우에는 무조건 원-핫 인코딩(하나만 1이고 나머지는 0인 벡터)변환을 해주어야 한다 → pandas의 get_dummies를 활용하여 쉽게 구현 가능

☑️ 범주형 변수 - 예시
    : 범주형 변수를 찾고 더미 변수로 변환
한 후 회귀 분석 수행

  • 성별, 근무 경력과 연봉 간의 관계
  • 성별과 근무 경력이라는 요인변수 중 성별이 범주형 요인변수에 해당
  • 해당 변수를 더미 변수로 변환
    : 더미 변수(Dummy Variable, 가변수)
    : 성별, 지역 등 숫자가 아닌 범주형(질적) 데이터를 통계 분석이나 머신러닝 모델에서 사용할 수 있도록 0과 1의 숫자(이진 변수)로 변환한 변수
  • 회귀 수행  

☑️ 범주형 변수 - 실습

더보기







# 예시 데이터 생성
data = {'Gender': ['Male', 'Female', 'Female', 'Male', 'Male'],
        'Experience': [5, 7, 10, 3, 8],
        'Salary': [50, 60, 65, 40, 55]}
df = pd.DataFrame(data)

# 범주형 변수 더미 변수로 변환
df = pd.get_dummies(df, drop_first=True)

# 독립 변수(X)와 종속 변수(Y) 설정
X = df[['Experience', 'Gender_Male']]
y = df['Salary']

# 단순선형회귀 모델 생성 및 훈련
model = LinearRegression()
model.fit(X, y)

# 예측
y_pred = model.predict(X)

# 회귀 계수 및 절편 출력
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)

# 모델 평가
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)

 

 

 

● 다항회귀, 스플라인회

☑️ 다항 회귀 

  • 독립 변수와 종속 변수 간의 관계가 선형이 아닐 때 사용. 독립 변수의 다항식을 사용하여 종속 변수를 예측
  • 데이터가 곡선적 경향을 따를 때 사용 → 이차식 포물선 형태
  • 고차 다항식의 경우 과적합(overfitting) 위험

☑️ 스플라인 회귀 - 많이 쓰지 않음

  • 독립 변수의 구간별로 다른 회귀식을 적용하여 복잡한 관계를 모델링
  • 복잡한 비선형 관계를 유연하게 모델링
  • 적절한 매듭점(knots)의 선택이 중요

☑️ 다항 회귀 - 예시
    : 독립 변수와 종속 변수의 관계가 비선형 관계
일 때 사용

  • 주택 가격 예측(면적과 가격 간의 비선형 관계)

☑️  실습

  • t-test를 이용하면 p-value라는 값이 나오게 됨
  • p-value < 0.05 (5%) 보다 낮은경우 두개의 그룹이 서로 다르다고 봄 그렇다면 B에 대한 결과가 의미가 있구나라는 걸 알 수 있음
더보기






from sklearn.preprocessing import PolynomialFeatures

# 예시 데이터 생성
np.random.seed(0)
X = 2 - 3 * np.random.normal(0, 1, 100)
y = X - 2 * (X ** 2) + np.random.normal(-3, 3, 100)
X = X[:, np.newaxis]

# 다항 회귀 (2차)
polynomial_features = PolynomialFeatures(degree=2)
X_poly = polynomial_features.fit_transform(X)

model = LinearRegression()
model.fit(X_poly, y)
y_poly_pred = model.predict(X_poly)

# 모델 평가
mse = mean_squared_error(y, y_poly_pred)
r2 = r2_score(y, y_poly_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)

# 시각화
plt.scatter(X, y, s=10)
# 정렬된 X 값에 따른 y 값 예측
sorted_zip = sorted(zip(X, y_poly_pred))
X, y_poly_pred = zip(*sorted_zip)
plt.plot(X, y_poly_pred, color='m')
plt.title('polynomial regerssion')
plt.xlabel('area')
plt.ylabel('price')
plt.show()

 

☑️  연습문제

더보기

단순선형회귀 = 1차 함수

 

다중선형회귀 = 독립변수(X)가 많은 1차 함수

 

다항회귀 '2차원 비선형' = 2차 함수

2) 독립변수(X)를 2개 가진 2차식

 

 


⊙ 통계학 기초 - 5강 <상관관계>

 피어슨 상관계수 = 첫번째 차트

  • 가장 대표적인 모수 상관계수
  • 선형적인 관계가 존재할 때 사용할 수 있음
  • 데이터가 정규분포로 존재할 것이라는 가정에 사용 가능 

☑️ 피어슨 상관계수

  •  연속형 변수 간의 선형 관계를 측정하는 지표
    : 연속형 = 숫자 형태의 값(숫자 형태 값들은  보통 연속적인 값을 가지므)
    : 연속적 값을 가지지 않을 때는 사용할 수 없음
    : 순서를 가진 값을 가진 경우에도 사용할 수 없음
  • -1에서 1 사이의 값을 가지며
    1은 완전한 양의 선형 관계
    -1은 완전한 음의 선형 관계
    0은 선형 관계가 없음을 의미

☑️ 피어슨 상관계수 - 예시

  • 선형적인 관계가 예상 될 때
  • 공부 시간과 시험 점수 간의 상관관계 분석

☑️ 피어슨 상관계수 - 실습

더보기



import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import pearsonr

# 예시 데이터 생성
np.random.seed(0)
study_hours = np.random.rand(100) * 10
exam_scores = 3 * study_hours + np.random.randn(100) * 5

# 데이터프레임 생성
df = pd.DataFrame({'Study Hours': study_hours, 'Exam Scores': exam_scores})

# 피어슨 상관계수 계산
pearson_corr, _ = pearsonr(df['Study Hours'], df['Exam Scores'])
print(f"피어슨 상관계수: {pearson_corr}")

# 상관관계 히트맵 시각화
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('pearson coefficient heatmap')
plt.show()

 



 비모수 상관계수 = 두 번째 차트

  • 정규 분포를 따르지 않고 연속형 데이터가 아닌 것은 비모수 상관계수
    ex) 순서형 데이터 - 등급, 등수
  • X와 Y의 순위 관계를 보여준다
  • 값은 -1에서 1 사이로 해석

☑️ 비모수 상관계수

  • 데이터가 정규분포를 따르지 않거나 분포를 모를 때 사용하는 상관계수
  • 변수들이 순서형 데이터일 때 사용하는 상관계수
  • 스피어만 상관계수와 켄달의 타우 상관계수가 있음

☑️ 스피어만 상관계수

  • 두 변수의 순위 간의 일관성을 측정 = 순위가 일정한 방향으로 향하는가
  • 켄달의 타우 상관계수 보다 데이터 내 편차와 에러에 민감

☑️ 켄달의 타우 상관계수

  • 순위 간의 일치 쌍 및 불일치 쌍의 비율을 바탕으로 계산
  • ex) 사람의 키/몸무게
           일치쌍 - 키가 크면서 몸무게도 더 나가는 경우
           불 일치쌍 - 키가 크지만 몸무게가 더 적은 경우
          비율로 상관계수를 결정

☑️ 비모수 상관계수 - 예시

      : 데이터의 분포에 대한 가정을 하지 못할 때 - 정규분포를 알지 못할 때
      : 순서형 데이터에서도 사용하고 싶을 때

☑️ 비모수 상관계수 - 실습

더보기



from scipy.stats import spearmanr, kendalltau

# 예시 데이터 생성
np.random.seed(0)
customer_satisfaction = np.random.rand(100)
repurchase_intent = 3 * customer_satisfaction + np.random.randn(100) * 0.5

# 데이터프레임 생성
df = pd.DataFrame({'Customer Satisfaction': customer_satisfaction, 'Repurchase Intent': repurchase_intent})

# 스피어만 상관계수 계산
spearman_corr, _ = spearmanr(df['Customer Satisfaction'], df['Repurchase Intent'])
print(f"스피어만 상관계수: {spearman_corr}")

# 켄달의 타우 상관계수 계산
kendall_corr, _ = kendalltau(df['Customer Satisfaction'], df['Repurchase Intent'])
print(f"켄달의 타우 상관계수: {kendall_corr}")

# 상관관계 히트맵 시각화
sns.heatmap(df.corr(method='spearman'), annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('spearman coefficient heatmap')
plt.show()

 

 

 

 

● 상호정보 상관계수 = 3번 째 차트 - 잘 쓰지 않음 

  • 넓게 보면 비모수계수 상관계수

☑️ 상호정보 상관계수 (Mutual Information Coefficient)

  • 변수 간의 정보 의존성을 바탕으로 비선형 관계를 탐지
  • 서로의 정보에 대한 불확실성을 줄이는 정도를 바탕으로 계산
  • 범주형 데이터에 대해서도 적용 가능
  • X와 Y 간의 비선형 관계를 나타냄

☑️ 상호정보 상관계수 - 예시

      : 두 변수가 범주형 변수 일 때
      : 비선형적이고 복잡한 관계를 탐지하고자 할 때

☑️ 상호정보 상관계수 - 실습

더보기

정보량 계산

 

import numpy as np
from sklearn.metrics import mutual_info_score

# 범주형 예제 데이터
X = np.array(['cat', 'dog', 'cat', 'cat', 'dog', 'dog', 'cat', 'dog', 'dog', 'cat'])
Y = np.array(['high', 'low', 'high', 'high', 'low', 'low', 'high', 'low', 'low', 'high'])

# 상호 정보량 계산
mi = mutual_info_score(X, Y)
print(f"Mutual Information (categorical): {mi}")

 

 


⊙ 통계학 기초 - 6강 <가설검정의 주의점>

  • 가설 검정 과정에서 p-값이 중요하다 → p값에 따라 귀무가설 기각/채택 여부
  • 그렇다고 p값을 맹신하면 안됨!! → 잘못된 값을 도출 할 수 있음

● 재현 가능성

  • 우연히 결과가 나오는 것이 아닌, 항상 일관된 결과가 나오는지 확인해야 한다

☑️ 재현가능성 

  • 동일한 연구나 실험을 반복했을 때 일관된 결과가 나오는지 여부
  • 연구의 신뢰성을 높이는 중요한 요소
  • 최근 p값에 대한 논쟁
    : p값을 사용하지 않는 것이 좋다
    : 유의수준을 0.05에서 변경하는 것이 좋다
  • 가설검정 원리상의 문제나 가설검정의 잘못된 사용이 낮은 재현성으로 이어진다는 문제 발생
  • 최근 논문을 다시 재현해서 실험을 해보는데 똑같은 결과가 않나오는 사례가 많은… 재현성 위기가 문제가 되고 있음

☑️ 재현가능성 - 중요성

  • 결과가 재현되지 않는다면 해당 가설의 신뢰도가 떨어짐

☑️ 재현성 위기의 원인

  • 실험 조건을 동일하게 조성하기 어려움
    : 완전 동일하게 다시 똑같은 실험을 수행하는 것이 쉽지 않음
    : 가설검정 자체도 100% 검정력을 가진 것이 아니기 때문에 오차가 나타날 수 있음
  • 가설검정 사용방법에 있어서 잘못됨
    : p해킹 - p값이 0.05가 유도되게끔 조작하는 것이 가능
    : 실제로는 통계적으로 아무 의미가 없음에도 의미가 있다고 해버리는 1종 오류를 저지를 수 있음
    : 0.05라는 것은 100번 중에 5번 즉, 20번 중에 1번은 귀무가설이 옳음에도 불구하고 기각될 수 있음
    : 유의수준으로 통제하는 것이 중요 → 유의수준을 너무 낮추면 베타값이 커져버리는 문제 발생
    : 어떤 논문에서는 유의수준을 0.005로 설정하면서 데이터 수를 70% 더 늘려서 베타 값도 컨트롤 하는 방향을 제안하기도 함
    : 잘못된 가설을 세우더라도 우연히 0.05보다 낮아서 가설이 맞는것처럼 보일 수도 있음. 따라서 가능한 좋은 가설을 세우는 것도 중요

 

 

● p-해킹

☑️ p - 해킹 

  • 인위적으로 p-값을 낮추는 행위
  • 유의미한 결과를 얻기 위해 다양한 변수를 시도하거나, 데이터를 계속해서 분석하는 등의 방법을 포함

☑️ p - 해킹 - 문제점

  • p-해킹은 데이터 분석 결과의 신뢰성을 저하시킴

☑️ p - 해킹을 조심해야 할 때

  • 여러 가설 검정을 시도 할 때
    : 여러 가설 검정을 시도하여 유의미한 p-값을 얻을 때까지반복 분석하는 것을 조심
    : p-해킹은 유의미한 결과를 얻기 위해 p-값이 0.05 이하인 결과만 선택적으로 보고하는 를 조심
    : 데이터의 수를 늘리다보니 특정 데이터 수를 기록할때 잠깐 p값이 0.05 이하를 기록함으로 이를 바탕으로 대립가설 채택하는 것을 조심
    : 결과를 보며 데이터 개수를 늘려서는 안됨
    : 다양한 상황 중에서 p값이 유리하게 나오는 상황만 선별적으로 보고하는 것을 조심
    : 다양한 변수를 건드리며 유리한 결과가 나올 때 다시 처음 부터 가설을 그 결과에 맞게 세우는 것
    : 마음에 드는 상황만 골라서 보고해서도 안됨. 모든 결과를 다보고하거나 더 엄격한 추가실 험을 수행
  • 가능한 가설을 미리 세우고 검증하는 가설검증형 방식으로 분석을 해야 하며 만약 탐색적으로 분석한 경우 가능한 모든 변수를 보고하고 본페로니 보정과 같은 방법을 사용해야 함

 

 

● 선택적 보고

  • 유의미한 결과만을 보고하고, 유의미하지 않은 결과는 보고하지 않는 행위
  • 이는 데이터 분석의 결과를 왜곡하고, 신뢰성을 저하시킴

☑️ 선택적 보고를 조심해야 할 때

  • 유의미한 결과만 공개할 때
  • 결과를 보면서 가설을 다시 새로 설정했는데 마치 처음부터 설정한 가설이라고 얘기할 때  

 

 

● 자료수집 중단 시점 결정

  • p-해킹과 관련
  • 데이터 수집을 시작하기 전에 언제 수집을 중단할지 명확하게 결정하지 않으면, 원하는 결과가 나올 때까지 데이터를 계속 수집할 수 있음. 이는 결과의 신뢰성을 떨어뜨림

☑️ 자료수집 중단을 조심해야 할 때

  • 결과를 이미 정해놓고 그에 맞추기 위해 자료수집을 하고자 할 때
    : 50명의 데이터를 수집하기로 했으나, 원하는 결과가 나오지 않자 100명까지 추가로 수집

☑️ 실습 

 

  • 샘플사이즈가 달라지며 p값이 달라질 수 있지 않을까 가정 
  • ← p값이 달라질 수 있는 상황에서는 결과만보고 샘플 사이즈를 결정하면,,, 옳바른 결과가 아님
  • 단 1개만 0.05 p값 근처인데,,, 다른 값들은 p값과 차이가 엄청남
더보기
# 데이터 수집 예시
np.random.seed(42)
data = np.random.normal(0, 1, 1000)
sample_sizes = [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
p_values = []

for size in sample_sizes:
    sample = np.random.choice(data, size)
    _, p_value = stats.ttest_1samp(sample, 0)
    p_values.append(p_value)

# p-값 시각화
plt.plot(sample_sizes, p_values, marker='o')
plt.axhline(y=0.05, color='red', linestyle='dashed', linewidth=1)
plt.title('자료수집 중단 시점에 따른 p-값 변화')
plt.xlabel('샘플 크기')
plt.ylabel('p-값')
plt.show()

 

 

 

● 데이터 탐색과 검증 분리

  • 머신러닝에서 결과를 내야할 경우 - 원하는 결과가 나오게끔 머신러닝을 사용하는 경우가 있을 수 있음 
  • 검증하기 위한 데이터는 반드시 따로 분리 해놓아야 함

☑️ 데이터 탐색과 검증 분리  

  • 데이터 탐색을 통해 가설을 설정하고, 이를 검증하기 위해 별도의 독립된 데이터셋을 사용하는 것
  • 이는 데이터 과적합을 방지하고 결과의 신뢰성을 높임
  • 탐색 과정에서 발견된 패턴이 검증 데이터에서도 유효한지 확인 가능
  • 검증 데이터는 철저하게 탐색 데이터와 구분되어져야 함

☑️ 데이터 탐색과 검증 분리가 필요할 때

  • 검증하기 위한 데이터가 따로 필요할 때 = 머신러닝 검증 
    : 데이터셋을 탐색용(training)과 검증용(test)으로 분리하여 사용 

☑️ 실습