BOOKS
2020.03.20 처음배우는 머신러닝
파란실버라이트
2022. 2. 4. 14:33
- 머신러닝 기초지식
- 머신러닝 시작하기
- 머신러닝 소개
- 데이터를 이용해서 명시적으로 정의되지 않은 패턴을 컴퓨터로 학습하여 결과를 만들어내는 학문 분야
- 데이터
- 패턴 인식
- 사용자가 일일이 정해놓은 패턴(알고리즘)으로 데이터를 분석하는 것이 아닌 데이터를 보고 패턴을 추리는 것(알고리즘을 찾아나는 것)이 머신러닝의 핵심
- 딥러닝도 '패턴을 찾아내려고 학습한다'는 점에서 목표 동일
- 데이터를 이용해서 명시적으로 정의되지 않은 패턴을 컴퓨터로 학습하여 결과를 만들어내는 학문 분야
- 머신러닝을 이해하는 데 필요한 배경지식
- 수학(선형대수, 미분, 통계, 확률)
- 프로그래밍
- 머신러닝 발전사
- 신경망 시대 - 데이터가 굉장히 한정적이라 , 신경망 성능이 생각보다 신통치 않고 , 결과가 좋지 않음
- 통계학적 머신러닝 시대 - 통계학과 전산학의 접목, 대규모 데이터에서 패턴을 찾음, 데이터에 더 큰 비중
- 딥러닝 시대 : 기존의 신경망보다 훨씬 더 복잡한, 즉 깊이기 같은 신경망 + 통계학적 머신 러닝과 접목
- 현재 트렌드 : 대량의 데이터를 바탕으로 하는 딥러닝 기법을 주로 사용
-
- 머신 러닝의 분류
- 풀고자 하는 목표
- 지도학습 - 주어진 데이터와 레이블을 이용해서 미지의 상태나 값을 예측
- 회귀 - 숫자값을 예측
- 분류 - 주어진 항목으로 나눔 / downtime solution suggestion system
- 추천 - 사용자 선호도를 예측/ 입력과 출력이 아닌 , 다양한 관계를 고려
- 랭킹 - 데이터의 순위 / 영화 10편 추천
- 비지도 학습 - 유용한 패턴을 찾아내는 학습 방법 / 데이터의 성질을 직접적으로 추측
- 군집화 - 비슷한 데이터들을 묶어서 큰 단위로 만듬 / 문서 하나를 클러스터 하나로 분류
- 토픽 모델링 - 주로 텍스트 데이터에 사용 / 관련정도를 확률로 표현
- 밀도 추정 - 관측한 데이터로 부터 데이터를 생선한 원래의 분포를 추측
- 차원 축소 - 데이터의 차원을 낮춘다 / 데이터가 복잡하고 높은 차원을 가져서 시각화 하기 어려울때 2차원, 3차원으로 표현
- 강화학습 - 상호작용(선택과 피드백의 반복)을 통해 장기적으로 얻는 이득(reward)를 최대화 / 알파고
- 지도학습 - 주어진 데이터와 레이블을 이용해서 미지의 상태나 값을 예측
- 풀어내는 기법 / 위 목표를 통계적인 방법으로 풀수도, 딥러닝 방법으로 풀수도
- 통계
- 딥러닝
- 머신 러닝의 한 종류로 , 사용하는 기법이 특정 형태를 가지는 것
- 데이터 양에 의존하는 기법으로 , 큰 테이터에서 잘 동작하는 방법
- 풀고자 하는 목표
- 머신러닝 소개
- 머신러닝 주요개념 : 좀 더 공부해야 함.
- 모델 : 문제를 바라보는 관점
- 손실 함수 : 모델의 수식화된 학습목표
- 최적화: 실제로 학습을 하는 방법
- 모델 평가 : 실제 활용에서 성능을 평가하는 방법
- 머신러닝 시작하기
- 머신러닝 주요모델
- 데이터와 문제
- 데이터형
- 데이터 양과 품질
- 데이터 표준화
- 문제 유형
- 구매 이력데이터를 이용한 사용자 그룹 만들기
- 문서 분석 시스템 만들기
- 영화 추천 시스템 만들기
- 이미지 인식 시스템 만들기
- 머신러닝의 다양한 문제점 해결하기 : 공부 필요
- 모델문제
- 좋은 모델을 좀 더 수월하게 찾는 방법
- 간단한 모델부터 적용하기
- 간단한 모델은 구현이 쉽고 학습도 쉽습니다.
- 간단한 모델의 성능은 다른 모델이 얼마나 잘 동작하는지에 대한 지표가 됩니다.
- 간단한 모델은 원인을 파악하기가 상대적으로 쉽습니다.
- 데이터와 모델 시각화 하기
- 데이터 이상 파악
- 데이터 특성 파악
- 모델 동작 방식 이해
- 간단한 모델부터 적용하기
- 모델의 최대 성능 가늠하기
- 머신러닝 시스템과 사람의 성능비교
- 이론상 성능의 한계나 보장된 값이 존재할 때
- 좋은 모델을 좀 더 수월하게 찾는 방법
- 데이터 문제
- 데이터가 너무 많을 때
- 과소표집 - 데이터를 무작위 확률로 선택해서 , 이루어진 데이터 셋을 사용
- 중요도 표집 - 데이터의 중요도에 따라 선택활률을 변동하여 샘플링
- 피처 선책 - 중용한 피처만 선택해서 전체 학습률과 성능을 증가시키는 방법
- 데이터가 너무 적을 때
- 레이블된 데이터는 별로 없지만 일반적인 데이터가 많은 경우(표현형 학습)
- 데이터의 일반적인 특성을 배우는 학습을 수행하여 얻어진 정보를 이용해서 추가로 학습
- 전이학습
- 성격이 다른 데이터셋을 이용해서 학습시킨 모델을 현재 데이터셋에 적용하는 방법
- 레이블된 데이터는 별로 없지만 일반적인 데이터가 많은 경우(표현형 학습)
- 데이터가 좀 치우처 있을때
- 레이블이 한쪽으로 치우쳐 있을 때
- 데이터값이 치우처 있을때
- 데이터가 너무 많을 때
- 속도 문제
- 백터 연산
- 넘파이나 사이파이를 사용해서 반복연산을 한번에 처리하는 함수를 사용
- 머신러닝을 효율적으로 수행하기 위한 시스템
- 하드웨어
- 네트워크 구성
- 운영체제
- 분산 처리
- 데이터분산 처이
- 디스크 - 분산형 저장 방식 , 하둡 / Mahout 라이브러리 / 딥러닝 구현 어려움 / 협업 필터링, 군집화
- 메모리 - 메모리에 올려 작업 속도를 높인 기술이 스파크 , Mlib 라이브러리 제공 / 맵리듀스에 기반 복잡한 머신러닝 모델을 구현하기에는 적합하지 않음
- 연산 분산 처리
- 텐서플로 - 연산 자체를 분산 처리하기 쉽게 구성 / 비동기 학습도 순쉽게 가능
- 데이터분산 처이
- 결론
- 딥러닝 - 텐서플로
- 큰 데이터를 클러스터에 나누어 저장한 뒤 통계학 기법을 이용, 빠른 속도로 살펴볼 때 - 스파크
- 데이터가 너무 커서 메모리에 올라가지 않아 스카크가 비효율적일 떄 - 하둡
- 백터 연산
- 모델문제
- 데이터와 문제
- 머신러닝 시스템구현
- 머신러닝 소프트웨어 소개
- 라이브러리
- 넘파이 : 파이썬에서 고속 수치 연산을 지원하는 라이브러리, 다차원 배열, 행렬 및 이를 이용한 계산 함수
- 싸이파이 : 수학 과학 연산을 위한 다향한 함수를 지원
- 사이킷런 : 파이썬 용 머신러닝 라이브러리
- 머신 러닝 라이브러리
- 사이킷런 : 지도학습, 비지도학습 알고리즘을 구현 , 넘파이와 사이파이를 이용 고속화 , 학계와 현장에서 가장 많이 사용
- 판다스 : 데이터 가공에 사용되는 라이브러리
- NLTK : 자연어 툴킷
- Nllib : 스파크용 머신러닝 라이브러리 / 파이썬, 스칼라, 자바 인터페이스 지원 , 분류/회괴 관련 함수/ 군집화 함수, 협업 필터링, 모델 선택 및 파라미터 튜닝 기능도 제공
- 딥러닝 라이브러리
- 텐서플로 : 구글개발한 딥러닝 라이브러니 / TFLearn , Keras 등 텐서플로를 더 쉽게 사용할 수 있는 고수준 래퍼를 제공 \
- 파이토치
- 카페
- 테아노
- 연산관련 라이브러리 : 딥러닝은 그래픽 가속연산을 통해서 학습을 빠르게
- CUDA : 엔비디아 GPU
- OpenCL : 애플 AMD , 인텔 환경
- 라이브러리
- 구매 이력 데이터를 이용한 사용자 그룹 만들기 - 실전
- 문서 분석 시스템 만들기 - 실전
- 영화 추천 시스템 만들기 - 실전
- 이미지 인식 시스템 만들기 - 실전
- 머신러닝 소프트웨어 소개