머신러닝을 위한 선형 대수학 (7일 미니 코스)

선형 대수학은 많은 난해한 이론과 발견이 있는 큰 분야이지만 머신러닝 실무자에게는 현장에서 가져온 너트와 볼트 도구와 표기법이 필요합니다. 선형 대수학이 무엇인지에 대한 견고한 기초가 있으면 좋은 부분이나 관련 부분에만 집중할 수 있습니다.

이 집중 과정에서는 Python을 사용하여 머신러닝에 사용되는 선형 대수 표기법을 7일 만에 시작하고 자신 있게 읽고 구현하는 방법을 알아봅니다.


이 집중 코스는 누구를 위한 것입니까?

시작하기 전에 올바른 위치에 있는지 확인합시다.

이 과정은 일부 응용 머신러닝을 알고 있을 수 있는 개발자를 위한 것입니다. 여러분은 예측 모델링 문제를 종단간 또는 적어도 대부분의 주요 단계를 인기 있는 도구로 해결하는 방법을 알고 있을 수 있습니다.

이 과정의 수업은 다음과 같은 몇 가지 사항을 가정합니다.

  • 프로그래밍을 위한 기본 파이썬에 대한 방법을 알고 있습니다.
    배열 조작을 위한 기본적인 NumPy를 알고 있을 것입니다.
  • 머신러닝에 대한 이해와 적용을 심화하기 위해 선형 대수학을 배우고 싶습니다.

다음 사항을 알 필요가 없습니다.

  • 수학 전문가가 될 필요는 없습니다!
  • 머신러닝 전문가가 될 필요는 없습니다!

이 집중 과정은 약간의 머신러닝을 알고 있는 개발자에서 선형 대수학의 기초를 탐색할 수 있는 개발자로 안내합니다.

참고 :이 집중 과정은 적어도 NumPy가 설치된 Python3 SciPy 환경이 있다고 가정합니다. 환경에 대한 도움이 필요한 경우 여기에서 단계별 자습서를 따를 수 있습니다.



집중 과정 개요

이 집중 과정은 7개의 수업으로 나뉩니다.

하루에 한 레슨을 완료하거나(권장) 하루에 모든 레슨을 완료할 수 있습니다(하드코어). 그것은 당신이 사용할 수 있는 시간과 열정의 수준에 달려 있습니다.

다음은 Python에서 머신러닝을 위한 선형 대수학을 시작하고 생산성을 높이는 데 도움이 되는 7가지 수업 목록입니다.

  • 레슨 01: 머신러닝을 위한 선형 대수
  • 레슨 02: 선형 대수학
  • 과정 03: 벡터
  • 과정 04: 행렬
  • 단원 05: 행렬 유형 및 연산
  • 과정 06: 행렬 인수분해
  • 레슨 07: 특이값 분해

각 수업은 60초 또는 최대 30분이 소요될 수 있습니다. 시간을 내어 자신의 진도에 맞게 수업을 완료하십시오. 아래 의견에 질문하고 결과를 게시하십시오.

수업은 당신이 나가서 일을 하는 방법을 찾을 것을 기대합니다. 힌트를 주겠지만 각 강의의 요점 중 일부는 선형 대수학과 NumPy API 및 Python의 동급 최고의 도구에 대한 도움을 찾기 위해 어디로 가야 하는지 배우는 것입니다(힌트: 이 블로그에 모든 답변이 있습니다. 검색 상자 사용).


 

레슨 01: 머신러닝을 위한 선형 대수

이 강의에서는 머신러닝 실무자가 선형 대수학에 대한 이해를 심화해야 하는 5가지 이유를 알아봅니다.

1. 선형 대수 표기법을 배워야합니다.

벡터와 행렬 표기법을 읽고 쓸 수 있어야 합니다. 알고리즘은 책, 논문 및 웹 사이트에서 벡터 및 행렬 표기법을 사용하여 설명됩니다.

2. 선형 대수학 산술을 배워야합니다.

선형 대수학의 표기법과 협력하여 수행되는 산술 연산이 있습니다. 스칼라, 벡터, 행렬을 더하고, 빼고, 곱하는 방법을 알아야 합니다.

3. 통계를 위해 선형 대수학을 배워야 합니다.

통계를 배우려면 선형 대수학을 배워야 합니다. 특히 다변량 통계. 통계를 읽고 해석 할 수 있으려면 선형 대수학의 표기법과 연산을 배워야 합니다. 현대 통계는 선형 대수학의 표기법과 도구를 모두 사용하여 통계적 방법의 도구와 기술을 설명합니다. 데이터의 평균과 분산에 대한 벡터에서 여러 가우스 변수 간의 관계를 설명하는 공분산 행렬까지.

4. 행렬 인수 분해를 배워야합니다.

표기법과 산술을 기반으로 하는 것은 행렬 분해라고도 하는 행렬 인수 분해의 아이디어입니다. 행렬을 인수분해하는 방법과 그 의미를 알아야 합니다. 행렬 인수 분해는 선형 대수학의 핵심 도구이며 선형 대수 (예 : 행렬 역)와 머신러닝 (최소 제곱) 모두에서 더 복잡한 연산의 요소로 널리 사용됩니다.

5. 선형 최소 제곱을 배워야합니다.

행렬 인수 분해를 사용하여 선형 최소 제곱을 푸는 방법을 알아야합니다. 이 유형의 문제는 최소 제곱이라고 하는 제곱 오류의 최소화로 구성 될 수 있으며 선형 최소 제곱이라고 하는 선형 대수학 언어로 재구성 될 수 있습니다. 선형 최소 제곱 문제는 행렬 인수 분해와 같은 행렬 연산을 사용하여 컴퓨터에서 효율적으로 해결할 수 있습니다.

또 하나의 이유

한 가지 이유를 더 들자면 선형 대수학은 재미있기 때문입니다. 

레슨 02: 선형 대수학

이 수업에서는 선형 대수학의 간결한 정의를 발견하게 될 것입니다.

선형 대수학

선형 대수학은 수학의 한 분야이지만 사실 선형 대수학은 데이터의 수학입니다. 행렬과 벡터는 데이터의 언어입니다.

선형 대수학은 선형 조합에 관한 것입니다. 즉, 벡터라고 하는 숫자의 열과 행렬이라고 하는 숫자의 2D 배열에 산술을 사용하여 숫자의 새 열과 배열을 만듭니다.

수치 선형 대수학

컴퓨터에서 선형 대수학의 적용은 종종 수치 선형 대수라고합니다.

코드 라이브러리에서 선형 대수 연산을 구현하는 것 이상입니다. 또한 디지털 컴퓨터의 제한된 부동 소수점 정밀도로 작업하는 것과 같은 응용 수학 문제를 신중하게 처리하는 것도 포함됩니다.

선형 대수학의 응용

선형 대수학은 데이터의 수학이기 때문에 선형 대수학의 도구는 많은 영역에서 사용됩니다.

  • 스프링 라인과 같은 엔지니어링의 매트릭스.
  • 그래프 및 네트워크(예: 네트워크 분석).
  • 마르코프 행렬, 인구 및 경제학(예: 인구 증가).
  • 선형 계획법, 심플렉스 최적화 방법.
  • 푸리에 급수: 신호 처리에 널리 사용되는 함수에 대한 선형 대수.
  • 통계량과 확률에 대한 선형 대수(예: 회귀에 대한 최소 제곱).
  • 컴퓨터 그래픽, 이미지의 다양한 변환, 크기 조정 및 회전과 같은 것.

목표

이 수업에서는 선형 대수학 분야를 정의하는 연구 논문, 블로그 또는 책에서 5개의 인용문을 찾아야 합니다.

다음 단원에서는 벡터와 간단한 벡터 산술에 대해 알아봅니다.


과정 03: 벡터

이 단원에서는 벡터와 간단한 벡터 산술에 대해 알아봅니다.


벡터란 무엇입니까?

벡터는 스칼라라고 하는 하나 이상의 값으로 구성된 튜플입니다.

벡터는 종종 “v”와 같은 소문자를 사용하여 표현됩니다. 예를 들어:

여기서 v1, v2, v3은 스칼라 값이며 종종 실수 값입니다.

벡터 정의하기

파이썬에서 벡터를 NumPy 배열로 나타낼 수 있습니다.

숫자 목록에서 NumPy 배열을 만들 수 있습니다. 예를 들어, 아래에서는 길이가 3이고 정수 값이 1, 2, 3인 벡터를 정의합니다.

 

벡터 곱셈

길이가 같은 두 벡터를 곱할 수 있습니다.

덧셈과 뺄셈과 마찬가지로 이 연산은 요소별로 수행되어 동일한 길이의 새 벡터를 생성합니다.

이 작업은 NumPy에서 직접 수행 할 수 있습니다.

 

과정 04: 행렬

이 단원에서는 행렬과 간단한 행렬 산술에 대해 알아봅니다.

매트릭스란 무엇입니까?

행렬은 하나 이상의 열과 하나 이상의 행이 있는 스칼라의 2차원 배열입니다.

행렬의 표기법은 종종 A와 같은 대문자이며 항목은 aij와 같이 행 (i) 및 열 (j)의 2차원 첨자로 참조됩니다. 예를 들어:

 

행렬 정의

2 차원 NumPy 배열을 사용하여 파이썬에서 행렬을 나타낼 수 있습니다.

목록 목록이 주어지면 NumPy 배열을 구성 할 수 있습니다. 예를 들어, 아래는 2행 3열 행렬입니다.

 

매트릭스 추가

차원이 같은 두 행렬을 함께 추가하여 새로운 세 번째 행렬을 만들 수 있습니다.

결과 행렬의 스칼라 요소는 추가되는 각 행렬의 요소를 더한 값으로 계산됩니다.

두 개의 NumPy 배열에서 직접 더하기 연산자를 사용하여 파이썬에서 이것을 구현할 수 있습니다.

 

매트릭스 도트 곱

행렬 내적이라고도 하는 행렬 곱셈은 이전 연산보다 복잡하며 모든 행렬을 곱할 수 있는 것은 아니기 때문에 규칙이 필요합니다.

행렬 곱셈에 대한 규칙은 다음과 같습니다: 첫 번째 행렬(A)의 열(n)은 두 번째 행렬(B)의 행 수(m)와 같아야 합니다.

예를 들어, 행렬 A의 차원은 m행과 n열이고 행렬 B는 차원 n과 k입니다. A와 n 행 b의 n 열은 동일합니다. 결과는 m개의 행과 k개의 열이 있는 새 행렬입니다.

행렬 곱셈에 대한 직관은 행렬 A의 각 행과 행렬 B의 각 열 사이의 내적을 계산한다는 것입니다. 예를 들어 A 열의 행을 단계별로 실행하고 B의 열 1을 곱하여 C의 열 1에 스칼라 값을 제공 할 수 있습니다.

행렬 곱셈 연산은 dot() 함수를 사용하여 NumPy에서 구현할 수 있습니다.


 

목표

이 단원에서는 빼기, 나누기, 아다마르 곱, 벡터-행렬 곱셈과 같은 행렬 산술 연산을 더 많이 구현해야 합니다.

아래 의견에 답변을 게시하십시오. 저는 당신이 무엇을 생각해 내는지보고 싶습니다.

다음 단원에서는 다양한 유형의 행렬과 행렬 연산에 대해 알아봅니다.



단원 05: 행렬 유형 및 연산

이 단원에서는 다양한 유형의 행렬과 행렬 연산에 대해 알아봅니다.

바꾸어

정의된 행렬을 전치하여 열과 행의 개수가 대칭 이동된 새 행렬을 만들 수 있습니다.

이것은 행렬 옆에있는 위 첨자 “T”로 표시됩니다.

T 속성을 호출하여 NumPy에서 행렬을 전치 할 수 있습니다.

 

반전

행렬을 반전시키는 작업은 행렬 옆에 -1 위 첨자로 표시됩니다. 예를 들어 A^-1입니다. 연산의 결과를 원래 행렬의 역행렬이라고 합니다. 예를 들어, B는 A의 역수입니다.

모든 행렬이 반전되는 것은 아닙니다.

행렬은 inv() 함수를 사용하여 NumPy에서 반전될 수 있습니다.

 

정사각 행렬

정사각 행렬은 행의 개수(n)가 열의 개수(m)와 같은 행렬입니다.

정사각형 행렬은 행과 열의 개수가 같지 않은 직사각형 행렬과 대조됩니다.

대칭 행렬

대칭 행렬은 오른쪽 위 삼각형이 왼쪽 아래 삼각형과 동일한 정사각형 행렬 유형입니다.

대칭이 되려면 대칭축이 항상 왼쪽 상단에서 오른쪽 하단으로 행렬의 기본 대각선입니다.

대칭 행렬은 항상 정사각형이며 자체 전치와 같습니다.

 

삼각형 행렬

삼각형 행렬은 행렬의 오른쪽 위 또는 왼쪽 아래에 모든 값이 있고 나머지 요소는 0 값으로 채워지는 정사각형 행렬 유형입니다.

주 대각선 위에만 값을 갖는 삼각형 행렬을 위쪽 삼각형 행렬이라고 합니다. 반면, 주 대각선 아래에만 값이 있는 삼각형 행렬을 하위 삼각형 행렬이라고 합니다.

대각선 행렬

대각선 행렬은 주 대각선 외부의 값이 0 값을 가지며 주 대각선이 행렬의 왼쪽 상단에서 오른쪽 하단으로 이동하는 행렬입니다.

대각선 행렬은 종종 변수 D로 표시되며 전체 행렬 또는 주 대각선의 값 벡터로 표시 될 수 있습니다.

목표

이 단원에서는 행렬식, 추적 및 순위와 같은 다른 행렬 연산에 대한 예제를 개발해야 합니다.

아래 의견에 답변을 게시하십시오. 저는 당신이 무엇을 생각해 내는지보고 싶습니다.

다음 단원에서는 행렬 인수 분해에 대해 알아봅니다.



과정 06: 행렬 인수분해

이 단원에서는 행렬 분해라고도 하는 행렬 인수 분해의 기본 사항을 배웁니다.

행렬 분해란 무엇입니까?

행렬 분해는 행렬을 구성 부분으로 줄이는 방법입니다.

원래 행렬 자체가 아닌 분해된 행렬에서 수행할 수 있는 더 복잡한 행렬 연산을 단순화할 수 있는 접근 방식입니다.

행렬 분해에 대한 일반적인 비유는 25를 5 x 5로 인수분해하는 것과 같은 숫자의 인수분해입니다. 이러한 이유로 행렬 분해는 행렬 인수 분해라고도 합니다. 실수값을 인수분해 하는 것과 마찬가지로 행렬을 분해하는 방법에는 여러 가지가 있으므로 다양한 행렬 분해 기술이 있습니다.

LU 매트릭스 분해

LU 분해는 정사각형 행렬에 대한 것이며 행렬을 L 및 U 성분으로 분해합니다.

여기서 A는 분해하려는 정사각형 행렬, L은 하위 삼각형 행렬, U는 위쪽 삼각형 행렬입니다. 실제로 해결하기에 수치적으로 더 안정적인 이 분해의 변형을 LUP 분해 또는 부분 피벗을 사용한 LU 분해라고 합니다.

부모 행렬의 행은 분해 프로세스를 단순화하기 위해 재정렬되고 추가 P 행렬은 결과를 치환하거나 결과를 원래 순서로 반환하는 방법을 지정합니다. LU의 다른 변형도 있습니다.

LU 분해는 선형 회귀에서 계수를 찾는 것과 같은 선형 방정식 시스템의 해결을 단순화하는 데 자주 사용됩니다.

LU 분해는 lu() 함수를 사용하여 파이썬에서 구현할 수 있습니다. 보다 구체적으로, 이 함수는 LPU 분해를 계산합니다.


 

목표

이 단원에서는 QR 분해, Cholesky 분해 및 고유 분해와 같은 행렬 인수 분해를 위한 다른 간단한 방법의 작은 예제를 구현해야 합니다.

아래 의견에 답변을 게시하십시오. 저는 당신이 무엇을 생각해 내는지보고 싶습니다.

다음 단원에서는 행렬 인수 분해를 위한 특이값 분해 방법을 배웁니다.


레슨 07: 특이값 분해

이 단원에서는 행렬 인수 분해를 위한 특이값 분해 방법을 배웁니다.

특이값 분해

특이값 분해 또는 줄여서 SVD는 특정 후속 행렬 계산을 더 간단하게 만들기 위해 행렬을 구성 부분으로 줄이는 행렬 분해 방법입니다.

여기서 A는 분해하려는 실수 m x n 행렬이고, U는 m x m 행렬이고, Sigma(종종 대문자 그리스 문자 Sigma로 표시됨)는 m x n 대각선 행렬이고, V^T는 N x n 행렬의 전치이며, 여기서 T는 위 첨자입니다.

특이값 분해 계산

SVD는 svd() 함수를 호출하여 계산할 수 있습니다.

이 함수는 행렬을 사용하여 U, Sigma 및 V^T 요소를 반환합니다. 시그마 대각선 행렬은 특이값으로 구성된 벡터로 반환됩니다. V 행렬은 전치 된 형식 (예 : VT)으로 반환됩니다.

 

목표

이 강의에서는 SVD의 5가지 응용 프로그램을 나열해야 합니다.

Python에서 작은 예제로 각각을 시연 할 수 있다면 보너스 포인트.

아래 의견에 답변을 게시하십시오. 저는 당신이 발견 한 것을보고 싶습니다.

이것은 미니 코스의 마지막 수업이었습니다.

끝!

잠시 시간을내어 얼마나 멀리 왔는지 되돌아보십시오.

당신은 다음을 발견했습니다.

  • 응용 머신러닝에 대한 선형 대수학의 중요성.
  • 선형 대수학은 무엇에 관한 것입니까?
  • 벡터란 무엇이며 벡터 산술을 수행하는 방법.
  • 행렬이란 무엇이며 행렬 곱셈을 포함한 행렬 산술을 수행하는 방법.
  • 행렬의 형식, 해당 속성 및 행렬과 관련된 고급 연산의 집합입니다.
  • 행렬 인수 분해 방법 및 LU 분해 방법을 구체적으로 설명합니다.
  • 머신러닝에 사용되는 인기 있는 Singular-Value 분해 방법입니다.

이것은 머신러닝을 위한 선형 대수학 여정의 시작에 불과합니다. 기술을 계속 연습하고 개발하십시오.

네피리티
No Comments

Sorry, the comment form is closed at this time.