여름에도 진행했던 혼공학습단!!
여름동안 그래도 책 한권을 꾸준히 공부할 수 있는 동기부여가 되어서 참 좋은 활동이었다고 느껴서
겨울에도 신청해야지~ 하고 있다가 신청했다.
이번 겨울에 신청한 책은
'혼자 공부하는 머신러닝+딥러닝' 이다.
2024년 동안 머신러닝과 딥러닝을 지겹도록 배우긴 하였으나 머릿속에 뒤죽박죽 정리가 제대로 안된 것 같아 한번 제대로 정리해보면 좋겠다고 생각하여 이 책으로 결정했다.
1. 나의 첫 머신러닝
1-1) 인공지능과 머신러닝, 딥러닝
인공지능 (Artificial intelligence) | 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술 - 인공일반지능(강인공지능) : 사람과 구분하기 어려운 지능을 가진 컴퓨터 시스템 - 약인공지능 : 현실에서 우리가 마주하는 인공지능으로 특정 분야에서 사람의 일을 도와주는 보조 역할 |
머신러닝 (machine learning) | 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 연구하는 분야 - 대표 라이브러리 : 사이킷런(scikit-learn) |
딥러닝 (deep learning) | 많은 머신러닝 알고리즘 중에 인공신경망(artificial neural network)을 기반으로 한 방법들을 통칭 - 대표 라이브러리 : 텐서플로(tensorflow), 파이토치(pytorch) |
1-2) 코랩과 주피터 노트북
코랩에 관한 기본적인 내용
1-3) 마켓과 머신러닝
- 도미와 빙어 분류하기
- 사이킷런 패키지를 사용하기 위해선 각 특성의 리스트를 세로 방향으로 늘어뜨린 2차원 리스트를 만들어야 한다. 즉, 하나의 데이터 포인트가 행으로 들어가고 모든 데이터 포인트가 한번 더 리스트로 감싸져야 한다는 뜻
- K-최근접 이웃 알고리즘
- 가장 간단한 머신러닝 알고리즘 중 하나. 어떤 규칙을 찾기 보다도 전체 데이터를 메모리에 가지고 있고 새로운 데이터에 대해 가장 가까운 k개의 데이터와의 직선거리를 기준으로 분류해줌. 기본값 5
- p는 매개변수로 거리 재는 방법 지정. 1은 맨해튼, 2는 유클리디안. 기본값 2
- n_jobs는 매개변수로 사용할 CPU코어 지정. -1이면 모든 CPU코어 사용. 기본값 1
- fit() : 사이킷런 모델 훈련시 사용하는 메서드
- predict() : 사이킷런 모델을 훈련하고 예측할 때 사용하는 메서드. 특성 데이터 하나만 매개변수로 받음.
- score() : 모델의 성능측정. 처음 두 매개변수로 특성과 정답 데이터 전달. predict()로 먼저 예측 수행한 다음 분류 모델의 경우 정답과 비교하여 올바르게 예측한 개수의 비율 반환
2. 데이터 다루기
2-1) 훈련 세트와 테스트 세트
지도 학습 | 타깃 데이터가 존재. 입력과 타깃을 전달하여 모델을 훈련한 후 새로운 데이터를 예측하는데 활용 |
비지도 학습 | 타깃 데이터가 없음. 입력 데이터에서 어떤 특징을 찾는데 주로 활용 |
훈련 세트 | 모델을 훈련할 때 사욯하는 데이터. 클수록 좋음 |
테스트 세트 | 전체 데이터에서 20~30%를 테스트 세트로 보통 사용. 전체데이터가 매우 클 경우 1%만 덜어내도 괜찮음. |
- 훈련 데이터와 테스트데이터를 선별하는 방법
넘파이에서 random seed를 설정하고 index를 할당한 뒤 index를 무작위로 shuffle 해서 훈련데이터와 테스트데이터 분할
-numpy
seed() | 난수를 생성하기 위한 정수 초깃값 지정 |
arange() | 일정한 간격의 정수 또는 실수 배열 생성 |
shuffle() | 주어진 배열을 랜덤하게 섞음. 다차원 배열일 경우 첫번째 축에 대해서만 섞음. |
2-2) 데이터 전처리
- 넘파이의 columns_stack() : 전달받은 리스트를 일렬로 세운 다음 차례대로 나란히 연결
- np.columns.stack() 이나 np.concatenate() 모두 튜플로 전달해야함 (안에 튜플로 들어가야함)
- 특성 간 스케일이 다른 경우(데이터를 표현하는 기준이 다를 경우) 알고리즘이 올바르게 예측 불가능. 특히 거리기반일때.
- 가장 많이 사용하는 방법이 표준점수 방법.
- 테스트 세트도 훈련 세트의 평균과 표준편차를 활용하여 변환해야함. 훈련 후 테스트 세트를 평가할 때도 훈련 세트의 기준으로 테스트 세트를 변환해야 함
데이터 전처리 | 머신러닝 모델에 훈련 데이터를 주입하기 전에 가공하는 단계 |
표준점수 | 훈련 세트의 스케일을 바꾸는 대표적 방법. 특성의 평균을 빼고 표준편차로 나눠줌 |
브로드캐스팅 | 크기가 다른 넘파이 배열에서 자동으로 사칙 연산을 모든 행이나 열로 확장하여 수행 |
- scikit-learn
train_test_split() | 훈련 데이터를 훈련 세트와 테스트 세트로 나눔 - test_size = 0.25 - shuffle = True - stratify = 클래스 비율에 맞게 훈련 테스트 나눠줌 |
kneighbors() | 가장 가까운 이웃을 찾아 거리와 이웃 샘플의 인덱스 반환. |
- 기본 숙제
- 추가 숙제
- 지도 학습이란 샘플의 입력과 타깃을 알고 있을 때 사용할 수 있는 학습 방법
- 샘플링 편향 : 훈련 세트와 테스트 세트에 샘플이 골고루 섞여 있지 않아 샘플링이 한쪽으로 치우친 현상
- 사이킷런은 입력 데이터의 행이 샘플, 열이 특성으로 구성되어 있을 것으로 기대한다.
'혼공학습단' 카테고리의 다른 글
[혼자 공부하는 R 데이터분석] 6주차_데이터 시각화(ggplot2, ggmap) (0) | 2024.08.19 |
---|---|
[혼자 공부하는 R 데이터분석] 5주차_데이터 가공하기(dplyr, 데이터 결합, reshape2) (0) | 2024.08.03 |
[혼자 공부하는 R 데이터분석] 4주차_데이터 수집, 관측, 시각화 (0) | 2024.07.29 |
[혼자 공부하는 R 데이터분석] 3주차_변수, 함수, 조건문, 반복문 (1) | 2024.07.18 |
[혼자 공부하는 R 데이터분석] 2주차_데이터분석의 기본 알아보기 (0) | 2024.07.11 |