본 포스팅 한빛미디어의 <혼자공부하는 머신러닝+딥러닝(박해선 저)>를 요약 정리했습니다.


머신러닝 알고리즘

머신러닝 알고리즘은 크게 세가지 분류로 지도 학습(Supervised Learning), 비지도 학습(Unsupervised Learning), 강화 학습(Reinforcement Learning)으로 나눠진다. 이 포스팅에서는 지도 학습과 비지도 학습에 대해서만 작성한다.

지도 학습

지도 학습은 간단하게 말하면 정답이 있는 학습 알고리즘이다. 답과 문제를 비교해가면서 알고리즘이 정답을 맞히는 것을 학습한다. 즉, [데이터 : 정답] 형태로 되어있는 데이터 세트를 사용한다.

ex) 이메일의 스팸 여부 분류, 집값 예측, 기상 상황 예측

비지도 학습

비지도 학습은 지도 학습과 반대로 정답이 없는 상태로 문제만을 이용하는 학습 알고리즘이다. 데이터의 분류데이터 분석에 많이 사용되는 알고리즘이다.

ex) 구매 행동에 따른 고객 그룹화, 고객 데이터에서 연관성 식별, 구매 내역별 데이터 분류

데이터 세트

머신러닝을 학습하기 위해서는 데이터 세트가 필요하고 데이터 세트에는 테스트 세트(Test Set), 훈련 세트(Train Set)가 있다. 훈련 세트는 머신러닝 모델을 학습시키기 위해 사용되는 데이터이다. 테스트 세트는 훈련 세트로 모델을 학습시킨 후 평가에 사용되는 데이터이다.

샘플(sample): 데이터 세트에서 임의로 정한 소수의 데이터

데이터 인덱스

인덱스(index)는 배열의 요소 또는 배열의 위치를 선택할때 사용한다. 예시와 같이 1차원 배열과 2차원 배열을 선언하여 슬라이싱의 방법에 대해 설명한다.

one_array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
two_array = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

위와 같이 0부터 8까지 총 9개의 배열을 1차원, 2차원 배열로 선언한다.

print('1차원 배열의 2번 인덱스:', one_array[2])
print('2차원 배열의 2번 인덱스:', two_array[2])

배열의 2번 인덱스를 출력해 보면 인덱스는 0부터 시작하므로 3번째에 있는 데이터가 출력된다.
(2-1)-1 배열 출력결과

데이터 슬라이싱

슬라이싱(slicing)은 데이터를 잘게 나누거나 분리하기 위해 사용되는 연산자이다.

print('1차원 배열의 [2:5]:', one_array[2:5])
print('2차원 배열의 [1:2]:', two_array[1:3])

위와 같이 인덱스:인덱스의 형식으로 슬라이싱을 진행할 수 있다.
(2-1)-2 슬라이싱 출력결과
결과를 보면 2:5를 진행하면 2번 인덱스에서 5번 인덱스가 아니라 바로 앞인 4번 인덱스까지 출력되는걸 볼 수 있다.

슬라이싱에서 마지막 인덱스의 값은 포함되지 않는다

샘플링 편향

샘플링 편향은 일반적으로 훈련 세트와 테스트 세트가 골고루 섞여 있지 않으면 발생되고 샘플링이 한쪽으로 치우쳤다는 의미로 사용된다. 과도하게 샘플링 편향이 되어있다면 제대로 학습된 학습 모델을 만들 수 없으므로 주의해야 한다.

넘파이

넘파이(numpy)는 파이썬의 대표적인 배열 라이브러리이다. 고차원의 배열을 쉽게 만들고 조작할 수 있게 해주는 도구를 많이 제공한다. > 2차원 이상의 배열부터는 넘파이를 이용하는 것이 정신건강에 이롭다.

  • 넘파이를 설치 및 선언 방법
    import numpy as np
    np_one_array = np.array(one_array)
    np_two_array = np.array(two_array)
    

    위에서 사용했던 배열들로 넘파이 배열을 설명한다.

주로 import 한 후 np로 변환하여 많이 사용한다.

넘파이 익덱스

넘파이는 배열 인덱싱이라는 기능을 제공하는데 이 기능은 1개의 인덱스가 아닌 여러 개의 인덱스로 한 번에 여러 개의 데이터를 선택할 수 있다.

print(np_two_array[[0,2]])

이렇게 0번 인덱스와 2번 인덱스를 선택하여 출력할 수 있다.

(2-1)-3 numpy 배열 출력결과

위 그림과 같이 [[0 1 2] [6 7 8]]이 선택되어 출력된다.

행 선택뿐만 아니라 열까지 선택하여 원하는 인덱스의 값을 쉽고 정확하게 찾을 수 있다.

print(np_two_array[[0,2], 1])

(2-1)-4 numpy 배열 출력결과2

위 그림과 같이 [1 7]이 선택되어 출력된다.

이상으로 머신러닝 알고리즘, 데이터 인덱스를 읽는 방법, 데이터 슬라이싱하는 방법과 넘파이에 대해서 간단하게 알아봤다. :)