1-1 인공지능과 머신러닝, 딥러닝
인공지능은 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술이다. 이런 인공지능은 약인공지능과 인공일반지능으로 나뉜다. 약인공지능은 chatGPT같이 사용자가 입력을 하면 반응을 하는 일차원적인 기능을 제공한다. 인공일반지능은 강인공지능이라고도 부른다. 흔히들 생각하는 SF 창작물에 나오는 로봇 등에 탑재된 인공지능으로, 약인공지능과 달리 마치 사람과 동등한 지능을 가지고 있는 것 처럼 보이는 인공지능을 뜻한다.
머신러닝은 많은 데이터에서 규칙을 스스로 학습하는 알고리즘을 연구하는 분야로, 통계학과 깊은 관련이 있다. 이런 머신러닝 라이브러리로는 사이킷런이있다.
딥러닝은 머신러닝 중, 인공신경망을 기반으로 한 방법들을 말한다. 딥러닝 라이브러리로는 텐서플로와 파이토치 등이 있다.
1-2 코랩과 주피터 노트북
1-3 마켓과 머신러닝
[k-최근접 이웃 알고리즘으로 빙어와 도미 구분하기]
- 무게와 길이를 특성으로 한 빙어와 도미의 산점도
# matplotlib : 파이썬 과학계산용 라이브러리
import matplotlib.pyplot as plt
# scatter : 산점도를 그리는 함수
plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
# 주황색 : smelt(빙어), 파랑색: bream(도미)
# 산점도 => 일직선으로 가까운형태, 선형적
- k-최근접 이웃 알고리즘을 이용한 빙어와 도미 분류
length = bream_length + smelt_length
weight = bream_weight + smelt_length
# length와 weight 리스트를 2차원 리스트로 만들기
fish_data = [[l,w] for l, w in zip(length, weight)]
# k-최근접 이웃 알고리즘. 데이터가 아주 많은 경우 => 메모리 많이 필요, 직선 거리 계산 많음
# n_neighbors 매개변수로 기준 변경 가능
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
# fit : 주어진 데이터로 알고리즘 훈련 - 데이터에서 규칙을 찾는 과정
kn.fit(fish_data, fish_target)
# score : 모델을 평가하는 메서드. 정확도(정확히 맞힌 개수 / 전체 데이터 개수) 출력
kn.score(fish_data, fish_target)
: 1.0
2-1 훈련세트와 테스트 세트
평가에 사용하는 데이터를 테스트 세트, 훈련에 사용되는 데이터를 훈련 세트
머신러닝은 크게 지도학습, 비지도학습, 강화학습으로 나뉜다. 지도학습은 훈련하기 위한 데이터(입력)와 정답(타깃)이 필요하며, 이 둘을 합쳐 훈련 데이터라고 말한다. 지도학습의 예시로는 k-최근접 이웃이 있다. 비지도학습은 입력데이터만 있고 정답은 없는 머신러닝이다. 강화학습은 타깃이 아니라 알고리즘이 행동한 결과로 얻은 보상을 사용해 학습하는 것을 말한다.
평가에 사용하는 데이터를 테스트 세트, 훈련에 사용되는 데이터를 훈련 세트라고한다. 테스트 세트와 훈련 세트가 골고루 섞여있지 않은 경우를 샘플링 편향이라고 부른다.
2-2 데이터 전처리
알고리즘을 제대로 사용하기 위해 특성값을 일정한 기준으로 맞추는 작업을 데이터 전처리라고 한다. 보편적으로 사용되는 전처리 방법에는 표준점수(z점수)가 있다. 표준점수는 각 특성 값이 평균에서 표준 편차의 몇 배만큼 떨어져 있는지를 나타낸다.
문제풀이
1. 머신러닝 알고리즘의 한 종류로서 샘플의 입력과 타깃을 앙ㄹ고 있을 때 사용할 수 있는 학습 방법은 무엇인가요?
: 지도 학습
2. 훈련 세트와 테스트 세트가 잘못 만들어져 전체 데이터를 대표하지 못하는 현상을 무엇이라고 부르나요?
: 샘플링 편향
3. 사이킷런은 입력 데이터가 어떻게 구성되어 있을 것으로 기대하나요?
: 행-샘플, 열-특성