인공지능 사람처럼 학습하고 추론 할 수 있는 지능을 가진 시스템을 만드는 기술
강인공지능과 약인공지능으로 나눌 수 있다.
머신러닝이란 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야.
인공지능 하위 분야 중 지능을 구현하기 위한 소프트웨어를 담당하는 핵심 분야
사이킷런: 컴퓨터 과학의 대표적인 머신러닝 라이브러리
통계학 기반이 아닌 경험을 바탕으로 발전
딥러닝
많은 머신러닝 알고리즘 중에서 인공 신경망을 기반으로 한 방법들을 통칭하여 딥러닝이라고 부른다
1988- 얀 르쿤 - 손글씨 글자 - LeNet-5 - 최초의 합성곱 신경망
2012- 제프리 힌턴 - ImageNet - AlexNet
오픈소스 - 구글 / 텐서플로, 페이스북/ 파이토치
공통점: 인공 신경망 알고리즘 사용 , 파이썬 API 사용
-----
사이킷런의 k-최근접 이웃 알고리즘: 주변에서 가장 가까운 5개의 데이터를 보고 다수 선택
주위의 다른 데이터를 보고 다수를 선택 근묵자흑
fit() : 사이킷런 모델을 훈련할 때 사용하는 메서드 / 매개변수로 훈련에 사용할 특성과 정답 데이터 전달
predict(): 사이킷런 모델을 훈련하고 예측할 때 사용하는 메서드 / 특성 데이터 하나만 매개변수로 받는다.
score() : 훈련된 사이킷 모델의 성능을 예측 // 매개변수로 특성과 정답 데이터 전달
----
머신러닝은 크게 지도학습과 비지도 학습으로 나누어짐
지도 학습 : 입력과 타겟을 전달하여 모델을 훈련한 다음 새로운 데이터 예측하는 데 활용
비지도 학습 : 타깃 없이 데이터만 이용 -> 데이터에서 어떤 특징을 찾는 데 주로 사용
----
샘플링이 한쪽에 치우쳐있는 샘플링 편항을 조심해야한다.
넘파이: 파이썬의 대표적인 배열 라이브러리 -> 고차원의 배열을 쉽게 만들수 있도록 간편한 도구 제공
넘파이 arrange() 함수에 정수 N을 전달하면 0에서부터 N-1까지 1씩 증가하는 배열을 만든다.
넘파이 배열의 크기는 파이썬의 튜플로 표현
무작위로 데이터 나누었을 때 샘플이 골고루 섞이지 않을 수 있음(특히 일부 클래스가 적은 경우)
훈련세트와 테스트세트에 샘플 클래스 비율이 일정하지 않으면 모델이 학습을 제대로 못할 수 있음
stratify 매개변수에 타겟 데이터 전달하면 클래스 비율에 맞게 데이터 나눈다.
matplot에서 x축 범위 지정하려면 xlim() 함수 사용하면 된다. ex) plt.xlim((0,1000))
데이터에서 각 특성이 놓인 범위가 매우 다르다. 특성의 스케일이 다르다고도 말한다.
알고리즘이 거리 기반인 경우 올바르게 예측이 불가능한데 K-최근접 이웃도 포함된다.
샘플을 제대로 사용하려면 특정값을 일정한 기준으로 맞춰줘야하는데
이게 바로 데이터 전처리라고 한다.
가장 널리 사용하는 전처리 방법 중 하나는 표준점수
분산: 데이터에서 평균을 뺀 값을 제곱하고 다 더해서 평균으로 나눔
표준편차: 분산의 제곱근 데이터가 분산된 정도를 알려준다.
표준점수: 각 데이터가 원점에서 몇 표준편차만큼 떨어져 있는지 나태는 값
대부분의 머신러닝 알고리즘은 특성의 스케일이 다르면 잘 작동하지 않는다.
테스트 세트는 반드시 훈련 세트의 통계값으로 변환해야한다 !!!
그렇지 않으면 훈련세트에서 학습한 모델이 테스트 세트에서 올바르게 작동하지 않음
-----
혼공 기본미션 & 선택미션