11. 머신러닝 알고리즘 - Norm( L1, L2) - : 벡터의 크기 or 길이 측정 / 실습
2018. 8. 19. 00:18
캡쳐 사진 및 글작성에 대한 도움 출저 : 유튜브 - 허민석님
Norm
Norm이란 무엇일까?
선형대수 안에서는 Norm이란 벡터공간에서 벡터의 크기 또는 길이를 측정할 때 사용되는 개념이다.
공식은 아래와 같이, 절대값을 취한뒤 다 더해주는 것이다. 이것은 양수가 나오며 길이나 사이즈를 측정할 수 있게 된다.
대표적으로 Norm은 2가지 종류가 있다.
아래부터는 쥬피터 노트북 실습화면으로 같이 보자.
실습
In [1]:
from IPython.core.display import display, HTMLdisplay(HTML("<style> .container{width:90% !important;}</style>"))
L1 Norm : 주사위 게임으로 이해하기¶
- 1부터 6대신 -3부터 3까지 나오는 주사위을 굴린다.
- -3이 나오면 뒤로 3걸음, 3이 나오면 앞으로 3걸음 갈 것이다
In [2]:
import pandas as pdimport numpy as npfrom numpy import linalg #리니어 알제브라 함수
1. 데이터 프레임 만들기¶
- size (3,3) 으로 -3~3이 나오도록 만든다.
- 각 행별로,총 3사람이 주사위를 던지는 것이다.
- 각 칼럼별로, 3회 던지는 것이다.
In [4]:
df = pd.DataFrame( np.random.randint(low=-3, high = 3, size=(3,3)))df
Out[4]:
In [5]:
df.columns=['move_1', 'move_2','move_3',]
In [6]:
df
Out[6]:
2. 누가 가장 많이 걸었을까?¶
- 뒤로 걷든, 앞으로 걷든 벡터의 크기를 구해야한다
- 이 때 사용되는 개념이
**L1 Norm**
일 것이다. - 간단하게 p=1이므로, 각 행을 절대값 취해서 더할 때 L1 norm을 쓴다.
2-1. 계산을 위해 df를 array로 만든다.¶
In [8]:
movements = df.values
In [9]:
movements
Out[9]:
2-2. norm은 numpy의 linearalgebra 모듈안에 있다.¶
Norm의 종류는 ord로 구분한다.
- ord = 1 : L1 norm을 사용한다.
ord = 2 : L2 norm을 사용한다.
L1 norm을 axis=1로 행방향으로 절대값 취해서 더해진다.
In [10]:
# Norm의 종류는 ord로 구분한다.linalg.norm(movements, ord=1, axis=1)
Out[10]:
3. L1 norm(절대값 취해서 다 더하는 것)은 Computer Science에서는 어디서 사용할까?¶
- L1 Regularization
- Computer Vision에서 사용된다.
1. 각 데이터 포인트의 거리를 측정하기 위해 df를 만들자.¶
- 3행2열의 size로, 1부터 10까지 랜덤한 정수가 들어가도록 만들자
In [11]:
df = pd.DataFrame( np.random.randint(low=1, high=10, size=(3,2)))df
Out[11]:
In [12]:
df.columns = ['x', 'y']df
Out[12]:
2. df로 만든 x, y 좌표쌍을 시각화하자¶
In [13]:
import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline #plot명령시 바로 차트가 보여진다.
2-1. 벡터의 크기를 구하는 피타고라스 같은 L2 norm이므로.. 차트를 그려놓고 보자¶
In [16]:
sns.lmplot('x', #x축 들어갈 칼럼 'y', #y축 들어갈 칼럼 data=df, #dataFrame fit_reg=False, #Regression line을 표시할 것인가 scatter_kws={'s':200}) # S maker와 sizeplt.title('data point visualization')plt.xlabel('x')plt.ylabel('y')
Out[16]:
3. (0,0)에서 가장 가까운 점을 찾기위해 L2 Norm을 사용해보자.¶
3-1. 어떠한 계산을 위해서는 df->values로 array로 풀어주자¶
In [18]:
data_points = df.valuesdata_points
Out[18]:
In [19]:
## 3-2. array를 가지고 L2 norm을 적용시켜보자.linalg.norm(data_points, ord=2, axis=1)
Out[19]:
L2 norm은 어디서 사용할까?¶
머신러닝에서 사용하는 유클리디언 디스턴스가 바로 L2 norm이다.
- kNN algorithm
- kmean algorithm
둘다 벡터의 거리가 이용되는 알고리즘 들이다.
'머신러닝 & 딥러닝 > 머신러닝 기초' 카테고리의 다른 글
13. 혼동행렬(Confusion Matrix) / 실습 (0) | 2018.08.21 |
---|---|
12. 머신러닝 알고리즘 : 차원축소 - PCA 알고리즘 / 실습 (1) | 2018.08.19 |
10. 오버피팅 및 언터피팅 이해 및 극복하기(bias, variance를 통한 Regularization(lr) / Early Stop / Dropout) (8) | 2018.08.17 |
9. 머신러닝 : 오버피팅 (0) | 2018.08.17 |
8. 머신러닝 Classifier 실습 (2) | 2018.08.15 |