오늘은 어제에 이어 선형대수 두 번째 시간이다.
중요한 개념들이지만 마찬가지로 아주 헷갈릴 수 있는 부분인 것 같다. 한 달 뒤의 내가 기억할 수 있도록 날 도와줘 TIL!
- Covariance (공분산)
- Correlation coefficient (상관 계수)
- Orthogonality (직교성)
- span (⭐)
- rank
분산이란?
np.var()
를 통해 계산할 수 있다. 표준 편차란?
np.std()
를 통해 계산할 수 있다.한 개의 변수 값이 변화할 때 다른 변수가 어떤 연관성을 가지고 변화하는지를 측정하는 값이다.
df.cov(x, y)
를 통해서 구할 수 있다.예를 들어, [243, 278, 184, 249, 207]
, [88, 89, 83, 112, 104]
이 둘의 공분산을 구하려 한다면,
#df 준비
df = pd.DataFrame({'a':[243, 278, 184, 249, 207], 'b': [88, 89, 83, 112, 104] })
df.cov()
이렇게 간단히 구할 수 있다.
나온 결과 해석하는 것도 한 번 보자.
이걸 해석할 때는 a와 a의 공분산이 1363.7, a와 b의 공분산이 71.7이라고 하면 된다. (a와 a의 공분산이라 하면 그냥 a의 분산이다)
공분산도 데이터 스케일의 영향을 받는다.(즉, 2개의 데이터 셋이 동일한 연관성을 가진다고 해서 공분산의 값이 반드시 동일한 것은 아니다) 이걸 보정하기 위해 사용하는 것이 바로 상관계수다. (따라서 상관계수는 데이터의 평균 혹은 분산의 크기에 영향을 받지 않는다)
Spearman correlation
이라는 것을 통해 구할 수 있다고 하는데.. 우선 패스!df.corr()
를 통해서 구할 수 있다.우리가 어떨 때 이 상관계수를 쓰게 될거냐면, 나중에 데이터 분석할 때 수많은 feature 중에서 어떤 것이 타겟과 가장 연관성이 높은지 볼 때 이 상관계수를 계산해서 확인한다!!!
두 벡터가 직교하는 경우를 말한다. 즉, 두 벡터의 내적이 0인 경우이다.
왜 그러냐보다는 우선 이 정도만 기억하고 넘어가도 된다고 한다.
'단위 길이'를 갖는 모든 벡터라고 하는데, 말보다는 아래 예시를 보는게 더 이해가 편했다.
기억해야할 것은, 모든 벡터는 이 단위 벡터의 선형 조합(Linear Combination)
으로 표기할 수 있다는 것이다.
한국말로 생성
이라고 번역되는 것 같은데, 그 말이 더 헷갈리니 그냥 span으로 기억하자.
먼저 span의 정의는 아래와 같다.
이건 실례를 보는게 더 기억하기 쉬울거다.
이렇게 글로만 보면 나중에 헷갈릴 수 있다. 그렇다면 이 영상을 보자.
파이썬으로는 rank를 구하고 그걸 말로 표현하면 되니, 예시는 아래 rank에 달아두겠다.
Basis는 정확히 span의 역개념이다.
정확한 정의는 아래와 같다.
물론 이렇게만 말하면 나중의 나는 아마 😮 이런 표정을 지을 거다.
그러니 예를 들어보자.
근데 이 Basis를 자주 쓰게 될지는 모르겠다.
자, 오늘의 경험상 span이랑 같이 자주 말하는 것 같은 Rank다.
등수 뭐 그런거 아니고 쉽게 말해 차원
이라고 생각하면 된다.
정확한 정의는 다음과 같다.
이 rank를 생각할 때 중요한 것은 만약 벡터 간에 선형관계가 있는지를 아는 것이다.
만약 우리가 어떤 데이터를 보고 그것의 퀄리티를 판단할 때, 선형종속인 벡터들처럼 스케일만 다른 데이터가 있다면, 아~ 이 데이터는 좀 구리네?라고 생각할 수도 있다고 한다.
참고로 이 rank는 파이썬에서 np.linalg.matirx_rank()
함수를 통해 쉽게 구할 수 있다.
예시)
다음 벡터들의 span은 뭐고 이게 의미하는 바는 무엇인가?
matrix = np.array([[1,2,3], [-1, 0,7], [4,8,2]])
# 다음 함수를 이용해 선형독립인 행, 열의 개수를 바로 파악할 수 있다.
res = np.linalg.matrix_rank(matrix)
print(res7)
# res7 = 3이 나오므로 위 벡터들의 span은 3차원이라고 할 수 있다. 모든 벡터는 선형독립이다.
rank가 3이니 span은 3차원이다~
은 개념을 간단히 보았는데, 실습은 아직 해보지 못했다.
예를 들어, 벡터 w를 벡터 v로 투영시키는 것이 이 Linear projections인데,
데이터 분석시 우리에게의 이점은 정말 많은 feature들이 있을 때, 의미가 작은 피쳐들은 제거하면서(물론 loss는 좀 있겠지만) 원래 데이터가 전달하고자 하는 인사이트를 잘 파악할 수 있도록 하는, 차원 축소의 근본이 되는 개념이라고 생각하면 된다고 한다.
잊지 말자. 선형대수는 나를 도와주기 위해 있는거다 🥺