BOOKS

2020.03.20 처음배우는 머신러닝

파란실버라이트 2022. 2. 4. 14:33
  1. 머신러닝 기초지식 
    1. 머신러닝 시작하기 
      1. 머신러닝 소개 
        1. 데이터를 이용해서 명시적으로 정의되지 않은 패턴을 컴퓨터로 학습하여 결과를 만들어내는 학문 분야 
          1. 데이터 
          2. 패턴 인식  
            1. 사용자가 일일이 정해놓은 패턴(알고리즘)으로 데이터를 분석하는 것이 아닌 데이터를 보고 패턴을 추리는 (알고리즘을 찾아나는 ) 머신러닝의 핵심 
            2. 딥러닝도 '패턴을 찾아내려고 학습한다' 점에서 목표 동일 
      2. 머신러닝을 이해하는  필요한 배경지식 
        1. 수학(선형대수, 미분, 통계, 확률) 
        2. 프로그래밍 
      3. 머신러닝 발전사 
        1. 신경망 시대 - 데이터가 굉장히 한정적이라 , 신경망 성능 생각보다 신통치 않고 , 결과가 좋지 않음 
        2. 통계학적 머신러닝 시대 - 통계학과 전산학의 접목, 대규모 데이터에서 패턴을 찾음, 데이터에   비중  
        3. 딥러닝 시대 : 기존의 신경망보다 훨씬  복잡한,  깊이기 같은 신경망 + 통계학적 머신 러닝과 접목 
        4. 현재 트렌드 : 대량의 데이터를 바탕으로 하는 딥러닝 기법을 주로 사용 
      4. 머신 러닝의 분류 
        1. 풀고자 하는 목표 
          1. 지도학습 - 주어진 데이터와 레이블을 이용해서 미지의 상태나 값을 예측 
            1. 회귀 - 숫자값을 예측 
            2. 분류 - 주어진 항목으로 나눔 / downtime solution suggestion system 
            3. 추천 - 사용자 선호도를 예측/ 입력과 출력이 아닌 , 다양한 관계를 고려  
            4. 랭킹 - 데이터의 순위  / 영화 10 추천 

             

          2. 비지도 학습 - 유용한 패턴을 찾아내는 학습 방법 / 데이터의 성질을 직접적으로 추측 
            1. 군집화 - 비슷한 데이터들을 묶어서  단위로 만듬  문서 하나를 클러스터 하나로 분류 
            2. 토픽 모델링 - 주로 텍스트 데이터에 사용 / 관련정도를 확률로 표현 
            3. 밀도 추정 - 관측한 데이터로 부터 데이터를 생선한 원래의 분포를 추측 
            4. 차원 축소 - 데이터의 차원을 낮춘다 / 데이터가 복잡하고 높은 차원을 가져서 시각화 하기 어려울때 2차원, 3차원으로 표현 
          3. 강화학습 - 상호작용(선택과 피드백의 반복) 통해 장기적으로 얻는 이득(reward) 최대화 / 알파고 

           

        2. 풀어내는 기법 /  목표를 통계적인 방법으로 풀수도, 딥러닝 방법으로 풀수도  
          1. 통계 
          2. 딥러닝 
            1. 머신 러닝의  종류로 , 사용하는 기법이 특정 형태를 가지는  
            2. 데이터 양에 의존하는 기법으로 ,  테이터에서  동작하는 방법 

           

    2. 머신러닝 주요개념    공부해야  
      1. 모델 : 문제를 바라보는 관점 
      2. 손실 함수 : 모델의 수식화된 학습목표 
      3. 최적화: 실제로 학습을 하는 방법 
      4. 모델 평가 : 실제 활용에서 성능을 평가하는 방법 

       

  2. 머신러닝 주요모델 
    1. 데이터와 문제 
      1. 데이터형 
      2. 데이터 양과 품질 
      3. 데이터 표준화 
      4. 문제 유형 
    2. 구매 이력데이터를 이용한 사용자 그룹 만들기 
    3. 문서 분석 시스템 만들기 
    4. 영화 추천 시스템 만들기 
    5. 이미지 인식 시스템 만들기 
    6. 머신러닝의 다양한 문제점 해결하기 : 공부 필요 
      1. 모델문제 
        1. 좋은 모델을   수월하게 찾는 방법 
          1. 간단한 모델부터 적용하기 
            1. 간단한 모델은 구현이 쉽고 학습도 쉽습니다. 
            2. 간단한 모델의 성능은 다른 모델이 얼마나  동작하는지에 대한 지표가 됩니다. 
            3. 간단한 모델은 원인을 파악하기가 상대적으로 쉽습니다. 
          2. 데이터와 모델 시각화 하기 
            1. 데이터 이상 파악 
            2. 데이터 특성 파악 
            3. 모델 동작 방식 이해 
        2. 모델의 최대 성능 가늠하기 
          1. 머신러닝 시스템과 사람의 성능비교 
          2. 이론상 성능의 한계나 보장된 값이 존재할  
      2. 데이터 문제 
        1. 데이터가 너무 많을  
          1. 과소표집 - 데이터를 무작위 확률로 선택해서 , 이루어진 데이터 셋을 사용 
          2. 중요도 표집 - 데이터의 중요도에 따라 선택활률을 변동하여 샘플링 
          3. 피처 선책 - 중용한 피처만 선택해서 전체 학습률과 성능을 증가시키는 방법 
        2. 데이터가 너무 적을  
          1. 레이블된 데이터는 별로 없지만 일반적인 데이터가 많은 경우(표현형 학습) 
            1. 데이터의 일반적인 특성을 배우는 학습을 수행하여 얻어진 정보를 이용해서 추가로 학습 
          2. 전이학습 
            1. 성격이 다른 데이터셋을 이용해서 학습시킨 모델을 현재 데이터셋에 적용하는 방법 
        3. 데이터가  치우처 있을때 
          1. 레이블이 한쪽으로 치우쳐 있을  
          2. 데이터값이 치우처 있을때  
      3. 속도 문제 
        1. 백터 연산 
          1. 넘파이나 사이파이를 사용해서 반복연산을 한번에 처리하는 함수를 사용 
        2. 머신러닝을 효율적으로 수행하기 위한 시스템 
          1. 하드웨어 
          2. 네트워크 구성 
          3. 운영체제 
          4. 분산 처리 
            1. 데이터분산 처이 
              1. 디스크 - 분산형 저장 방식 , 하둡 /  Mahout 라이브러리 / 딥러닝 구현 어려움 / 협업 필터링, 군집화 
              2. 메모리 - 메모리에 올려 작업 속도를 높인 기술이 스파크 , Mlib 라이브러리 제공 / 맵리듀스에 기반 복잡한 머신러닝 모델을 구현하기에는 적합하지 않음 
            2. 연산 분산 처리 
              1. 텐서플로 - 연산 자체를 분산 처리하기 쉽게 구성 / 비동기 학습도 순쉽게 가능 
          5. 결론 
            1. 딥러닝 - 텐서플로  
            2.  데이터를 클러스터에 나누어 저장한  통계학 기법을 이용, 빠른 속도로 살펴볼  - 스파크 
            3. 데이터가 너무 커서 메모리에 올라가지 않아 스카크가 비효율적일  - 하둡 
            4.  

           

           

  3. 머신러닝 시스템구현 
    1. 머신러닝 소프트웨어 소개 
      1. 라이브러리 
        1. 넘파이 : 파이썬에서 고속 수치 연산을 지원하는 라이브러리, 다차원 배열, 행렬  이를 이용한 계산 함수 
        2. 싸이파이 : 수학 과학 연산을 위한 다향한 함수를 지원 
        3. 사이킷런 : 파이썬  머신러닝 라이브러리 
      2. 머신 러닝 라이브러리 
        1. 사이킷런 : 지도학습, 비지도학습 알고리즘을 구현 , 넘파이와 사이파이를 이용 고속화 , 학계와 현장에서 가장 많이 사용 
        2. 판다스 : 데이터 가공에 사용되는 라이브러리  
        3. NLTK : 자연어 툴킷 
        4. Nllib : 스파크용 머신러닝 라이브러리 / 파이썬, 스칼라, 자바 인터페이스 지원 , 분류/회괴 관련 함수/ 군집화 함수, 협업 필터링, 모델 선택  파라미터 튜닝 기능도 제공 
      3. 딥러닝 라이브러리 
        1. 텐서플로  구글개발한 딥러닝 라이브러니 / TFLearn , Keras  텐서플로를  쉽게 사용할  있는 고수준 래퍼를 제공 \ 
        2. 파이토치  
        3. 카페 
        4. 테아노 
      4. 연산관련 라이브러리 : 딥러닝은 그래픽 가속연산을 통해서 학습을 빠르게  
        1. CUDA  : 엔비디아 GPU 
        2. OpenCL : 애플 AMD  , 인텔 환경 
        3.  
    2. 구매 이력 데이터를 이용한 사용자 그룹 만들기 - 실전 
    3. 문서 분석 시스템 만들기 - 실전 
    4. 영화 추천 시스템 만들기 - 실전 
    5. 이미지 인식 시스템 만들기 - 실전