[혼공머신] 1주차_ 머신러닝 시작과 데이터

배바오·2024년 1월 7일
0
  • 인공지능 : 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술

    일반인공지능 : 사람과 구분하기 어려운 지능을 가진 컴퓨터 시스템

    약인공지능 : 특정분야에서 사람의 일을 도와주는 보조 역할

    ex) 음성비서, 자율 주행 자동차, 음악추천, 기계번역, 알파고 등

  • 머신러닝 : 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야로 주로 파이썬의 사이킷런(Scikit-learn) 라이브러리 이용

(참고로 파이썬은 컴파일(인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업)을 하지 않아도 되므로 사용하기 편리하다.)

  • 딥러닝 : 머신러닝 알고리즘 중 인공신경망을 기반으로 한 방법들을 통칭하며 구글의 텐서플로 라이브러리나 페이스북의 파이토치 라이브러리를 이용.
  • 구글 코랩 : 구글 클라우드의 가상서버를 사용한 주피터 노트북 개발환경(가상서버는 최대5개까지가능)

미션 : 도미와 빙어 데이터를 구분하여 생선 이름을 자동으로 알려주는 머신러닝 만들기

(머신러닝은 스스로 각 생선마다의 기준을 찾아서 분류 및 판별할 수 있어야 함.)

▶ k-최근접 이웃 알고리즘 이용

: 어떤 데이터에 대한 답을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로 사용하는 알고리즘

데이터를 모두 갖고 있어야하며 새로운 데이터를 예측할 때는 가장 가까운 직선거리에 어떤 데이터가 있는지를 살피기만 하면 됨.

단점은 데이터가 아주 많은 경우 메모리가 많이 필요하고 직선거리를 계산하는 양이 많아서 사용하기 어려움.

1) 도미와 빙어 데이터 파악

  • 도미 데이터

  • 빙어 데이터

2) 데이터 합치기

3) 사이킷런을 이용하기 위해 2차원 리스트로 만들어주기

또 다른 방법

4) 도미(35마리)를 1로, 빙어(14마리)를 0으로 하는 정답리스트 만들기

또 다른 방법

5) 넘파이 라이브러리를 이용하여 fish_data와 fish_target 무작위 배열
(훈련세트와 테스트 세트에 도미와 빙어가 골고루 섞여야 샘플링 편향이 일어나지 않기 때문!)

※ 주의 ※
weight는 200씩 0부터 1000까지, length는 5씩 10부터 40까지 표현된 그래프

6) xlim을 이용해서 weight와 length 범위 맞춰주기

생선의 길이는 가장 가까운 이웃을 찾는 데 크게 영향을 미치지 못하여 오로지 생선의 무게만 생각하면 됨.

※ 한계
길이와 무게의 스케일이 달라서 알고리즘이 올바르게 예측할 수 없음.

▶데이터 전처리 필요
특성값을 일정한 기준으로 맞춰주는 작업

ex) 표준점수 : 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져 있는 지를 나타내며 이를 통해 실제 특성값의 크기와 상관없이
동일한 조건으로 비교할 수 있음.

7) 2개의 특성에 대해 동시에 표준점수 만들기

8) 길이가 25, 무게가 150인 데이터를 표준점수로 변환하여 그래프 그리기

9) 학습시킨 후 표준점수로 변환된 데이터의 생선 종류 예측

이때, 기본적으로 가장 가까운 5개의 데이터를 참고하여 도미/빙어를 구분하지만 아래와 같이 n_neighbors = n 을 이용하여 임의로 참고할 데이터 수를 지정할 수도 있다.

아래의 코드로 n을 반복문을 통해 대입하여 정확도가 1보다 작아질 때를 알 수도 있다.

10) 표준점수로 변환된 도미(마름모), 빙어(원), 새로운 데이터(삼각형)

예측된 결과에서와 같이 새로운 데이터는 도미와 많이 가깝게 있어서 도미로 예측하는 것이 맞다.

선택미션

p.86 2-1 확인문제
1) ①
지도학습 : 샘플의 입력과 타깃(정답)을 알고 있을 때 사용할 수 있는 학습방법

2) ④
샘플링 편향 : 훈련 세트와 테스트 세트가 잘못 만들어져 전체 데이터를 대표하지 못하는 현상

3) ②
사이킷런의 입력데이터는
[[길이,무게],
.
.
.
[길이,무게]]
이런 형식이므로 행은 샘플, 열은 특성을 나타낸다.

profile
통계를 판다

0개의 댓글