머신러닝 프로젝트 ... 수집->처리->분석 (파이프라인 중)
머신러닝 파이프라인
- 요구사항 정의
- 목표 태스크 정의 및 유형 파악 -> 분류/회귀/군집 등
- 성능 지표 선택 -> 태스크 유형에 따라 달라진다.
- 데이터 수집/정제(처리)
- 데이터 수집 및 각종 전처리 ( 결측치 및 이상치 처리, 노이즈 제거 등)
- 기존 데이터 분석 파이프라인의 일부
- DataOps 적용 영역
- 학습 /검증 / 테스트 데이터셋 분리 용도분리를미리해줘야합니다 << 여기강조하시는듯. 엄청 오래..많이 말하셨다.
- 학습데이터 : 학습 알고리즘을 통한 모델 파라미터 학습에 사용!
- 검증 데이터 : 학습 알고리즘의 학습 방향 결정에 사용. (중간에 한번 그 모델이 현재까지 잘 원하는대로 되는지)
- 테스트데이터 :학습된 모델의 성능평가에 사용 (학습 과정에 절대 사용하면 안됨. 최종시험이라고보면됨. 이걸주면 컨닝페이퍼닷!)
-최종성능을 판단하기위해서 사용하는거라 절대 노출되면 안돼용!! 학습 끝난 모델에 적용시키는 데이터임.
- 데이터 수집 및 각종 전처리 ( 결측치 및 이상치 처리, 노이즈 제거 등)
- 특징 공학(Featyre Engineering) ... 이것도수집처리의단계임. ... 사람이 개입하게됩니다.!!!
- 입력 데이터의 어떤 측면에 집중하여 분석할 것인지 결정 ( 도메인 지식 반영 등) --- 성별,나이 등 추려내는거임!
- 모델이 학습할 수 있는 형태로 입력데이터를변환(스케일리으인코딩 등). 보통의 전통적인 머신러닝기법에서는....=특징공학
- 특징 공학에 사람이 개입 -> 머신러닝 (특징 공학을 모델에서 일부 수행-> 딥러닝)
((그냥상식선에서만알아두고 딥러닝수업에서 배워라)
=====2,3여기까지 수집,처리 단계를 의미함=====
- 모델 선택 및 학습 (FROM NOW ON 분석!)
- 목표 태스크에 적합한 모델 선택
- 각종 이론 및 경험에 의한 모델 후보군 선정 -> 실험 후 최종 모델 선택
쓸거를 세네게 정도 몇가지 추려서 학습시키고 그 중에서 가장좋은애가 우리의 최종모델이된다.
머신러닝은 다소실험에 기반하는 노가다스러운면이있다 . ㅎㅎ실험적이얏!
머신러닝을 하나의 거대한 함수라고 했을때, 모델의 모양을 결정하는애들이 파라미터엿죠? 좀더 세분화해서 구분하면 모델 파라미터!! ..... == 얘는 인간이 건드리면 안되는거야 (일반적으로는 건드릴 일이 없다)
하이퍼 파라미터는 == 분석하는 사람이 세팅을 해줘야한다. - 하이퍼 파라미터 튜닝 (알고리즘을돌리기 전에 앞서서... 사람이 하는 일!)
- 모델학습 이전에 미리 설정해야하는 각종 값 결정(기본적으로사람이 직접 수행) 몇번반복할건지 이런기본적인 셋업을 경험과실험을통해 해놓습니다.
:모델을 위한 파라미터를 사용하기위해서 기본적으로 설정해주는 세팅!!!
- 모델학습 이전에 미리 설정해야하는 각종 값 결정(기본적으로사람이 직접 수행) 몇번반복할건지 이런기본적인 셋업을 경험과실험을통해 해놓습니다.
- 모델 파라미터 학습
- by 최적화 알고리즘 (오차 등을 최소/최대화하는 최적화 문제의 해결) .. 하이퍼파라미터/모델파라미터 구분만하자
- 목표 태스크에 적합한 모델 선택
- 모델 검증 및 성능 평가 - 수행시점에 주의
- 검증 (학습 과정 중 수행)
모델 과적합 방지, 하이퍼파라미터 튜닝, 모델 선택, 학습 종류 시점 결정 등의 목적 - 평가 (학습이 완료된 후에 수행한다) → 테스트 데이터를 ㄹ이용하여 최종모델의 성능 확인
- 검증 (학습 과정 중 수행)
- 모델 배포(서빙)
모델을 실제 시스템/서비스에서 사용할 수 있도록 배포 → 파일 or API (APi, 즉 우리컴터보다 훨씬좋은 서버에다 올려서 요청해서씀) .... RESTfulAPI? 예측값? 응답? - 모니터링 및 개선
운영 중인 모델의 성능 저하 또는 데이터 분포 변화 감지 -> 지속적인 모델 재학습 필요
ML OPs
개념 : 데이터와 모델을 포함한 머신러닝 파이프라인을 효율적으로 운영하기 위한 접근법
필요성:
- 시간이 지남에 따라 (운영 중임) 데이터 분포가 변화! → 기존 모델 성능 저하 !
- 머신러닝 모델 동작은 코드가 아닌 '데이터'에 의해서 결정 → 데이터 버전 관리 중요
- 매우 복잡한 머신러닝 파이프라인.
주요 전략 ( 상식선에서만알아놓자)
- 데이터 버전관리 / 모델버전 관리
모델 학습 재현성 → 을 위한 환경관리 - CI/CT/CD ( 지속적 통합/ 지속적 학습/ 지속적 배포)
- CI/ 코드 변경 → 자동 빌드 → 자동 테스트(학습 알고리즘 코드가 에러 없이 돌아가는지 확인_
- CT/ 학습 데이터 업데이트 →자동 모델 재학습(실제 학습 수행 : 하이퍼파라미터 튜닝, 검증)
- Cd 학습 완료된 모델 →자동 배포 →서비스에서 모델 즉시 사용.
- 서비스에서 자동화를 위한 서비스 도입이 필수는 아니지만 적절한 방법으로 관리한다
Dev Ops는 클라우드 기반 서비스(도구 ) 도입 필수/ Data Ops 플랫폼 구축 필수
DevOps는 클라우드 필수에욧!까세요 이런식기으로핳셧지만
DataOps이후로는 권장될 뿐, 필수는 아니다.
서비스에서 자동화를 위한 서비스 도입이 필수는 아니지만 적절한 방법으로 관리한다
Dev Ops는 클라우드 기반 서비스(도구 ) 도입 필수/ Data Ops 플랫폼 구축 필수🥹
굉장히상식선에서 출제를하는편이에요.../.?
한학기동안 소프트웨어공학에서다루는내용이 소프트웨어프로세스이므로 요구사항정의-설계-구현 등 이런 일련의과정을 배우는게 그거잖아요.
각과정에서 중요하게 할수잇는걸우리가할수있는가이런거를 했었다. 우리는중간고사 이전까지 요구공학을 주로 다뤘다.
요구사항을잘정의할수있는가를 냈죠.
너무막연하다할까봐 과제에서 낸다는걸미리알려드렸쬬? 아무튼 내겠다하는건냇죠.... 아 예.....
아.....알앗어요.................................................................알앗다고.요.......................ㅠㅠㅠㅠㅠㅠㅠ
소프트웨어프로세스활동관점에서봤을떄,,, 설계 및 구현 이후가 우리가 중요하게 봐야할것이다.
클래스다이어그램 잘 그려서 이후에는 구현을 하겠죠? 그 ' 자 바 ' 가 중요한겁니다.
우리가 설계 틀을 보고 코드를 작성할 수 있어야합니다. use, aggregation, extends 같은 관계에 직중해서 예제 코드.
코드가 나오는 파트는 굉장히 중요합니다(전반부는 모두 코드였으므로)
우리가 배운 과제와 강의자료범위를벗어나지않습니다.
클래스다이어그램보고 인터페이스 어떻게 구현하지? 이 틀정도는 뽑아낼수있어야한다. 자동차선언할때 추상클래스어떻게하지? 어떻게 inplement하는지 등을 보자. 접근지정자로 어떻게코딩하는지 이런거에집중해서 봐라.
설계틀을 쓰는 그런코드는 중요합니다.
빵꾸 채우는 문제를 냈어요(코드 전체가아니라,) 앞뒤 주변 코드들을 이해하고, UML이랑같이보면서 그정도는 잘할줄알아야해요.
코드나오는 SE8, SE9(디자인패턴 - 객체지향소프트웨어를 디자인할떄 쓰는 패턴들이 어떤개념이고어떤방식으로 구현되는지.
코드들보고 어떤건지 구분할 수 있어야겠다.(시은)
파사드패턴같은경우는 외부에서 기본적인애들을감사는 그런형식이죠? 밖에서는 그 하나의 퍼블릭메소드로 할수있어야한다. 이런 watchmovie()같은거.
이러한개념들을 중요하게생각하시구 잘보세용.
패턴별로 구현 포인트!
싱글톤패턴!!!
=====
구현이후에 테스트10
테스트라는단계에서 멀 잘해야할까? ' 좋은 테스트케이스를 뽑자!!!!'
교수님은 블랙박스만 열심히 하셨으므로 이거 공부잘해랑 (화이트박스는 교수님이못해유... 블랙박스만 잘 보자. 우리가풀었던것도 그런예제였다.)
경우의수 뽑는거라고 생각하면됨.
조건에 잘 생각해서 경우에수잘생성하기.
경계값 분석같은경우 테스트케이스 많이 해보고,, 이지하고 이런식으로넘어가지말고,,,, 블랙박스테스트 강의 (pair wise)테스트 이런것도 했으니까 페어 저것도 봐라~
상식선에서 잘 알아둬러
===
11. 소프트웨어진화. 유지보수, 리팩토링, 형상관리.
리팩토링 코드 줄이는거같은거.
예제라서 되게 헤비하지않았었찌요? 우리ㅏㄱ 어떤컨셉으로 어떠헥바꿔나갔는지이런것들ㅇ르 보시면좋아요.암튼 더복잡한거나온다는듯
14페이지 중요하게보세요. 깃을 토앟ㄴ 형상관리 잘해야합니다. 근데 난 똑똑이니깐 괜차나
오소연이 되는 주파수 틀어놓자...
빵점방지문제를 항상냅니다. 아무리공부를안해도이건알겟지.... (ex, 폭포수문제)
소프트웨어 버전관리도구 이름 나오겠네. Git이다!
========
12.애자일소프트웨어개발. 이제부턴이론이에요. 강의자료의 성격을 잘보시면서 공부하세요. 핵심을이햏하자. 굉장히 반복적으로설명했떤웹부분을 집중해서 잘알아야겟지?
TDD 코드는 보지 마세용. JUNIT이라는 라이브러리를 알아야할수있는방법이라서 딥하게 안했으므로, 이건 맛보기니까 그런게있다~ 하고 넘기면된다.
몇차례에걸쳐 웹을 다뤘다. 서버사이드 렌더링 클라이언트사이드 렌더링. 등
서버사이드
ㅋㅡㄹ라이언트사이드
용청과 응답에이르기까지 순서가 어떻게 이루어지고 컴포너ㄴ트별 역할 분담 이런게나와유,
SE16으로 넘어가도 같은얘기 ㅈㄴ함. 왜겠내? 중요하니까겟지
웹프레임워크 이딴거 외우지마세요. (종류) 아뭐야 외워야하나 ㅋㅋ
서버 컨트롤러/ 뷰엔진 등 이런건 알아야함. 서블릿이 컨트롤러의 자바의 서버사이드 렌더링이다. 이런거를 .... 시발 외우라는거잖아요교수님아....ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 어떻게이해해서 저걸 하는데.
이해? ->봤을떄 대충알아야하는거죠
============================================
SE17 부터 협업얘기로 넘어갑니다 (방법론이쥬)
핵심이 뭐엿는지만 생각하자.
시험시간도 정해져잇고 점수도 정해져있으므로,,, 어느걸 어느정도 수듄으로 낼까?
'컴퓨터공학과 > 소프트웨어공학' 카테고리의 다른 글
| 1203 - 빅데이터 분석 프로젝트와 DataOps (0) | 2025.12.03 |
|---|---|
| 소공 1128 - 4차산업혁명의 핵심 - 빅데이터 분석 (0) | 2025.11.28 |
| 소공 1128 (0) | 2025.11.28 |
| 소프트웨어공학 - 아키텍처 설계 (0) | 2025.10.14 |