머신러닝 기초

인공지능 ⊃ 머신러닝 ⊃ 딥러닝                    

    • input+output → 머신러닝 → 규칙/패턴 찾기
  •  
    • 스스로 학습하는 학문   
      • 단순히 작업만 실행(T)은 머신러닝 X (학습의 부재)
  •  
    • ETP 
      • E : 바둑 경기 / T : 실전 경기 진행 / P : 승리할 확률
    • vs Programming 
      • input → programing → 원하는 output                     
      • 스팸 ; 머신러닝 - 알아서 처리 / 프로그램밍 - 수작업
  •  
    • 머신러닝의 Data 종류
      • Training -> 모델링 (외부 Data로 비슷한 성능 출력)
      • Test
  •  
    • 모델링 → 일반화 / 분류화 / 추상화
      • Training Data 와 input Data 달라져도 같은 성능의 output을 내기 위함
      • 일반화의 문제
        • 과대적합 : Training 정확도↑, 외부 Data 정확도 ↓
          : 훈련 Data 증가 / 잡음 줄이기 / 정규화 
        • 과소적합 : Training 정확도↓, 외부 Data 정확도 ↑
          : 파라이터가 더 많은 복잡한 모델 사용 / 모델 제약 줄이기
          / 충분한 학습 (~ 조기종료 시점까지)
  •  
    • 데이터 나누기
      •                Training                                      | Test - 머신러닝
      •                Training            |  Validation  | Test - 딥러닝
        ↳                훈련을 위한 데이터             ↲
      • Validation : 트레닝 중 잘 되는지 검증/평가용 데이터
  •  
    • 데이터 전처리
      • 굉장히 많은 시간 소요 / 거의 대부분의 시간 할애
      • 결측치 처리(missing value)
        • 평균값 넣기
        • 최빈값 넣기
        • 날려버리기
        • df.inull().sum() : 결측치 개수 확인
        • df.fillna(0) : 결측치 0으로 처리
  •  
    • 범주형 변수 처리
      • 원-핫 인코딩 : 범주형 데이터 -> 0 or 1
        • from sklearn.preprocessing import OneHotEncoder
      • 데이터 바인딩 : 연속형 데이터 -> 구간 나눔
  •  
    • Feature scaling
      • Min-Max Normalization
        : 최대 최소값을  0~1의 범위로 데이터 표준화
        • from sklearn.preprocessing import minmax_scale()
      • Standardization
        : 표준화 확률 변수 / z 스코어 구하는 법
  •  
    • 교차검증 - 모델을 평가하는 방법 중 하나
      • 훈련 데이터로 훈련시키고 테스트 데이터로 정확도/스코어 구함
      • 데이터 수가 적다면 신뢰도 낮아짐
        => 데이터 수가 적을 때 사용
        • K-Fold
          • 데이터를 훈련/검증 데이터로 k번 쪼갠 후 반복
          • 성능의 평균으로 결론

머신러닝 모델의 답

T                F

실제          T       a                b                          

정답          F       c                d                          

        • 정밀도 Presision = a / ( a + c)
        • 재현율 = a / ( a + b)
        • Accuracy = ( a + d ) / (a + b + c + d ) 
        • F1 Score = [2 x (정밀도 X 재현율)] / ( 정밀도 + 재현율 ) 
          : 정밀도와 재현율의 조화 평균

  • 지도 학습 : 우리가 정답(레이블)을 주고 학습

    • 분류
      • 2진 분류
      • 다중 분류 
    • 회귀 : 연속적인 예측 with 예측변수 feature
      • 선형회귀
        • 1차함수의 기울기
        • H(x) = wx + b
        • MSE 비용함수 - 가설이 잘 맞는지 검사
          : cost(x) =1∕m∑(H(x)-y)^2 
          ∴MSE를 통해 w와 b값 찾기 = 선형 회귀 분석
        • 단차를 최소화 = Good
        • 경사하강법 - 최소값 찾기
          • W = w - 𝛼 × 𝜕MSE∕𝜕w
          • Running mate
            • 기울기 느림(w↓) - 정확도↑- 오래걸림
            • 기울기 빠름(w↑) - 정확도↓- 빠름
          • local minimun ≠ global minimun 인 경우 있음

      • 다중 선형 회귀 (x의 변수 많음)
        • H(x1,x2) = w1x1 + w2x2 +b
        • 데이터가 너무 많을 경우 - 분류해서 선택
          • 시각화 (비지도학습)
          • PCA
          • 상관관계 분석
        • 전진선택법
          :  중요한 변수부터 차례대로 모델 추가
        • 후진제거법
          :  가장 영향이 적은 변수들 부터 제거
      • 로지스틱 회귀
        • 곡선 형태 → 정확도 증가
        • 분류에 사용 (0/1 이진형)
        • p 식 유도 p = e^(ax + b) / 1 + e^(ax + b)
          • p = ax + b
            • 좌변 0 or 1 / 우변 ±∞
          • p대신 Odds 넣기
            • 성공확률/실패확률 = 성공확률 / 1 - 성공확률
            • p /1 - p
          • Odds에 자연로그 씌우기 
            • ln(Odds) = ln(p/1 - p) = ax + b
          • 양변에 e 곱하기
            • e^ln(p/1 - p) = e^(ax + b)
            • p/1 - p = e^(ax + b)
            • p = e^(ax + b) / 1 + e^(ax + b)

        < 선형 회귀 | 로지스틱 회귀 >

직선 | 곡선

예측 | 분류

    연속 | 이진형

                                H(x) = Wx + b | p = e^(ax + b) / 1 + e^(ax + b)

      • 결정트리
        • 분류와 회귀 모두 가능한 지도학습 모델
        • Yes/No 질문들로 이어가며 학습
        • 한 번의 분기 때 마다 두개로 구분
          • 특정 질문에 따라 데이터를 구분 하는 학습
        • 질문/정답의 네모 상자 :Node
        • 맨 처음 분류 기준 : Root Node
        • 맨 마지막 분류 기준 : Terminal / Leaf Node
        • 지나치게 분류를 많이하면 오버피팅 발생 - 가지치기로 방지
          • 사전 가지치기
            : 트리 생성을 일찍 중단
            • 트리의 최대 깊이 / Leaf Node의 최대 갯수 제한
            • Node가 분할하기 위한 포인트에 최소 한계 지정
          • 사후 가지치기
            : 트리 생성 후 적은 데이터 포인터를 가진 노드 삭제/병합 시킴
        • 특성 중요도
          : 트리를 만드는 결정에 각 특성이 얼마나 중요한지 확인
          • 0 : 각 특성에 사용되지 않음
          • 1 : 완벽하게 타겟 플레이스를 예측 함
          • 중요할 수록 높은 위치의 Node
          • 특성 중요도가 낮다 ≠ 필요 없는 변수
            • 해당 변수를 선택하지 않았거나
            • 같은 정보를 가진 다른 특성 존재 할 수 있음
        • 장점
          • 알고리즘이 직관적 - 규칙 파악도 용이
          • 룰이 뚜렷, 규칙 노드와 리프노드를 알기 쉬움
          • 전처리 작업 필요성 낮음
          • 이상치나 노이즈에 큰 영향을 받지 않음
          • 비모수적 모형
            • 선형성/정규성/등분산성등의 가정 필요 X
          • 교호작용 효과
            • 두 개 이상의 변수가 결합하여 목표변수에 어떤 영향을 주는지 쉽게 알 수 있음
            • 가장 영향을 많이 주는 것 확인 가능
          • 연속형/이산형 데이터 둘 다 다룰 수 있음
        • 단점
          • 과적합 가능성 높음
          • 모델의 유연성 낮음
          • 일반성 부족
          • 정확도 낮음
      • 랜덤포레스트
        : 여러 결정 트리의 묶음
        • 결정 트리 많이 만들기 + 트리 생성에 무작위성 주입
        • 각 트리가 고유하게 만들지도록 무작위  선택 - bootstrap sample
          • 데이터 포인트 랜덤하게
          • 분류하는 질문의 특성 무작위
        • 트리 개수 정해야함
        • bootstrap sample
          : 0첫 단계에서 무작위로 중복을 허용해서 선택한 n개의 데이터를 선택하는 과정
          • 이를 통해 추출된 n개의 데이터  = 부트 스트랩 샘플
        • 기존 트리 : 각 노드에서 전체 특성을 대상으로 최선의 질문( 텍스트 )찯기
        • 각 노드에서 후보 특성을 랜덤하게 선택하고 그중에서 최선의 질문 및 테스트 선택
        • Max Feature
          : 모든 특성을 고려하게 되면 무작위성이 제외됨
          • 하나로 두면 특성을 고를 필요 없이 임계치만 찾으면됌
          • 크게하면 - 각 트리들이 비슷해짐
          • 작게하면 - 각 트리들이 차이점 커지고 데이터를 맞추기위해 깊이가 깊어짐
          • 기존 트리와 달리 무작위로 선택 후 후보들 중 최선의 테스트 도출 
      • 앙상블
        : 여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법
        (여러개의 약분류기를 결합하여 강분류기를 만드는 것)
        • 배깅
          : 샘플을 여버런 뽑아서 각 모델을 학습시키고 그 결과물을 집계
        • 부스팅
          : 가중치를 주어 약분류기를 강분류기로 전환
          • 팀워크 존재
          • 첫모델 예측 결과 - 결과에 따른 새로운 가중치 - 다음모델에 영향
      • KNN (K-Nearest Neighbor) - 회기 < 분류 모델
        • 가장 가까운 정보들로 추론
        • 새로운 데이터가 주어졌을때, 기존 데이터 중 가장 가까운 데이터로 새로운 데이터 추론
        • k 정하기 = 최근접 수 조절
        • 거리정하는 방법 표준화 : 피타고라스 / 유클리드 / 맨해튼
  • 비지도 학습 : input 데이터에 정답이 없음

    • 군집
      • 비슷한/유사도를 가진 것 끼리 묶음
    • 시각화

  • 준지도 학습 : 지도 학습 + 비지도 학습

  • 강화 학습

    • 에이전트 + 환경 +보상 -> 보상 극대화
    • 에이전트는 '운'으로 보상 획득 -> 보상을 극대화하는 방향으로 학습

댓글을 작성해보세요.

채널톡 아이콘