모각코

[모각코 7주차] 인공지능플랫폼 - 기계학습환경

y_unique 2024. 5. 8. 19:25
728x90
  1. 문제 정하기
    • 현재 솔루션은 뭐지?
    • 목표 달성 여부를 어떻게 평가할래?
    • 만들어진 솔루션 어떻게 사용할래?
    • 유사한게 존재하나?
    • 활용 가능한가?
  2. 데이터 수집 및 라벨링
    1. 고려할 점.
      • 어떤 데이터를 얼마나 가지고 있어?
      • 데이터 접근에 권한이 있어?
        • private
        • 상업용
        • 오픈 데이터
      • 데이터 접근 제어 및 모니터링 어케할그야?
      • 데이터 용량 크면 어떻게 한 곳에 수집할거야?
    2. 데이터 관찰
      • 많은 데이터가 필요하단 말이야 그래서 feature와 target을 추출해야해
        • feature: 모델 생성 시 관측 가능한 값 (X)
        • target: 관측 가능한 값으로 부터 예측하고자 하는 상태 값(Y)
    3. 데이터 저장
      • 추출 했으면 저장해야하그든
      • 데이터 크기와 목적에 맞는 데이터 저장소를 정해
      • aws에서는 다음과 같은 저장소를 제공함
        • S3 : 저장 용량 제한 없음
        • FSx : HPC에 특화된 고속 시스템
        • EFS: NFS를 지원
        • RDS : 클라우드 기반 관계형 데이터베이스
        • RedShitf: 데이터 분석을 위한 columnar DB
        • Timestream: 시계열 데이터에 적합
    4. 데이터 보안
      • 중요 데이터는 지켜야지!
        • IAM policy를 통한 접근 권한 제어
        • 파일 객체 저장소, 블록 저장소, 데이터베이스 대부분이 파일 암호화 기능 지원
        • 데이터 접근 기록 로깅 및 모니터링 → CloudTrail
  3. 데이터 기초 검사
    • 분석이 용이한 형태로 데이터 포맷을 정의
      • ETL 포함 → 이라는 게 무슨말이지?
    • 필드별 데이터 타입 이해
    • 데이터의 통계적 특성을 이해
      • pandas를 활용한 dataframe 테이블 형식으로 이해
        • data.colums → 열 추출
        • data.info() → 정보 요약
        • data.describe() → 기술 통계 정보 (count, mean, std, min, max 등)
        • Box plot → Median, 25%, 75%, min, max, outlier를 표현
        • KDE(Kernel Density Estimate) → histogram과 유사한 데이터로 연속적 확률 표현
    • 데이터 시각화를 통한 시각적 이해
      • 변수 간 상관관계 탐색
        • Correlation coefficient
        • -1 : 강력한 음의 상관관계
        • 1 : 강력한 양의 상관관계
        → matrix heatmap
  4. feature engineering
    • feature extraction
      • 원본 데이터에서 의미있는 데이터를 추출하기 위함
      • 생성된 feature 들이 데이터의 특성을 대표해야함
      • ex
        • 잘못된 데이터 수정: invalid value, consistency
        • 데이터 범위 수정: rescale, remove outliers
        • 데이터 가공: normalization, dimensionality reduction
    • feature selection
      • 목표를 달성하기 위해 의미있는 feature만 남김.
        • filter method
          • Pearson correlation : 2개 변수 간 연관성 표현
          • LDA: 여러개 클래스로 분류 가능하도록 feature 간 combination 생성그니까 한마디로 클래스 간 분산은 크게, 클래스 내부는 분산을 작게 분류한 기법
          • ANOVA : 그룹 간 평균 비교, 분산이 큰 feature 발굴
        • 통계적 모델을 사용해서 target과 관계 경향성이 높은 feature 선택 (상관계수)
        → 컴퓨팅 연산 오버헤드가 적어→ 정량화된 수치를 통해 feature 개수 선택 가능
        • wrapper method
          • forward selection : 시작은 없는 상태에서 단계적으로 feature 추가
          • → 음 threshold가 있을듯
          • backward selection : 전체 feature로 시작하여 제거해나감
        • feature 중 일부를 사용하여 실제로 학습을 진행한 후 모델의 성능 측정
        → 시간이 오래걸려→ 오버피팅 될지도?
        • Embedded method모델링 알고리즘 자체적으로 penalty term을 통해서 feature를 선택하는 기능 내재
          • decision tree
          • LASSO, Ridge
          • 대부분의 DNN
        • wrapper, filter 방법 혼용해서 사용
        → 알고리즘 내부족으로 중요한 feature를 선별
      • → 실제로 학습하니까 많은 컴퓨팅 자원이 필요
      • → 일반성이 좋은데 wrapper와 비교 시 성능이 낮을 수 있어
      • 중복 및 관련없는 feature 삭제
      • overfiting 예방 중요!
    • 데이터 인코딩
    • missing 데이터 처리
      • 정의되지 않은 값
      • 데이터 수집, 정제 실수
      • df.isnull().sum()
      • df.isnull().sum(axis=1)
      • df.dropna(): 행 단위로 삭제
      • 치환하는 방법
        • 카테고리 타입: 가장 많이 발생하는 값으로
        • 연속적인 값: 평균, 중간값 등
        • k-nn, soft impute 등
    • outlier 처리
      • Boxplot : 평균으로부터 떨어진 데이터의 분포 보여줌
        • 정량적 판단 가능
      • Scatter plot: 육안으로 outlier 판단 가능 (상관관계를 보여줌)
  5. 모델 학습
    • 데이터 준비 → 데이터 포맷
      • csv
      • json
      • Protocol Buffer
        • 원격지에 위치한 서버 간의 데이터 전송을 위해 개발됨
        • 데이터 직렬화 → 프로그램 내 객체를 바이트 스트림으로 표현, 직렬화된 데이터는 파일에 저장 가능, 네트워크로 전송가능
        • 다양한 데이터 사이즈의 타입 표현이 가능해야해
        • 구글에서 제안 및 활용함
        • 언어 및 플랫폼에 종속적이지 않음
          • 직렬화 단계가 효율적, 확장가능, 간단함
        • 각각 메세지는 유니크한 번호로 매겨짐
        • 필드 타입 : required, optional, repeated
        • 데이터 타입: int, float, bool, string
        • .proto 파일: 각 필드에 대한 선언을 포함함
        • pb 파일: protoBuf 포맷으로 직렬화된 파일, 사이즈 작고 속도 빠름
    • 모델 학습 시 데이터 분리
      • train : 모델 생성 시
      • validation : 생성된 모델의 성능 측정, 데이터 저확도 향상 추구, 모델 튜닝
      • test : 최종 정확도 판단, 실제 배포 서비스에 기대되는 성능
      • k-fold cross validationtrain-test 의 조합을 바꿔가면서 젤 좋은 성능을 보이는 경우로 선택
      • 데이터 셋이 작은 경우에 사용하면 좋음
      • 데이터 셔플링
        • random sampling → 무작위
        • stratified sampling → 데이터 비율을 유지하며 샘플링
      • 정렬화 된 데이터를 분리하면 데이터간 bias가 존재함
  6. 모델 평가
    • confusion matrix
      • Sensitivity (recall) : 전체 true 중 ture 를 판별한 비중
      • Specificity : 특정 클래스를 not으로

      • F1-Score
        • precision과 recall을 함께 고려
        • 단독으로 사용하면 오류 발생 가능성 심해!
        • 조화 평균이라고 불러!
        • 특정 값이 좋은 경우보다 둘의 균형이 맞을 때 좋은 값이 나왕
    • 학습에 사용되지 않은 test 데이터 셋에 대해서 올바른 기준으로 예측하는 지 평가해줌
    • Threshold 기반의 분류모델
      • Receiver Operating Characteristic
  7. 목표 달성
    1. no → feature engineering (featrue 증강)
  8. 모델 배포