PBL Report (자기평가서, QnA 활동 상황 포함)
2020년 여름 도전학기
Final PBL Report
Class: Basic Math for AI
(인공지능을 위한 기초수학)
Prof. Sang-Gu LEE
과제함 Due day : 2020. 08. 29 (in HW box in LMS)
Name (이름) : 김진웅, 박진형, 천가영, 유가이 올렉산드르, 이승재, 김범준, 채희준, 나종진, 임성규, 김정한, 이상현, ... , 정원철
(Find your Team member (3~5) in March or I will make a tentative Team) 팀원을 스스로 겨체 가능합니다. 중간고사 전후로 확정 예정. Team will be Fixed in Midterm period, after I grade your PBL and Project proposal. 제안서중 선정된 주제만 실제 지도받으면서 프로젝트 진행하면 됩니다.)
English Version MS Word file PBL report (Form and Sample) :
Download: http://matrix.skku.ac.kr/PBL-Form/PBL-Report-Form-English.docx
Sample [예시] (학생들의 질문/답변/활동 기록: http://matrix.skku.ac.kr/math4ai/PBL-Record/
(영어) http://matrix.skku.ac.kr/2018-album/LA-PBL.htm (선형대수학)
http://matrix.skku.ac.kr/2015-album/2015-F-LA-Sep-Record.pdf
http://matrix.skku.ac.kr/2019-Album/DM-PBL/index.htm (이산수학)
http://matrix.skku.ac.kr/Cal-Book1/Calculus-1/index.htm (미적분학)
http://matrix.skku.ac.kr/Cal-Book1/Calculus-2/index.htm (미적분학)
(학생들의 질문/답변/활동 기록: http://matrix.skku.ac.kr/2020-Math4AI-PBL/ Basic Math for AI)
Ch 1장. Participation [참여평가] (10점)
(1) State more than 10 Math Definitions and concepts what you learned in Part 1, 2, 3, ...
|
1주차 |
벡터, norm, 벡터공간, 부분공간, 일차결합, 일차독립, 일차종속, 기저, 계수, 초평면, 정사영 |
|
2주차 |
초평면, 정사영, 고윳값, 고유벡터, 대각화, SVD, 고윳값 분해, 이차형식, pseudo-inverse, |
|
3주차 |
수렴, 극한, 미분가능, 도함수, 연쇄법칙, 그래디언트, 방향도함수, Taylor 정리, 임계점, 헤시안 행렬 |
|
4주차 |
Gradient Descent Algorithm, 중적분, 뉴턴의 방법, conjugate gradient method, Fubini의 정리, step-size, exact line search, optimization, 극소 극대 판정법, 안장점, |
|
5주차 |
순열, 조합, 확률, 이산확률분포, 포아송분포, 평균, 분산, 표준편차, 중앙값, 조건부 확률, 표본평균, 표본분산 |
|
6주차 |
연속확률분포, 평균의 성질, 분산의 성질, 공분산, 상관계수, 정규분포, 정규분포 곡선의 성질, 표준정규분포, 모수, 이항분포의 정규근사, 지수분포 |
|
7주차 |
신경망, 활성화 함수, 노드, 역전파법, 경사하강법, 은닉층, 입력층, 출력층, sigmoid 함수 |
Part 0. Briefly reviewed the basic functions of Python, Sage and R, Basic concept of Power Method(거듭제곱법), Basic concept of MNIST 데이터셋을 활용한 손 글씨 숫자 인식(패턴인식), Briefly familiarized myself with the principle of work of AlphaGo…
Part 0 (인공지능 개론)
1. Python is an interpreted, high-level, general-purpose programming language. Python has become highly popular due to its abundance of libraries. Each Python library is application-oriented that was developed to address problems. Mathematical operations are most preferably carried out in Python due to its focus on utility and minimal programming jargon. There are several libraries that can be used to carry out mathematical operations with Python. Ex.: Math, Numpy, SciPy, Scikit-learn etc.
2. SageMath is a free open-source mathematics software system licensed under the GPL. It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more. Access their combined power through a common, Python-based language or directly via interfaces or wrappers.
3. R is a programming language for statistical data processing and graphics, and is a free and open source computing environment under the GNU Project.
4. Power method is an eigenvalue algorithm: given a diagonalizable matrix A, the algorithm will produce a number λ, which is the greatest (in absolute value) eigenvalue of A, and a nonzero vector v, which is a corresponding eigenvector of λ, that is Av = λv.
5. MNIST(Modified National Institute of Standards and Technology) database is a voluminous database of handwritten numbers. The database is a standard proposed by the US National Institute of Standards and Technology for the purpose of calibrating and comparing image recognition methods using machine learning primarily based on neural networks.
6. AlphaGo is a "Go game" program developed by Google DeepMind in 2015. AlphaGo combines a technique that provided a major breakthrough in the power of "Go game" software in 2007-2012 (Monte-Carlo tree search) and recent advances in machine learning, namely deep learning with multilevel neural networks.
<1> 벡터, 노름, 내적, 행렬, 행렬곱, 대각선행렬, 단위행렬, 전치행렬, 대칭행렬, 하삼각행렬, 상삼각행렬, 역행렬, 행렬식, 여인자, 수반행렬, 선행주소행렬식
<2> 선형연립방정식, 계수행렬, 첨가행렬, 기본행연산, 기본행렬, 치환행렬, REF, RREF, Gauss 소거법, Gauss-Jordan 소거법
<3> 선형변환, 표준행렬, 핵, 치역, 단사, 전사
<4> 벡터공간, 부분공간, 일차결합, 일차독립, 일차종속, span, 기저, 차원, 행공간, 열공간, 영공간, rank, nullity
<5> 정사영, 직교성분, 초평면, 정규직교벡터, 정규직교기저, Gram-Schmidt 정규직교화법, full column rank, LU분해, QR분해, 최소제곱해
<6> 고유값, 고유벡터, 고유공간, 직교행렬, 대각화, 직교대각화, 고유값분해, 특이값, 특이벡터, SVD, 유사역행렬
<7> 이차형식, 양의정부호, 음의정부호, 부정부호, 주축정리
<8> 접선, 뉴턴방법, 다변수함수, 매개변수 방정식, 편도함수, 방향도함수, 그래디언트, 헤시안, 임계점, 안장점, 극대극소판정법, 경사하강법, Jacobian
<9> 표본평균, 표본푼산, 표본표준편차, 중위수, 4분위수, 백분위수, IQR, 순열, 조합, 중복집합, 중복순열, 중복조합, 표본공간, 사건, 확률, 조건부확률, 베이즈정리
<10> 확률변수, 확률분포, 기대값, 분산, 표준편차, 표준화 확률변수, 베르누이분포, 이항분포, 포아송분포, 균등분포, 정규분포, 표준정규분포, 지수분포, 중심극한정리, 결합확률분포, 주변확률분포, 공분산, 상관계수, 공분산행렬
<11> 주성분, 적재계수, 주축, 데이터행렬, 센터링된행렬, 데이터행렬의 공분산행렬, 주성분화 데이터행렬, 주성분 score, 차원축소, PCA, 신경망, 활성화함수, 오차역전파법
<1> 벡터, 노름, 내적, 행렬, 행렬곱, 대각선행렬, 단위행렬, 전치행렬, 대칭행렬, 하삼각행렬, 상삼각행렬, 역행렬, 행렬식, 여인자, 수반행렬, 선행주소행렬식
1. 벡터: 스칼라를 모은 순서짝
2. 노름: 벡터 각 성분의 제곱합의 제곱근은 벡터의 노름
3. 내적: 두 벡터의 각 성분의 곱의 합은 두 벡터의 내적
4. 행렬: 스칼라를 모은 직사각형 단위
5. 행렬곱: 한 행렬의 행과 다른 행렬의 열의 내적의 합은 두 행렬의 곱
6. 대각선행렬: 주대각선성분 이외의 성분이 0인 정사각행렬
7. 단위행렬: 주대각선성분이 1인 대각선행렬
8. 전치행렬: 행렬의 행을 열로 한 행렬은 행렬의 전치행렬
9. 대칭행렬: 행렬의 전치행렬이 행렬인 정사각행렬
10. 하삼각행렬: 주대각선성분의 위 모든 성분이 0인 정사각행렬
11. 상삼각행렬: 주대각선성분의 아래 모든 성분이 0인 정사각행렬
12. 역행렬: 정사각행렬과의 곱이 단위행렬이 되는 행렬은 정사각행렬의 역행렬
13. 행렬식: 정사각행렬에서 각 치환에 대해 각 행과 그 행을 치환한 열의 원소들의 곱과 그 치환의 부호화 함수값의 곱의 합*은 정사각행렬의 행렬식
14. 여인자: 정사각행렬의 한 행과 한 열을 없앤 행렬의 행렬식과 없앤 행·열에 대응하는 성분의 위치 부호를 곱한 것은 정사각행렬 행·열 성분의 여인자
15. 수반행렬: 정사각행렬 각 성분의 여인자를 모은 행렬의 전치행렬
16. 선행주소행렬식: 정사각행렬의 어떤 수의 크기의 좌상단 정사각행렬의 행렬식은 행렬의 그 수의 선행주소행렬식
<2> 선형연립방정식, 계수행렬, 첨가행렬, 기본행연산, 기본행렬, 치환행렬, REF, RREF, Gauss 소거법, Gauss-Jordan 소거법
1. 선형연립방정식: 일차방정식을 모은 연립방정식
2. 계수행렬: 선형연립방정식의 계수만을 모은 행렬은 선형연립방정식의 계수행렬
3. 첨가행렬: 행렬에 행렬을 붙인 행렬, 선형연립방정식의 계수행렬에 상수항벡터를 붙인 행렬은 선형연립방정식의 첨가행렬
4. 기본행연산: 다음의 한 연산 (1) 행렬의 두 행을 서로 바꾼다 (2) 한 행에 비영스칼라배를 한다. (3) 한 행에 비영스칼라배한 것을 다른 행에 더한다.
5. 기본행렬: 단위행렬에 기본행연산을 한 번 적용해서 얻은 행렬
6. 치환행렬: 단위행렬에 행렬의 두 행을 서로 바꾸는 연산을 한 번 적용해서 얻은 행렬
7. REF: (1) 0인 행은 행렬의 맨 아래에 위치 (2) 각 행의 첫 성분은 선행성분 1 (3) 후행의 선행성분은 전행의 것보다 오른쪽에 위치인 행렬은 REF
8. RREF: REF인 행렬에서 선행성분의 열의 나머지 성분이 0인 행렬은 RREF
9. Gauss 소거법: 기본행연산으로 행렬을 REF로 만드는 것
10. Gauss-Jordan 소거법: 기본행연산으로 REF인 행렬을 RREF로 만드는 것
<3> 선형변환, 표준행렬, 핵, 치역, 단사, 전사
1. 선형변환: ① 벡터의 합의 변환값은 변환한 각 벡터의 합 ② 스칼라배한 벡터의 변환값은 변환한 벡터의 스칼라배인 변환
2. 표준행렬: 벡터와의 곱이 선형변환한 벡터인 행렬은 선형변환의 표준행렬
3. 핵: 선형변환한 벡터가 영벡터가 되는 벡터 집합은 선형변환의 핵
4. 치역: 선형변환한 벡터 집합은 선형변환의 치역
5. 단사: 선형변환한 두 벡터가 서로 같은 경우 두 벡터가 서로 같을 때 선형변환은 단사
6. 전사: 모든 벡터가 선형변환한 벡터일 때 선형변환은 전사
<4> 벡터공간, 부분공간, 일차결합, 일차독립, 일차종속, span, 기저, 차원, 행공간, 열공간, 영공간, rank, nullity
1. 벡터공간: 2개의 기본성질과 8개의 연산성질을 만족하는 비공집합인 벡터집합
2. 부분공간: ① 벡터공간의 부분집합이면서 ② 자신도 벡터공간인 비공집합은 벡터공간의 부분공간
3. 일차결합: 벡터집합 원소들의 스칼라 배의 합으로 이루어진 벡터는 벡터집합의 일차결합
4. 일차독립: 벡터집합의 일차결합이 영벡터이기 위한 각 계수가 모두 0일 때 벡터집합은 일차독립
5. 일차종속: 일차독립이 아닌 벡터집합은 일차종속
6. span: 벡터집합의 모든 일차결합인 벡터집합은 벡터집합의 span
7. 기저: ① 벡터집합이 일차독립 ② 벡터집합의 span이 벡터공간일 때 벡터집합은 벡터공간의 기저
8. 차원: 벡터공간 기저의 벡터 개수는 벡터공간의 차원
9. 행공간: 행렬의 행벡터집합의 span인 벡터공간은 행렬의 행공간
10. 열공간: 행렬의 열벡터집합의 span인 벡터공간은 행렬의 열공간
11. 영공간: 행렬과의 곱이 영벡터인 벡터 집합인 벡터공간은 행렬의 영공간
12. rank: 행렬의 행공간의 차원은 행렬의 rank
13. nullity: 행렬의 영공간의 차원은 행렬의 nuliity
<5> 정사영, 직교성분, 초평면, 정규직교벡터, 정규직교기저, Gram-Schmidt 정규직교화법, full column rank, LU분해, QR분해, 최소제곱해
1. 정사영: 벡터가 벡터공간 상에 나타나는 벡터는 벡터의 벡터공간 상의 정사영
2. 직교성분: 벡터와 벡터의 정사영의 차는 벡터의 직교성분
3. 초평면: 벡터와 직교인 벡터집합은 벡터의 초평면
4. 정규직교벡터: 노름이 1이고 다른 벡터들과 직교하는 벡터
5. 정규직교기저: 벡터집합의 원소가 정규직교벡터인 기저
6. Gram-Schmidt 정규직교화법: 임의의 기저로부터 정규직교기저를 구하는 방법
7. full column rank: 행렬의 열벡터가 서로 일차독립일 때 행렬은 full column rank
8. LU분해: 행렬의 모든 선행주소행렬식이 0이 아닐 때 행렬을 치환행렬과 함께 단위하삼각행렬과 상삼각행렬로 분해하는 것
9. QR분해: 행렬이 full column rank일 때 행렬을 행렬의 열공간의 정규직교기저를 열로 하는 직교행렬과 상삼각행렬로 분해하는 것
10. 최소제곱해: 선형연립방정식의 오차를 최소화하는 해
<6> 고유값, 고유벡터, 고유공간, 직교행렬, 대각화, 직교대각화, 고유값분해, 특이값, 특이벡터, SVD, 유사역행렬
1. 고유값: 스칼라와 어떤 벡터의 곱이 정사각행렬과 그 벡터의 곱과 같을 때 스칼라는 정사각행렬의 고유값
2. 고유벡터: 정사각행렬의 한 고유값과의 곱이 정사각행렬과의 곱과 같은 비영벡터는 그 고유값에 대응하는 정사각행렬의 고유벡터
3. 고유공간: 고유값에 대응하는 정사각행렬의 고유벡터 집합은 고유값에 대응하는 정사각행렬의 고유공간
4. 직교행렬: 행렬의 역행렬이 행렬의 전치행렬인 정사각행렬
5. 대각화: 정사각행렬로부터 행렬의 고유공간의 기저 즉, 고유벡터를 열로 하는 행렬과 행렬의 고유값을 주대각선성분으로 하는 대각선행렬을 구하는 것
6. 직교대각화: 정사각행렬로부터 행렬의 고유공간의 정규직교기저 즉, 정규직교화된 고유벡터를 열로 하는 행렬과 행렬의 고유값을 주대각선성분으로 하는 대각선행렬을 구하는 것
7. 고유값분해: 대각화를 이용하여 행렬을 행렬의 고유값과 행렬의 고유벡터로 이루어진 행렬들로 분해하는 것
8. 특이값: 행렬의 전치행렬과 행렬의 곱의 고유값의 제곱근은 행렬의 특이값
9. 특이벡터: 행렬의 전치행렬과 행렬의 곱을 직교대각화하는 직교행렬의 열벡터들과 행렬과 행렬의 전치행렬의 곱을 직교대각화하는 직교핼렬의 열벡터들은 행렬의 특이벡터
10. SVD: 행렬을 행렬의 특이값을 성분으로 하는 대각선행렬과 행렬의 특이벡터를 열로 하는 두 개의 직교행렬로 분해하는 것
11. 유사역행렬: SVD로 행렬의 역행렬 역할을 하는 행렬은 행렬의 유사역행렬
<7> 이차형식, 양의정부호, 음의정부호, 부정부호, 주축정리
1. 이차형식: 이차방정식에서 모든 이차항의 합인 식
2. 양의정부호: 이차형식이 0보다 클 때 이차형식은 양의정부호
3. 음의정부호: 이차형식이 0보다 작을 때 이차형식은 음의정부호
4. 부정부호: 이차형식이 미지수에 따라 0보다 크기도 하고 0보다 작기도 할 때 이차형식은 부정부호
5. 주축정리: 변수변환으로 이차형식의 혼합항을 없애는 것
1. Quadratic form is a function on a vector space, specified by a homogeneous polynomial of the second degree in the coordinates of the vector.
2. Principal axis is a certain line in a Euclidean space associated with an ellipsoid or hyperboloid, generalizing the major and minor axes of an ellipse or hyperbola. The principal axis theorem states that the principal axes are perpendicular, and gives a constructive procedure for finding them.
1. Function(함수) is a binary relation over two sets that associates to every element of the first set exactly one element of the second set.
2. Riemann sum is a certain kind of approximation of an integral by a finite sum. One very common application is approximating the area of functions or lines on a graph, but also the length of curves and other approximations.
3. Partial derivative of a function of several variables is its derivative with respect to one of those variables, with the others held constant.
<8> 접선, 뉴턴방법, 다변수함수, 매개변수 방정식, 편도함수, 방향도함수, 그래디언트, 헤시안, 임계점, 안장점, 극대극소판정법, 경사하강법, Jacobian
1. 접선: 그래프의 한 점을 지나고 기울기가 그 점의 미분계수인 직선은 그래프의 그 점을 지나는 접선
2. 뉴턴방법: 함수의 근을 접선과 도함수 구하기를 반복하여 구하는 방법
3. 다변수함수: 독립 변수가 여러 개인 함수
4. 매개변수 방정식: 각 변수를 새로운 변수로 정의한 방정식
5. 편도함수: 다변수함수를 한 변수만으로 미분한 함수는 함수의 그 변수로의 편도함수
6. 방향도함수: 다변수함수를 한 단위벡터의 방향으로 미분한 함수는 함수의 그 단위벡터 방향으로의 방향도함수
7. 그래디언트: 함수의 각 편도함수를 성분으로 하는 벡터는 함수의 그래디언트
8. 헤시안: 함수의 각 2계편도함수를 성분을 하는 행렬은 함수의 헤시안
9. 임계점: 어떤 한 점에서의 함수의 그래디언트가 영벡터인 그 점은 함수의 임계점
10. 안장점: 극대·극소 모두 아닌 임계점
11. 극대극소판정법: 함수의 헤시안의 선행주소행렬식 부호 또는 고유값 부호 즉, 부호성으로 함수의 임계점이 극대·극소·안정점임을 판정하는 방법
12. 경사하강법: 함수의 극소값을 음의 그래디언트 구하기를 반복하여 구하는 방법
13. Jacobian: 원래의 미지수를 새로운 미지수로 편미분한 편도함수를 원소로 하는 행렬의 행렬식을 새로운 미지수를 원래의 미지수로 변환하는 함수의 Jacobian
<9> 표본평균, 표본푼산, 표본표준편차, 중위수, 4분위수, 백분위수, IQR, 순열, 조합, 중복집합, 중복순열, 중복조합, 표본공간, 사건, 확률, 조건부확률, 베이즈정리
1. 표본평균: ![]()
2. 표본분산: ![]()
3. 표본표준편차: ![]()
4. 중위수: 표본을 크기순에서 2등분하는 위치에 있는 수
5. 4분위수: 표본을 크기순에서 4등분하는 위치에 있는 수 3개
6. 백분위수: 표본을 크기순에서 백등분하는 위치에 있는 수 99개
7. IQR: 4분위수에서 Q₃-Q₁
8. 순열: 순서있는 경우의 수
9. 조합: 순서없는 경우의 수
10. 중복집합: 중복하는 원소가 있는 집합
11. 중복순열: 중복집합에서 순서대로·중복하여 고르는 경우의 수
12. 중복조합: 중복집합에서 순서없이·중복하여 고르는 경우의 수
13. 표본공간: 전체 경우의 집합
14. 사건: 특정 경우의 집합
15. 확률: 사건이 일어나는 비율
16. 조건부확률: 특정 사건이 일어났을 때 한 사건의 확률
17. 베이즈정리: 사전확률과 사후확률의 관계를 조건부확률로 나타낸 식
<10> 확률변수, 확률분포, 기대값, 분산, 표준편차, 표준화 확률변수, 베르누이분포, 이항분포, 포아송분포, 균등분포, 정규분포, 표준정규분포, 지수분포, 중심극한정리, 결합확률분포, 주변확률분포, 공분산, 상관계수, 공분산행렬
1. 확률변수: 표본공간의 모든 표본에 실수를 대응시켜 사건화한 함수
2. 확률분포: 확률변수가 가지는 함수값에 그 값을 가질 확률을 대응시킨 함수
3. 기대값: 확률변수 함수값의 분포평균
4. 분산: 확률변수 함수값이 기대값을 기준으로 분포하는 정도를 나타낸 수
5. 표준편차: 분산의 제곱근
6. 표준화 확률변수: 확률변수에 그 기대값을 빼고 표준편차로 나눈 확률변수
7. 베르누이분포: 사건의 확률이 어떤 수인 사건이 일어나는 경우의 확률변수의 확률분포
8. 이항분포: 사건의 확률이 어떤 수인 사건이
번 중 일어나는 경우의 확률변수의 확률분포
9. 포아송분포: 단위시간에 평균 어떤 수만큼 일어나는 시균등확률사건이 일어나는 경우의 확률변수의 확률분포
10. 균등분포: 일정구간에서만 확률을 갖고 그 확률이 일정한 확률변수의 확률분포
11. 정규분포: 확률밀도함수가
인 확률변수의 확률분포
12. 표준정규분포: 기대값이 0, 분산이 1인 정규분포
13. 지수분포: 단위시간에 평균 어떤 수만큼 일어나는 시균등확률사건이 일어난 다음 일어날 때까지 걸리는 시간의 확률변수의 확률분포
14. 중심극한정리: 평균과 분산이 정해진 모집단으로부터 확률표본을 추출하였을 때 확률표본의 크기가 충분히 크다면 표본평균은 정규분포를 따른다.
15. 결합확률분포: 여러 확률변수가 가지는 함수값들에 그 일어날 확률을 대응시킨 함수
16. 주변확률분포: 결합확률분포에서 하나의 확률변수만의 확률분포
17. 공분산: ![]()
18. 상관계수: ![]()
19. 공분산행렬: 확률변수의 분산과 공분산으로 이루어진 행렬
<11> 주성분, 적재계수, 주축, 데이터행렬, 센터링된행렬, 데이터행렬의 공분산행렬, 주성분화 데이터행렬, 주성분 score, 차원축소, PCA, 신경망, 활성화함수, 오차역전파법
1. 주성분: 데이터 분포를 잘 따르면서 서로 연관성 없도록 한 기존변수 일차결합 변수
2. 적재계수: 주성분을 이루는 확률변수 일차결합 계수
3. 주축: 주성분의 적재계수 백터
4. 데이터행렬: 각 표본을 행, 각 확률변수를 열로하는 행렬
5. 센터링된행렬: 데이터행렬에서 각 성분에 해당 열평균을 뺀 행렬
6. 데이터행렬의 공분산행렬: ![]()
7. 주성분화 데이터행렬: 각 표본을 행, 각 주성분을 열로하는 행렬
8. 주성분 score: 주성분화 데이터행렬의 열벡터
9. 차원축소: 데이터 분포를 따르면서 데이터 차원을 줄이는 것
10. PCA: 데이터 분포를 잘 따르는 주요 주성부으로 이루어진 데이터 공간으로 데이터를 변환하는 차원축소
11. 신경망: 입력층에서 데이터를 받아 다음층의 가중치와 활성화함수를 적용해 다음층의 출력을 구하기를 계속하여 출력층에 결과를 내는 모델
12. 활성화함수: 신경망 각 층의 출력을 결정하는 함수
13. 오차역전파법: 오차를 줄이기 위해 각 층에 역전파된 오차로 그 층의 가중치를 갱신하는 방법
* 1, 2, 3 차 행렬의 행렬식 :
![]()
![]()

답: ![]()
(2) State more than 5 things that you know/can/find ... after you studied the first Part 1, 2,..
|
1주차 |
벡터, norm, 벡터공간, 부분공간, 일차결합 |
|
2주차 |
초평면, 정사영, 고윳값, 고유벡터,SVD, |
|
3주차 |
연쇄법칙, 그래디언트, 방향도함수, Taylor 정리, 임계점 |
|
4주차 |
Gradient Descent Algorithm, 중적분, 뉴턴의 방법, conjugate gradient method, Fubini의 정리, step-size, |
|
5주차 |
이산확률분포, 포아송분포, 평균, 분산, 표준편차, 중앙값, |
|
6주차 |
분산의 성질, 공분산, 상관계수, 정규분포, 정규분포 곡선의 성질, 표준정규분포, 모수, 이항분포의 정규근사, |
|
7주차 |
노드, 역전파법, 경사하강법, 은닉층, 입력층, |
[1] 일차종속 : 위 그림에서처럼 1번째 행과 2~3번째 행(혹은 열)간의 관계가 성립되는 상황입니다.
[2] 일차독립 : 위 그림에서와 달리 행/열 각각을 기준으로 관계가 성립하지 않는 상황입니다. -> 역행렬을 만들 수 있는 조건이 됩니다. ( 가우스 소거법을 했을 때 pivot이 0이 되지 않기 때문)
[3] 가우스 (Jordan) 소거법 : 위 그림에서처럼 행간 연산을 통해 행렬 A에서 U로 만드는 과정이며 (Jordan)은 행렬 U에서 R로 만드는 과정입니다.
[4] (R)REF : 행렬 A에서 가우스 소거법을 통해 만들어진 U의 형태입니다. (R)REF는 R.
[5] (기약)행 사다리꼴: 행 사다리꼴은 위 그림의 U와 같은 형태이며, (기약)행 사다리꼴은 R과 같습니다. 즉 가우스 소거법은 A를 행 사다리꼴 형태인 REF로 만드는 과정이고, 가우스 (Jordan) 소거법은 REF를 기약 행 사다리꼴인 RREF로 만드는 과정입니다.
[6] rank : 위 그림의 (R)REF 형태에서 0이 아닌 행의 개수입니다. (즉, pivot의 개수)
[7] nullity : n(열 개수) - r(rank).
[8] 기저 : 일차종속이던 A를 REF와 RREF로 만들어 줌으로써 일차독립이 되었고 보다시피 span하고 있습니다. -> 이때 기저는 pivot이 있는(영벡터가 아닌) 벡터로서 [1,2,0,-2], [0,0,1,2]가 됩니다.
[9] 차원 : 차원은 기저의 개수(굉장히 rough하게 표현)이며 위의 예시에서는 2가 됩니다.
[10] 선형변환: F(v1+v2) = F(v1) + F(v2), F(kv) = kF(v) 두 조건을 만족시키면 선형성이 있다(linear하다)라고 하는데 이런식으로 변환시켜주는 함수를 선형변환이라고 합니다.
[11] 고유벡터: 선형변환에 의한 변환 결과가 자기 자신의 상수배가 되는 0이 아닌 벡터입니다. 즉, 선형변환에 의해 방향은 보존되고 scale만 변화되는 방향벡터라고 볼 수 있습니다.
[12] 고유값: 고유벡터의가 정의될 때의 상수배이며 고유벡터의 변화되는 scale의 정도입니다.
[13] 고유값 분해: 고유값들을 대각원소로 하는 대각행렬(즉, 정방행렬을 전제함)을 A라고 하고, 행렬 A의 고유벡터들을 열벡터로 하는 행렬을 P라고 했을 때 아래와 같은 식으로 나타내는 것입니다.
![]()
[14] 특이값 분해(SVD): 고유값 분해가 정방행렬에 대해서만 가능한 반면, 정방행렬이 아닌, 즉 행과 열의 크기가 다른 행렬을 분해하는 것입니다.
[15] 경사하강법: 손실함수의 손실을 최소화하기 위해 기울기를 점점 작게 근사시키며 최적화시키는 과정입니다.
[16] Jacobian: 다변수 벡터함수에 대한 일차미분 형태입니다.
[17] Hessian: 다변수 벡터함수에 대한 2차미분 형태. 경사하강법처럼 최적화에 사용되는데, 어떠한 점에 점점 다가가며 2차 항까지 근사시킬 수 있습니다. 또한 극소, 극대, 임장점 등을 찾는데도 용이하게 사용됩니다.

[18] 베르누이분포: 시행의 결과가 오직 두가지인 분포
[19] 이항분포: 베르누이 시행을 n번 할 때, 사건이 발생한 횟수를 확률변수 x로 하는 확률분포(베르누이에서 시행횟수를 n회로 늘림)
[20] 기하분포: 처음 성공이 나오기까지 시행한 횟수를 확률변수 x로 할 때의 확률분포(음이항분포에서 r이 1이 될 때)
[21] 음이항분포: 성공확률이 p, r번의 실패가 나오기 전까지 발생한 성공 횟수가 확률변수 x인 확률분포(음이항분포에서 r이 무한대가 되고, p가 1에 가까워지면 푸아송분포가 됨)
[22] 포아송분포: 단위 시간 안에 발생한 사건 횟수를 확률변수 x로 하는 확률분포(이항분포에서 시행횟수를 무한대로 보내고, 사건 발생확률을 0으로 보냄)
[23] 초기하분포: 모집단에서 크기가 n인 표본을 뽑을 때, 표본 안에 우리가 원하는 원소가 x개 있을 확률분포(이항분포에서 복원추출을 비복원추출로 바꿈)
[24] 다항분포: 시행의 결과가 k개의 사건이고 각 사건이 발생할 확률이 p1..pk일 때 n번의 시행에서 각 사건이 x1...xn번 일어날 확률분포(이항분포에서 시행의 결과로 발생하는 사건의 종류를 늘림)
[25] Input layer, hidden layer, output layer로 이루어진 신경망에서 활성화함수를 통해 학습을 하면서 순전파를 통해 loss를 구하고 이를 반대로 경사하강법을 통해 역전파를 하며 가중치를 최적화함
역행렬 구하기, 행렬식 구하기, 선형연립방정식 해 구하기, 정사영 구하기, Gram-Schmidt 정규직교화법, QR분해, 선형연립방정식 최소제곱해 구하기, 고유값 구하기, 고유벡터 구하기, 대각화, 직교대각화, SVD, 주축정리, 뉴턴방법, 극대극소판정법, 경사하강법
베이즈정리, 정규분포 확률 구하기, 공분산행렬 구하기, PCA, 오차역전파법
1. 역행렬 구하기: [행렬이 가역]
① RREF법: ![]()
② 수반행렬법: ![]()
2. 행렬식 구하기:
① 여인자전개법: ![]()
② [
행렬] ![]()
3. 선형연립방정식 해 구하기:
① Gauss 소거법으로 첨가행렬을 REF로 → Gauss-Jordan 소거법으로 첨가행렬을 RREF로
② [계수행렬이 가역] ![]()
4. 정사영 구하기:
, ![]()
5. Gram-Schmidt 정규직교화법:
![]()
→ ![]()
→ ![]()
6. QR분해: [행렬
가 full column rank]
의 열벡터를 Gram-Schmidt 정규직교화법
→ 정규직교화한 벡터를 열로 하는 ![]()
→
인 상삼각행렬 ![]()
→ ![]()
7. 선형연립방정식 최소제곱해 구하기: [행렬
가 full column rank]
① ![]()
② QR분해 → ![]()
[행렬
는 임의의 행렬]
③ SVD → ![]()
8. 고유값 구하기: 행렬
의 특성방정식
풀기
9. 고유벡터 구하기: 고유값
에 대한 선형연립방정식
풀기
10. 대각화: [행렬
는 full column rank]
의 고유값 구하기
→
의 고유벡터 구하기
→ 고유벡터를 열로 하는
와 고유값을 주대각선성분으로 하는 대각선행렬 ![]()
11. 직교대각화: [행렬
는 대칭행렬]
의 고유값 구하기
→
의 고유벡터 구하기
→ 서로 같은 고유값에 대응하는 고유벡터들 정규직교화
→ 나머지 고유벡터들 정규화
→ 정규직교화한 고유벡터를 열로 하는 직교행렬
와 고유값을 주대각선성분으로 하는 대각선행렬 ![]()
→ ![]()
12. SVD:
행렬
에서 대칭행렬
를 직교대각화
→ 직교행렬
와 대각선행렬 ![]()
→
를 열로 하는 직교행렬 ![]()
→ ![]()
○ 이제, 왜 singular value
는 고유값의 square root이고,
의 대각선성분으로 고유값이 아닌 singular value
를 갖는지 알아보겠습니다.
직교대각화가능한
와 이를 직교대각화하는 직교행렬
로부터, 무엇이
와 직교닮음인지 알 수 있습니다.
![]()
와
가 직교닮음인 것입니다.
를 직접 계산해보면
입니다.
즉,
입니다.
마찬가지로,
와
는 직교닮음이고,
입니다. singular value
가 왜 고유값의 square root인지 알아보겠습니다.
직교대각화가능한
의
, 여기에서는
가 대각선성분으로
의 고유값
을 갖는 대각선행렬이 됩니다. (7.을 떠올립시다) 따라서
의 식이 세워지게 되고 singular value
는
의 square root,
가 되는 것입니다. 마찬가지로,
의 대각선성분으로 고유값
이 아닌 singular value
를 갖는 이유는,
가 대각선성분으로 고유값
를 가지는 것이고,
는 대각선성분으로 singular value
를 갖게되는 것이기 때문입니다. 이로써, 왜 singular value
는 고유값의 square root이고,
의 대각선성분으로 고유값이 아닌 singular value
를 갖는지 알아보았습니다.
<주요 포인트>
= ![]()
인데, D에는 고유값들인
가 저장 되어 있으므로,
에는
들이 저장되어 있어야 함.
13. 주축정리:
이차방정식
의 대칭행렬 
→
의 고유값 구하기 → ![]()
[
]
→
의 정규직교화된 고유벡터 구하기
→ 정규직교화된 고유벡터를 열로 하는 직교행렬 ![]()
→ ![]()
→ ![]()
14. 뉴턴방법:
→ ![]()
15. 극대극소판정법:
함수의 임계점
에서 함수의 헤시안 ![]()
→ 
→ ![]()
16. 경사하강법:
![]()
→
until ![]()
→ line search로
구하기
→ ![]()
1. 베이즈정리: ![]()
2. 정규분포 확률 구하기: ![]()
3. 공분산행렬 구하기:
① 계산: (1)
와
를 구한다 (2)
를 구한다 (3) ![]()
② 코드: r의 cov()함수
4. PCA:
주성분분산
축소된 주성분화 데이터행렬 ![]()
코드: r의 princomp()함수
5. 오차역전파법:
(1) 이전층에 오차 역전파하기 ![]()
(2) 현재층의 가중치 갱신하기 ![]()
(3) State your meaningful Comment/Answer/Discussions in Discussion/QnA.
[Re-Final OK by SGLee] [답변] [재질문 by. 나종진]해공간과kernel의 차이 [Final OK by SGLee] Q by 박지수, Finalized by 한수현, 해공간을 구하는 법, Span 인 <(-3, 1, 0, 0), (-5, 0, -2, 1)>이 해공간입니다. 작성자 : 나종진(2017****17)작성일 : 7월 21일 오후 4:12
[Final OK by SGLee] Q by 박지수, Finalized by 한수현, 해공간을 구하는 법, Span 인 <(-3, 1, 0, 0), (-5, 0, -2, 1)>이 해공간 입니다.

이 게시글에 대한 답변입니다. Final. 해공간, 박지수 학우님의 질문에 대한 답. Span 인 <(-3, 1, 0, 0), (-5, 0, -2, 1)>이 해공간 입니다.

풀이는 이런 식으로 하면 될 것 같습니다.
해공간을 표현하는데 사용하는 두 벡터는 해공간에 속해있는 무수히 많은 벡터 중 두 개를 끌어오면 되는 것이기 때문에 해공간의 표현은 다양하게 할 수 있습니다.
저 마지막 식에서 (x2, x4)가 (3, -2)일 때 해는 (1, 3, 4, -2)이고, (5, -3)일 때 해는 (0, 5, 6, -3)이므로 제가 구한 span(S)에는 예제 답에 나와있는 두 해가 포함 되어있으므로
제가 쓴 <(-3, 1, 0, 0), (-5, 0, -2, 1)>도 해공간의 표현 중 하나임을 알 수 있습니다.
박지수 학우님도 저와 같은 답이 나오셨던데, 그 답도 맞다고 보면 될 것 같습니다.
혹시 제 답변이 부족하거나 답변에 잘못된 부분이 있다면 알려주시면 감사하겠습니다.
질문 배경: 위의 풀이에서 얻은 답이 교재의 답과 모양이 달라서, 해공간을 구할 때 교재에서는 A.right_kernel()를 통해서 구했습니다. 그래서 sage 에서 right_kernel()에 대해서 찾아보니


이렇게 나오게 됩니다. 행렬의 kernel을 구하는 함수임을 알 수 있습니다.
그래서 kernel 이 무엇인지 인터넷을 찾아보고 3-1강 선형변화를 들어보았지만 이도 결국 해공간임을 알 수 있었습니다. 이를 찾던 중

이 사진을 찾을 수 있게 되었고, 영공간, 해공간을 두가지 관점으로 볼 수 있다고 보았습니다.
Q. 교재에 나와있는 A.right_kernel()로 구한 답인 [ 1 3 4 -2], [ 0 5 6 –3]와 손으로 계산하여 푼 답인 [-3,1,0,0], [-5,0,-2,1]이 어떤 차이가 있는지 궁금합니다.
교수님이 주신 답입니다^^ Answer.
(1) kernel 과 영공간은 같은 개념입니다. 단지 함수 A=T 의 kernel. 행렬 A의 영공간, 연립방정식 Ax=0 의 해공간 으로 모두 다르게 부릅니다. 그러나 위의 셋 다 같은 개념입니다.
(2) 컴퓨터로 구한 kernel of A = span of { [ 1 3 4 -2], [ 0 5 6 –3] } 와 손으로 계산하여 Ax = 0 의 해공간 (solution space) = A 의 영공간 = span of { [-3,1,0,0], [-5,0,-2,1] } 은 둘 다 정확히 같은 (2차원 ) 부분공간입니다.
즉, 찾은 두 개의 기저는 모양이 다르지만 (하나의 기저안의 각가의 벡터들은 다른 기저안의 벡터들의 일차결합으로 표현되므로, 모든 일차결합들이 집합인 각 span 은 같습니다.) 그 두 개의 기저는 같은 2차원 해공간=kernel 을 만드는 집합 입니다.
Final comment
이해되었습니다. 제가 여러개의 기저가 나올 수 있다는 사실을 간과하고 하나의 답만을 찾으려고 했습니다. kernel, 영공간과 해공간은 같은 개념임을 알게되었고 다양한 기저가 있음을 다시 한번 알게 되었습니다.감사합니다.
이재화 7월 21일 오후 4:30
1. 손으로 계산한 {(-3, 1, 0, 0), (-5, 0, -2, 1)}와 코드를 이용하여 계산한 {( 1, 3, 4, -2), ( 0, 5, 6, –3)} 은 모두 A의 영공간(Ax = 0의 해공간)을 표현하는 답이 됩니다.2. 일차독립이면서, 벡터공간 전체를 생성하는 벡터들의 집합을 기저(basis)라고 하는데, {(-3, 1, 0, 0), (-5, 0, -2, 1)}와 {( 1, 3, 4, -2), ( 0, 5, 6, –3)}모두 동일한 A의 영공간(Ax = 0의 해공간)의 기저가 됩니다.3. 같은 공간이어도 기저는 다양할 수 있습니다. 따라서 손으로 계산한 기저와 코드로 계산한 기저는 다를 수 있습니다.4. 그러나 기저를 이루는 벡터의 개수는 항상 같아서 이를 차원(dimension)이라고 합니다.위의 예에서 A의 영공간(Ax = 0의 해공간)의 차원은 2가 됩니다. 이를 A의 nullity라고 합니다.**************교수님이 주신 답입니다^^ Answer. (1) kernel 과 영공간은 같은 개념입니다. 단지 함수 A=T 의 kernel. 행렬 A의 영공간, 연립방정식 Ax=0 의 해공간 으로 모두 다르게 부릅니다. 그러나 위의 셋 다 같은 개념입니다. (2) 컴퓨터로 구한 kernel of A = span of { [ 1 3 4 -2], [ 0 5 6 –3] } 와 손으로 계산하여 Ax = 0 의 해공간 (solution space) = A 의 영공간 = span of { [-3,1,0,0], [-5,0,-2,1] } 은 둘 다 정확히 같은 (2차원) 부분공간입니다.즉, 찾은 두 개의 기저는 모양이 다르지만 그 두 개의 기저는 같은 2차원 해공간=kernel 을 만드는 집합입니다. 나종진 씨, 이제 이해되었지요? Final comment 달고 마무리 하시면 됩니다.
-----
Finalized by 정원철.[1주차 주요개념] <노름, 내적> 정리 및 Jupyter실습(feat. L1/L2 norm, 노름-내적 포함관계) -> 인공지능 공부와 병행하며 노름을 좀더 세분화하여 정리하였고, 노름과 내적간의 관계도 관찰하였습니다.
Finalized by 정원철.[1주차 주요개념] <노름, 내적> 정리 및 Jupyter실습(feat. L1/L2 norm, 노름-내적 포함관계)
작성자 : 정원철(2017****79)작성일 : 7월 31일 오전 1:12
조회수 : 8
|
정의. |
|
의 벡터
에 대하여
![]()
을
의 노름(norm, length, magnitude)이라 한다.
위의 정의에서
는 원점에서 점
에 이르는 거리로 정의됨을 의미한다. 따라서
의 두 벡터
,
에 대하여
는 두 점
와
사이의 거리(distance)로 정의한다. 즉,
![]()
기본적인 노름의 형태는
과 같으며 p 값에 따라 L1, L2 norm으로 정의됩니다.
위에서 정의된 노름은 p=2일 경우인 Euclidiean Norm, 혹은 L2 norm이라고 하며, p=1일 때는 Manhattan Norm, L1 norm이고 다음과 같습니다.
L1 norm:
, L2 norm = ![]()
Ex)
x=[1,2,3,4,5],
L1 norm : ||x||1=(|1|+|2|+|3|+|4|+|5|)=15
L2 norm : ||x||2=√1+4+9+16+25=√55=7.4161
이 두가지의 근본적인 차이는 다음과 같습니다.

위의 그림에서 L2 norm의 경우에는, unique shortest path(연두색)를 가지는 반면에 L1 norm은 그 외의 길을 가집니다. L2 norm이 경로를 찾는데 있어서 더 효율적이라고 할 수 있을 것 같습니다(피타고라스..).
이를 감안하여 KNN classifier를 고려해보면, 다음과 같습니다.
L 1 norm L 2 norm

몇가지 색들의 영역을 Image classification을 통해 나타낸 그림인데, 정말 미세한 차이가 있지만 L2 norm이 좀더 명확하게 구분한거 같습니다.
또한 머신러닝에서는 모델의 overfitting을 피하기 위해 regularization을 사용하기도 하는데, 이때도 노름이 사용됩니다.
L_q norm regularization: 
위 식에서 람다가 곱해져 있는 항이 norm이며, 이때 L1 norm일 경우, Lasso regression, L2 norm일 경우, Ridge regression으로 구분되는데 해당 내용은 추후 다시 정리해보도록 하겠습니다.

위의 정의에서 내적은 노름으로 정의될 수 있으며, 따라서 모든 내적공간은 노름공간이 된다는 것을 알 수 있습니다.
그렇다면, 반대의 경우도 성립할까요? 이를 위해 먼저, 다음을 살펴봅시다.

위 정리는 내적의 정의에 의해 자연스럽게 유도되는 성질이며, 아래와 같이 증명됩니다.

이를 통해 노름이 내적으로 정의될 수 있다면 위의 평행사변형 법칙을 만족시켜야함을 알 수 있으며,
의 두 원소 x=(1,0) and y=(0,1)를 생각해봅시다.
이때 x+y=(1,1) 와 x−y=(1,−1) 을 간단히 얻을 수 있고 네 원소들의 노름을 구해보면 다음과 같습니다.
![]()
위 계산 결과로부터 아래를 얻을 수 있습니다.
![]()
따라서, 노름공간은 평행사변형 법칙을 만족시키지 못하기 때문에 어떤 내적으로부터도 유도될 수 없음을 알 수 있습니다. (단, 노름공간이 실수체
위에서 정의된 경우에는 가능 (Von-Neumann Theorem 참조.)

참고 : [도전학기] 이상구 교수님 인공지능을위한기초수학
[도전학기] 김재광 교수님 인공지능의응용 [도전학기] 손영두 교수님 머신러닝과딥러닝
https://jjycjnmath.tistory.com/149?category=738774
이상구(LEE SANGGU)7월 31일 오후 3:38 Good
Finalized by 정원철.[1주차 주요개념] <선형 연립방정식> 정리 및 Jupyter실습 (feat. Geometry, 역행렬)
-> 벡터를 좌표 평면상에 그리는 것에 대한 막연한 두려움이 있었는데 기하적으로 행기준, 열기준으로 그려보면서 감을 잡았고 더나아가 결국 선형 연립방정식은 열의 합이라는 사실을 깨달았습니다. 또한 선형 연립방정식 형태로부터 별도의 테크닉 없이 역행렬까지 생각해보게 되었습니다.
Finalized by 정원철.[1주차 주요개념] <선형 연립방정식> 정리 및 Jupyter실습 (feat. Geometry, 역행렬)
작성자 : 정원철(2017****79)작성일 : 7월 31일 오전 1:21
조회수 : 6
|
정의. |
선형연립방정식(system of linear equations) |
(1) 일반적으로, 미지수
에 관한 유한개의 선형방정식의 모임
![]()
![]()
![]()
![]()
을 선형연립방정식(system of linear equations)이라고 한다. 만일 상수항
이 모두 0일 경우를 동차선형연립방정식(homogeneous system of linear equations, 동차선형방정식시스템)이라 한다.
(2) 선형연립방정식의 미지수
에 어떤 수
을 각각 대입하였을 때, 각 방정식이 모두 성립하면 (
)을 이 선형연립방정식의 해(solution)라고 한다. 예를 들어, 선형연립방정식
|
|
(1) |
의
에 각각
을 대입하면 두 방정식이 모두 성립하므로
은 선형연립방정식 (1)의 해이다. 일반적으로 선형연립방정식의 해가 존재하는 경우를 consistent(일관된)한 연립방정식이라 하고, 해가 존재하지 않는 연립방정식은 inconsistent 한 연립방정식이라 한다.
▪ (미지수가 2개인 선형연립방정식의) 해집합의 다양한 모습
(1)
(2)
(3)

일반적으로, 주어진 선형연립방정식은 다음 중 하나만(one and only)을 만족한다.
(1) 유일한 해를 갖는다.
(2) 무수히 많은 해를 갖는다.
(3) 해를 갖지 않는다. (inconsistent 한 선형연립방정식)
선형연립방정식의 그래프를 항상 위에 보이는 대로 그려왔었는데 벡터의 합으로도 그래프를 그려보고 싶어 Geometry에 대해서 공부해보았고 선형연립방정식을 Row와 column 각각의 기준으로 그리는 법을 배웠습니다. 예를 들어 위의 (1) 방정식의 경우, row를 기준으로 보자면
2개의 방정식으로 나뉘어져 일반적으로 알고 있는 대로 위와 같은 그래프를 그릴 수 있습니다. 반면 column 기준으로 생각해보면,![]()
이 됨을 알 수 있고 아래 그래프에서
값이 2,1 임을 확인할 수 있습니다.
Row와 column 기준의 그래프는 아래와 같습니다.
<row picture> <column picture>

*[1,2] 구간 빨간색 수정.
또한, 역행렬을 공식이나 Gauss elimination 없이 선형연립방정식 자체의 성질에 기인하여 구해보았습니다.
예를 들어, 다음과 같은 Ax = b가 있습니다.

이때, 좌변을 전개해보면
꼴이 되며, 이를 다시 x 벡터에 대해서 정리를 합니다.
그러면
이 되고, 우변을 다시 b에 대해서 정리를 하면, 결과적으로
가 됩니다.
결국 간단한 선형연립방정식의 성질로도
임을 구할 수 있습니다.

참고
[도전학기] 이상구 교수님 인공지능을위한기초수학
Gilbert strang, MIT 18.06
Finalized by 정원철.[1주차 주요개념] <Gauss (J) 소거법과 (R)REF (1)> 정리 및 문제풀이.(feat. Special Sol & nullspace)
작성자 : 정원철(2017****79)작성일 : 7월 31일 오전 1:26
조회수 : 9


예전에 전공 수업을 들을 때, Gauss (-Jordan) 소거법과 R(R)EF는 선형연립방정식의 해 또는 역행렬을 구하는 데에 있어 굉장히 중요한 테크닉이라고 배웠고 인공지능을 공부하는 과정에서도 빈번히 등장하는 개념이라 혼자 한번 손으로 적으면서까지 연습을 진행해보았습니다. 그러던 차에 훌륭한 예제 덕분에 해를 구하는 것 이외에도 pivot, linear independence, nullspace, columnspace, free variable, (full) rank 등등 다양한 개념들이 연관 되어있다는 것을 확인하였고, 관련된 insight를 공유하고 싶습니다.
예를 들어,
행렬을 가지고 AX=0의 해가 되는 X 벡터를 구해보겠습니다.
먼저, 오리지널 행렬을 한번 살펴보자면 2번째 row는 1번째 row의 2배이며, 3번째 row는 위 두 row의 합으로 이루어져 있습니다. 따라서 이 행렬은 linear dependent한 형태라는 사실을 알 수 있습니다.
아래와 같이 Gauss elimination을 이용하여 REF를 구하고, Gauss Jordan elimination으로 RREF를 구하면
을 구할 수 있습니다.

참고로 이때, 1번째와 3번째 칼럼에 pivot이 있으니까 이 행렬의 rank(=pivot의 개수)는 2가 되고, 전체 4개의 칼럼 중 rank가 2이니까 free variable(=n-rank)은 2가 됩니다. (2번째 4번째 칼럼)

RREF에 x에 특정한 값을 대입하여 Ax = 0의 해를 구하면,
를 구할 수 있으며, 이들을 “special solution”이라고 하며, 이들 각각의 모든 combination을 고려하여 각각 벡터 앞에 실수 scalar를 곱해주면 “null space”를 얻을 수 있습니다. (이때, 만약에 nonhomogeneous한 케이스 (Ax=b)의 해를 구한다면 “column space”를 얻게 됩니다. Null space와 column space의 개념은 선형대수 전반적으로 아주 중요한 부분 같아서 언급했습니다.)

또한 이를 좀더 추상화하여 다음과 같이 표현할 수 있습니다. 먼저 2번째 칼럼과 3번째 칼럼의 순서를 교차해주고 pivot 부분을 Identical 행렬로, free variable 부분을 Free 행렬로 구분한다면, x의 Special solution과 null space는 아래와 같이 구할 수 있습니다.

참고
[도전학기] 이상구 교수님 인공지능을위한기초수학
Gilbert strang, MIT 18.06
정권채(2008****19)8월 1일 오후 10:16 RREF가 뭔가 중요한 부분인 것 같은데 강의로 이해가 안 되서 교수님 유튜브로 겨우 무엇인지 이해만 하고 넘어갔었는데, 감사합니다.
-----------------------------------------------------------------------
Finalized by 정원철.[1주차 주요개념] <Gauss (J) 소거법과 (R)REF (2)> 알고리즘
작성자 : 정원철(2017****79)작성일 : 7월 31일 오전 1:28
조회수 : 8
Gauss elimination을 활용해서 REF를 구하는 전반적인 과정의 컨셉이 정렬 알고리즘과 비슷한 것 같아 실습 문제를 아래와 같이 풀어보았습니다.
(*[코딩더매트릭스]님의 코드를 가져왔습니다.). 아래와 같이 간단한 코드는 직접 짜보면서 연습해 보시면 도움이 될 것 같아 공유드립니다.

참고 https://excelsior-cjh.tistory.com/139
inalized by 정원철.[1주차 주요개념] <일차독립, 기저, 차원> geometry를 통한 정리(feat. span, columnspace, nullspace)
작성자 : 정원철(2017****79)작성일 : 7월 31일 오전 1:41
조회수 : 10
|
정의. |
일차독립(linearly independent) |
(1)
의 부분집합
에 대하여, 벡터
가
![]()
의 꼴로 표시되면,
를 벡터
의 일차결합(linear combination)이라고 한다.
(2) ![]()
![]()
에 대하여
![]()
이면, 벡터
(또는 집합
)는 일차독립(linearly independent)이라고 하고, 벡터
(또는 집합
)가 일차독립이 아니면 일차종속(linearly dependent)이라고 한다.
▪ 집합
가 일차종속이면
을 만족하는 모두는 영이 아닌 스칼라
가 존재한다.
|
정리. |
일차종속 |
집합 ![]()
에 대하여, 다음이 성립한다.
(1) 집합
가 일차종속일 필요충분조건은
에 속하는 한 벡터가 나머지 벡터들의 일차결합으로 표시되는 것이다.
(2) 집합
가 영벡터를 포함하면
는 일차종속이다.
(3) 집합
의 부분집합
이 일차종속이면
도 일차종속이고,
가 일차독립이면
도 일차독립이다.
▪
는
들을 열벡터(column vector)로 가지는 행렬,
라 하자. 그렇다면 벡터들이 일차독립임을 보이기 위해서는 동차연립방정식
이 유일한 해
을 가져야 한다. 특히
일 경우
이면 유일해를 갖는다.
저는 일차독립과 일차종속의 정의가 직관적으로 잘 이해가 가지 않아 기하적으로 접근해보았
저는 일차독립과 일차종속의 정의가 직관적으로 잘 이해가 가지 않아 기하적으로 접근해보았습니다. 먼저, 정의에서 가장 중요한 포인트는 ‘집합
가 일차종속이면
을 만족하는 모두는 영이 아닌 스칼라
가 존재한다.’ 인데 예를 들어, 아래 그림을 봅시다. 그래프가 0이 되기 위해서 c1과 c2가 무슨 값을 가져야 되는지를 판단하면 되는데 첫번째 그래프는 V2=2*V1라는 선형관계가 있기 때문에 c1,c2 = 1,-2가 될 수 있고, 두번째에서는 V1 =0 이 성립한다고 해도 V2가 영벡터이기 때문에 어떤 스칼라값이 들어와도 항상 0이 성립합니다. 즉, 영벡터가 하나라도 있으면 선형방정식의 independency를 걍 죽여버리는 셈입니다. 세번째는 V1과 V2가 별다른 선형관계를 가지고 있지 않으므로 0으로 가기 위해서는 c1,c2=0일 수 밖에 없습니다. 정리하자면 앞선 두개는 일차종속, 마지막은 일차독립입니다.

또한 ‘ (1) 집합 S가 일차종속일 필요충분조건은 S에 속하는 한 벡터가 나머지 벡터들의 일차결합으로 표시되는 것이다.’ 이 문장은 기하적으로 생각해보면 ‘세 벡터가 원점을 지나는 한 평면 위에 있다’가 됩니다. 반대로 일차독립이면 세 벡터가 원점을 지나는 한 평면 위에 있지 않으면 되겠죠. 그림을 살펴보시면 쉽게 이해할 수 있습니다.


이전에 RREF를 공부하면서 어떠한 행렬의 row들이 관계가 있으면 당연히 일차독립이 될 수 없다고 정리했었습니다. 거기서 확장해보자면, 어떠한 행렬을 Gauss (or J) elimination으로 (R)REF로 만든 후 모든 row에 pivot값이 있다면 선형독립(ex.
, pivot값이 없다면(ex.
, 선형종속으로 정리하면 될 것 같습니다.
여기서 조금 더 생각해보면, rank가 pivot의 개수니까 선형독립일 경우에는 rank =n이 되고, 선형종속일 경우에는 rank < n이 됨을 알 수 있습니다.
이러한 논리는 기저를 이해하는 데에도 수월합니다. 먼저 정의를 한번 보시죠,
|
정의. |
기저(basis) |
의 부분집합
가 아래 두 조건을 만족하면
를
의 기저(basis)라 한다.
(1)
가 일차독립
(2) ![]()
|
정리. |
일차독립, 일차종속, 각 기저에 속하는 벡터의 개수 |
(1) 집합
이
의 기저일 때,
의
개의 벡터들의 집합
은 항상 일차종속이다. 그러므로
가 일차독립이면 언제나
이다.
(2) 집합
과
이
의 기저이면
이다.
▪
의 기저는 무수히 많다. 그러나 각 기저에 속하는 벡터의 개수는 항상 같다.
|
정의. |
차원(dimension) |
집합
가
의 한 기저일 때,
에 속하는 벡터의 개수를
의 차원(dimension)이라 하며
로 나타낸다.
|
정리. |
|
을
의 부분공간
의 기저라 하면,
의 모든 벡터
는 기저 벡터들의 유일한 일차결합으로 표현된다.
▪
의
개의 일차독립인 벡터들은 임의의 벡터
를 일차결합으로 유일하게 표현하므로 기저이다!
공간을 예를 들어 생각해보면, {
}는
를 span하면서도 일차독립을 이루고 있기 때문에 기저라고 볼 수 있는 반면, {
} 은 row 기준으로 첫번째와 두번째가 동일함으로 기저가 될 수 없습니다. 또한 ‘집합
과
이
의 기저이면 n=m이다. ▪
의 기저는 무수히 많다. 그러나 각 기저에 속하는 벡터의 개수는 항상 같다.’ 라는 정의에서는
공간에서 기저가 되려면 벡터는 n개가 되어야 한다고 강조하고 있는데 이때 n을 차원이라고 합니다.
기저에 대해서 알아볼 때 까다로웠던 것은 행렬 전체, columnspace, nullspace 각각에 대한 기저를 구하는 문제였습니다. 예를 들어,
행렬을 놓고 보았을 때, 4개의 벡터가 R^4공간에 대하여 span하고 있지만, 3번째(=1번째+2번째), 4번째(=1번째) 칼럼은 모두 일차종속이기 때문에 columnspace (C(A))의 기저는 pivot 항인 1번째,2번째 칼럼이고 차원은 2입니다. 여기서 다음과 같은 관계를 도출할 수 있습니다. <rank(A) = A의 pivot 개수 = C(A)의 차원>. 또한 앞서 언급한 3번째(=1번째+2번째), 4번째(=1번째) 칼럼의 성질을 이용하여 nullspace(N(A))=
임을 알 수 있습니다. 따라서 nullspace의 차원은 2가 되며, 다음과 같은 관계가 도출됩니다.
<N(A)의 차원 = free variables의 개수 = n -r>
참고
[도전학기] 이상구 교수님, 인공지능을위한기초수학
Gilbert strang, MIT 18.06
이상구(LEE SANGGU)7월 31일 오후 3:37 Good
-----------------------------------------------------------------------
Finalized by 정원철.[1주차 주요개념] <일차독립, 기저, 차원> 문제풀이 및 jupyter로 검증
작성자 : 정원철(2017****79)작성일 : 7월 31일 오전 1:47
조회수 : 12
일차독립, 기저, 차원이 다른 개념에 비해 다소 추상적이게 느껴지고 이들간의 관계에 대해서 좀더 명확히 정리하고 싶어서 다음 문제를 풀어보았습니다. 한번 같이 풀어보시면 조금이나마 도움이 될 것 같아 공유드립니다.
Q. Find the dimension of the vector space spanned by the vectors
(1, 1, -2, 0, -1), (1, 2, 0, -4, 1), (0, 1, 3, -3, 2), (2, 3, 0, -2, 0)
And find a basis for that space.

먼저 위의 그림과 같이 row를 기준으로 풀어봤습니다. 주어진 벡터들을 span하여 행렬을 하나 만들었고 일차독립을 확인하기 위하여 Gauss elimination을 활용하여 REF를 구했습니다. 그 결과 1, 2, 3번째 row의 pivot이 주어졌고, 따라서 이 들은 일차독립 조건과 span 조건을 만족하기 때문에 차원이 3인 row 기준 기저가 됩니다.

다음으로는 아래와 같이 column을 기준으로 풀어봤습니다.

Column 기준으로 풀 때는 좀전에 span하여 만든 행렬을 transpose한 다음 row 기준과 같은 방식으로 진행하였습니다. 따라서 1, 2, 3번째 column이 일차독립이라는 정보를 얻었고 기저를 구할 수 있었습니다. 다만, 이때 주의해야했던 점은 REF를 만들면서 column space가 변해버린 것 같아서 답은 기존에 있던 column을 적었습니다.

다음으로는 파이썬을 이용해 정답을 검증해보았습니다.


이상구(LEE SANGGU)7월 31일 오후 3:36Good
Finalized by 정원철. [2주차] 고유값 분해를 이용한 피보나치수 일반항 유도
fianlized by 정원철. [2주차] SVD를 활용한 이상구 교수님 사진 압축. 댓글 by 나종진, 이상구교수님, 장환승, 김호연, 김정환, 김다은, 박진형
-> 사실 1주차 글들은 정말 많은 시간을 쏟았음에도 별다른 관심을 끌지 못했었는데, 고유값 분해, 특이값 분해와 같이 난해한 개념을 활용해서 피보나치수의 일반항 도출, 이상구 교수님의 사진 압축하기 등 모두에게 익숙하고 흥미로운 주제들로 풀어내니까 좋은 반응이 보였던 것 같습니다. 많은 분들의 공감을 이끌어내서 보람찼습니다.
[Final OK by SGLee] Finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]
-> 교수님께서 댓글에 꼭 참고하라고 한 페이지의 예제를 풀어보았는데 굉장히 흥미로워서 꼭 제가 나서서 Finalized 하고 싶었던 글입니다. 또한, 오류를 해결하는 과정에서 교수님과의 소통도 좋았습니다.
[Final OK by SGLee] . Finalize & 추가적 이야기 by 김범준. [5주차] 포아송분포 베팅 (토트넘 vs 에버튼)by 정원철. 댓글 by. 이상구 교수님, 안성진 학우님, 최희준 학우님, 천가영 학우님, 나종진 학우님, 임성규 학우님, 박은아 학우님, 정권채 학우님, 박정호 학우님, 장환승 학우님
[7주차] PCA를 활용한 라면맛 평가
-> 어려운 개념을 실제 사례를 통해서 쉽게 이해할 수 있도록 하여 많은 학우분들의 공감을 이끌어냈고, 포아송분포글 같은 경우에 김범준 학우님의 추가적인 사례 추가를 통해 하나의 양질의 컨텐츠를 만들 수 있었습니다.
[5주차] 이산확률분포 관계 정리
-> 이산확률분포 들간의 관계를 이해함으로써 평소 암기에 의존하던 통계 공부에서 탈피할 수 있었습니다.
[Final OK by SGLee] Final by 장환승, 재밌는 확률 문제 소개 (2) Answer by 김태호, 정원철, 나종진, 박지수, 고경원
-> 문제를 푸는 과정에서 베이즈 공식의 의미를 파악함으로써 답을 구하려고 많이 고민했었습니다.
Final OK by SGLee Finalized by 정원철. [7주차] 신경망 요약 by 천가영.
Finalized by 정원철. 7주차 오차역전파법 정리 by 김진웅 + 아주 직관적인 예시 추가
-> 신경망과 오차역전파법을 저만의 언어로 잘풀어내려고 노력하며 답을 하였습니다.
Ch. 2: Participation Part (참여부분, 정량) 자기 평가와 본인의 Project (Term paper) 제안서 등에 대해 아래를 채우시오. (20점)
Fill in the below for your self-assessment and your project/term paper. (20 points/100)
A. (Quantity 10pts) Briefly describe your contributions through Q&A for yourself and fellow students in our "Basic Math for AI" classes!
(1) Quantity: Check your participation numbers in Q&A <Refer your name in Q&A directly>: Each week (Saturday to Friday)
▪ Week 1: 9 Week 2: 5 Week 3: 4 Week 4: 4
▪ Week 5: 4 Week 6: 4 Week 7: 4
(Total = entries) 34
Total number of sessions (Q: 9 , A: 25 )
■ Number of online attendances: ( 42 ) / 42 (1-7week)
Online WebEx OH attendance: ( 5 ) / 5 (1-7week)
Absences: 0
1. (20점) 본인이 그간 Q&A, 동료학생, “본"강좌 등에 기여한 내용을 간단히 서술하세요!
(1) QnA 참여 회수 <QnA에서 직접 확인하세요> : 각 주별 (토요일에서 금요일)
(1) 1주차 : 총 8회, 2주차: 총 4회, 3주차: 총 4회, 4주차: 총 4회,
5주차: 총 5회, 6주차: 총 4회, 7주차: 총 5회
총 36 회
( 해당 횟수는 수업 관련 심도있는 질의라고 판단한 것만 count 하였고, 총 포함하면 53회 가량 됩니다.)
(2) 온라인 출석 회수 : 42회 / 42회
(3) Webex 출석 회수 : 2회
( 전에 Webex에 출석하여 질문을 남겼었는데 해당 게시글은 찾기 어렵습니다.)
[Final OK by SGLee] 임성기 채희준 나종진 [오늘 OH, 목요일 오후 5시-6시20분] OH 에서 논의된 내용 아래에 (약속대로) 정원철 군과 안성진 군이 먼저 답글로 추가 하세요^^ 다른 학생은 이어서 한 줄 씩 주요 내용 보태시면 됩니다.
정원철(2017****79)8월 20일 오후 9:11
오늘 논의된 내용 중 필수적으로 전달드려야할 3가지가 있습니다.1) 온라인 기말시험은 중간시험과 유사한 방식으로 진행되며, 기말시험을 대비하여, 평소 학습이 부족하다고 판단되시는 분들은 본인이 직접 하나부터 열까지 정리를 하기에는 시간적으로 벅찰 수 있으니,기존에 다른 학우분들께서 잘 정리해놓으신 글에 comment를 달거나 질문을 하고, 또는 본인의 내용을 추가하여 Finalize 혹은 reFinalize 하는 방법으로makeup 하시면 됩니다. 3) 프로젝트를 참여하지 못하였으나, 가산점을 받고 싶으신 분들은 5분 ~ 10분 정도의 동영상으로 본인의 Final PBL 보고서를 발표하여 공유해주시면 됩니다.* Midterm PBL 에서 아쉬웠던 분은 이번 Final PBL 만 잘 하시면 Makeup 할 수 있으니 ... 일단 120점 온라인 시험 문제 보시고 그것 만점 받으시고, 그에 근거하여 교수님이 미리 보여주신 우리 Midterm PBL 샘플 보시고 Final PBL 을 본인의 언어로 채점하기 좋게 잘 정리하셔서 due day 전에 제출하시면 됩니다^^ 그리고 본의의 PBL 은 본인의 평생 포트폴리오가 될 것이라고 하셨습니다. 남은 1주일 잘 마무리 하시기를 기대합니다.
(2) 다음 밑줄 친 곳에 들어갈 내용을 고르시오.
나는 ‘아래 박스 안 키워드들’의 개념을 이해하고 설명할 수 있으며 (간단한 것은 손으로, 복잡한 것은 Sage/ python/ R를 이용하여) 계산하여 그 의미를 설명할 수 있다.
나는 벡터, 내적, 벡터의 노름, 코시-슈바르치 부등식, 정사영(projection), 선형연립방정식(system of linear equations), 첨가행렬(augmented matrix), 기본행 연산(ERO), 행 사다리꼴(REF), Row Reduced Echelon Form, Gauss 소거법과 Gauss-Jordan 소거법, 행렬과 행렬식, vector sum, scalar multiplication, 행렬의 곱(product), 영행렬(zero matrix), 역행렬, 대각행렬, 스칼라행렬, 대칭행렬, 치환(permutation), 수반행렬(adjugate, adjunct), 일차독립, 일차종속, Subspace, 기저, 차원, nullity, column space and row space, 계수(rank), Rank-Nullity 정리, 최소재곱해(least square solution), Orthonormal basis, Gram-Schmidt 정규직교화 과정, QR 분해, 선형변환(Linear Transformation), 표준행렬, 핵(kernel)과 치역(range), 동형사상(isomorphism), 고윳값, 고유벡터, 대각화(Diagonalization), 닮음 행렬(similar matrix), 직교대각화(orthogonally diagonalizing), 고윳값분해(eigen-decomposition), SVD(특이값 분해), 일반화된 역행렬(Pseudo-inverse, Moore-Penrose Generalized Inverse), 이차형식(quadratic form), 주축정리(Principal axis theorem), 함수, 극한(limit), 도함수(derivative)와 미분(differentiation), 뉴턴 방법(Newton’s Method with gradient), 적분(Integral), 리만 합(Riemann sum), 외적(Cross Product), 벡터 함수, 편도함수(Partial Derivative)와 그래디언트(gradient), Jacobian, 연쇄법칙(Chain Rule), 방향도함수(directional derivative), Taylor 정리, 함수의 극대(Local Maximum) and 극소(Local Minimum), Fermat’s theorem on critical points, 임계점(critical point), 안정점(saddle point), Gradient Descent Algorithm(경사-기울기 하강법), 중적분(double integral, multiple integral), Fubini의 정리, 표본평균(sample mean), 표본평균(sample mean), 중위수(median), 사분위수(quantile), 표본분산(sample variance), 표본표준편차(sample standard deviation), 백분위수(percentile), Interquartile range (IQR), 수열(permutation), 조합(combination), 이항계수(binomial coefficient), 이항정리(binomial theorem), 중복집합(multiset), 확률(probability), 대수의 법칙(Law of large number), 조건부 확률(conditional probability), 사전확률(prior probability), 사후확률(posteriori probability), 베이즈 정리 (Bayes’ theorem), 확률변수 (random variable), 기댓값(expected value), 분산(variance), 표준편차(standard deviation), 확률분포(probability distribution), 확률질량함수(probability mass function), 확률밀도함수(probability density function), 이산 확률 분포(discrete probability distribution), 베르누이 분포(Bernoulli distribution), 이항분포(Binomial distribution), 정규분포(Normal distribution), 표준정규분포(Standard normal distribution), 지수분포(Exponential distribution), 중심극한정리 (Central Limit Theorem), 표준 코시 분포(standard Cauchy distribution), 공분산(Covariance), 상관계수(Correlation), 공분산 행렬(Covariance Matrix), 통계적 독립(Statistically Independent), 주성분 분석(Principal Component Analysis)의 개념을 이해하고 설명할 수 있으며 간단한 것은 손으로, 복잡한 것은 sage 또는 python 을 이용하여 계산하여 그 의미를 설명할 수 있다.
*대표적인 사례 2가지*
*아래 게시글을 참조해주세요. 혹은 한글 파일 내에서 검색해주세요.*
Finalized by 정원철.[1주차 주요개념] <Gauss (J) 소거법과 (R)REF (1)> 정리 및 문제풀이.(feat. Special Sol & nullspace) -> 행렬 하나의 예제를 통해 선형독립과 선형종속에 대해서 판단 후, 직접 수기 증명을 통해 가우스 요르단 소거법을 통해 RREF를 구하였습니다. 그다음 RREF 행렬을 관찰하며 rank와 nullity를 구하였고 special solution을 찾는 과정을 수기 풀이로 보여주며 영공간을 구하고(해당 예제는 Ax=0인 상황) Ax=b인 상황에서는 열공간을 만들 수 있다고 언급하였습니다.
Finalized by 정원철.[1주차 주요개념] <일차독립, 기저, 차원> 문제풀이 및 jupyter로 검증
-> 위에서와 마찬가지로 수기로 하나의 행렬을 행기준 열기준 각각 가우스 요르단 소거법을 활용하여 RREF 꼴을 만들었고, 이를 통해 기저와 차원을 구했습니다. 이렇게 수기로 푼 풀이를 검증해보기 위해 파이썬으로 가우스 소거법과 랭크, 기저, 차원을 구하는 알고리즘을 작성하여 마찬가지로 행기준 열기준 각각에 대해서 실습해 보았습니다.
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
I am very glad that I had the opportunity to once again get into this wonderful environment of the PBL class. I really wanted to deepen my mathematical knowledge in the field of Artificial Intelligence, and this summer semester, thanks to this subject (basic mathematics for artificial intelligence), I have this opportunity. As I said earlier, I really like the PBL technique, because thanks to it, each student can actively participate in the educational process.
I also want to note that this PBL system, pushes you to learn and improve your knowledge literally every day. So, every day I devoted at least 3-4 hours to study this subject and related material, which allowed me to significantly improve my mathematical knowledge and practical skills in programming in Sage, Python and R.
: 평소 인공지능을 공부하면서 수학 베이스를 좀더 탄탄히 다져야할 필요성을 절감하고 있던 차에 교수님의 잘짜여진 커리큘럼 내에서 제가 부족하거나 추가로 공부하고 싶던 개념들에 대해 능동적으로 공부할 수 있어서 굉장히 보람찹니다. 특히나 개념에 대해서 이해하는 것을 넘어서 정리, 질문 답변, 실습을 하는 교수님 수업 방식 덕분에 선형대수학과 미적분학에 대한 로드맵이 생겨 향후 인공지능을 더 깊게 공부하는 데에 큰 도움이 될 것 같습니다. 뿐만 아니라 다른 학우분들의 Q&A 글을 보면서 제가 평소에 잘 이해하지 못했던 부분에 대해서 같은 고민을 하면서 해결해나가는 과정에서 공감도 많이 되었고 큰 도움을 받고 있어서 저도 그에 못지 않게 배풀고 싶어서 더 열심히 하게 됩니다.
(4) What you contributed through this course (Q & A and/or In-class):
I tried to actively participate every week in the QnA. Most of my QnA activity consists of answering questions, coding, Finalizing and summarizing lecture materials. In almost every post I have tried to attach examples of solving problems by hand and using Sage or Python(or both) code, as I believe that a visual step-by-step process of solving problems in practice can greatly help me and other students in understanding the topic.
(5) (5 pt) What is your most important contribution or founding that you shared with others in QnA.(Quality)
To my mind, my most important contribution that I shared with others was:
[Final OK by SGLee] [HW] 1주차 강의 내용 요약 및 정리 + Sage과 Python 실습(비교), 내용 요약 및 정리 by 박진형, 코딩실습 및 Finalized by 유가이 올렉산드르
Here Mr. 박진형 summarized all the material for the first week, and I added Python and Sage code for deeper understanding the material. Also, mygoalwastocomparethecapabilitiesofPythonandSageinsolvingmathematicalproblems.Fromthiscodingpractice,wecanconcludethatitismuchmoreconvenientandfastertoapplySageinamathematicalenvironment.
Additional remark by 유가이 올렉산드르: I have always tried to supplement each of my posts that I posted in QnA with a real example of solving a task, both manually and using code(Python, Sage, R).
(6) Number of Final OK by SG Lee Problems (and/or Completed Discussion/Question) in Q&A that your name is included: 13
B. (Quantity 10pts) Quality of Your Participation:
(1) Write what you especially remember while you are doing A-1, 2, 3.
I am very pleased that most of the students in this class are very actively involved in the educational process. Everyone is trying to share their knowledge in QnA, ask questions on an incomprehensible topic, or help another student with a detailed answer. I also try to be a part of this process and to participate as much as possible in the QnA.
I am very impressed with how many strong math/programming students there were in this class. It was very interesting for me to participate in QnA with them.
(2) What did you learn or feel while learning Math for AI (Action Learning/PBL) with your classmates?
I have greatly improved my mathematics knowledge and also deepened my knowledge of programming.
ThankstotheactiveworkoftheProfessor,TAandstudents,IsignificantlydeepenedmyknowledgeofSVD,Newton'sMethod,GradientDescentMethod,Bayes’theorem,CovarianceMatrix,PCAetc.,andlearnedalotaboutthewaytoapplythemusingPython,SageandR.
Ch 2장. Participation (참여부분, 정량) 자기평가와 본인의 Project (Term paper) 제안서 등에 대해 아래를 채우시오. (20점)
1. 본인이 그간 Q&A, 동료학생, “본"강좌 등에 기여한 내용을 간단히 서술하세요!
(1) Q&A 참여횟수 <Q&A에서 직접 확인하세요> :
총 65회 Final OK 30회
(4) 1주차 : 총 14회
(5) 2주차 : 총 11회
(6) 3주차 : 총 13회
(7) 4주차 : 총 9회
(8) 5주차 : 총 4회
(9) 6주차 : 총 8회
(10) 7주차 : 총 6회
온라인 출석 회수 : 36회 / 36회
WebEx OH 참석 회수: 1회
(2) 다음 밑줄 친 곳에 들어갈 내용을 고르시오.
나는 <1> 벡터, 노름, 내적, 행렬, 행렬곱, 대각선행렬, 단위행렬, 전치행렬, 대칭행렬, 하삼각행렬, 상삼각행렬, 역행렬, 행렬식, 여인자, 수반행렬, 선행주소행렬식 <2> 선형연립방정식, 계수행렬, 첨가행렬, 기본행연산, 기본행렬, 치환행렬, REF, RREF, Gauss 소거법, Gauss-Jordan 소거법 <3> 선형변환, 표준행렬, 핵, 치역, 단사, 전사 <4> 벡터공간, 부분공간, 일차결합, 일차독립, 일차종속, span, 기저, 차원, 행공간, 열공간, 영공간, rank, nullity <5> 정사영, 직교성분, 초평면, 정규직교벡터, 정규직교기저, Gram-Schmidt 정규직교화법, full column rank, LU분해, QR분해, 최소제곱해 <6> 고유값, 고유벡터, 고유공간, 직교행렬, 대각화, 직교대각화, 고유값분해, 특이값, 특이벡터, SVD, 유사역행렬 <7> 이차형식, 양의정부호, 음의정부호, 부정부호, 주축정리 <8> 접선, 뉴턴방법, 다변수함수, 매개변수 방정식, 편도함수, 방향도함수, 그래디언트, 헤시안, 임계점, 안장점, 극대극소판정법, 경사하강법, Jacobian, <9> 표본평균, 표본푼산, 표본표준편차, 중위수, 4분위수, 백분위수, IQR, 순열, 조합, 중복집합, 중복순열, 중복조합, 표본공간, 사건, 확률, 조건부확률, 베이즈정리 <10> 확률변수, 확률분포, 기대값, 분산, 표준편차, 표준화 확률변수, 베르누이분포, 이항분포, 포아송분포, 균등분포, 정규분포, 표준정규분포, 지수분포, 중심극한정리, 결합확률분포, 주변확률분포, 공분산, 상관계수, 공분산행렬 <11> 주성분, 적재계수, 주축, 데이터행렬, 센터링된행렬, 데이터행렬의 공분산행렬, 주성분화 데이터행렬, 주성분 score, 차원축소, PCA, 신경망, 활성화함수, 오차역전파법의 개념을 이해하고 설명할 수 있으며 (간단한 것은 손으로, 복잡한 것은 컴퓨터를 이용하여) 역행렬 구하기, 행렬식 구하기, 선형연립방정식 해 구하기, 정사영 구하기, Gram-Schmidt 정규직교화법, QR분해, 선형연립방정식 최소제곱해 구하기, 고유값 구하기, 고유벡터 구하기, 대각화, 직교대각화, SVD, 주축정리, 뉴턴방법, 극대극소판정법, 경사하강법, 베이즈정리, 정규분포 확률 구하기, 공분산행렬 구하기, PCA, 오차역전파법을 계산하여 그 의미를 설명할 수 있다.
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
인공지능에 필요한 선형대수학과 미적분학을 알차게 배웠습니다. 앞으로 인공지능을 배우면서 이번 강좌에서 배운 지식이 요긴하게 쓰일 것에 보람찹니다.
인공지능에 필요한 확률통계학과 인공지능 기술(PCA, BP)을 알차게 배웠습니다. 이를 토대로 인공지능 기술의 이해 및 개발에 도움 될 것에 보람찹니다.
우선 Sage를 활용하여 수학을 배운다는 느낌이 참 신선하고 미래지향적인 교육이라 느꼈습니다. 교수님이 보시는 글이라 아첨을 떠는 것이 아니라 진정으로 수학교육의 미래는 코딩에 있다고 생각합니다. 수학과외도 많이 해보고 학창시절에도 친구들한테 많이 알려주고 가르치고 봉사교육 다니고 그러는데 항상 안타까운 것이 어릴 때 수학을 놔버려 끝까지 쳐다보지도 않는 경우가 많다는 것입니다. 수학이라는 학문이 다른 것과 다르게 기초가 부족하면 쌓아 올리기 어렵다보니 이른바 ‘수포자’가 많이 생긴다고 생각합니다. 항상 들어보면 포기하던 순간들이 미지수가 처음 등장했을 때, 함수가 처음 등장했을 때, 도형(그래프)가 등장했을 때 등등인데 코딩이라는 직관적이고 active한 방법을 통해 직접 스스로 채워가며 그 변화 과정을 일순간에 보여주다보면 그냥 막연하게 수식으로 풀어내는 것에 비해 훨씬 이해도가 높고 습득하기 쉽다고 생각합니다. 코딩이라는 것을 단순하게 계산기로 사용하는 교육은 바람직하지 않다고 생각하지만 교수님의 강좌는 우선적으로 개념을 이해시키고 내가 이해를 했으니 코딩을 바탕으로 작성해보고 어려운 계산을 코딩에 맡기고 이해하기 어려운 개념은 그래프나 식으로 구현하여 시각적으로 보여주니 정말 좋았습니다. 앞으로 남은 강좌가 절반 있지만 기대됩니다. 기다리는 방송을 챙겨보는 심정으로 강좌 성실하게 듣고 있습니다. 학우들과 활발하게 참여할 수 있는 게시판 운영도 너무 좋은 것 같습니다, 궁금하게 생기면 즉시 올리고, 매일매일 답변 받을 수 있는 게시판이 전세계 몇군데나 될까요. 수학적 궁금증이 생기면 최고의 교수님과 열정적이고 멋진 학우들에게 답변 받는다는게 정말 큰 혜택이라고 생각합니다. 절반 남았지만 지금까지 해온 것처럼 최선을 다해서 참가하겠습니다. ML을 공부하면서, 코드를 치면서 black – code라는 느낌이 강했는데 수학을 배우고 그 근간을 공부해나가니 어느정도 깨우치고 있는 느낌이라 보람차고 정말 뿌듯합니다.
4주에 더해 3주가 지나니, 생각보다 짧았던 것 같습니다. 처음에는 길게 느껴졌는데 막상 지나고 나 돌이켜 생각해보면, 아쉬운 점도, 부족한 점도 더러 있었던 것 같습니다. 절반의 수업이 지난 이후, 통계과 확률 그리고 ML의 기초에 대해 배웠는데 개인적으로는 앞의 4주차 내용보다는 쉬워서 훨씬 들을만 했습니다. 교수님의 강의도 재밌지만 역시 이 수업의 꽃은 게시판에서 학우들끼리 토론을 하는 것이 아닌가 라는 생각을 합니다. 재밌는 프로젝트를 소개 받아 유익한 칼럼을 읽듯 읽고 댓글로 소통하고 모르는 것이 있으면 물어보고 active 하게 바로 반응이 오고... 등등 좋았습니다. 확률은 평소에 관심을 가지던 분야라서 학우분들에게 보다 많은 정보를 제공해준 것 같아 스스로 뿌듯했습니다. 통계에서는 학회 때 공부하던 내용이 나와 익숙해서 재밌었고 처음 본 내용도 많아 유익한 시간이었습니다. 마지막 주차에 ML 에 대해서 배울 때는, 활성화함수에 대해 수학적으로 배울 수 있어서 좋았습니다. 교수님께서 강의에서 강조하신 내용인 sigmoid 함수가 미분했을 때 특별해서 특별한거다, 다차원 방정식이 나왔을 때 미분을 통해 해에 접근하는데 이와 연관지어 생각할 수 있는 기회를 가지게 되어 감사합니다. 실습을 통한 기반을 다지고 훌륭한 강의로 지식을 채우고 학우들과의 소통을 통해 개념에 대해 익히고... 대학 와서 참여할 수 있었던 정말 active한 강의의 끝인 것 같습니다. 7주 동안 잘 배웠습니다.


Ch 3장. Self Evaluation 1. (개인 성찰 노트) (20점)
|
Class |
Basic Math for AI |
||||||
|
Name/이름 |
김진웅 |
major / 학 과 |
컴퓨터공학과 |
||||
|
학습한 내용 |
인공지능 개념 이해에 필요한 선형대수학(SVD), 미적분학(GDM), 확률통계학, 인공지능(PCA, BP) |
||||||
|
자기 점검표 |
|||||||
|
활동(Activity) |
Excellent |
Good |
Fair |
||||
|
1. |
나는 개인학습을 할 때 다양한 학습 자료를 사용하였다. |
∨ |
|
|
|||
|
2. |
나는 새로운 정보와 지식제공에 기여하였다. |
∨ |
|
|
|||
|
3.
|
나는 토의에 적극적으로 참여하였고 토의의 촉진과 이해를 위한 적절한 질문을 많이 제공하였다. |
∨ |
|
|
|||
|
4. |
나는 우리 반이 원활한 학습활동을 하는데 기여하였다. |
∨ |
|
|
|||
[성찰노트]
※ 다음 항목들을 고려하여 자신의 학습과정과 내용을 기록하시오.
1. 나는 지금 수행되고 있는 학습의 진행내용을 이해하고 있는가?
어려운 개념이 나왔을 때는 한 번에 이해하지 못했지만 계속 읽고 과정을 써보고 인터넷에 있는 각종 자료를 읽어보아서 나만의 것으로 만들어 지금 수행하고 있는 학습의 진행내용을 완전히 이해하고 있습니다. 중간과 동일하게 진행하였으며 학습의 진행내용을 완전히 이해하고 있습니다.
2. 어떤 방법을 통해서 학습하였는가? (학습방법 및 자료)
강의를 들으면서 교재를 읽고 개념이 나오면 잠시 강의를 멈추어 노트에 직접 필기하였습니다. 강의가 끝나면 들었던 내용을 필기한 노트와 교재를 기반으로 요약하여 다시 노트에 적었습니다. 강의와 교재뿐만 아니라 어떤 개념이 이해가 안 될 때는 인터넷에 올라온 강의자료, 그림들을 찾아보고 이해하였습니다. 또 Q&A 활동을 통하여 배웠던 개념을 더 완벽하게 정리하였습니다. 중간과 동일하게 진행하였습니다.
3. 본 강좌의 학습활동을 통하여 무엇을 배웠나?
인공지능 개념 이해에 필요한 선형대수학과 미적분학을 집중적으로 배웠습니다. 특히 인공지능 개발에 쓰이는 기술을 알아가는 데 필수적인 Singular Value Decomposition, Gradient Descent Method와 이를 뒷받침하는 기초지식을 배웠습니다. 인공지능 개념 이해에 필요한 확률통계학과 인공지능을 집중적으로 배웠습니다. 특히 인공지능 개발에 쓰이는 기술인 Principal Component Analysis 그리고 신경망의 Back-Propagation과 이를 뒷받침하는 기초지식을 배웠습니다.
선형대수학, 미분적분학, 확률 그리고 빅데이터와 인공지능에 대한 기본적인 내용을 배울 수 있었습니다. 또 QnA게시판을 통해 많은 도움을 받아서 수업 내용을 조금 더 깊이 이해하고 다른 학우분들과 insight를 나누는 방법을 배울 수 있었습니다.
(중간) 처음 약 2주차 동안은 벡터와 행렬, determinant, vetor space, rank, normal equation, 선형변환 ,고유값, 행렬의 대각화, LU분해, QR분해, SVD 등을 학습하였습니다. 그 중에서도 SVD혹은 null space과 같은 방법으로 행렬의 크기를 줄여서 문제를 풀수가 있고, 이런 것들이 손으로 문제를 풀수 있는 범위가 아니라 더 큰 숫자, 행렬 크기에 대해서 컴퓨터가 이런 방식으로 계산하는게 아닐까 라는 Insight를 가지게 되었습니다. 또한 이후에 배운 미분적분학 분야에서는 gradiant=0인 점이 critical point이고, 헤시안 행렬의 고윳값을 통해서 극대 극소를 판단할 수 있다는 사실이 고등학교때 배워보지 못했던 내용이여서 인상 깊었습니다.
(기말) 통계학에서는 순열, 조합, 확률, 조건부 확률에 대해서 학습하였으며 우리 실생활에서는 확률분포가 훨씬 더 많이 연결되어있다는 것을 깨닫게 되었습니다. 특히 이산확률분포에서 베르누이 분포, 이항분포, 푸아송분포를, 연속확률분포에서 균등분포, 정규분포, 지수분포에 대해 배워서 확률분포를 대하는 태도가 조금 더 넓어졌습니다. 그밖에도 중심극한정리 결합 확률 분포와 공분산등을 배우며, 일상생활에서 어떻게 수학이 활용되는지 간접적으로나마 느껴볼 수 있었습니다. 마지막으로 수학적 지식이 인공지능에 어떻게 적용되는지를 기반으로 기본적 인공지능 모델들과 인공신경망의 구조는 다른 수업에서 배울 수 없었던 내용들이었고, 인상 깊었습니다.
4. 다른 동료들로부터 무엇을 배웠는가?
문의 게시판에 질문하고 답변을 얻으면서 알고 있던 지식에 추가적인 도움을 얻었습니다. 반대로 다른 동료들의 질문에 답변하면서도 그동안 배운 것을 좀 더 탄탄하게 정리할 수 있었던 좋은 기회였습니다. 배운 것을 직접 실습해보는 과정을 보고 어떤 분야에서 지금까지 배웠던 것을 어떻게 쓸지를 다양하게 알게 되었습니다. 또한, 동료들의 개념이나 적용에 접근하는 다양한 관점을 확인할 수 있었습니다. 중간과 동일하게 질문과 답변을 하면서 배운 것을 정리해 나갈 수 있었고, 여러 활용 분야와 데이터들을 접하여 다양한 관점을 확인할 수 있었습니다.
개념적인 측면에서는 기존에 벡터 정사영에 대해 질문해주신 학우분들이 꽤 많았고 그 분들을 통해서 벡터를 조금 더 깊게 애해하게 되었습니다. 이밖에도 통계에 대한 Insight를 주신 분들이 만았습니다. 통계가 단순히 암기하고 수학적 문제를 풀기위한 수단이 아니라 실제 생활에서 데이터를 분석하고 활용하는데 가장 기본이 되는 학문이라는 깨달음을 체감하게 해주셨습니다.
5. 새롭게 배운 내용을 실제 생활에 어떻게 적용할 것인가?
인공지능은 사람이 생각하는 것처럼 행동하여 사람에게 지금껏 없었던 편의를 줄 수 있는 혁신적인 도구입니다. 앞으로 쏟아질 인공지능 기술에 대비하여, 이번 강의에서 새롭게 배운 기본 수학지식을―아직은 갈 길이 멀지만―인공지능의 개념 이해와 원리 이해, 기술 개발에 유용하게 사용할 것입니다. 부차적으로, 데이터 분석도 이러한 수학지식이 필요합니다. 빅데이터를 분석할 일이 있을 때 유용하게 적용할 것입니다. 중간과 마찬가지로 인공지능 이해 및 개발 그리고 빅데이터 분석에 적용할 것입니다.
저는 4주차에서 배운 중적분에 관한 내용이 가장 인상 깊었고, 우리 일상생활에 많이 사용 될 수 있다는 느낌을 받았습니다. 앞서 언급하였듯이 2차원 공간에서만 이해하고 있었던 적분이 3차원으로 확장되면서, 이렇게 물체의 겉넓이나 부피를 적분을 통해 계산을 할 수 있고 이것이, 직접 해보지는 않아서 모르겠지만 3D 프린터처럼 일상생활의 여러 가지 과학 기술에 활용이 되겠다는 것을 알게 되었습니다. 제가 지금 당장 어떤 기술을 개발하고 코딩을 할 수 있는 것은 아니지만, 혹시 기회가 된다면 이번 수업을 통해 새롭게 배운 내용들이 기반이 될 것 같습니다.
뿐만 아니라 마지막 7주차에 배운 인공지능에 대한 개괄적인 내용들이 정말 인상 깊고 실제 생활에 가장 많이 적용 될 것이라고 생각합니다. 저는 코딩을 하거나 인공지능을 개발하는 사람이 되기에는 실력과 능력이 부족합니다. 하지만 같은 도전학기 중에 최재붕 교수님의 ‘스마트폰이 만든 신인류, 포노사피엔스’라는 수업을 들었습니다. 이때, 뉴노멀, 4차산업혁명시대를 살아가고 있는 우리는, 코딩을 못하더라도, 무언가 개발을 못하더라도 적어도 어떤 프로세스로 인공지능이 움직이는지는 알고 있어야 한다고 강조하셨습니다. 저는 그런 면에서 기초적인 궁금증과 갈증을 이상구 교수님의 ‘인공지능을 위한 기초수학’의 7주차 수업을 통해서 해소할 수 있었습니다. 실제 생활에서 저는 이제 인공지능이 돌아가는 기본적인 원리를 아는 사람이 되었고, 훗날 제 전공을 살려 다양한 콘텐츠를 만들 때, 다른 사람들 보다 더 넓고 깊이 보는 시야를 가지게 된 것이라 자신합니다.
6. Q&A 활동에서 자신의 역할과 기여도에 대한 평가(자신의 활동에 점수를 주고 그 이유를 적으세요.) :
- 매주 Q&A 활동에 참여하여 질문과 답변, 요약과 실습을 꾸준히 올려 다른 동료들의 학습을 도왔고 도움을 받았습니다. 그리고 공부하는 데 도움이 될 만한 정리를 하여 올렸습니다.
- 90점
- 개인사정으로 주차 초반에 강의를 못 들어 학습이 조금 늦어져 Q&A 활동이 중간 때보다 적었지만, 매주 할당량은 채웠고 나름대로 정리하고 답변하여 Q&A 활동에 참여하였습니다.
- 중간고사까지는 제 스스로의 활동에 대해 70점을 주었습니다. 당시 저는 “저는 기존까지는 주어진 개념을 이해하는 데에 너무 많은 시간이 걸려 QnA활동을 주도적으로 이끌어 나가는 사람은 아니었기 때문입니다. 하지만 이후 어느 정도 개념이 이해되고 나자, 제가 아직 스스로 문제를 내고 질문을 하는 것까지는 가지 못했지만 Finalized된 여러 학우분들의 질의 응답을 혼자 읽고 이해하면서 제 스스로 많이 배웠다고 여기기 때문에 참여 점수는 저조하더라도 스스로 많은 성장을 했다고 여겨 70점을 주고 싶습니다.” 라고 서술하였습니다.
이점에 있어서 여전히 저는 개념을 이해하는 데에 많은 시간을 쏟았습니다. 또 다른 분들의 속도에 맞춰서 질의응답을 열심히 하지 못했다는 점이 아쉬워서 모든 분들의 질의응답과 교수님의 답변을 읽고 이해가는 부분에는 이해가 되었다, 질문이 생기면 그 및에 짧게 질문을 담았습니다. 하지만 더 잘 할 수 있었지 않았을까 하는 아쉬움이 조금 남아서 원래 저에게 주었던 70점 보다는 조금 더 낮은 점수인 65점을 주게 되었습니다.
7. 다른 학생에 대한 평가
: 이 수업은 학생들의 참여도를 이끌어내는 특별함이 있는 것 같습니다. 몇몇 눈에 띄게 열심히 하시는 분들도 계시지만, 대부분의 학생들이 협력하며 공부하는 과정에서 서로에게 긍정적인 시너지를 만들고 있고 이에 저도 감사하게 많이 배우고 있습니다.
꾸준히 Q&A활동을 하며 소통한 동료분들이 좋았습니다. 모르면 물어보고, 알면 답변하고 정리하여 도움을 주는 것이 Q&A활동의 목적이라 생각하여 열심히 참여하였고 그렇게 꾸준히 동참해 주신 동료분들이 이번 강의를 잘 수강하였다고 생각합니다. 중간과 마찬가지로 꾸준히 Q&A활동을 하며 소통한 동료분들이 좋았습니다.
다른 학우분들께서 적극적으로 QnA에 활동해 주셔서 저처럼 수학에 대해 두려움을 가지고 있는 사람들에게는 큰 도움이 되었습니다. 그분들이 올려주시는 정리나 질의응답만 열심히 읽어 보아도 제가 모르고 있던 사실들을 정말 많이 깨달을 수 있었기 때문입니다. 열정적으로 질의응답에 참여해 주시는 분들이 계셔서 제가 학습하는데 도움이 많이 되었고 감사했습니다. 교수님께서 수업 처음에 말씀해주셨던, 이 수업은 함께 소통하고 대화를 통해서 배워가는 수업이라고 말씀해 주셨던 부분이 이런 점 때문이었구나 하고 깨닫게 되었습니다.
Self Evaluation 2. (개인 성찰 노트 2)
|
과 목 명 |
Basic Math for AI |
||||||||
|
이 름 |
김진웅 |
학 과 |
컴퓨터공학과 |
||||||
|
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
|||
|
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
|
|
|
|
|
∨ |
||
|
2. |
Q&A에 적극적으로 참여하였다. |
|
|
|
|
|
∨ |
||
|
3. |
Q&A 내용에 적합한 질문과 응답을 하였다. |
|
|
|
|
|
∨ |
||
|
4. |
동료에게 도움이 되는 지식과 정보를 제공하였다. |
|
|
|
|
|
∨ |
||
|
5. |
다른 동료의 의견을 존중하였다. |
|
|
|
|
∨ |
|
||
|
6. |
Q&A 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
|
|
|
|
|
∨ |
||
|
7. |
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
|
|
|
|
∨ |
|
||
[의견]
▶ 자체평가에 따른 잘한 점
온라인 출석을 밀리지 않고 규칙적으로 하였고, Q&A에 적극적으로 참여, 그 내용에 적합한 질문과 응답을 하여 동료에게 도움이 되는 지식과 정보를 제공하였습니다. 다른 동료의 의견을 존중하여 Q&A 운영 및 의견수렴과정에 긍정적으로 기여하였습니다. 중간과 마찬가지로 온라인 출석을 밀리지 않고 규칙적으로 하였고, Q&A에 적극적으로 참여, 그 내용에 적합한 질문과 응답을 하여 동료에게 도움이 되는 지식과 정보를 제공하였습니다. 다른 동료의 의견을 존중하여 Q&A 운영 및 의견수렴과정에 긍정적으로 기여하였습니다. 온라인 강의를 늦지 않고 꼬박꼬박 수강하였고, 7주차까지의 모든 개념은 정말 완벽하게 알고 있다고 자부할 수 있습니다. 또한 다른 분들의 QnA를 읽으며 많이 성장했고 특히 통계에 있어서는 제가 생각하지 못한 부분에 대해 실생활에 활용할 수 있음을 QnA를 통해 알게 되었습니다. 이런 참여도 측면에서는 꽤 잘해왔다고 생각합니다.
▶ 자체평가에 따른 아쉬운 점
수업 활동과 Q&A 활동을 열심히 했기에 저에 대해 아쉬운 점은 없습니다. 중간 때 보다 참여가 조금 떨어졌지만, 배운 것을 모두 이해하였고, 매주 할당량을 채워 아쉬운 점은 없습니다.
(중간) 제가 직접 질문을 던지는 일이 적었습니다. 개인적인 변명으로는, 개념을 따라가는 것에 급급했기 때문입니다. 또 제가 많이 부족하다고 여겨 Finalized를 받는 과정이 없었고 다른 분들의 Finalized를 열심히 보기만 하였습니다. 어떻게 보면 정말 수동적으로 이해하는 것에 급급했던 것 같습니다. 하지만 중간고사 기간을 기점으로 통계 부분은 미리 봐두고, 조금 더 본 수업에 시간을 많이 투자하여 제가 직접 질문을 하고, 변형 문제를 만드는 것도 해보고 싶습니다.
(기말) 중간고사 공부를 하면서 저는 개념을 따라가는 것에 무조건적인 우선순위를 두었다는 것에 문제가 있다는 것을 깨달았음에도 불구하고, 제가 기대한 만큼의 능동적인 참여자가 되지 못한 것 같아 아쉽습니다.
Self Evaluation 3. (개인 성찰 노트 3)
자신의 학습에 도움이 된 우수한/성실한 동 료 평 가
|
과 목 명 |
Basic Math for AI |
|||||||
|
|
(두 명 이상의 추천을 받은 학생은 가산점) |
|||||||
|
피평가자(동료) Best classmate |
김진웅, 박은아, 유가이올렉산드르, 김범준, 전재현, 나종진, 장환승, 박진형 |
|||||||
|
평가자(작성자) |
정원철 |
|||||||
|
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
||
|
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
|
|
|
|
∨ |
|
|
|
2. |
Q&A에 적극적으로 참여하였다. |
|
|
|
∨ |
|
|
|
|
3. |
Q&A 내용에 적합한 질문과 응답을 하였다. |
|
|
|
|
∨ |
|
|
|
4. |
동료에게 도움에 되는 지식과 정보를 제공하였다. |
|
|
|
|
∨ |
|
|
|
5. |
다른 동료의 의견을 존중하였다. |
|
|
|
|
∨ |
|
|
|
6.
|
Q&A 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
|
|
|
|
∨ |
|
|
|
7.
|
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
|
|
|
|
∨ |
|
|
|
[의견]
위 학우분들은 제가 생각하기에 다음과 같은 기준(5)에 적어도 하나 이상은
▶ 모두가 공감할 수 있을 만한 질문을 던지는가?(난이도 무관) ▶ 모두가 이해할 수 있을 정도로 자세하게 풀어서 잘 정리를 하는가? ▶ 퀄리티 좋은 예제를 찾아서 문제 풀이 및 실습을 해보고 이를 잘 정리하여 공유해주는가? ▶ 다른 학우분들의 질문에 자세하고 성실하게 답변을 해주는가? ▶ Q&A 과정에서 활발한 참여를 통해 하나의 완성된 컨텐츠를 함께 만들어
▶ 자체평가 중 미비점 없습니다. 새롭게 추가한 박진형 학우님은 다른 학우분들의 글을 모아서 reFinalize해줌으로써 어떠한 개념에 대하여 양질의 컨텐츠를 만들어주셨습니다. |
||||||||
Self Evaluation 4. (개인 성찰 노트 4)
Action Learning Class 반응평가(학생용)
* 1~16 평가내용을 읽고 「매우긍정~매우부정」 중 하나에 V 표시하시오. 그리고 5, 12, 14번은 연결문항에 답하시오.
|
평가내용 |
평가 |
||||
|
매우 긍정 |
긍정 |
보통 |
부정 |
매우 부정 |
|
|
1. 우리 방식의 수업에 적극적으로 참여하였다. |
∨ |
|
|
|
|
|
2. 교수는 학생들의 능력을 발휘하도록 도와주었다. |
|
∨ |
|
|
|
|
3. 우리 방식의 학습 과정을 통해서 새로운 지식을 획득하였고 지식수준이 향상되었다. |
∨ |
|
|
|
|
|
4. 이 과정을 통하여 추론기술이 향상되었다. |
|
∨ |
|
|
|
|
5. 이 과정을 통하여 자기 주도적 학습기술을 습득하였다. |
|
∨ |
|
|
|
|
6. 이 과정을 통하여 문제해결기술을 습득하였다. |
|
∨ |
|
|
|
|
7. 이 과정을 통하여 학습운영기술을 습득하였다. |
|
∨ |
|
|
|
|
8. 이 과정을 통하여 전문성이 향상되었다. |
|
∨ |
|
|
|
|
9. 이 과정은 실제 연구 상황과 유사하였다. |
|
∨ |
|
|
|
|
10. 학습과정에 대한 평가 방법이 합리적이었다. |
|
∨ |
|
|
|
|
11. 문제해결을 하면서 학습주제를 더 잘 알게 되었다. |
∨ |
|
|
|
|
|
12. 학습과정에서 학습주제와 관련한 활발한 의사소통이 이루어졌다. |
|
∨ |
|
|
|
|
13. 학습결과는 문제해결절차를 통해서 산출되었다. |
∨ |
|
|
|
|
|
14 전반적으로 우리 방식의 수업이 효과적이라고 생각한다. |
|
∨ |
|
|
|
|
15. 우리 방식의 수업에 다시 참여하고 싶다. |
|
∨ |
|
|
|
* 5, 12, 14 연결문항
5-1. 본 수업을 통해 자신이 습득한 자기 주도적 학습 기술을 구체적으로 설명하시오.
강의를 들으면서 노트필기를 하고 끝나고 한 번 더 정리하고 Q&A에 요약하였으며, 모르는 것이 나오면 찾아서 Q&A에 정리하여 올리는 과정을 통해 자기 주도적 학습기술이 전보다 향상되었습니다. 중간과 마찬가지로 강의를 들으면서 노트필기를 하고 끝나고 한 번 더 정리하고 Q&A에 요약하였으며, 모르는 것이 나오면 찾아 Q&A에 정리하여 올리는 과정을 통해 자기 주도적 학습기술이 전보다 향상되고 있습니다.
제가 이 수업을 통해 습득한 자기 주도적 학습기술은 여러 가지입니다. 그중에 가장 첫 번째는, 다른 학우분들과 의견을 공유하며 학습하는 것입니다. 저는 보통 혼자 공부하고 이해하는 사람이었습니다. 하지만 다른 분들의 QnA를 읽고 이해하고 저의 수학적 이해도가 향상되는 것을 보면서, 스스로 질문을 정의하고 답하는 것의 중요성을 깨달았습니다. 조금 더 구체적으로 저희 수업에 코딩 실습을 꼬박꼬박 해 오시는 분들의 게시물을 보면서 코드를 어떻게 변형하면 되는지를 알게 되었습니다. 또 문제를 직접 만들어보고 Finalized하는 분을 보면서 이분이 어떤 사고과정을 하고 계시는지 알게 되었습니다. 단순히 교수님께서 설명해주시는 것을 듣고 시험을 보는 수업이었다면 저보다 수학을 잘하시는 분들의 사고의 과정을 향유하기는 어려웠을 것입니다. 두 번째는, 컴퓨터 코딩을 이용한 학습방법입니다. 본 수업은 교수님께서 실습할 수 있는 코딩 툴을 제공해주셨기 때문에 만약에 손으로 문제를 풀고 실습을 했다면 10정도 밖에 변형해 보는 것이 최선이었다면 코딩 툴안에서 제가 변형하고 싶은 만큼 100이상의 변형을 통해 문제를 더 넓게 볼 수 있었습니다. 교수님께서 시키시기 때문에 하는 것이 아니라 제가 궁금해서 주도적으로 코딩 속의 숫자를 변형해 보면서 사고력이 많이 길러졌습니다.
12-1. 본 수업과정에서 자신이 참여한 활발한 의사소통을 구체적으로 설명하시오.
: 먼저 교수님의 강의를 수강하면서 저를 비롯해서 다른 학우분들이 학습하는 과정에서 다소 난해할 수 있는 주제, 개념적으로 잘 와닿지 않는 주제 등을 선별하였습니다. 이를 평소에 정리해두었던 노트나 인터넷 자료, 다른 수업 등을 참고하여 저 뿐만 아니라 다른 학우들이 보다 이해를 잘 할수 있도록 최대한 풀어서 정리/ 증명/ 문제풀이/ 활용 예제 등의 형태를 통해서 공유하기 위해 노력했습니다. 또한 질문글들을 보며 제가 아는 부분에 한해서는 최대한 풀어서 전달해드리려 했고, 저 역시 궁금했던 문제에 대해서는 여러 매체를 통해서 학습하여 성심껏 답변을 달았습니다.
Q&A 활동에 매주 참여하여 모르는 것은 질문(5개), 아는 질문에 구체적으로 답변하고(21개), 강의를 들은 것을 간단명료하게 요약(4개) 및 실습(4개)하여 올렸고, 모르는 것을 해결하고 그 내용을 정리하여 동료들이 볼 수 있게 올렸습니다(4개). 다른 동료분들의 글에도 답변을 달아 참여하였습니다(7개). Q&A 활동에 매주 참여하여 총 65개의 참여한 게시물 중, 모르는 것은 질문(6개), 아는 질문에 구체적으로 답변하고(25개), 강의를 들은 것을 간단명료하게 요약(7개) 및 실습(7개)하여 올렸고, 모르는 것을 해결하고 그 내용을 정리하여 돌료들이 볼 수 있게 올렸습니다(6개). 번역 프로젝터를 맡았고(1개) 다른 동료분들의 글에도 답변을 달아 참여하였습니다(10개).
저는 제가 정리한 개념을 QnA게시판에 올렸습니다. 단순히 교재를 긁어 와서 복사하고 정리하는 것이 아니라 개념은 최소화 하되 그 개념을 이해하면서 제가 기존에 알고 있었던 내용과 비교하는 것이 의미 있다고 생각해 그런 comment를 많이 달기 위해 노력했습니다. 그 과정에서 교수님께서 comment가 진실성이 있다고 말씀해 주셔서 감사했고 약간의 자신감도 생겼습니다. 이제 제가 궁금했던 부분에 대해 적극적으로 질문하고 답해 나가고 싶습니다.
14-1. 우리 방식의 수업에서 효과적이었다고 생각되는 부분을 구체적으로 설명하시오.
인공지능 지식에 필요한 수학지식만을 집중해서 배운다는 것과 그것을 실제로 실습하는 것 그리고 그 두 개를 잘 실현해 낸 교재와 강의를 통한 학습이 가장 효과적이었습니다. 중간과 마찬가지로 교재와 강의를 통한 학습이 효과적이었습니다.
게시판 운영을 통해, 교수님이 확실한 답을 달아주시고 학우들과 생각을 공유하고 물어보고 하는 경험을 통해 학습에 대한 협력을 배울 수 있었습니다. 기존의 수업 방식이 듣기만 하고 끝내는 수동적인 학습이었던 반면에 이렇게 서로가 active하게 참여하는 방식의 수업은 스스로의 학습을 돕는 굉장히 효과적인 방법이라 생각합니다.
또한 기존의 수학 수업과 다르게 코드를 적극 활용했는데 큰 의미가 있다고 생각합니다. 어떻게 계산하는지 확실히 알고 있다면, 코드를 작성하는데에도 무리가 없고 계산에 도움을 받는거라 정말 효과적이었습니다.
앞서 언급했었던 QnA 게시판의 원활한 운영과 코딩 사이트를 이용해 실습해 볼 수 있다는 것이 가장 효과적이었습니다. 수학은 개념만 이해한다고 안다고 자부할 수 있는 과목이 아닙니다. 그것을 실제로 적용해 보는 과정에서 개념에 대해서 더 정확하게 알 수 있는데, 그저 손으로 따라 쓰거나 풀려진 문제를 눈으로 읽는 것은 적용하는 과정이 아닙니다. 하지만 실습 사이트에서는 교수님께서 설명해 주신 내용을 약간의 코드 변형이나 조금의 움직임을 통해서 그래프가 어떻게 변형되는지 직접 눈으로 확인해 볼 수 있었기 때문에, 개념의 이해에 시간이 오래 걸리는 저에게는 정말 효과적인 수업방식이었습니다.
교수님께서 저희의 QnA에 직접 답을 달아주신 부분이 정말 좋았습니다. 또 저는 제 스스로 계속 부족하다고만 여겨서 QnA에 늦게 참여하게 되었는데 계속해서 저에게 할 수 있다고 장려해 주셔서 감사했습니다.
1) 주입식 교육이 아닌 내가 궁금하거나 해결하고 싶은 문제를 직접 찾음
2) 다양한 매체를 통해 스스로 해결하거나 타인과 협력함으로써 그 문제를 해결함
3) 나 뿐만 아니라 남이 생각하는 방향 및 이해를 확인하며 개념을 좀더 높은 차원으로 끌어 올릴 수 있었음
4) 결과적으로 내가 이 수업을 들으면서 관심을 가졌던 주제를 유형의 결과물로써 남길 수 있음
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
1) 주입식 교육이 아닌 내가 궁금하거나 해결하고 싶은 문제를 직접 찾음
2) 다양한 매체를 통해 스스로 해결하거나 타인과 협력함으로써 그 문제를 해결함
3) 나만 아니라 남이 생각하는 방향 및 이해를 확인하며 개념을 좀더 높은 차원으로 끌어 올릴 수 있었음
4) 결과적으로 내가 이 수업을 들으면서 관심을 가졌던 주제를 유형의 결과물로써 남길 수 있음
이 수업은 선형대수학과 고등학교 수준의 미적분학 지식 없이는 원활한 진행이 어렵습니다. 제가 이 선행지식이 없었다면 제대로 수강하지 못했을 것입니다. 또 지금 교재도 훌륭하지만, 가끔 설명을 생략하여 이해가 어려울 때가 있어―물론 저의 소양이 부족한 경우겠지만―교재 내용에 대한 보충설명이 있다면 더 나아질 것 같습니다. 설명이 좀 더 쉬웠으면 좋겠고, 인공지능 부분에서 예제가 더 많았으면 좋겠고, 필요 없는 부분은 정리했으면 좋겠습니다.
개인적으로 ML 에 관련해서 수학적인 실습이 더 추가됐으면 좋겠다는 생각이 있습니다.
이 수업에 대한 아쉬움 보다는 처음 해야 하는 7주차의 도전학기를 제가 완벽하게 따라가지 못한 것 같다는 아쉬움이 남아 있습니다. 정규 수업에 비해서 호흡이 빨라서 이해 속도가 느린 저에게는 초반에 템포를 찾는 데에 시간이 많이 필요했습니다.
Open Feedback : 처음엔 글 올리기가 껄끄러웠습니다. 수업 잘 듣고 있습니다. 감사합니다, 교수님. 이번 강좌로 인공지능의 이해가 한 층 높아졌습니다. 감사합니다, 교수님.
Ch 4장. PBL Participation/Activity Part (30점)
(4장. 학습활동 참여 부분 )
매달 그리고 마지막에는 한 학기 동안 Q&A 통하여 논의에 참여했던 내용에 자신도 참여했던 것 모두와 기타 자신이 제공한 유의미한 정보 또는 그것에 자신이 참여한 부분을 모두 아래에 정리하시면 됩니다.
총 65개의 글에 참여하였습니다. (33-요약 및 답변)
소개(2개) 요약(7개) 실습(7개) 정리(6개) 풀이(2개) 질문(6개) 답변(25개) Comment(10개) 프로젝트(1개)
중간 총 47개의 글에 참여하였습니다. (33-요약 및 답변)
소개(1개) 요약(4개) 실습(4개) 정리(4개) 풀이(2개) 질문(5개) 답변(21개) Comment(7개)
기말 총 18개의 글에 참여하였습니다.
소개(1개) 요약(3개) 실습(3개) 정리(2개) 질문(1개) 답변(4개) Comment(3개) 프로젝트(1개)
소개(2개) (중간 1개 기말 1개)
1‘[HW] 자기소개 및 수강동기 - 컴퓨터공학과 김*웅’
안녕하세요 저는 컴퓨터공학과 김진웅입니다.
그 동안 인공지능을 이해하고 개발하는 것에 관심이 많았지만 어떻게 수학이 쓰이는지 연관성을 깨닫지 못하고 무엇을 알아야 하는지 모르고 있었는데
이번 '인공지능을 위한 기초수학' 강좌를 통해 그러한 소양과 지식을 갖출 수 있다는 생각이 들어 수강하게 되었습니다.
이번 도전학기에 선형대수학, 미적분학, 확률통계학 등 인공지능 이해 및 개발에 필수적이고 중요한 수학 지식들을 간추리고 응축하여 배워나가도록 하겠습니다.
앞으로 잘 부탁드립니다.
안녕하세요 교수님, 도전학기를 통해 교수님의 수업을 듣게 된 컬처앤테크놀로지융합전공 권*성입니다 :)
4차 산업혁명 시대가 도래하여, 인공지능과 데이터에 대한 학습은 필수적이라는 이야기는 정말로 많이 들었지만 사실 어디서부터 시작해야 할지, 어떻게 공부를 해야하는 것인지 막막하기만 하였습니다.하지만 교수님께서 개설해주신 인공지능을 위한 기초수학 강의를 통해 제가 작년에 배웠던 수학적 학습을 바탕으로 인공지능에 대한 가장 기초적이고 기본적인 내용을 학습 할 수 있을 것 같다는 생각이 들어 주저 없이 수강하게 되었습니다.
이 수업을 통해서 수학적 지식뿐만 아니라 앞으로 제가 어떤 방향으로 인공지능을 공부하고, 인공지능을 대해야 하는지 조금은 더 선명하게 알 수 있으면 좋겠습니다. 열심히 하겠습니다, 감사합니다. :)
안녕하세요, *** 저는 계량적인 툴을 활용하여 주식을 매매하는 이슈에 대해 관심을 가지고 개인적인 프로젝트를 진행하던 차에 포트폴리오 구성 단계에서 한계를 느꼈습니다. 따라서 인공지능을 이용하여 자산가격의 weight를 구하는 주제에 대해서 연구를 하고 싶어졌고, 기본기부터 학습할 필요성을 느껴 당 수업을 수강하게 되었습니다.
이번 수업을 계기로 인공지능의 기반이 되는 중요한 수학 개념들을 학습함으로써 머리속에 산재하던 개념을 좀더 쫀쫀하게 엮어 차후 진행하게 될 프로젝트에 직간접적으로 도움이 되었으면 하는 바람입니다.
감사합니다.
이상구(LEE SANGGU)7월 12일 오후 1:30
Welcome you in my class~~ Hope you can enjoy this class.1. Now Read and Study인공지능을 위한 기초수학 Basic Mathematics for Artificial Intelligence http://matrix.skku.ac.kr/math4ai/2. And Make a short summary on each Chapter (Every week, The First or The Best) .Part Ⅰ. 행렬과 데이터분석 http://matrix.skku.ac.kr/math4ai/part1/Part Ⅱ. 다변수 미적분학과 최적화 http://matrix.skku.ac.kr/math4ai/part2/...Then all others will be followed^^Start Now^^ Good luck^^
[Act06] (요약3 & 실습3) <[1주차] 강의 내용 복습 요약 & 실습 (3) _ 2019311465 이승재>
[1주차] 강의 내용 복습 요약 (3)
01 행렬의 연산 (합, 스칼라배)에 대해 간략히 배움
02 영행렬과 전치행렬, 전치행렬의 성질, 대각합에 대해 간략히 배움
03 역행렬 (가역행렬, 비가역 행렬)에 대해 간략히 배움
04 가역행렬의 기본 성질 4가지에 대해 간략히 배움
05 역행렬을 구하는 방법에 대해 간략히 배움
06 대각선 행렬, 스칼라 행렬, 대칭/반대칭 행렬, (상/하)삼각행렬에 대해 간략히 배움
07 치환 (반전, 홀치환과 짝치환), 행렬식에 대해 간략히 배움
08 가역행렬의 필요충분조건인 det(A) ≠ 0, 수반행렬에 대해 간략히 배움
09 일차 독립과 일차 종속, 이를 판별하는 방법에 대해 간략히 배움
10 부분공간, 해공간, 생성집합에 대해 간략히 배움
11 기저와 그 성질에 대해 간략히 배움
12 nullity(A)에 대해 간략히 배움
Finalized by 채희준
Q: llXll 으로 표현되는 노름의 값이 X*X로 표현되는 내적의 값과 동일하게 x1 x2 ..... xn 의 값을 제곱한 것으로 표현되는것 같은데 왜 내적이 노름의 제곱 (llXll)2 으로 표현되는지 이해가 안됩니다. 그리고 노름의 개념이 함수에서 길이를 표현하는 개념인것 같은데 내적은 어떤 개념으로 표현될 수 있는지 궁금합니다.
A:
김진웅(2015****73)7월 17일 오전 11:44
Norm의 정의 ||x|| = sqrt(x1^2 + ... +xn^2) 내적의 정의 x.y = x1y1 + .. +xnyn x.x = x1x1 + ... + xnxn = (sqrt(x1x1 + ... + xnxn))^2 = (||x||)^2
나종진(2017****17)7월 17일 오후 12:15
노름은 길이를 표현하는 개념이지만 내적은 어떤 개념인지 교재에 나오지 않아서 저도 내적을 어떤 개념으로 이해해야될지 고민이었습니다. 저는 내적을 각도 개념으로 이해했습니다. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
여기에 코시-슈바르츠 부등식 아래 정의를 보게되면 x·y=||x||*||y||*cosΘ 라고 나와있어 저는 각도의 개념으로 이해했습니다. 도움이 되셨으면 좋겠습니다.
임동선(2017****79)7월 17일 오후 12:55
엄밀하게 말하면 대칭성, 선형성, 정부호를 만족하는 벡터공간을 내적공간이라고 합니다.
그 중에 가장 대표적인 것이 R^n 에서 위와 같이 정의된 것 입니다. 또한 주어진 내적 공간에 대해서 노름을 정의를 할 수 있습니다. 위와 같이 노름을 정의하면 잘 정의된 노름이고, 위의 경우는 두 값이 같습니다.
이재화7월 17일 오후 5:17
1. 직관적으로 노름은 벡터의 길이, 내적은 두 벡터 사이에 이루는 각을 정의하는 개념이라고 생각하면 됩니다.
2. 노름과 내적은 주어진 데이터가 얼마나 유사한지를 비교하는데 사용되는데 각각 사용하는 척도가 다릅니다.
3. 두 데이터 사이의 거리로 유사성을 비교할 때 노름이 사용되고, 두 데이터 사이의 패턴(방향)만 관심있을 때에는 두 벡터 사이의 각으로 유사성(코사인 유사도)을 비교합니다. 이때 내적이 사용됩니다. [참고] http://matrix.skku.ac.kr/math4ai-intro/W3/
4. 내적을 활용한 코사인 유사도는 자연어 처리에도 사용된다고 합니다. [참고] https://wikidocs.net/24603
이상구(LEE SANGGU)7월 17일 오후 11:27
실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다.
추가 답변 및 정리: http://matrix.skku.ac.kr/math4ai/ 에서 인용
|
정의. |
|
의 벡터
에 대하여
![]()
을
의 노름(norm, length, magnitude)이라 한다.
|
정의. |
[내적(Euclidean inner product, dot product)] |
![]()
을 와 의 내적(Euclidean inner product, dot product)이라 하고 로 나타낸다. 즉
![]()
![]()
=
=![]()
이 두 정의를 비교하면,
▪ ![]()
![]()
노름의 제곱은 내적과 같음을 확인할 수 있습니다.
그리고 노름은 벡터의 길이 또는 크기를 나타낸다면,
내적은 두 벡터 사이에 이루는 각 또는 두 벡터 사이의 관계를 나타낸다고 생각하면 될 것 같습니다. ※참고자료
1. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
2. http://matrix.skku.ac.kr/math4ai-intro/W3/
주어진 데이터를 분류하기 위해서는 각 데이터마다 우리가 다룰 수 있는 (계산할 수 있는) 형태로 표현할 수 있고, 각 범주와 얼마나 가까운지 (혹은 유사한지) 계산하여 최종 판단해야 한다.
이러한 척도를 데이터의 유사도(similarity)라고 한다.
그렇다면 서로 다른 두 데이터가 얼마나 유사한지 어떻게 평가할 수 있을까?
가장 쉽게 생각해볼 수 있는 것은 두 데이터 사이의 거리를 계산하는 것이다....
는 원점에서 점 에 이르는 거리와 같다. 따라서 두 벡터 , 에 대하여 는 두 점 와 사이의 거리(distance)가 되며, 다음이 성립한다.
![]()
위 정의는 3차원은 물론 고차원 데이터에 대해서도 동일한 형태로 확장된다.
그러나 데이터 분석가가 단지 데이터의 패턴(방향)에만 관심이 있는 경우, (거리)척도는 적합하지 않다.
예를 들어, 아래와 같이 좌표평면 상에 벡터로 표현된 두 데이터 와 는 패턴(방향)은 유사하지만
거리는 매우 큰 값을 갖게 되어, (거리)척도로는 “두 데이터가 관계가 없다”고 판단하게 되기 때문이다.
단지 데이터의 패턴(방향)에만 관심이 있는 경우에는 유사도를 어떻게 측정해야 할까? 이번에 우리는 데이터의 패턴(방향)에만 관심이 있으므로,
두 데이터(벡터)가 이루는 사잇각 로 유사도를 측정할 수 있을 것이다. 예를 들어, 가 작으면 데이터의 유사도가 높고, 가 크면 데이터의 유사도가 낮다고 판단할 수 있다.
그러나 사잇각은 벡터의 내적(inner product)으로부터 정의되므로, 를 직접 계산하기 보다는 벡터의 내적을 이용하여 ... 의 코사인 값으로 유사도를 측정한다. 이를 코사인 유사도(cosine similarity)라고 한다.
장환승(2016****69)7월 18일 오후 10:53
내적이라는 개념은 알고 있었는데, 자연어 처리 또는 데이터의 패턴 개념에 있어 내적이라는 것이 어떻게 활용되는지 보니까 신기하네요. 코사인 유사도 라는 개념이 내적과 글을 통해 확 와닿습니다. 감사합니다.
권서영(2020****27)7월 19일 오전 1:29
Final Comment: 제가 교수님 강의를 공부하면서 미묘하게 헷갈리던 부분이 무엇인지 확신할 수 없어 고민중이었는데, 학우님께서 노름과 내적의 개념에 대해 질문한 글을 읽고 저 또한 개념정리가 미약하다는 것을 깨달을 수 있었습니다. 많은 학우분들이 내적은 '각'의 개념이라 정리해 주셔서 개념 정리가 되고, 왜 각이며 내적이 어떤 분석 (데이터의 패턴 혹은 방향)에 사용되는지 정리해주신 답변들을 읽어보며 내적과 노름의 개념과 응용을 정리할 수 있었습니다. 사실 내적이 왜 ||x||로 바 두 개를 사용하는 것일까? 라는 일차원적인 의문을 가지고 있었으나 (잘못된 생각이지만) 질문이 유치하게 보여 묻지 못했습니다. 하지만 교수님이 "실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다."라고 서술해주셔서 납득을 할 수 있었습니다. 먼저 강의 내용을 다 이해하고 정리하고 다른 분들 질문과 Finalized된 글을 읽어 볼 것이 아니라 (교재를 읽은 후 ... 다른 학생들이 토론한 내용을) 미리 읽으면서 (Re-Finalize 하거나, 추가로 질문하거나, Final 코멘트를 달면서) 자신의 이해를 더욱 높일 수 있고 추가적인 지식도 얻을 수 있음을 깨달았습니다.
좋은 질문과 답변 공유해 주셔서 감사합니다.
이상구(LEE SANGGU)7월 18일 오후 9:42
누가 위의 요약 내용 읽고 ... 배우거나 느끼거나 .. 한 개인적인 감성을 담은 Comment 를 꼭 다세요^^
장환승(2016****69)7월 18일 오후 10:53
내적이라는 개념은 알고 있었는데, 자연어 처리 또는 데이터의 패턴 개념에 있어 내적이라는 것이 어떻게 활용되는지 보니까 신기하네요. 코사인 유사도 라는 개념이 내적과 글을 통해 확 와닿습니다. 감사합니다.
권서영(2020****27)7월 19일 오전 1:29
제가 교수님 강의를 공부하면서 미묘하게 헷갈리던 부분이 무엇인지 확신할 수 없어 고민중이었는데, 학우님께서 노름과 내적의 개념에 대해 질문한 글을 읽고 저 또한 개념정리가 미약하다는 것을 깨달을 수 있었습니다. 많은 학우분들이 내적은 '각'의 개념이라 정리해 주셔서 개념 정리가 되고, 왜 각이며 내적이 어떤 분석 (데이터의 패턴 혹은 방향)에 사용되는지 정리해주신 답변들을 읽어보며 내적과 노름의 개념과 응용을 정리할 수 있었습니다. 사실 내적이 왜 ||x||로 바 두 개를 사용하는 것일까? 라는 일차원적인 의문을 가지고 있었으나 (잘못된 생각이지만) 질문이 유치하게 보여 묻지 못했습니다. 하지만 교수님이 "실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다."라고 서술해주셔서 납득을 할 수 있었습니다. 먼저 강의 내용을 다 이해하고 정리하고 다른 분들 질문과 Finalized된 글을 읽어 볼 것이 아니라 미리 읽으면서 자신의 이해를 더욱 높일 수 있고 추가적인 지식도 얻을 수 있음을 깨달았습니다. 좋은 질문과 답변 공유해 주셔서 감사합니다.
[1주차] 강의 내용 실습 (3)강의 내용에 관한 실습 내용입니다.
{자체 예제 131.} 첨가행렬 [A:I]의 RREF를 이용하여 행렬 A의 역행렬을 구하시오.
A =
[Sage 코드 및 답안]

{자체 예제 132.} 실수 범위에서 랜덤으로 생성시킨 5*5 행렬 A에 대하여 대각합을 구하시오.
[Sage 코드 및 답안]

{자체 예제 133.} 유리수 범위에서 랜덤으로 생성시킨 7*7 행렬 A에 대하여 행렬식을 구하시오.
[Sage 코드 및 답안]

{자체 예제 134.} 행렬식과 수반행렬을 이용하여, 정수범위에서 랜덤으로 생성시킨 5*5 행렬 A의 역행렬을 구하시오.
[Sage 코드 및 답안]

{자체 예제 135.} 행렬식을 이용한 일차독립 판정법을 이용하여, 4차원상의 네 벡터 X1 = (-1, 0, 0.7, 5) , X2 = (1/7, -3, 1.1, -0.3), X3 = (-5, 1.4, -1, 0), X4 = (4, 2, -5, 3)에 대하여 {X1, X2}는 일차독립임을 확인하시오.
[Sage 코드 및 답안]

Null Space, Left Null Space
작성자 : 유가이올렉산드르(2018****33)작성일 : 7월 18일 오후 9:11
조회수 : 27 [Final OK by SGLee] Finalized by 한수현, 유가이 올렉산드르, 박지수] [HW-해공간을 구하는 법, f Kernel(Null Space), Right Null Space, Left Null Space
Final OK by SGLee [HW-해공간을 구하는 법, finalized by 한수현, re-finalized by 유가이 올렉산드르] Kernel(Null Space), Right Null Space, Left Null Space, 질문 by 박지수, 답변
[HW] 해공간을 구하는 법 , Span <(-3, 1, 0, 0), (-5, 0, -2, 1)>이 해공간, Kernel(Null Space), Right Null Space, Left Null Space
질문 by 박지수
답변 및 Finalized by 한수현
Final OK by SGLee
추가 답변 및 Re-finalized by 유가이 올렉산드르
Q:


교재 p92 예제2 답이 나오지 않아서 제가 무엇을 잘못하고 있는지, 어떻게 푸는 것인지 질문드립니다 .
A:
Final. 해공간 , 박지수 학우님의 질문에 대한 답 . Span 인 <(-3, 1, 0, 0), (-5, 0, -2, 1)>이 해공간 입니다 .
풀이는 이런 식으로 하면 될 것 같습니다 .

해공간을 표현하는데 사용하는 두 벡터는 해공간에 속해있는 무수히 많은 벡터 중 두 개를 끌어오면 되는 것이기 때문에 해공간의 표현은 다양하게 할 수 있습니다 . 저 마지막 식에서 (x2, x4)가 (3, -2)일 때 해는 (1, 3, 4, -2)이고 , (5, -3)일 때 해는 (0, 5, 6, -3)이므로 제가 구한 span(S)에는 예제 답에 나와있는 두 해가 포함 되어있으므로 제가 쓴 <(-3, 1, 0, 0), (-5, 0, -2, 1)>도 해공간의 표현 중 하나임을 알 수 있습니다 .
박지수 학우님도 저와 같은 답이 나오셨던데 , 그 답도 맞다고 보면 될 것 같습니다 .
추가 답변:
► Definitions
● Subspace
A subspace of a vector V is a subset H of V that has three properties :
(1) The zero vector of V is in H .
(2) H is closed under vector addition. That is, for each u and v in H , the sum u + v is in H .
• u, v ∈ H => u + v ∈ H (덧셈에 닫혀 있다 .)
(3) H is closed under multiplication by scalars. That is, for each u in H and each scalar c , the vector cu is in H .
• u ∈ W, с ∈ R => ku ∈ W (스켈라배에 닫혀 있다 .)
Note that , properties (1), (2), and (3) guarantee that a subspace H of V is itself a vector space, under the vector space operations already defined in V .
Remark: The best way to test for a subspace is look first for the zero vector. If 0 is in H , then properties (2) and (3) must be checked. If 0 is not in H , then H cannot be a subspace and thee other properties need not to be checked.
● Null Space
The null space of an mxn matrix A , written as Nul A , is the set of all solutions of the homogeneous equation Ax = 0 . In set notation,
Nul A = {x : x is in R n and Ax = 0}
Remark:
A more dynamic description of Nul A is the set of all x in R n that are mapped into zero vector of R m via the linear transformation x -> Ax . See Figure 1 below.

Figure 1
Important Theorem:
The null space of an mxn matrix A is a subspace of R n . Equivalently, the set of all solutions to a system Ax = 0 of m homogeneous linear equations in n unknowns is a subspace of R n .
Proof:
First, notice that Nul(A) is a subset of R n , because A has n columns (Nul(A) ⊆ R n ).
So, we need to check the 3 properties(see above) of a subspace :
1. It’s clear that 0 is in Nul(A).
2. Let u and v be any two vectors in Nul(A).
Then we have:
• To show u + v is in Nul(A), we must show that: A(u + v) = 0
• Then, using a property of matrix multiplication, compute: Au + Av = 0 + 0 = 0
• Thus, u + v is in Nul(A), and Nul(A) is closed under vector addition.
3. Finally, if c is any scalar, then:
• A(cu) = c(Au) = c(0) = 0 , which show that cu is in Nul(A).
Thus, Nul(A) is a subspace of R n . ■
► 위에 있는 예제 2 의 결과를 다시 한 번 살펴봅시다 .
After we decompose the vector giving the general solution into a linear combination of vectors where the weight are the free variables, we obtain the following:

Figure 2
Note that, every linear combination of u and v is an element of Nul A and vice versa. Thus {u, v} is a spanning set for Nul A .
Two points should be made about the solution of this Example 2 that apply to all problems of this type where Nul A contains nonzero vectors.
1. The spanning produce by the method shown in this Example 2 is automatically linearly independent because the free variables are the weights on the spanning vectors. For instance, look at the 2 nd and 3th entries in the solution vector in Figure 2, and note that x 2 u + x 4 u can be 0 only if the weights x 2 and x 4 are all zero.
1. When Nul A contains nonzero vectors, the number of vectors in the spanning set for Nul A equals the number of free variables in the equation Ax = 0 .
To consolidate the material, I will show an example of how you can easily determine whether a given vector x , for example, is in Nul A , using the given matrix from Example 2.


This means all four vectors x are in the null space of A .
Interesting fact #1:
► Right kernel(null space) vs Left kernel(null space)
The usual kernel(null space) is what we are calling the “right kernel”. The "left kernel" is the cokernel and can be computed as the kernel of the matrix's transpose .
Left null space:
The left null space, or cokernel, of a matrix A consists of all column vectors x such that x T A = 0 T , where T denotes the transpose of a matrix. The left null space of A is the same as the kernel of A T . The left null space of A is the orthogonal complement to the column space of A , and is dual to the cokernel of the associated linear transformation. The kernel, the row space, the column space, and the left null space of A are the four fundamental subspaces associated to the matrix A .
Sage example of right and left kernel:

Interesting fact #2:
► Sage library vs Python Sympy library
I'm not sure which library Sage uses, however, for example, the Numpy math library in Python uses the exact same method for finding the Null Space matrix that we usually use when solving manually.
Note that, the both results are correct (see the explanation above), but the method using the Sympy library seems to me more convenient. Below I have compared the results from Sage and Python Sympy.
Sage:

Python “Sympy”:

[참고]:
[1] https://en.wikipedia.org/wiki/Kernel_(linear_algebra)
[2] https://www.geeksforgeeks.org/null-space-and-nullity-of-a-matrix/
[정사영에 대한 질문과 답]. Finalized by 채희준,
질문 by 한수현, 답변 by 이상구
작성자 : 채희준(2016****00)작성일 : 7월 19일 오전 2:08
조회수 : 14
질문 by 한수현
답변 by 이상구
Finalized by 채희준
Q :
교재에서 정사영을 정의할 때, x, y를 R^3에서의 벡터로 정의하는데 R^n (3<n)에서의 두 벡터도 정사영이 가능한지 궁금합니다.
가능하다면 여기서 정의할 때 R^3에서의 벡터로 설명을 한 이유가 궁금하고, 불가능하다면 불가능한 이유도 설명해주시면 감사하겠습니다.
A :
이상구(LEE SANGGU)7월 16일 오후 9:31
1. 물론 x, y를 R^n (3<n)에서의 두 벡터 로 정의 해도 정사영이 가능합니다.
2. R^3에서의 벡터로 설명을 한 이유는 3차원 유클리드 공간인 R^3 가 학생이 종이에서 시각적으로 확인 하기 쉬어서3차원 벡터 와 3차원 공간을 이용 한 것 입니다.3. 물론 가능합니다. 더 나아가 위의 내용은 임의의 벡터공간 의 벡터들 에도 그대로 적용됩니다. 즉 행렬공간 안의 벡터인 행렬들 사이에서도 projection 즉 정사영을 정의 할 수 있고, 벡터의 한 예인 행렬 사이의 코시-슈바르츠 부등식도 있답니다.벡터의 한 예인 연속함수 둘 사이의 코시-슈바르츠 부등식도 있답니다.그런데 지금은 인공지능에 필요한 수학을 배우는 것이니 ... R^n 안의 벡터들 에만 집중하고, 제시한 관련 문제들 부터 풀어서 공유 하시고 ...1장에서의 key idea 인 SVD 부터 이해하고 설명해 보셔요. 결론. 우리에게 불가능 이란 없습니다.
추가 답변 및 정리 :
|
정의. |
|
벡터
와
가
에 있고,
라 하자. 그러면 점
에서
에 내린 수선의 발을
라 할 때, 벡터
를
위로의
의 정사영 (projection of
onto
)이라 하고
=
로 나타낸다. 이때 벡터 ![]()
를
에 직교인
의 벡터성분 (vector component)이라 한다. 따라서
는 두 벡터의 합
로 나타내진다.
▪
가
에 평행이므로,
이다. 그리고
는
에 직교(orthogonal)이므로,
.
따라서
이고
. ■
|
정리. |
정사영 |
의 벡터
,
에 대하여 다음이 성립한다.
여기서
. ■
제가 생각하기에는 여기서 중요한 것은 projection을 벡터의 내적 또는 내적&노름으로 표현 가능하다는 것이라 생각합니다. 내적과 노름은 n>3인 R^n 차원에서도 가능하므로 projection 또한 n>3인 R^n 차원에서 가능합니다.
※참고
교수님이 임의의 벡터공간에 대하여 이야기 하셔서 간단히 설명하자면,
▪벡터공간 :
임의의 집합
에 두 연산, 덧셈(vector addition,
)과 스칼라 배(scalar multiplication,
) 가 정의되고, 2개의 기본성질 (두 연산에 대하여 닫혀있다-closed )과 8개의 연산 성질을 만족하면 ‘
가 벡터공간(vector space))을 이룬다’ 고 한다. 예,
,
,
, 행렬공간 등
|
8개의 연산 성질 |
|
|
집합의 원소 (1) (2) (3) (4) (5) (6) (7) (8) |
|
위와 같은 벡터공간이 되기 위한 조건을 모두 만족하는 집합이 있다면 그 집합의 원소들을 벡터라고 부를 수 있습니다.
[Act07] [Final OK by TA and SGLee] Q by 이승재, Finalized by 천가영, 정사영에 대하여, 답변 by 이상구 교수님, 느낀점 : 벡터를 이해하기 위해서는 수학적 상상력이 필요하다는 생각이 들었습니다. (Act 05와 동일합니다.)
[Act08] [Final OK by TA and SGLee] Finalized by 이승재,김범준 and SGLee Q. [1주차] 강의 내용 복습 요약 & 실습 & 주요질의by 이승재[HW-1주차] 이승재학우분의 질문에 대한 답변+3번질문에대한 자세한 답변을 구합니다.-답변자: 김범준, 수정보완 답변자:SGLee (Act 03과 동일합니다.)
[Act09] (정리1) [Final OK by SGLee] Q, A & Finalized by 이승재, 박상협, 박정호, 김정한, SGLee [HW] 벡터의 직교, Gram Schmidt 정규직교화 과정
[Final OK by SGLee] Q, A & Finalized by 이승재, 박상협, 박정호, 김정한, SGLee [HW] 벡터의 직교, Gram Schmidt 정규직교화 과정
Question. (By 박상협)
1. 정사영의 정의에서, y-p가 x에 직교하므로 (x) (y-p) = 0 이라고 하는데 이 부분이 왜 그런지 잘 이해되지 않습니다.
<--1. 그림에서 보듯이 w = y-p 를 (Projection of y onto x 인) 벡터 p 와 직교가 되도록 잡았으니 ... p 와 w 그 둘의 내적을 구하면 당연히 영이 되는 것이랍니다. http://matrix.skku.ac.kr/2018-album/LA-Sec-7-7-lab.html 그렇게 직교 orthogonal 가 되도록 w 를 정의한 것입니다.
2. 두 벡터가 서로 직교할때 벡터의 내적이 0이 되는 이유가 궁금합니다. <--- 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 떄문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
(선형대수학이 처음이라 기초가 많이 미흡합니다. 도와주시면 감사하겠습니다!)

Answer by SGLee.
1. 그림에서 보듯이 w = y-p 를 (Projection of y onto x 인) 벡터 p 와 직교가 되도록 잡았으니 ... p 와 w 그 둘의 내적을 구하면 당연히 영이 되는 것이랍니다. http://matrix.skku.ac.kr/2018-album/LA-Sec-7-7-lab.html 그렇게 직교 orthogonal 가 되도록 w 를 정의한 것입니다.
2. 이 개념이 2차원에서, 3차원으로 , 그리고 4차원으로 그대로 확장이 되어 G-S 정규 직교화법이 만들어 지는 것이랍니다.
http://matrix.skku.ac.kr/2012-album/Gram-Schmidt.html
3. 관련 동영상은 아래 웹사이트를 참조하세요.
(Korean) https://youtu.be/EBCi1nR7EuE (English) https://youtu.be/Px6Gaks9fXQ
[Final OK by SGLee] Q, A & Finalized by 이승재, 박상협, 박정호, 김정한, SGLee [HW] 벡터의 직교, Gram Schmidt 정규직교화 과정

Answer by 박정호
내적을 정의할 때 벡터의 각 성분끼리의 곱의 합으로도 표현할 수 있지만 a*b*cos@로도 표현할 수 있습니다. a, b는 벡터의 크기니까 0이 아니므로 내적이 0이라면 코사인 값이 0인 것이고 코사인을 0으로 만들어주는 각이 90도이기 때문에 수직이라고 볼 수 있습니다. 2차원, 3차원에서는 수식으로나 그림으로 증명할 수 있고 그 이상의 차원에서도 내적을 같은 식으로 정의할 수 있기 때문에 내적이 0이다라는 것은 직교를 의미합니다.
Answer by 김정한
내적을 표현할 때는 x 보다 ⋅(dot 기호)를 사용하는게 바람직해 보입니다. w를 y에서 x방향으로의 성분(p)을 제외한 부분으로 생각하고 p는 x를 스칼라배한 것이므로 둘의 내적은 0입니다[직교].
이러한 직교 상황에 벡터의 내적이 0인 이유는 위에 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 떄문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
Comment by 이승재
- 박상협 학우님께서 질의 해 주신 부분은 제가 정사영이라는 개념을 처음 접하였을때 당시 어려움을 겪었던 부분 중 하나 입니다.
답변 해 주신 분들이 잘 설명해 주셔서 이해가 한층 더 되었던 것 같습니다.
(부족한 부분은 개인적으로 찾아 보아 정사영에 대한 이해도를 높일 수 있도록 하겠습니다.)
1. [Final OK by SGLee] [수정본] 추가답변 및 Re-Finalized by 유가이 올렉산드르, Finalized by 김범준 [1주차HW-질문] 일차독립
[1주차HW-질문]일차독립
질문by김범준
답변by이상구교수님
Finalized OK by김범준and SGLee
추가답변및Re-Finalized by유가이올렉산드르
1.정사각행렬이가역행렬이면열들은일차독립입니다.<---OK
2.그이유는가역행렬과det(a)≠0은서로필요충분조건관계에있는데,이는행렬식을이용한일차독립판정법또한det(a)≠0과일차독립은필요충분관계에있기때문입니다.<---OK
3.이와마찬가지로정사각행렬이비가역행렬이면열들이일차종속임또한알수있습니다.<---OK
Q 1.그렇다면,일차독립을구할때는반드시정사각행렬을만들어구하는방법을써야하는건가요?
<---Q1에대한답.일차독립개념은...아래 <일차독립정의>에서보듯이,
정사각행렬의열(column)뿐아니라...벡터공간안의일반적인벡터들의집합에적용되는개념입니다.
http://matrix.skku.ac.kr/knou-knowls/CLA-Week-4.html

Q 2.아니면 주어진벡터들이 일차독립인지 아닌지 판별할 때, 정사각행렬을 만들지않고도 판별하는 방법이 있나요?
<---Q2에대한답.물론이지요,일차독립의정의를다시읽어보시면바로이해되실것입니다.
[정의대로일차결합을만들어m by n행렬A에대하여,동차선형연립방정식Ax = 0의해가zero벡터뿐임을보이면됩니다.]
Q 3.추가질문
이제벡터값이주어지면일차독립인지여부를확인하는데는문제가없습니다.하지만,온라인교재를찾아보아도sage를통해A.ncols() == len(A.pivots())같이행렬을이용한풀이방식밖에찾지못하였습니다. 1차원벡터가주어졌을때는일차독립인지종속인지구별할필요가없는것인가요?
<----Q3에대한답.일차독립의정의를보시면이해할내용인데,
일차독립정의2.
m by n행렬A에대하여Ax = 0이x=0을유일한해로갖는다면A의n개의column vector들은일차독립이다.
이경우직사각형행렬A의column vector들은일차독립이다.
따라서주어진벡터들을column vector들로하는행렬A를만들고,
Ax = 0이x=0을유일한해로갖는것을보이면,column vector들이일차독립인것을보이는것이고,영아닌다른해를가지면일차종속이되는것입니다.
Comment :모두 이해하였습니다^^감사합니다^^
Q1.추가답변 및 예제:
아래정리(Theorem)를예로봅시다.(편리성을위해정리1라고합시다.)
Characterization of Linear Dependent Sets:
An indexed set, let’s call itSfor example,S = {v1, … , vp}of two or more vectors is linearly dependent(일차종속)ó(if and only if) at least one of the vectors inSis a linear combination(선형조합) of the others. In fact, ifSis linearly dependent andv1≠0, then somevj(withj > 1) is a linear combination of the preceding vectors(선행벡터/이전벡터),v1, … ,vj-1.
주의:1)이정리는어떤 집합 안에일차종속인 벡터가 존재한다고, 그집합 안의모든벡터들이다른벡터들의1차결합이라는 의미는 아닙니다. (일부는 일차독립일 수 있으며, 이 말은 그 집합 안의 어떤 (일차종속인) 벡터는 다른 벡터들의 일차결합으로 표현이 가능하다는 의미입니다.)
2)어떤 집합 안에일차종속인 벡터가 존재한다고 해도 ,일부는 일차독립일 수 있습니다.)
예제(정사각행렬을만들지않고, 일차독립을 보이는 예의풀이):
Problem Statement:
Letu= [3 1 0]Tandv= [1 6 0]T(더나은시각화를위해전치행렬 (Transpose)을사용함).
평행이 아닌 두 벡터u와v 가span 하는집합span{u, v}을설명하고
{u, v, w}가일차종속 집합인경우에,벡터w가스팬span{u, v}에 있는이유를설명하십시오.
Solution
• 벡터u와v는어느벡터도다른것의배수가아니므로일차독립이므로R3상에서 하나의평면을 생성(span)합니다.
• 스팬{u, v} 를x1x2-평면 이라고 합시다.(withx3= 0).
• w가u와v의1차결합인경우,위의정리에의해{u, v, w}는1차 종속입니다.
• 반대로,{u, v, w}가1차 종속되어있다고가정합시다.
• 위정리에따르면,{u, v, w}안의 어떤벡터는다른벡터 들의1차 결합입니다(since,u ≠ 0).
• v는u의배수가아니므로이벡터는w여야 합니다.
• ð따라서w는스팬{u, v} 안에있습니다.아래그림참조하십시오.
• 
• 이것은위에서해집합(솔루션)의대략적인시각화입니다.이덕분에1차 종속벡터와1차독립벡터의차이점에대한설명이더명확해지기를바랍니다.
• ►위예제는1차(일차)독립적인u및v를사용하여R3에모든집합{u, v, w}을일반화합니다.
• ►세트{u, v, w}는w가u와v에의해스팬 된평면에있는경우에만(if and only ifó)1차 종속입니다.
•
Q2.추가답변및예제(정사각행렬을만들지않고도판별하는방법)
• 또하나의정리(Theorem)를예로봅시다. (편리성을위해정리2라고합시다.)
• If a set contains more vectors than there are entries in each vector, then the set is linearly dependent(일차종속). That is, any set{v1, … ,vp}inRnis linearly dependent ifp > n.여기서p는세트의벡터수이(number of vectors)고n은세트의항목수(number of entries in the vector)입니다.
• 여기서는예제가아니라이해하기쉽도록이정리(theorem)에대한증거(proof)를제공합니다.
• Proof
• A = [v1∙∙∙ vp]라고합시다.
• 그런다음A는«n x p» (정사각형이아닌행렬)이며방정식Ax = 0은p개의미지수(unknowns)로n개의방정식시스템(system of equations)에해당합니다.
• p > n인경우방정식보다많은변수가있으므로자유변수(free variable)가있어야합니다.
• 따라서Ax = 0은사소하지않은솔루션(non-trivial solution)을가지며A의열은선형으로종속(일차종속)됩니다. ■
• 위의증거를시각화하려면아래그림을참조하십시오.
• 
• 위의그림에서A = n x p첨가증강행렬(augmented matrix)입니다.
주의:이정리는집합의벡터수(number of vectors)가각벡터의항목수(number of entries in each vector)를초과하지않는경우에대해서는아무것도말하지않습니다.
간단한예제:
아래3개의벡터를봅시다.이3개의벡터가일차종속인가?

벡터[2 1]T,[4 -1]T,[-2 2]T은세트에3개의벡터가있고각벡터에2개의성분(엔트리,entries)만있기때문에위의«정리2(Theorem 2)»에의해일차종속이다.
►그러나벡터중어느것도다른벡터중하나의배수가아님에유의하십시오(위그림참조).
마지막으로, 또하나의정리(Theorem)를 예로봅시다. (편리성을위해정리3라고합시다.)
Ifaset,let'scallitSforexample,S= {v1, … ,vp}inRncontainsthezerovector,thenthesetislinearlydependent(일차종속).
여기서는 예제가아니라이해하기쉽도록이정리(theorem)에대한 아주간단한 증거(proof)를 제공합니다.
Proof
벡터의번호를다시매기(renumbering the vectors)면v1= 0이라고가정할수있습니다.그러면방정식1v1+ 0v2+ ∙∙∙ + 0vp= 0은집합 (세트)S가선형적으로종속(일차종속)임을나타냅니다. ■
Q3.추가답변및예제 저는 이상구교수님의 매우 자세한 답변을 간략하게 요약하고이해가더쉽게하기위해서아주 간단한 예를 제시하겠습니다.
이제알다시피행렬A의열은방정식Ax = 0 가 해로trivial solution인 영벡터 만갖는경우에만(if and only ifó) 일차독립입니다.
예제:

이시점에서3개의기본변수가있고자유변수가(free variables)없는것이분명합니다.따라서방정식Ax = 0에는trivial solution만있으며,1차독립의 정의에 의하여A의열(columns)은일차독립입니다.
Comment by유가이올렉산드르:학생좋은질문과이상구교수님의자세한답에감사합니다.선형대수의일반적인정리(theorem)들을사용하고,다양한증거(proofs)와예제를제공했으며,정사각행렬을사용하거나사용하지않(직관적으로)고행렬의독립성을판별하는방법을가능한자세하고쉽게설명하려고노력했습니다.위내용을도움이되길바랍니다.
김범준(2017****99)7월 13일 오후 7:42
그림을 통해 설명해주셔서 한층 심화된 이해가 가능한 것 같습니다. 감사합니다.
2. [Final OK by TA and SGLee] Finalized by 이승재,김범준 and SGLee Q. [1주차] 강의 내용 복습 요약 & 실습 & 주요질의by 이승재[HW-1주차] 이승재학우분의 질문에 대한 답변+3번질문에대한 자세한 답변을 구합니다.-답변자: 김범준, 수정보완 답변자:SGLee
(1). 벡터란 교재 상 속도,위치 이동 등 숫자로 표현되는 물리량에“방향”까지 포함하는 것이라고 기술되어 있는 것으로 파악했습니다.후술되어 있는 내용에는 단순히 숫자의 나열로 제시되어져 있는데, (X = (-1, 2, 4, -10)와 같이 기술되어 있음)이를 어떻게 해석해야 하는지 질의 드립니다. (단순히 어느 한 점의 위치를 표현한 고정된 좌표인지 아니면 운동하는 순간의 수치를 표현한 유동적인 물리량인지 궁금합니다.)
A:




특수한 경우에서의 설명:

즉 여기서 방향과(우상향), 크기(선의 길이)를 벡터라고 보시면 됩니다. 오른쪽은 일반적인 직선으로 방향성이 없다는 점에서 벡터와의 차이가 있습니다.
(2).스칼라는 백터와 달리‘방향’이 없는 물리량으로 이해했습니다.이때,스칼라 역시 실수로 표현되는데,그럼 백터X = (3)와 스칼라k = 3의 차이는 무엇으로 구분되어 지는지 궁금합니다.
A:이 경우 벡터는 벡터공간 R^n(n=1 인경우) 의 원소이고, 스칼라는 (underlying Field) 체 F=R 의 원소인 것이 다릅니다.
참고http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-14.html
스칼라 3+2는 5지만 벡터는 그 방향성에 따라 5가 아닌 다른 값이 나올 수 있습니다. 만약 위의 시점이 (0,0)이고 종점이(2,3)인 X=(2,3)인 벡터를 역방향으로 시점이(2.3)이고 종점이 (0,0)인 벡터를 더한다면 합은 0이 되는 것이 그 예시입니다.
3)질의1-(1)에 연장선 상에서,만일 백터가 점들의 좌표들을 나열한 것이라고 이해될 수 있다면,원점(기준점)이 백터에 포함이 되어 있을 수 있는지(가능성)여부를 알고자 합니다. 벡터를 편하게 비교하기 위해 고교수학과정에서는 (0,0)을 기준점으로 비교하고는 있습니다. 이 부분이 실제로 수학적으로 유효한 것인지 저또한 궁금합니다.
이상구(LEE SANGGU)7월 15일 오후 7:24
혹시 읽으시는 분께서 3번질문에 대해 자세히 답변해주실 수 있으시면 감사합니다.
(3) 질의 에 대한 답변Answer.
1. 먼저 벡터공간 R^n 의 벡터는 점들의 좌표를 n-tuple 로 나열한 것이라고 이해될 수 있습니다. 다른 벡터 공간에서는 그렇게 할 수 없을 수도 있습니다.2. 벡터공간 R^n 안에는 원점 (origin, zero vector. 기준점) 인 zero 벡터 가 항상 포함됩니다.3. 벡터공간 R^2 안의 벡터를 편하게 비교하기 위해 고교수학 과정에서는 (0,0)을 원점 (origin, zero vector. 기준점) 으로 사용합니다.3-1 (m by n 행렬들의 집합인) 벡터공간 M_{m by n } 안의 벡터 들 중에서는 영행렬이 (origin) zero vector 입니다.4. 위와 같이 1, 2, 3, 으로 쓰면 수학적으로 유효합니다.그러나 벡터공간 (집합) 안의 원소들이 모두 벡터 이므로 벡터공간 R^n 이 아닌 다른 벡터 공간에서는 학생이 한 말이 모두 부정확한 말이 될 수 있습니다.참고 : http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-14.html
김범준(2017****99)7월 15일 오후 8:10
모두 이해 되었습니다. 감사합니다.
추가 COMMENT: 이 과정을 통해 제가 잘 모르는 부분인데도 인지하지 못하고 있는 부분도 답변하면서 교수님과 학우분들이 수정해주시는 과정에서도 배워갈 수 있다고 느꼈습니다.
3. [Final OK by TA] Finalized by 천가영, 원점을 지나는 평면에 관한 질문, 답변 by 김범준, 이상구 교수님
원점을 지나는 평면에 관한 질문 질문 by 천가영
답변 by 이상구 교수님, 김범준
Finalized by 천가영
Q. https://www.youtube.com/watch?v=or9c97J3Uk0&feature=youtu.be
기저에 관한 교수님의 유튜브 강의를 듣던 중 기저의 예시로 평면이 나왔습니다.
평면 V에서 서로의 상수배가 아닌 영 아닌 두 벡터가 V의 기저를 이룬다는 점은 이해가 된 것 같습니다.
제가 이해가 되지 않은 부분은 바로 예시 속 그림입니다.
평면 V가 R^n 상의 원점을 지나는 평면이라고 하였는데, 그림 상으로는 원점을 지나는 평면인 것 같지 않아서 더 자세한 설명이 필요합니다.

제가 이해한 V를 그림으로 표현해 보았습니다.

A.
김범준(2017****99)7월 20일 오후 4:54
제가보기에는 X,Y,Z가 각 0인 점을 지나고 있어서 원점을 지나는 평면이라고 하신것 같습니다.
이상구(LEE SANGGU)7월 20일 오후 5:00
R^3 에서는 쉬운데 ... R^n 벡터공간에서는 눈으로 쉽게 보게 그리기가 어렵답니다.아무튼 내가 그린 그림은 적어도 원점이 평면상에 있는데 ... 천가영씨가 그린 그림에서는 원점이 평면 밖에 있어서 ... 적어도 내 설명과 그림이 틀리지는 않았답니다.
느낀점 :
예시 속의 그림이 당연히 3차원 공간이라고 생각했었는데, 3차원 공간이 아니라고 생각하고 다시 그려보니 이해가 된 것 같습니다. 이렇게 그림을 그려도 되는지 모르겠지만 우선 이해를 돕기 위해 한 번 그려보았습니다. 김범준 학우 분의 답변도 많은 도움이 되었습니다. 답변해주셔서 감사합니다.

그리고 사실 쉽게 표현하기도, 그려내기도 어려운 개념들을 다루는 것이 수학이라는 생각이 들었습니다. 그래서 어떤 면에서 가장 정확한 언어인 것 같다는 생각도 들었습니다.
4.[Final OK by TA] Finalized by 한수현, 질문 by 김다은(1강 질문 -2), 답변 by 김범준, 전재현


답변 내용 요약 정리 :
1. 이는 질문이 아니니 넘어가겠습니다.
2.
벡터에 스칼라배를 할 경우 방향은 그대로이고 크기만 바뀌게 됩니다.
따라서 벡터 x와 p는 서로 평행하기 때문에 p를 x에 스칼라배를 한 형태로 표현할 수 있는 것입니다.
이 스칼라를 t라고 표현을 해준 것이고, t의 값은 상황에 따라 달라진다는 점을 알고 계시면 좋을 것 같습니다.
3.
n의 값은 공간의 차원 값입니다.
n은 어떠한 자연수든 될 수 있는데, 이미 주어진 벡터공간이 몇 차원인지(R^n에서 n이 무엇인지) 아는 방법은 그 공간의 벡터의 특징을 보는 것입니다.
해당 공간에 속해있는 벡터의 성분의 개수를 통해 n의 값이 무엇인지 판단할 수 있습니다.
벡터공간 R^n에 속해있는 벡터는 성분을 n개 가지고 있으니 이것으로 판단하면 될 것입니다.
다른 분들이 답변해주신 내용을 제 방식대로 요약 정리 해보았습니다.
5.[Final OK by SGLee] [Final] 대각화 관련 질문 Finalized by 박은아, 질문 by 김범준, 댓글 by 이상구교수님, 박은아, 장환승
[Final OK by SGLee] [Final] 대각화 관련 질문 Finalized by 박은아, 질문 by 김범준, 댓글 by 이상구교수님, 박은아, 장환승
[HW 2주차 직교대각화 질문]
질문 by 김범준
댓글 by 이상구교수님, 박은아, 장환승
Finalized by 박은아
[질문]

저는 1주차 실습에서 같은크기의 정사각행렬의 곱에서는 교환법칙이 성림한다고 예상하였습니다.
그렇다면 대각화 가능한 행렬에서는 단위행렬과 행렬A의 곱을 구함으로서 대각선행렬을 구할 수 있을것이라 생각하였는데 아니였습니다.
행렬에서는 교환법칙이 성립하지 않는다고 생각하여야 하는지 궁금합니다.
[답변]
이상구(LEE SANGGU)7월 26일 오전 9:23
A 는 Row vectors 로 하고 P 는 Column vectors 로 하였으니 ... 위와 같은 결과가 나온 것입니다.어디를 바꾸면 될지 이전의 예를 자세히 보고 ... 따라서 해 본 후 다시 문의 하세요^^
[2주차] 고유값, 고유벡터 개념 정리 및 Sage 실습 by 안성진
작성자 : 안성진(2015****36)작성일 : 8월 16일 오후 11:34
고유값 (eigenvalue), 고유벡터 (eigenvector)
고유값은 아래 식을 만족하는 lambda를 의미한다. 고유벡터는 아래 식을 만족하는 x를 의미한다. 
이 때 x는 영벡터가 아니며, A는 n차 정사각행렬이다.
즉, 행렬 A로 벡터 x를 변환 시킨 결과와 scalar인 lambda로 변환 시킨 결과가 같다는 의미이다.
고유공간 (eigenspace)
![]()
실습

Visualization

추가 자료 탐색을 통해 Eigenvector를 시각화 하여 공부해보았습니다. Eigenvector는 행렬 A에 의해 변환이 되어도 변환 전의 span에서 벗어나지 않고 scalar만큼 늘어나거나 줄어든다는 것을 시각적으로 볼 수 있었습니다.
출처: https://www.youtube.com/watch?v=PFDu9oVAE-g
2개의 댓글
이상구(LEE SANGGU)8월 17일 오전 6:19
R^2 나 R^3 에서는 맞는 설명 입니다.R^n 에서 는 C^n 에서는 고유벡터의기하적 의미에 대한 표현이 어떻게 되어야 할까요?
안성진(2015****36)8월 17일 오후 2:04
R^n 에서 고유벡터가 갖는 기하학적 의미의 표현은 일반적인 수식으로 가능할 것 같습니다.A * x = lambda * x (이 때 x 는 n차원의 벡터)
이상구(LEE SANGGU)7월 26일 오전 9:37
그리고 : http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-11.html 에 잇는 아래 내용을 쭉 따라서 해 보세!요A를 대각화하는 행렬 P를 구하는 과정![]()

|
A=matrix([[0, 0, -2], [1, 2, 1], [1, 0, 3]]) |
|
print A.eigenvalues() # 고유값 계산 |
|
|
|
A.eigenvectors_right() |
|
# (고유값, [ 고유벡터 ], 중복도), ... |
|
x1=vector([1, -1/2, -1/2]) |
|
x2=vector([1, 0, -1]) |
|
x3=vector([0, 1, 0]) |
|
P=column_matrix([x1, x2, x3]) |
|
print "P=" |
|
print P |
|
|
|
print "det(P)=", P.det() |
|
print "D=" |
|
print P^-1*A*P # 대각화 가능하다면 고유값을 |
|
# 대각원소로 하는 대각행렬 생성됨 |
박은아(2016****73)7월 26일 오전 11:53
일반적으로 행렬의 연산에서 (정사각행렬을 포함하여)곱셈에서 결합법칙 (AB)C = A(BC) 은 항상 성립하지만교환법칙 AB=BA 은 일반적으로는 성립하지 않습니다. (AB≠BA)<--- 행렬의 곱 연산에서는 앞 행렬의 행과 뒤 행렬의 열을 대응하여 연산하기 때문입니다.이와 같이 다항식과 행렬의 연산에서 다른 점이 몇 개 존재하는데, 다음은 그 예시입니다.다항식: ab=0 이면 항상 a=0 or b=0 이다. 그러나행렬곱 에서는 : AB=0이어도 A=0 or B=0 이 항상 성립하지는 않는다.다항식: a가 0이 아닐 때, ab=ac이면 b=c이다.행렬 : A가 영 행렬이 아닐 때, AB=AC 이어도 B=C 이 항상 성립하지는 않는다.
김범준(2017****99)7월 26일 오후 2:16
두 분 답변 모두 감사합니다.
장환승(2016****69)7월 26일 오후 4:08
행렬에서는 제가 알기론 교환법칙에 일반적으로 성립하지 않는다고 알고 있습니다. ( 닫혀있다 는 것은 다른 의미고 ... )


[Comment]
김범준 학우님의 대각화 관련 질문을 통해 다음과 같이 대각화에 대한 개념과 행렬의 연산법칙에 대해 상기할 수 있었습니다.
대각화 가능한 행렬의 조건 - 어떤 행렬의 교유값들이 서로 다른 값을 가지면 독립인 고유벡터를 가지며 대각화 가능하다.
(증명 -https://www.math.wisc.edu/~ellenber/Math204Lects/Week10.pdf)
행렬의 연산법칙 - 곱셈에서 결합법칙은 항상 성립하지만, 교환법칙은 일반적으로 성립하지 않는다.
이와 더불어 교수님께서 작성해주신A를 대각화하는 행렬 P를 구하는 과정코드를 활용해 대각화 실습을 해보았고, 개념을 견고히 할 수 있었습니다.
추가 Comment- 저의 질문을 통해 다른분들의 수학적 이해에 도움이 될 수 있어서 기쁩니다.
[Final OK by SGLee]
Q by 이상현, Finalized by 천가영, (복소수 및 무리수 포함하는 행렬의) 역행렬에 대한 질문, 답변 by 이상구 교수님, 댓글 by 권서영, 채희준, 박정호 작성자 : 천가영(2020****17)작성일 : 7월 25일 오후 9:20
(복소수 및 무리수 포함하는 행렬의) 역행렬에 대한 질문과 답^^
질문 by 이상현
답변 by 이상구 교수님
댓글 by 권서영, 채희준, 박정호
Finalized by 천가영
Q.
주어진 행렬 K에 단위행렬을 첨가한뒤 RREF로 바꿔 역행렬을 만드는 도중 발견했습니다.
행렬 K는 2x2의 정사각행렬이고 [a , b], [c , d] 의 형태를 띈다고 가정하면
K의 역행렬의 1행1열에 해당하는 성분은 d/(ad-bc) 이어야 합니다.
그러나, RREF를 이용하는 방법은 1행1열에 해당하는 성분이 {(1+abc)/(a^2)}/(ad-bc)가 나옵니다.
혹시 모든 2x2 행렬이 (1+abc)/(a^2) = d 를 만족하나요? 제 계산에 오류가 있나요?
Answer
그렇습니다. 손 계산에는 오류가 없습니다. 그러나 컴퓨터 ... 인공지능에게 ... 명령을 줄 때 ... 정수 계산 이외는 하지 말라고 하고 ... 복소수 i 를 주고 ... 무리수 e 를 주었으니 ... 인공지능은 시킨대로 했을 뿐입니다. 그 답이 맞는지 틀린지 인공지능은 모릅니다. 그리고 변수 x에 대하여도 어떤 의미도 주지 않고 사용하였습니다. .. 이런 경우 코드를 짠 사람만이 자신이 무엇을 잘 못 시켰는지 ... 파악할 수 있답니다. 스스로 ... 고쳐서 같은 실수를 하지 않아야 합니다. 이런 경우 컴퓨터와 대화하는 코딩의 기본 지식이 필요합니다. 컴퓨터로 구한 값은 .., 항상 그 전에 이런 문제를 이런 코드로 내 컴퓨터가 구해준 답이 항상 정답이 되는지 미리 확인해 보아야 합니다. A = matrix(RR, [ [1, 2], [5, 8] ] ) # 실수 상에서 행렬 계산 하라고 하는 경우 A = matrix(RDF, [ [1, 2], [5, 8] ] ) # 실수체 상에서 행렬 계산하고 하는 경우의 행렬 정의 등으로 해 보세요^^ 이 경우도 복소수 i 가 사용되면 원하는 답은 안나옵니다. 복소수 계산을 하기 위해서는 기본 코드 설정이 실수 부분과 복소수 부분으로 나누어서 다른 구조로 설정되어 있으면 그것을 작동하려면 ... 코딩을 제대로 배워야 합니다. 이상현 군이 사용한 코드는 정수 행렬의 경우 정답을 주는 코드입니다. 다른 경우는 이번 경우 무리수 e 를 사용한 듯한데 이 경우 무리수 계산을 할 수 있도록 underlying filed 를 그에 맞추어 실수 RR or RDF 로 바꾸어 주어야 하고 ... 그에 보태어 floating error 가 얻고자 하는 답에 영향을 주는지 미리 확인하여 ... 코드를 손보는 노력이 꼭 필요합니다. https://docs.python.org/ko/3/tutorial/floatingpoint.html 15. 부동 소수점 산술: 문제점 및 한계 부동 소수점 숫자는 컴퓨터 하드웨어에서 밑(base)이 2인(이진) 소수로 표현됩니다. 예를 들어, 소수 0.125 는 1/10 + 2/100 + 5/1000의 값을 가지며, 같은 방식으로 이진 소수 0.001 는 값 0/2 + 0/4 + 1/8을 가집니다. 이 두 소수는 같은 값을 가지며, 유일한 차이점은 첫 번째가 밑이 10인 분수 표기법으로 작성되었고 두 번째는 밑이 2라는 것입니다. 불행히도, 대부분의 십진 소수는 정확하게 이진 소수로 표현될 수 없습니다. 결과적으로, 일반적으로 입력하는 십진 부동 소수점 숫자가 실제로 기계에 저장될 때는 이진 부동 소수점 수로 근사 될 뿐입니다. 이 문제는 먼저 밑 10에서 따져보는 것이 이해하기 쉽습니다. 분수 1/3을 생각해봅시다. 이 값을 십진 소수로 근사할 수 있습니다: 0.3 또는, 더 정확하게, 0.33 또는, 더 정확하게, 0.333 등등. 아무리 많은 자릿수를 적어도 결과가 정확하게 1/3이 될 수 없지만, 점점 더 1/3에 가까운 근사치가 됩니다. 같은 방식으로, 아무리 많은 자릿수의 숫자를 사용해도, 십진수 0.1은 이진 소수로 정확하게 표현될 수 없습니다. 이진법에서, 1/10은 무한히 반복되는 소수입니다 0.0001100110011001100110011001100110011001100110011... 유한 한 비트 수에서 멈추면, 근삿값을 얻게 됩니다. 오늘날 대부분 기계에서, float는 이진 분수로 근사 되는 데, 최상위 비트로부터 시작하는 53비트를 분자로 사용하고, 2의 거듭제곱 수를 분모로 사용합니다. 1/10의 경우, 이진 분수는 3602879701896397 / 2 ** 55 인데, 실제 값 1/10과 거의 같지만 정확히 같지는 않습니다. 많은 사용자는 값이 표시되는 방식 때문에 근사를 인식하지 못합니다. 파이썬은 기계에 저장된 이진 근삿값의 진짜 십진 값에 대한 십진 근삿값을 인쇄할 뿐입니다. 대부분 기계에서, 만약 파이썬이 0.1로 저장된 이진 근삿값의 진짜 십진 값을 출력한다면 다음과 같이 표시해야 합니다 >>>>>>0.1 0.1000000000000000055511151231257827021181583404541015625 이것은 대부분 사람이 유용하다고 생각하는 것보다 많은 숫자이므로, 파이썬은 반올림된 값을 대신 표시하여 숫자를 다룰만하게 만듭니다 >>>>>>1 / 10 0.1 인쇄된 결과가 정확히 1/10인 것처럼 보여도, 실제 저장된 값은 가장 가까운 표현 가능한 이진 소수임을 기억하세요. 흥미롭게도, 가장 가까운 근사 이진 소수를 공유하는 여러 다른 십진수가 있습니다. 예를 들어, 0.1 과 0.10000000000000001 및 0.1000000000000000055511151231257827021181583404541015625 는 모두 3602879701896397 / 2 ** 55 로 근사 됩니다. 이 십진 값들이 모두 같은 근삿값을 공유하기 때문에 eval(repr(x)) == x 불변을 그대로 유지하면서 그중 하나를 표시할 수 있습니다. 역사적으로, 파이썬 프롬프트와 내장 repr() 함수는 유효 숫자 17개의 숫자인 0.10000000000000001 을 선택합니다. 파이썬 3.1부터, 이제 파이썬(대부분 시스템에서)이 가장 짧은 것을 선택할 수 있으며, 단순히 0.1 만 표시합니다. 이것이 이진 부동 소수점의 본질임에 주목하세요: 파이썬의 버그는 아니며, 여러분의 코드에 있는 버그도 아닙니다. 하드웨어의 부동 소수점 산술을 지원하는 모든 언어에서 같은 종류의 것을 볼 수 있습니다 (일부 언어는 기본적으로 혹은 모든 출력 모드에서 차이를 표시하지 않을 수 있지만). 좀 더 만족스러운 결과를 얻으려면, 문자열 포매팅을 사용하여 제한된 수의 유효 숫자를 생성할 수 있습니다:>>>>>> format(math.pi, '.12g') # give 12 significant digits '3.14159265359'>>> format(math.pi, '.2f') # give 2 digits after the point '3.14'>>> repr(math.pi) '3.141592653589793' 이것이, 진정한 의미에서, 환영임을 깨닫는 것이 중요합니다: 여러분은 단순히 진짜 기곗값의 표시 를 반올림하고 있습니다. 하나의 환상은 다른 환상을 낳을 수 있습니다. 예를 들어, 0.1은 정확히 1/10이 아니므로, 0.1의 세 개를 합한 것 역시 정확히 0.3이 아닙니다:>>>>>> .1 + .1 + .1 == .3 False 또한, 0.1은 1/10의 정확한 값에 더 가까워질 수 없고, 0.3도 3/10의 정확한 값에 더 가까워질 수 없으므로, round() 함수로 미리 반올림하는 것은 도움이 되지 않습니다:>>>>>> round(.1, 1) + round(.1, 1) + round(.1, 1) == round(.3, 1) False 숫자를 의도한 정확한 값에 더 가깝게 만들 수는 없지만, round() 함수는 사후 반올림에 유용하여 부정확한 값을 가진 결과를 서로 비교할 수 있게 합니다:>>>>>> round(.1 + .1 + .1, 10) == round(.3, 10) True 이진 부동 소수점 산술은 이처럼 많은 놀라움을 안겨줍니다. 《0.1》의 문제는 아래의 《표현 오류》 섹션에서 자세하게 설명합니다. *** 이런 것은 코딩 수업을 따로 들으면서 배우시기 바랍니다. 본 강의에서는 교과서에 있는 내용을 실습하는 기회를 제공하는 정도로 쭉 진도를 나가서 인공지능이 실제 구현되는 수학적 원리의 기초를 학습하도록 하는 것입니다. 모든 것을 컴퓨터 코딩으로 해결하려면 ... 위의 코딩 지식을 배워야 합니다. 그 필요를 느끼실 때 ... 코딩 수업을 따로 들으면서 배우시면 됩니다^^ 그 차이를 느끼도록 해 주는 것이 우리 강좌의 목표 중 하나인데 ... 이 군은 그 목표에는 도달했으니 아주 잘 했습니다. ^^.
https://www.wolframalpha.com/examples/mathematics/ 에서 한번 구해 보세요^^ inverse of {{x, i}, {e, 99}} https://www.wolframalpha.com/input/?i=inverse++of+%7B%7Bx%2C+i%7D%2C+%7Be%2C+99%7D%7D 여기서는 복소수나 무리수 를 인식하여 계산하도록 코딩을 속에 포함해 둔 것입니다. 그러나 그 코딩은 유료라 안 보여 줍니다.
Comment
채희준(2016****00)7월 19일 오후 3:21
질문과 답변을 읽으면서 짜여진 코드를 사용할 때는 그 코드의 전제되어 있는 조건들을 알아둘 필요가 있다는 생각이 들었습니다. 그리고 문자 변수가 포함된 행렬도 역행렬을 구해주는 등의 계산을 해줄 수 있을까 궁금했는데, 복소수나 무리수를 인식하여 계산하도록 하는 코드만으로도 쉽지 않은 것 같습니다. 부동 소수점 산술에 대한 답변도 매우 흥미로웠습니다. 파이썬을 이용해 계산을 하다가, 손으로 계산하면 2.0으로 떨어져야하는데 2.00001 비슷하게 나오는 등의 경험을 종종 했었습니다. 그때는 왜 이렇게 나오지? 하고 어리둥절 넘겼는데, 십진법과 이진법 사이의 변환이 이뤄지면서 생기는 문제였군요. 좋은 질문과 답변을 해주신 덕분에 새로운 지식을 얻을 수 있었습니다. 감사합니다.
6.[Final OK by TA] Finalized by 김범준, SG LEE Q.[HW-2주차] 런타임에러by 김범준
Finalized by 김범준, SG LEE Q.[HW-2주차] 런타임에러by 김범준

해당 코드에서 만약 대각화가 불가능한 행렬이라면, FALSE가 나오고 가능한 행렬이라면 TRUE가 나올것이라 예상했는데 런타임에러가 계속 나옵니다. 혹시 컴퓨터로 하는 계산의 한계 중 하나인가요?
이상구(LEE SANGGU)7월 26일 오전 9:20
고윳값이 유리수가 아닌데 ... 유리수 안에서 구하라고 유리수로 제한하는 명령어 QQ 를 주었으니 ... 에러가 나는 것입니다.이것 QQ 를 RR 이나 RDF 로 바꾸어서 해 보세요^^
이상구(LEE SANGGU)7월 26일 오전 9:37
그리고 : http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-11.html 에 잇는 아래 내용을 쭉 따라서 해 보세요
|
A=matrix([[0, 0, -2], [1, 2, 1], [1, 0, 3]]) |
|
print A.eigenvalues() # 고유값 계산 |
|
A.eigenvectors_right() |
|
# (고유값, [ 고유벡터 ], 중복도), ... |
|
x1=vector([1, -1/2, -1/2]) |
|
x2=vector([1, 0, -1]) |
|
x3=vector([0, 1, 0]) |
|
P=column_matrix([x1, x2, x3]) |
|
print "P=" |
|
print P |
|
|
|
print "det(P)=", P.det() |
|
print "D=" |
|
print P^-1*A*P # 대각화 가능하다면 고유값을 |
|
# 대각원소로 하는 대각행렬 생성됨 |
김범준(2017****99)7월 26일 오전 10:18
네 감사합니다
추가 comment- 컴퓨터로 하는 계산에서의 에러의 유형 중 수의 범위지정과 관련한 오류에 대해 배울 수 있었습니다.
7.[Final OK by TA] [Final] [2주차] 강의 내용 요약 (선형변환) + 질문 <--- 답 : 선형변환 T 가 단사 일 필요충분 조건 증명, Finalized by 천가영, 답변 by 이상구 교수님, 댓글 by 김범준


질문 :선형변환을 n차원 공간에서의 함수로 생각을 하면, 단사함수는 일대일함수와, 전단사함수는 일대일 대응 함수와 연관지어 이해할 수 있었습니다.
그런데 단사함수의 필요충분조건인 kerT={0}은 왜 그런 것인지 잘 이해가 되지 않습니다.
이 벡터공간이고
가 선형변환일 때,
가 단사일 필요충분조건은
이다. 참고문헌 출처 :http://matrix.skku.ac.kr/math4ai/part1/
답:http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html
![]()

Q2.R^n 에서 R^m 으로 보내는선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
답: 복잡한 치역에서 생각해야 할 거리/크기에 관한 함수 T(x) 에 대한 모든 연구를
이미 모두 알고 있는 간단한 정의역에서 해도 되는 엄청난 장점이 있습니다.
Q3.R^n 에서 R^m 으로 보내는선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다. 특히 T가 단사일 떄는 왜 ker T={0} 인가요?http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html에 증명 있습니다.
|
|
[증명]
|
|
느낀점 :
앞서 학우분이 했던 질문을 읽어보지 않고 다시 질문하게 되어서 죄송했다.
앞으로는 미리 질문과 답들을 읽어보고 추가적으로 생기는 궁금증을 질문해야겠다고 생각했다.
김범준(2017****99)7월 26일 오후 6:39 저도 이 부분이 궁금하였습니다. 논리학적으로 따지면 선형변환일때 kerT={0}가 성립한다. 단사함수는 선형변환의 부분집합이다, 따라서 선형변환이라면, kerT={0}의 속성을 가진다. 하지만 그 역이 성립하는지를 알아야 필요충분조건이라 할 수 있는데 역의 성립을 어떻게 보일 수 있는지 잘 모르겠습니다.
이상구(LEE SANGGU)7월 26일 오후 6:48
답 : 선형변환 T 가 단사 일 필요충분 조건 증명 ... 아래 주었는데 한 번 더 답을 줍니다.
천가영(2020****17)7월 26일 오후 7:03 넵 감사합니다!!
추가 comment: 다른 학우들의 질문을 보면서 넘어갔던 부분에 대해 궁금증이 생겼습니다. 책에 있었지만, 제가 이를 잘 알고있지 못한점은, 제 공부가 부족했음을 알 수 있었습니다.
8.[Final OK by TA] FINALIZED BY 김범준, SG LEE Q.[HW-2주차-질문] 이차형식에 관하여BY김범준
일반적인 이차형식은행렬을 도입하여 행렬 곱의 형태인
꼴로 표현할 수 있다.
또는![]()
▪앞으로는 대칭행렬
를 얻기 위하여
를 둘로 나누어, 다음과 같이 나타내도록 한다.
,
같은 방법으로![]()
![]()
이와 같이
를 대칭행렬로 택하는 이유는대칭행렬
는 항상 직교대각화 가능하기 때문이다.
Q. 여기서 일반적인 이차형식의 경우 A를대칭핼렬로 선택할 수 있고. 따라서 행렬 대각화가 가능합니다.대각행렬로 구성하면구할 수 있다는 점은 이해했습니다.
(혹시일반적이지 않은 즉
의 꼴로 구할 수 있는지 없는지 판단할 수 있는 방법이 무엇인지 궁금합니다. )
이상구(LEE SANGGU)7월 26일 오후 6:53 일반적이지 않은 이차형식 이란 것은 없습니다. 모든 이차형식 은 x^T A x = f_{A} (x) 로 쓸 수 있으며, 항상 A 를 대칭행렬로 선택할 수 있고, 대칭행렬이므로 항상 대각화 가능하므로, 이차형식이면 ... 우리가 원하는 만큼 단순화 시켜서 이해하고 계산하여 이용할 수 있습니다.
이상구(LEE SANGGU)7월 26일 오후 6:53 일반적이지 않은 이차형식 이란 것은 없습니다. 모든 이차형식 은 x^T A x = f_{A} (x) 로 쓸 수 있으며, 항상 A 를 대칭행렬로 선택할 수 있고, 실대칭행렬이므로 항상 직교대각화 가능하므로,이차형식이면 ... 우리가 원하는 만큼 단순화 시켜서 이해하고 계산하여 이용할 수 있습니다.
김범준(2017****99)7월 26일 오후 6:59 답변 감사합니다.
추가 comment: 대각화와 대각행렬간의 차이를 구분하지 못했다는 것을 발견하였습니다.

Answer by 박정호
내적을 정의할 때 벡터의 각 성분끼리의 곱의 합으로도 표현할 수 있지만 a*b*cos@로도 표현할 수 있습니다. a, b는 벡터의 크기니까 0이 아니므로 내적이 0이라면 코사인 값이 0인 것이고 코사인을 0으로 만들어주는 각이 90도이기 때문에 수직이라고 볼 수 있습니다. 2차원, 3차원에서는 수식으로나 그림으로 증명할 수 있고 그 이상의 차원에서도 내적을 같은 식으로 정의할 수 있기 때문에 내적이 0이다라는 것은 직교를 의미합니다.
Answer by 김정한
내적을 표현할 때는 x 보다 ⋅(dot 기호)를 사용하는게 바람직해 보입니다. w를 y에서 x방향으로의 성분(p)을 제외한 부분으로 생각하고 p는 x를 스칼라배한 것이므로 둘의 내적은 0입니다[직교].
이러한 직교 상황에 벡터의 내적이 0인 이유는 위에 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 떄문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
Comment by 이승재
- 박상협 학우님께서 질의 해 주신 부분은 제가 정사영이라는 개념을 처음 접하였을때 당시 어려움을 겪었던 부분 중 하나 입니다.
답변 해 주신 분들이 잘 설명해 주셔서 이해가 한층 더 되었던 것 같습니다.
(부족한 부분은 개인적으로 찾아 보아 정사영에 대한 이해도를 높일 수 있도록 하겠습니다.)
65’[수강후기] 컴퓨터공학과 김진웅‘
도전학기 마지막 주가 이렇게 지나갑니다.
이번 강좌를 통하여 인공지능 이해에 필요한 수학적 지식인 선형대수학, 미적분학, 확률통계학 그리고 이를 기반한 인공지능 기술을 배워갈 수 있었습니다.
요약하자면, SVD로 PCA를, GDA로 BP를 알게 되었네요 ㅎㅎ
여러 학우분들과 질문과 답변을 하면서 개념을 정립하고 더욱 성장할 수 있었습니다.
앞으로 인공지능을 이해하고 개발하는 데 첫 발을 잘 내디딘 것 같습니다.
인공지능 시대에 걸맞은 강의를 해주신 교수님과 함께해 준 동료 여러분들, 감사합니다.
[Act01] (기타1) <[H.W.] 자기소개 및 동기 _ 글로벌 경영학과 이승재 (19학번), 목표 A+>
안녕하세요 글로벌 경영학과에 재학중인 이승재입니다.
이 강의를 신청하게 된 계기는 AI에 대한 이해가 나날히 강조되어 가는 현재의 상황에 딱 맞는 강좌라고 생각하여 본 강좌를 신청하게 됬습니다.
목표 학점은 A+ 입니다. 비록 인사캠 출신이라 아직 본 과목 속의 수학에 대해 모르지만, 차근차근 배워나가도록 하겠습니다.
잘 부탁 드립니다. 감사합니다 ;)
[Act02] (요약1 & 실습1 & 질의1) <[1주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재>
[1주차] 강의 내용 복습 요약 (1)
01 백터, 스칼라의 기본 개념에 대해 간략히 배움
02 백터의 연산 (합과 스칼라배)에 대해 간략히 배움
03 백터의 노름과 내적에 대해 간략히 배움
04 코시-슈바르츠 부등식에 대해 간략히 배움
[1주차] 강의 내용 실습 (1)
강의 내용에 관한 실습 내용입니다. 문제의 적절성과 답변에 대해 오류가 있다면 지적하여 주시길 부탁드립니다.
{자체 예제 1-1}. 백터 X = (-13, 10, 0.7, 1/3), Y = (-0.8, -1/7, 0, 5)에 대하여, 1/3X - 5Y를 구하시오.
[Sage 코드 및 답안]

{자체 예제 1-2}. 4차원에 정의된 두 점 A (-1, 0.4, 3, -2), B (-3, 0.8, 2, -5) 사이의 거리를 구하시오
[Sage 코드 및 답안]

[1주차] 주요 질의 사항 (1)
백터에 관한 학습을 이전에 한적이 없기 때문에 기초적인 개념에 있어 질의가 필요합니다.
01 백터에 관하여; (1) 백터란 실질적으로 무엇을 의미하는지 (무작위 백터 X = (-1, 2, 4, -10)는 무엇을 의미하는지 질의하고 싶습니다.) (2) 수식상 스칼라와 백터(백터의 구성성분이 1개의 실수로만 구성되어 있을 경우) 두개는 무엇으로 차이를 가지는지 (3) 백터의 구성성분에는 ‘원점’이 포함되는지 여부에 관해 질의 드립니다.
> 질의 내용 설명
(1). 백터란 교재 상 속도, 위치 이동 등 숫자로 표현되는 물리량에 “방향”까지 포함하는 것이라고 기술되어 있는 것으로 파악했습니다. 후술되어 있는 내용에는 단순히 숫자의 나열로 제시되어져 있는데, (X = (-1, 2, 4, -10) 와 같이 기술되어 있음) 이를 어떻게 해석해야 하는지 질의 드립니다. (단순히 어느 한 점의 위치를 표현한 고정된 좌표인지 아니면 운동하는 순간의 수치를 표현한 유동적인 물리량인지 궁금합니다.)
(2). 스칼라는 백터와 달리 ‘방향’이 없는 물리량으로 이해했습니다. 이때, 스칼라 역시 실수로 표현되는데, 그럼 백터 X = (3) 와 스칼라 k = 3의 차이는 무엇으로 구분되어 지는지 궁금합니다.
(3) 질의 1-(1)에 연장선 상에서, 만일 백터가 점들의 좌표들을 나열한 것이라고 이해될 수 있다면, 원점 (기준점)이 백터에 포함이 되어 있을 수 있는지 (가능성) 여부를 알고자 합니다.
[Act03] Finalized by 이승재,김범준 and SGLee Q. [1주차] 강의 내용 복습 요약 & 실습 & 주요질의by 이승재[HW-1주차] 이승재학우분의 질문에 대한 답변+3번질문에대한 자세한 답변을 구합니다.-답변자: 김범준, 수정보완 답변자:SGLee
[1주차] 주요 질의 사항 (1)
백터에 관한 학습을 이전에 한적이 없기 때문에 기초적인 개념에 있어 질의의 필요성이 느껴져 다소 기초적인 질의를 하고자 합니다.
01 백터에 관하여; (1) 백터란 실질적으로 무엇을 의미하는지 (무작위 백터 X = (-1, 2, 4, -10)는 무엇을 의미하는지 질의하고 싶습니다.) (2) 수식상 스칼라와 백터(백터의 구성성분이 1개의 실수로만 구성되어 있을 경우) 두개는 무엇으로 차이를 가지는지 (3) 백터의 구성성분에는 ‘원점’이 포함되는지 여부에 관해 질의 드립니다.
> 질의 내용 설명
(1). 벡터란 교재 상 속도, 위치 이동 등 숫자로 표현되는 물리량에 “방향”까지 포함하는 것이라고 기술되어 있는 것으로 파악했습니다. 후술되어 있는 내용에는 단순히 숫자의 나열로 제시되어져 있는데, (X = (-1, 2, 4, -10) 와 같이 기술되어 있음) 이를 어떻게 해석해야 하는지 질의 드립니다. (단순히 어느 한 점의 위치를 표현한 고정된 좌표인지 아니면 운동하는 순간의 수치를 표현한 유동적인 물리량인지 궁금합니다.)
A: 특수한 경우에는 맞는 말입니다.
참고: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-14.html



설명하기 쉽게 2차원 벡터를 가정으로 하겠습니다. X=(2,3)이란 벡터가 있으면 다음과 같이 표현됩니다.

즉 여기서 방향과(우상향), 크기(선의 길이)를 벡터라고 보시면 됩니다. 오른쪽은 일반적인 직선으로 방향성이 없다는 점에서 벡터와의 차이가 있습니다.
(2). 스칼라는 백터와 달리 ‘방향’이 없는 물리량으로 이해했습니다. 이때, 스칼라 역시 실수로 표현되는데, 그럼 백터 X = (3) 와 스칼라 k = 3의 차이는 무엇으로 구분되어 지는지 궁금합니다.
A: 이 경우 벡터는 벡터공간 R^n (n=1 인경우) 의 원소이고, 스칼라는 (underlying Field) 체 F=R 의 원소인 것이 다릅니다.
참고 http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-14.html
스칼라 3+2는 5지만 벡터는 그 방향성에 따라 5가 아닌 다른 값이 나올 수 있습니다. 만약 위의 시점이 (0,0)이고 종점이(2,3)인 X=(2,3)인 벡터를 역방향으로 시점이(2.3)이고 종점이 (0,0)인 벡터를 더한다면 합은 0이 되는 것이 그 예시입니다.
(3) 질의 1-(1)에 연장선 상에서, 만일 백터가 점들의 좌표들을 나열한 것이라고 이해될 수 있다면, 원점 (기준점)이 백터에 포함이 되어 있을 수 있는지 (가능성) 여부를 알고자 합니다. 벡터를 편하게 비교하기 위해 고교수학과정에서는 (0,0)을 기준점으로 비교하고는 있습니다. 이 부분이 실제로 수학적으로 유효한 것인지 저또한 궁금합니다.
이상구(LEE SANGGU)7월 15일 오후 7:24
(3) 질의 에 대한 답변
Answer.
1. 먼저 벡터공간 R^n 의 벡터는 점들의 좌표를 n-tuple 로 나열한 것이라고 이해될 수 있습니다. 다른 벡터 공간에서는 그렇게 할 수 없을 수도 있습니다.
2. 벡터공간 R^n 안에는 원점 (origin, zero vector. 기준점) 인 zero 벡터 가 항상 포함됩니다.
3. 벡터공간 R^2 안의 벡터를 편하게 비교하기 위해 고교수학 과정에서는 (0,0)을 원점 (origin, zero vector. 기준점) 으로 사용합니다.
3-1 (m by n 행렬들의 집합인) 벡터공간 M_{m by n } 안의 벡터 들 중에서는 영행렬이 (origin) zero vector 입니다.
4. 위와 같이 1, 2, 3, 으로 쓰면 수학적으로 유효합니다.
그러나 벡터공간 (집합) 안의 원소들이 모두 벡터 이므로 벡터공간 R^n 이 아닌 다른 벡터 공간에서는 학생이 한 말이 모두 부정확한 말이 될 수 있습니다.
참고 : http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-14.html
[Act04] (요약2 & 실습2 & 질의2) <[1주차] 강의 내용 복습 요약 & 실습 & 주요질의 (2) _ 2019311465 이승재>
[1주차] 강의 내용 복습 요약 (2)
01 정사영이 대해 간략히 배움
02 점과 평면사이의 최단 거리에 대해 간략히 배움
03 선형 연립방정식의 기본 개념과 행렬에 대해 간략히 배움
04 첨가 행렬에 대해 간략히 배움
05 기본행 연산(ERO)에 대해 간략히 배움
06 행 사다리꼴(REF)과 기약 행 사다리꼴(RREF)에 대해 간략히 배움
07 소거법 (Gauss/Gauss-Jordan)을 간략히 배움
[1주차] 강의 내용 실습 (2)
강의 내용에 관한 실습 내용입니다.
{자체 제작 예제} 3차원 백터 X = (5, -2, 3), Y = (-6, 7, 1) 에 대하여 X위로의 Y의 정사영 proj xY 와 X에 직교인 Y의 백터성분 w를 구하시오.
[Sage 코드 및 답안]

{자체 제작 예제} 점 A (-2, 0.8, 1/3, -1)에서 평면 0.15W – 1/7X + 3Y – 1.3Z +5.1= 0에 이르는 거리 D를 구하시오.
[Sage 코드 및 답안]

{자체 제작 예제} 3*3 행렬 A (0, 1, 5, 8, 7, 13, 11, -1, 0)에 대하여; 3가지 계산을 하시오.
Calculation 1 : 두번째 행과 세번째 행을 교환
Calculation 2 : 세번째 행에 -5배
Calculation 3 : 첫 번째 행에 3배를 해서 세번째 행에 더함
[Sage 코드 및 답안]
#행렬 설정 / 기본 가정
A = matrix (3, 3, [0, 1, 5, 8, 7, 13, 11, -1, 0])
# 계산 과정
Cal1 = elementary_matrix (3, row1 = 1, row2 = 2)
Cal2 = elementary_matrix (3, row1 = 2, scale = -5)
Cal3 = elementary_matrix (3, row1 = 2, row2 = 0, scale = 3)
#출력 과정
print("A =")
print(A)
print("Calculation 1 =")
print(Cal1)
print("Calculation 2 =")
print(Cal2)
print("Calculation 3 =")
print(Cal3)

{자체 제작 예제} 3*3 행렬 A (-1, 4, 0.5, 1/9, -3, -1, 0, 5, -8)에 대하여 RREF를 구하시오.
[Sage 코드 및 답안]

[1주차] 주요 질의 사항 (2)
02 정사영에 대하여; 어떤 계산 과정을 거쳐 w = y – p 가 나오는지에 대해 질의 드립니다. 아래 그림상, 단순히 선분의 길이가 아님을 파악할 수 있었으나, 어떤 계산 과정 혹은 어떠한 가정을 토대로 w 가 y - p 로 결정되어지는지 궁금합니다.
* 교수님께 추가 질의 드립니다) 이전 질의에 대한 타 학우분과 교수님의 답변 내용을 제가 어떤 방식으로 정리하여 올려야 하는지 질의 드립니다. (단순히 제 질의 내용을 기술하고, 그에 대한 답변을 복사, 기술하면 되는 것인지, 혹은 따로 제가 이해한 내용을 ‘설명’해야 하는지 여부)
이상구(LEE SANGGU)7월 16일 오후 7:35
[1주차] 주요 질의 사항 (2) 에 답 드립니다.
정사영; 계산 과정은 말 그대로 y 가 주어지고 p 를 구했으니 그 차이를 w 로 정의
한 것 그 이상도 그 이하도 아닙니다.
그것을 R^2 에서 그림으로 나타내면 위와 같다 는 의미 입니다.
벡터는 선분의 길이가 아닙니다.
이 벡터 의 norm 이 크기를 의미합니다.
단순히 w = y - p
로 define 정의 한 것으로 이해 하시면 됩니다.
요약(7개) (중간 4개 기말 3개)
14’[HW 요약] 1주차 요약‘
25’[HW 요약] 2주차 요약‘
33’[요약] 3주차 요약‘
42’[요약] 4주차 요약‘
52’[5주차] [요약] 5주차 요약 <-- 특히 Poisson 분포가 무엇인지 알게 되었습니다.‘
60’Final OK by SGLee [요약] 6주차 요약‘
62’[요약] 7주차 요약‘
14’[HW 요약] 1주차 요약‘
[1일차] Big Picture
• 벡터공간 2개 기본성질과 8개 연산성질을 만족하는 비공집합 V
• 부분공간 ①벡터공간의 부분집합이면서 ②자신도 벡터공간인 비공집합 W
• 일차결합 v = a1u1+...+akuk for {u1,...,uk}
• span 일차결합들의 전체집합 {a1u1+....+akuk}=<U>=U의 span
• 일차독립 a1u1+...+akuk=0 → a1=...=ak=0일 때 {u1,...,uk}는 일차독립 ↔ 일차종속 일차독립이 아님
• 기저 ①B가 일차독립 ②<B>=V일 때 V의 기저 B 특징 (1) maximal linearly independent subset (2) minimal spanning subset
• 차원 dim V = |V의 기저|
• 계수 행공간의 차원 rank(A) = dim Row(A) = dim Col(A)
• 초평면 a┴={(x1,...,xn)|a1x1+...+anxn=0}
• 정사영 p = proj<a>x = ∑(x·ai/||ai||²)ai 직교성분 w = x - p
• 고유값 det(λI-A)=0인 스칼라 λ 고유벡터 Ax=λix인 비공벡터 x for λi
• 대각화 A로부터 대각선행렬 D를 만들 수 있음(D=P^-1AP) ⇔ A와 D는 닮음행렬, A는 diagonalizable, P는 diagonalizing ⇔ 가역행렬 P가 존재
• SVD 특이값분해 A=UΣV^t where 직교행렬 U,V와 일반화된 대각선행렬 Σ
• 이차형식 ax^2 + 2bxy + cy^2 (식 형태)=(행렬 형태) [x y][[a b]^t[b c]^t][x y]^t for 이차방정식 ax^2+2bxy+cy^2+dx+ey+f=0
• 주축정리 이차형식은 변수변환으로 혼합항 xy 없는 식으로 표현 가능
• PCA 데이터 분산을 최대한 보존하면서 서로 직교하는 새로운 축을 찾아, 선형 연관성 없는 저차원 공간으로 변환하는 기법
[2일차] 벡터·정사영·최단거리, 선형연립방정식·행렬
• 정사영 p = projx y = (y·x/||x||²)x
• 최단거리 D = ||projn v|| = v·n/||n|| = |ax0 + by0 + cz0 + d| / sqrt(a^2 + b^2 + c^2)
• 선형연립방정식 해 구하기 ① Gauss 소거법: 첨가행렬 → REF ② Gauss-Jordan 소거법: 첨가행렬 → RREF
[3일차] 역행렬·행렬식·기저·차원, 최소제곱해·QR분해
• 가역 Ax=0 → x=0
• 역행렬 구하기 ① [A:I] -RREF→ [I:A^-1] ② A^-1 = (1/A)adjA
• 수반행렬 adjA = [Aij]^t, 여인자 Aij = i행과 j열을 제외한 행렬의 행렬식x(-1)^{i+j}
일차독립 det ≠ 0
• 해공간 영공간 {x|A x=0}
• span S S 벡터들 일차결합의 전체집합
basis ① 일차독립 ② span하면 V일 때 V의 기저
• 차원 V의 기저벡터개수
• Rank-Nullity 정리 mxn A에 대하여, rank(A) + nullity(A) = n, #leading variables + #free variables = #column
최소제곱해 선형연립방정식 Ax=b의 최소제곱해 x^ ⇔ 정규방정식 A^tAx=A^tb의 해 x^, x^ = (A^tA)^-1A^tb
• 조건: A가 full column rank
Gram-Schmidt 정규직교화법 임의의 기저 S로부터 정규직교기저를 구하는 방법
• y1 = x1, y2 = x2 - projW1 x2, y3 = x3 - projW2 x3 ... → zi = yi/||yi||
• projW1 x2 = (x2·y1/||y1||²)y1, projW2 x3 = (x3·y1/||y1||²)y1 + (x3·y2/||y2||²)y2, ...
QR분해 A가 full column rank일 때 A=QR
• Col(A)의 정규직교기저를 열로하는 Q 직교행렬, R = Q^tA인 상삼각행렬 R 가역행렬
• A -[Gram-Schmidt]→ Q -[R=Q^tA]→ R
• 최소제곱해 구하기 Ax=b ⇔ A^tAx=A^tb ⇔ Rx=Q^tb -[backward substituting]→ x=R^-1Q^tb
25’[HW 요약] 2주차 요약‘
[4일차] 선형변환, 행렬의 대각화
• 선형변환 ①T(u+v)=T(u)+T(v) ②T(ku)=kT(u)인 변환 T
• 모든 선형변환은 행렬변환이다.
• 표준행렬 A = [T(e1):...:T(en)]
핵 ker(T) = {v|T(v)=0} image가 0이 되는 pre-image 전체집합
치역 Im(T) = {T(v)|v} 모든 pre-image의 image 전체집합
• 단사 T(u)=T(v) → u=v, ker(T)={0}
• 전사 모든 w에 대하여 w=T(v)인 v가 존재, Im(T)=R^m
A에 대하여 Ax=λx를 만족하는 고유값 λ 고유벡터 λ에 대응하는 비공벡터 x
• 서로 다른 고유값에 대응하는 고유벡터들은 일차독립
닮음행렬 B=P^-1AP인 가역행렬 P 존재 → A와 B는 닮음, A~B
• (1)detA=detB (2)trA=trB (3)특성방정식 같음 (4)고유값 같음
직교행렬 A^tA=I인 A (1)행벡터들은 정규직교벡터 (2)열벡터들은 정규직교벡터 (3)A^-1=A^t, A는 가역 (4)||Ax||=||x||, 길이보존
직교닮음행렬 C=P^tAP인 직교행렬 P 존재 → A와 C는 직교닮음
대각화가능행렬 A와 대각선행렬이 닮음 ⇔ 대각선행렬 D=P^-1AP인 가역행렬 P 존재, diagonalizable A diagonalizing P
• 대각화가능 A ⇔ A는 n개의 모두 일차독립인 고유벡터를 가짐
• 이 고유벡터들 → P, A의 고유값을 주대각성분으로 하는 대각선행렬 → D
• A로 P와 D 구하기: (1)A의 고유벡터 p1,...,pn 구하기 (2)P=[p1,...,pn], D=diag(λ1,...,λn)
직교대각화가능행렬 A와 대각선행렬이 직교닮음 ⇔ A를 대각화하는 직교행렬 P 존재, orthogonally diagonalizable A orthogonally diagonalizing P
• 직교대각화가능 A ⇔ A가 대칭행렬 ⇔ A는 n개의 일차독립인 고유벡터를 가짐 &서로 다른 고유값에 대응하는 고유벡터들은 직교
• A로 P와 D 구하기: (1)A의 고유벡터 구하기 (2)서로 같은 고유값에 대응하는 고유벡터들 정규직교화 (3)나머지 고유벡터들 정규화 zi (4)직교행렬 P=[z1,...,zn], D=diag(λ1,...,λn)
고유값분해 A = PDP^-1 (대각화가능 A) = Σλiuiui^t (직교대각화가능 A)
• 고유값분해가능 A ⇔ 대각화가능 A (1)detA=Πλi (2)trA=Σλi (3)A^k=Pdiag(λ1^k,...,λn^k)P^-1 (4)A^-1=Pdiag(λ1^-1,...,λn^-1)P^-1
[5일차] 특이값분해, 이차형식
• SVD A=UΣV^t, A에 대한 singular value σ와 singular vector u, v로 분해 가능
• Σ A의 singular value σ를 성분으로 하는 대각선행렬, σ=sqrt(A^tA의 λ) mxn
• V A^tA를 직교대각화하는 직교행렬, A의 singular vector v를 열로하는 행렬 nxn
• U AA^t를 직교대각화하는 직교행렬, A의 singular vector u를 열로하는 행렬 mxm
• A → A^tA -[A^A로부터V,Σ구하기]→ 직교행렬 V, 대각선행렬 Σ -[u=(1/σ)Av]→ 직교행렬 U
Pseudo inverse A^† = VΣ'U^t = (A^tA)^-1A^t (A는 full column rank)
이차형식 q(x)=x^tAx=(a11)(x1)^2+...+(ann)(xn)^2+...+(a12)(x1)(x2)+...+(ann-1)(xn)(xn-1), A는 주대각선을 거듭제곱의 계수, 나머지를 혼합항의 계수의 반으로 하는 symmetric
• q(x)가 positive definite ⇔ q(x)>0 ⇔ A의 고유값이 모두 >0 ⇔ Δi>0
• q(x)가 negative definite ⇔ q(x)<0 ⇔ A의 고유값이 모두 <0 ⇔ (-1)^iΔi>0
• q(x)가 indefinite ⇔ x에 따라 q(x)>0 또는 q(x)<0 ⇔ A의 고유값이 >0과 <0 모두
• q(x)가 positive semidefinite ⇔ q(x)≥0 ⇔ A의 고유값이 모두 ≥0
• q(x)가 negative semidefinite ⇔ q(x)≤0 ⇔ A의 고유값이 모두 ≤0
• 주축정리 이차형식 q(x)=x^tAx는 A의 고유값으로 교차항 없는 식 (λ1)(x'1)^2+...+(λn)(x'n)^2으로 나타낼 수 있음.
33’[요약] 3주차 요약‘
[6일차] 극한·도함수, 미분응용, 적분
• 극한 '0<|x-a|<δ → |f(x)-b|<ε, 모든 ε>0'인 δ 존재 → b는 f(x)의 x→a 극한
연속 (1) 좌극한 (2) 우극한 (3) f(a) (4) 좌극한=우극한=f(a) → f(x)는 연속 at x=a
• 미분가능 f(x) at x=a ⇔ lim h→0 {f(a+h)-f(a)}/h 존재
• 미분계수 lim h→0 {f(a+h)-f(a)}/h = f'(a)
도함수 각 점 x에 그 점에서의 미분계수를 대응한 함수 f`(x)=lim h→0 {f(x+h)-f(x)}/h
f(x)를 미분한다 ⇔ f(x)의 도함수를 구한다
tangent line y=f`(a)(x-a)+f(a) normal line tangent line에 수직인 직선
최대최소값의 정리 f(x) 연속 [a,b] → f(x)의 최대값·최소값 존재, (1) 극값 또는 (2) 양 끝값이 최대값·최소값 후보
뉴턴 방법 함수의 근을 그래프와 도함수로 구하는 방법, a_{n+1} = a_{n} - f(a_{n})/f`(a_{n})
• 부정적분 F`(x)=f(x)인 F(x) 존재 → F(x)는 f(x)의 부정적분, ∫f(x)dx
f(x)를 적분한다 ⇔ f(x)의 부정적분을 구한다
f(x) 미분가능 [a,b] → f(x) 연속 [a,b] → f(x) 적분가능 [a,b]
정적분 ∫a,b f(x)dx
평균값 정리 f(x) 연속 [a,b] → ∫a,b f(x)dx=(b-a)f(ξ), a<ξ<b인 ξ 존재
미적분학 기본정리 f(x) 연속 [a,b], F`(x)=f(x) → ∫a,b f(x)dx=F(b)-F(a)
[7일차] 다변수함수, 편도함수·그래디언트, 함수의 극대·극소
• 외적a X b = |[ijk][a1 a2 a3][b1 b2 b3]|, 벡터
코시슈바르츠 부등식 |x·y| ≤ ∥x∥∥y∥, x·y = ∥x∥∥y∥cosθ
• 편도함수 f_x = lim h→0 {f(x+h, y)-f(x, y)}/h about x of f
(1)f_xy (2)f_yx (3) f_xy, f_yx 모두 연속 → f_xy = f_yx → Hessian ∇² 대칭행렬
방향도함수 Du f(a,b) = lim t→0 {f(a+tu1, b+tu2)-f(a, b)}/t at (a,b) about u of f
f(x,y) 미분가능 (a,b) → Du f(a,b) = ∇f(a,b)·u = ∥∇f(a,b)∥cosθ
(a,b)에서 ∇f(a,b)의 방향이 f가 가장 가파르게 증가하는 방향
(a,b)에서 -∇f(a,b)의 방향이 f가 가장 가파르게 감소하는 방향
• 그래디언트 f의 편도함수를 성분으로 하는 벡터 ∇f(a,b) = <f_x, f_y>
헤시안 f의 2계편도함수를 성분으로 하는 행렬 ∇²f(a,b) = [[f_xx f_xy][f_yx f_yy]]
• 임계점 ∇f(a,b)=0 인 점 (a,b) → (1) 극소·극대점 또는 (2) 안장점(극소·극대 모두 아닌 점)
임계점에서 다변수함수 극대극소판정법: 다변수함수의 Hessian 행렬 (Δ부호) 또는 (λ부호)로 판단
H가 positive definite → 임계점은 극소, H가 negative definite → 임계점은 극대, H가 indefinite → 임계점은 안장
정리 Comment: 일변수함수의 미분·적분을 복습하고 다변수함수의 편도함수·방향도함수를 배우고 편도함수들을 모아 놓은 그래디언트·헤시안을 배웠습니다. 또 임계점이 극소·극대인지 아니면 안장점인지를 Hessian 행렬의 definitiveness로 판단하는 극대극소판정법을 배웠습니다. 다음에 배울 경사기울기하강법의 선행지식으로 한 점에서 f의 값이 가장 가파르게 감소하는 방향이 그 점에서의 그래디언트의 음의 방향인 것을 배웠습니다.
42’[요약] 4주차 요약‘
[8일차] 경사하강법, 중적분
• 경사하강법 f(x)의 최소값을 음의 그래디언트를 반복하여 구하는 방법
• x{k+1} = x{k} + α{k}d{k}에서 find α{k}, d{k} until ∥d{k}∥ <tolerance ε
• x{k} → d{k}=-∇f(x{k}) ─[line search]→ α{k} → x{k+1} until ∥d{k}∥ <ε
• find d{k} <GDA: d{k}=-∇f(x{k})> <CGM: d{k}=-∇f(x{k})+β{k}d{k-1}> <Newton's: d{k}=-(∇²f(x{k}))^-1∇f(x{k})>
• find α{k} ①exact line search: min f(x{k}+αd{k})인 α ②inexact line search: (1)f(x{k}+αd{k})≤f(x{k})+c₁αd{k}^t∇f(x{k}) (2)d{k}^t∇f(x{k}+αd{k})≥c₂d{k}^t∇f(x{k}) 그리고 0<c₁<c₂<1인 α
중적분 ∬R f(x,y) dA ∬∫V f(x,y,z) dxdydz
• Fubini 정리 f(x,y) 연속 R → ∬R f(x,y) = ∫a,b∫c,d f(x,y) dydx = ∫c,d∫a,b f(x,y) dxdy : 적분순서 바꾸어도 같음
• Jacobian |∂(x,y)/∂(u,v)|=|[∂x/∂u ∂x/∂v][∂y/∂u ∂y/∂v]| of Φ(u,v)=(x(u,v),y(u,v)) : 변수변환에 쓰임
• 변수변환 Φ(u,v)=(x(u,v),y(u,v)) 전단사, Φ 편도함수 연속, Φ Jacobian ≠ 0 → ∬R f(x,y) dA = ∬S f(x(u,v),y(u,v))|J(Φ)| dudv
• 극좌표 변수변환 x=rcosθ, y=rsinθ, J(Φ)=r, ∬R f(x,y) dxdy = ∫α,β∫a,b f(rcosθ,rsinθ)r drdθ
정리 Comment: 처음 경사하강법을 접할 땐 매우 어려웠지만 정리를 하고 나서는 이해가 되었습니다. 중적분은 다음 강의에서 배울 통계에서 필수적으로 쓰임을 알게 되었습니다.
52’[5주차] [요약] 5주차 요약 <-- 특히 Poisson 분포가 무엇인지 알게 되었습니다.‘
[10일차] 통계학과 R, 순열·조합·확률
• 표본평균x= 1/n Σx{i}표본분산s² = 1/n-1 Σ (x{i} -x)²표본표준편차s = √s²
• 중위수표본에서 크기순으로 2등분하는 위치에 있는 수4분위수표본에서 크기순으로 4등분하는 위치에 있는 수 3개IQR4분위수에서 Q₃ - Q₁
• 순열순서있는 경우의 수, 집합에서 서로 다른 원소 n개로부터 k개를 순서대로·중복없이 고르는 경우의 수 nPk = n!/(n-k)!조합순서없는 경우의 수, 집합에서 서로 다른 원소 n개로부터 k개를 순서없이·중복없이 고르는 경우의 수 nCk = n!/k!(n-k)! = (n k)
[5주차] 18강 통계학과 R, 19강 순열 조합 확률 // 실습 및 질의
작성자 : 임성규(2015****08)작성일 : 8월 17일 오후 8:15조회수 : 28
- 통계학과 R
-도수분포표, 원도표, 막대도표 구현해보기.

-> 위의 실행 결과 창을 보면 pie(), barplot()을 이용해 구한 원도표와 막대도표를 dev.off()명령어로 시각적으로 표현하기위하여 사용하였지만 null device 로만 표시됩니다. 원인을 모르겠습니다. 원인을 아시는 분은 알려주시면 감사하겠습니다.

-> 첫번째 실습에서와 같이 dev.off() 명령어를 사용하면 null device라는 결과값이 나오면서 표현이 되지않습니다.

-> error가 납니다. 무엇이 문제인지 모르겠습니다. 원인을 아시는 분은 알려주시면 감사하겠습니다. mathlab.knou.ac.kr 에서 실행해 보아도 같은 error가 납니다.
정원철(2017****79)8월 18일 오전 10:51
S=Set([1,2,3,4,5,6])A = Set([2, 4, 6])B = Set([3, 6])AcapB = A.intersection(B)P_AcapB = AcapB.cardinality()/A.cardinality()P_AcapB>>> 1/3정상적으로 작동함을 확인했습니다 !!
이상구(LEE SANGGU)8월 18일 오후 2:00
Good^^
--------------------------------------------------------------------------------
열린문제 2 실습 및 질문
작성자 : 천가영(2020****17)작성일 : 8월 17일 오후 10:11
조회수 : 56
[ 열린문제 2] 아래 웹주소에서 찾은 연속확률변수 X (의 확률 밀도함수 f(x) 를 변형하여) 연속확률변수 X 의 기댓값과 분산, 표준편차를 위의 코드를 이용 (수정 사용) 하여 구하시오.
5. 금요일 아침 백화점 사장 김 신중씨는 당일 결재하여야 할 액면금액 10만원의 어음에 대한 자금이 확보되어 있지 않아 금일의 매출액으로 어음을 지급하려고 한다. 이 백화점에 방문한 고객 1인당 평균 구매액은 270원이고, 표준편차는 180원이다. 최근에 방문객 추세로 보아 오늘 400명의 고객이 방문할 것으로 예상된다.
-------
(출처 : 위키백과)
* 액면금액 :
액면금액(Par value)는 금융이나 회계적 개념으로 명시된 금액을 말한다. 액면가격, 액면가, 액면이라고도 한다.
예를 들어 100원짜리 동전은 액면이 100원이다. 주식에서 액면금액은 회사가 그 금액 이하로 팔지 않는다. 대한민국에서는 상법상 1주의 최저 액면금액은 100원이다.
* 어음 :
어음은 발행하는 사람이 미래의 일정한 금액을 일정한 시기와 장소에서 무조건 지급할 것을 약속하거나(약속어음) 또는 제3자에게 그 지급을 위탁하는(환어음) 유가증권이다.
------
5-1. 1인당 평균 구매액이 270원, 표준편차가 180원, 금일 방문객 400명일 때 (원래 문제)
![]()
![]()
총구매액의 기대값 108000, 분산 12960000
[질문]
,
인데 왜 총구매액의 분산은 32400*400을 한 값이 나오는지 궁금합니다. V(X)=32400, V(400X)=3600^2=32400*400 인데, 총구매액의 분산을 V(400X)로 볼 수 없는 것인가요?
![]()
금일 어음을 결재하지 못할 확률 0.0139

[질문2] 또한 R코드로 실습을 하였을 때 확률은 0.0131345 로 0.0139와는 다르게 나오는데 어떤 점에서 잘못된 것
인지 잘 모르겠습니다.
5-2. 표준편차가 250원일 때
X~N(270, 62500)
400X~N(10.8만, 2500만)
금일 어음을 결재하지 못할 확률
P(S=<10만) = 약 0.0548
표준편차가 높은 값을 가질 때, 어음을 결재하지 못할 확률이 조금 올라갔다.

5-3. 1인 평균 구매액이 400원으로 늘고, 금일 방문객 수가 270명으로 줄었을 때
X~N(400, 32400)
270X~N(10.8만, 8748000)
금일 어음을 결재하지 못할 확률
P(S=<10만) = 약 0.00342
구매자가 줄었지만 평균 구매액이 늘어 결재하지 못할 확률이 낮아졌다.

[질문2] 또한 R코드로 실습을 하였을 때 확률은 0.0131345 로 0.0139와는 다르게 나오는데 어떤 점에서 잘못된 것인지 잘 모르겠습니다.
정원철(2017****79)8월 18일 오전 10:29
질문2 - 코드 자체에 문제는 없어 보입니다.제 생각엔 문제푼 사람이 실수한 것 같습니다.(100000-108000)/3600 ≈ -2.22, P(Z < -2.22) = 0.5 - 0.4868 = 0.0132입니다.즉, 소수점 세번째 자리 이후의 오차를 고려했을 때 max 0.0132가 되어야 한다는 말이기 때문에 가영님의 답이 옳은 것 같습니다.
• 중복집합중복하는 원소가 있는 집합중복순열무한중복순열중복집합에서 중복도가 무한인 서로 다른 원소 n개로부터 k개를 순서대로·중복하여 고르는 경우의 수 n^k유한중복수열중복집합에서 중복도가 k{i}인 서로 다른 원소 n개로부터 k개를 순서대로·중복하여 고르는 경우의 수 k!/k{1}!...k{n}!중복조합중복집합에서 서로 다른 원소 n개로부터 k개를 순서없이·중복하여 고르는 경우의 수 nHk = (n+k-1 k)
표본공간전체 경우의 집합사건특정 경우의 집합확률임의의 한 경우가 사건에 포함되는 비율, 사건이 일어나는 비율조건부확률사건 A가 일어났을 때 사건 B의 확률 P(B|A) = P(A∩B)/P(A)베이즈정리P(A{i}|B) = P(A{i})P(B|A{i})/P(B) = P(A{i})P(B|A{i})/ΣP(A{i})P(B|A{i})
[11일차] 확률변수, 이산확률분포
• 확률변수표본공간의 모든 표본에 실수를 대응시켜 사건화하는 함수확률분포확률변수가 가지는 함수값에 그 값을 가질 확률을 대응시킨 함수
• 기대값확률변수 함수값의 분포평균 μ = E(X) = Σx{i}f(x{i}) = ∫xf(x)dx분산확률변수 함수값이 기대값을 기준으로 분포하는 정도를 나타낸 수 σ² = V(X) = Σ(x{i} -μ)²f(x{i}) = ∫(x - μ)²f(x)dx = E(X)² - μ²표준편차분산의 제곱근 σ = √V(X)
• E(aX+b) = aE(X)+b V(aX+b) = a²V(X)
표준화 확률변수확률변수 X에 그 기대값을 빼고 표준편차로 나눈 확률변수 (X - μ)/σ
• 평균이 0이고 분산이 1
Bernoulli 분포사건의 확률이 p인 사건이 일어나는 경우의 확률변수의 확률분포 B(1, p)
• X~B(1, p) → P(X=x) = p^x (1-p)^(1-x) E(X) = p V(X) = p(1-p)
Binomial 분포사건의 확률이 p인 사건이 n번 중 일어나는 경우의 확률변수의 확률분포 B(n, p)
• X~B(n, p) → P(X=x) = (n x) p^x (1-p)^(n-x) E(X) = np V(X) = np(1-p)
Poisson 분포단위시간에 평균 λ번 일어나는 시균등확률 사건이 일어나는 경우의 확률변수의 확률분포 P(λ)
• X~P(λ) → P(X=x) = e^-λ λ^x / x! E(X) = λ V(X) =λ
Comment:
순열과 조합으로 경우의 수를 셀 수 있고 베이즈정리를 알게 되었으며, 이산확률분포에 어떤 것이 있는지, 특히 Poisson 분포가 무엇인지 알게 되었습니다.
60’Final OK by SGLee [요약] 6주차 요약‘
[12일차] 연속확률분포, 공분산·상관계수
• 균등분포일정구간[a, b]에서만 확률을 갖고 그 확률이 일정한 확률변수의 확률분포 U(a, b)
• X ~ U(a, b) → f(x)=1/b-a E(X)=b+a/2 V(X)=(b-a)²/12
정규분포확률밀도함수가 f(x)=1/(√(2π)σ)e^(-(x-μ)²/2σ²)인 확률변수의 확률분포 N(μ, σ²)
• X ~ N(μ, σ²)→ f(x)=1/(√(2π)σ)e^(-(x-μ)²/2σ²) E(X)=μ V(X)=σ²
표준정규분포기대값이 0, 분산이 1인 정규분포 N(0, 1)
• Z ~ N(0, 1) → f(x)=1/√(2π)e^(-z²/2) E(Z)=0 V(Z)=1
• 확률변수 X가 정규분포를 따를 때 표준화 확률변수 (X-μ)/σ는 표준정규분포를 따른다.
• P(a≤X≤b) = P((a-μ)/σ≤Z≤(b-μ)/σ)
지수분포단위시간에 평균 λ번 일어나는 시균등확률 사건이 일어난 다음 일어날 때까지 걸리는 시간 확률변수의 확률분포 G(1, 1/λ)
• X ~ G(1, 1/λ) → f(x)=λe^(-λx) E(X)=1/λ V(X)=1/λ²
• 중심극한정리확률변수 Xi가 서로 독립이고 서로 같은 확률분포를 가지며 그 기대값이 μ이고 그 분산이 σ²일 때, 확률변수의 개수 n이 충분히 클 경우에 확률변수의 평균은 N(μ, σ²/n)을 따른다.
• 모집단으로부터 표본을 추출하는 경우의 확률변수 n개:크기 n의 확률표본확률표본의 평균 확률변수:표본평균
• 평균 μ이고 분산σ²인 모집단으로부터 확률표본을 추출하였을 때, 확률표본의 크기 n이 충븐히 클 경우에 표본평균은N(μ, σ²/n)을 따른다.
• 결합확률분포확률변수 X1,...,Xn이 가지는 함수값 x1,...,xn에 그 일어날 확률 P(X1=x1,...,Xn=xn)을 대응시킨 함수
• 주변확률분포결합확률분포에서 하나의 확률변수만의 확률분포
• 공분산Cov(X, Y) = σxy = E[(X-μx)(Y-μy)] = E(XY)-μxμy
• 상관계수Corr(X, Y) = ρ = σxy/σxσy
• 공분산행렬확률변수의 분산과 공분산으로 이루어진 행렬 Σ = Var[x] = [[σ1² ... σ1n] ... [σn1 ... σn²]]
[13일차] 주성분분석
• 주성분우선순 분산 최대·데이터 분포를 잘 따르는 서로 연관성 없도록 한 기존변수 일차결합 변수
• 적재계수주성분을 이루는 확률변수 일차결합 계수
• 주축주성분의 적재계수 벡터
• 데이터행렬각 표본을 행, 각 특성·확률변수를 열로하는 행렬
• 센터링된 행렬데이터행렬에서 각 성분에 해당 열평균을 뺀 행렬
• 데이터행렬의 공분산행렬Σ = 1/n-1 X^tX
• 주성분의 분산은 공분산행렬의 고유값, 주성분의 주축은 공분산행렬의 고유벡터
• 주성분화 데이터행렬각 표본을 행, 각 주성분을 열로하는 행렬 Z = XV
• X는 데이터행렬 V는 주성분의 주축을 열로하는 행렬
주성분score 주성분화 데이터행렬의 열벡터
• 차원축소데이터 분포를 따르면서 데이터 차원을 줄이는 것
• 주성분분석데이터 분포를 잘 따르는 주요 주성분으로 이루어진 데이터 공간으로 데이터를 변환하는 차원축소
• SVD를 이용하여 주성분분석이 간단해진다.
• X = USV^t → 주성분 분산 S1²/n-1 -[k개 선택]→ 축소된 주성분화 데이터행렬 UkSk
Comment: 그 동안 접했던 여러 개념들, 공분산행렬과 SVD을 이용하여 인공지능의 첫번째로 배운 기술, PCA를 배웠습니다.
62’[요약] 7주차 요약‘
[14일차] 신경망
• 신경망입력층에서 데이터를 받아 다음층의 가중치와 활성화함수를 적용해 다음층의 출력 구하기를 계속하여 출력층에 결과를 내는 모델
• 활성화함수신경망 각 층의 출력을 결정하는 함수
오차역전파법오차를 줄이기 위해 각 층에 역전파된 오차로 그 층의 가중치를 갱신하는 방법
• ① 이전층에 오차 역전파하기 ② 현재층의 가중치 갱신하기: 경사하강법 이용
Comment: 인공지능 두번째 기술, 신경망과 오차역전파법을 배웠습니다. 또한, 오차역전파법에서 가중치를 갱신할 때 그 동안 배웠던 경사하강법이 적용됨을 알게 되어 좋았습니다.
[Act10] (요약4 & 실습4) [1주차] 강의 내용 복습 요약 & 실습 (4) _ 2019311465 이승재
[1주차] 강의 내용 복습 요약 (4)
# 이해도가 전반적으로 떨어지기 때문에 복습이 요구됨을 느낌.
01 행벡터와 열벡터, 행공간과 열공간, 행계수와 열계수에 대해 간략히 배움
02 Rank-Nullity 정리에 대해 간략히 배움
03 최소 제곱해(오차의 최소), 정규방정식에 대해 간략히 배움
04 직교집합과 정규 직교집합, 직교기저와 정규직교기저에 대해 간략히 배움
05 Gram-Schmidt 정규직교화 과정에 대해 간략히 배움
06 QR 분해에 대해 간략히 배움
[1주차] 강의 내용 실습 (4)
강의 내용에 관한 실습 내용입니다.
{자체 예제 141.} 정수 범위에서 정의된 5*5 무작위 행렬 A의 Rank와 Nullity를 구하시오.
[Sage 코드 및 답안]

{자체 예제 142.} X1 = (3, 4, 5, 0), X2 = (-1, -3, 2, 1), X3 = (-2, 0, 3, 7), X4 = (-2, 1, 3, 3) 에 대하여, Gram-Schmidt 정규직교화 과정을 이용하여 R^(4)의 기저 A = {X1, X2, X3, X4}로부터 R^(4)의 정규직교기저 B = {B1, B2, B3, B4}를 구하시오.
[Sage 코드 및 답안]

[Act11] (댓글1) [Final OK by TA] Finalized by 한수현, Q by 김다은 (1강 질문 -1), 답변 by 한수현, 나종진
[Final OK by TA] Finalized by 한수현, Q by 김다은 (1강 질문 -1), 답변 by 한수현, 나종진
(제목 적는 법이 아직 헷갈리는데, 제목 양식이 틀렸다면 알려주세요ㅠ) <--- 이 모델로 하시면 충분합니다.

1.

위의 이미지에서 ||x|| 는 원점에서 점 P에 이르는 거리로 정의된다고 나와있습니다.
그러므로 노름과 거리는 실수공간에서는 차이가 없다고 보면 될 것 같습니다.
그러나 거리 개념의 일반화인 norm 개념 은 일반 벡터공간에서도 사용되는 더 일반화 된 개념입니다.
2. 실수 크기, 노름 은 |x|
벡터의 크기 노름 은 || x ||
행렬의 크기 노름은 ||| A ||| 과 같이 구분하여 개념을 일반화 합니다.
||x|| 를 구하기 위해 제곱을 한 채 루트를 씌우는 이유는 벡터공간 안의 점과 점 사이의 거리 공식이 어떻게 구해졌는지를 보면 될 것 같습니다.

(이미지 출처: 네이버 지식백과)
2차원을 기준으로 먼저 말씀드리면 거리 공식은 피타고라스 정리를 이용합니다.
위 이미지에서 점 A (x1, y1), B (x2, y2)라 해서 선분 AB를 빗변으로 하고 다른 변 두 개는 각각 x축, y축과 평행한 직각삼각형을 상상해보면,
밑변의 길이는 (x2-x1), 높이의 길이는 (y2-y1)이 될 것입니다.
그래서 피타고라스 정리에 의해 d^2 = (x2-x1)^2 + (y2-y1)^2. 여기서 양변에 루트를 씌워서 구해진 것이 위의 이미지와 같은 식입니다.
노름에 대한 설명에서는 벡터공간이 R^n이기 때문에

![]()
이와 같이 나온다고 보면 될 것 같습니다.
3. 은 나종진 님이 미리 아래 답을 주셨습니다.

Comment. 이상 간단히 질문에 대한 답을 마칩니다.
이승재(2019****65)7월 25일 오전 4:06
가볍게 생각하고 넘어갔던 개념을 다시한번 짚어주신점에 감사드립니다. 노름에 대한 개념을 쉽게 그리고 자세히 설명 해 주셔서 개념 이해의 측면에 있어, 많이 도움 되었습니다.\\
최소제곱문제와 QR분해 실습
작성자 : 한수현(2019****61)작성일 : 7월 19일 오전 2:52
조회수 : 12
최소제곱문제를 QR분해를 이용하여 푸는 실습입니다.


최소제곱문제는 선형연립방정식 Ax=b의 해가 없을 때, 오차 ||Ax-b||을 최소화하는 근사해를 찾는 문제이다.
그러므로 위 사진에서의 Ax=b는 해가 없지만, 오차를 최소화하는 근사해는 구할 수 있다.
![]()
QR 분해를 최소제곱문제에 적용시키면, 다음을 이용하여 근사해를 구할 수 있다.
![]()
먼저 위의 Ax=b에 QR 분해를 하면,


QR분해는 행렬 A가 full-column rank일 때 가능하므로 A가 full-column rank인지 확인하는 과정이 필요하다.
여기서 A가 full-column rank이므로 A는 QR분해를 이용해서 최소제곱문제를 풀 수 있다.


이러한 과정으로 QR분해로 최소제곱문제를 풀 수 있다.

실습을 통해 QR분해를 최소제곱문제에 어떻게 적용시키는지와 그 적용시키는 과정에서 확인 해야할 점(행렬 A가 full-column rank인지)이 무엇인지 알 수 있었습니다.
-----
이상구(LEE SANGGU)7월 19일 오전 10:29
한수현 씨, 아주 잘했습니다. 실습을 통해 QR분해를 최소제곱문제에 어떻게 적용시키는지와 그 적용시키는 과정에서 확인 해야할 부분 (행렬 A가 full-column rank인지)이 무엇인지 알 수 있었다니. 아주 잘했습니다. 이제 주어진 행렬의 SVD 와 이차형식 하시고 ...그리고 2장 미적 (GDM 방법) GDM(경사하강법) http://matrix.skku.ac.kr/math4ai/gradient_descent/ 으로 바로 가셔도 됩니다.
[Final OK by SGLee] Finalized by 나종진, 답변 by 유가이올렉산드르 , 직교대각화가능할 필요충분조건(교재 p.125) 질문 by 나종진
작성자 : 나종진(2017****17)작성일 : 7월 23일 오후 6:35
조회수 : 42
[Final OK by SGLee] Finalized by 나종진, 답변 by 유가이올렉산드르 , 직교대각화가능할 필요충분조건(교재 p.125) 질문 by 나종진
직교대각화가능할 필요충분조건 질문 (교재 p.125)
예제 5번의 풀이방법을 보고 sage를 통해 예제 4번에도 적용하려 합니다.

예제 5번의 풀이에서는 중복되는 고윳값이 있을 경우
1. 중복되는 고유벡터의 정규직교화과정을 통해 직교벡터를 구한 뒤
2. 나머지 고유벡터와 직교벡터를 합쳐 새로운 행렬을 만든 뒤
3. 새로운 행렬에 직교화 과정을 통해 대각행렬을 구해냅니다.
예제 4. 질문입니다. 예제 4번 문제는 이러합니다.

행렬 A의 고윳값을 eigenvectors_right()로 구하면
A=matrix([[0,3,3],[3,0,3],[3,3,0]])
print(A.eigenvectors_right())
실행값
[(6, [(1, 1, 1)], 1), (-3, [(1, 0, -1),(0, 1, -1)], 2)]
이러한 값이 나오게됩니다.
그러면 고윳값은 6, -3이고
고윳값 –3에 대응하는 교유벡터 [(1,0,-1)(0,1,-1)]이 나오게됩니다.
예제 5번의 1번 과정으로
x1=vector([1,0,-1])
x2=vector([0,1,-1])
x3=vector([1,1,1])
B=matrix([x1,x2])
[G, mu] = B.gram_schmidt()
print(G)
실행값
[ 1 0 -1]
[-1/2 1 –1/2]
이러한 값이 나오게 됩니다.
이를 y1, y2로 바꾸어 계산하면
마지막 총 결과값이
A=matrix([[0,3,3],[3,0,3],[3,3,0]])
print(A.eigenvectors_right())
x1=vector([1,0,-1])
x2=vector([0,1,-1])
x3=vector([1,1,1])
B=matrix([x1,x2])
[G, mu] = B.gram_schmidt()
print(G)
y1=vector([1,0,-1])
y2=vector([-1/2,1,-1/2])
C = column_matrix([y1,y2,x3])
P = column_matrix([C.row(i) / C.row(i).norm() for i in range(0, 3)])
print("P =")
print(P)
print()
print(P.transpose()*A*P)
실행값
[(6, [(1, 1, 1)], 1), (-3, [(1, 0, -1),(0, 1, -1)], 2)]
[ 1 0 -1]
[-1/2 1 -1/2]
P =
[ 0.6666666666666666 0.0 -0.6666666666666666]
[-0.3333333333333333 0.7071067811865475 -0.3333333333333333]
[ 0.6666666666666666 0.7071067811865475 0.6666666666666666]
[ 0.0 3.5355339059327373 -1.3333333333333335]
[ 3.5355339059327373 2.9999999999999996 -2.1213203435596424]
[-1.3333333333333335 –2.1213203435596424 -2.6666666666666665]
이렇게 나옵니다.
예제의 답과 다르게 나와 어디서 잘못되었는지 궁금합니다.
sage를 통해 어떻게 구하는지 궁금합니다.
Final
A=matrix([[0,3,3],[3,0,3],[3,3,0]])
print(A.eigenvectors_right())
x1=vector([1,0,-1])
x2=vector([0,1,-1])
x3=vector([1,1,1])
B=matrix([x1,x2])
[G,mu]=B.gram_schmidt()
print(G)
y1=vector([1,0,-1])
y2=vector([-1/2,1,-1/2])
C=column_matrix([y1,y2,x3])
P=column_matrix([C.column(i)/C.column(i).norm()foriinrange(0,3)])
print("P=")
print(P)
print()
print(P.transpose()*A*P)
실행값
[(6, [(1, 1, 1)], 1), (-3, [(1, 0, -1),(0, 1, -1)], 2)]
[ 1 0 -1]
[-1/2 1 -1/2]
P =
[ 1/2*sqrt(2) -1/3*sqrt(3/2) 1/3*sqrt(3)]
[ 0 2/3*sqrt(3/2) 1/3*sqrt(3)]
[ -1/2*sqrt(2) -1/3*sqrt(3/2) 1/3*sqrt(3)]
()
[-3 0 0]
[ 0 -3 0]
[ 0 0 6]
교재와 같은 값이 나왔다.
또한
C = matrix([y1,y2,x3])
P=matrix([C.row(i)/C.row(i).norm()foriinrange(0,3)])
print("P=")
print(P.transpose())
이렇게 받아도 같은 결과가 나온다.
한쪽에서는 column으로 계산하고 그 다음에는 row 로 계산해서 다른 결과값이 나왔었다.
학우분과 소통하면서 문제를 푸니 내가 보지 못한 부분을 캐치해주셔서 너무 고마웠다.
[Act12] (댓글2) [Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준






[Act13] (요약5 & 실습5 & 질의3) [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재
[2주차] 강의 내용 복습 요약 (1)
01 변환 (행렬변환, 선형변환)에 대해 간략히 배움
02 표준행렬에 대해 간략히 배움
03 핵, 단사, 전사, 전단사 그리고 동형사상에 대해 간략히 배움
04 선형변환이 단사가 되기 위한 필요충분 조건으로의 ker T = {0}에 대해 간략히 배움
05 고윳값과 고유벡터, 닮은 행렬에 대해 간략히 배움
06 대각화 가능한 행렬과 대각화의 필요충분조건인 차수와 동일한 개수의 일차독립인 고유벡터 소지에 대해 간략히 배움
[2주차] 강의 내용 실습 (1)
강의 내용에 관한 실습 내용입니다.
{자체 예제 211.} 선형변환 T: R^(4) -> R^(4)를 T(w, x, y, z) = (3w+x-z, -y+2z, x-y+z, -2w+3x)로 정의할 때, T의 kernel을 구하고, T가 단사인지 확인하시오.
[Sage 코드 및 답안]

{자체 예제 212.} 정수 범위에서 무작위로 생성된 4*4 행렬 A에 대하여, 고윳값과 고유 벡터를 구하시오.
[Sage 코드 및 답안]

{자체 예제 213.} 정수 범위에서 무작위로 생성된 5*5 행렬 A에 대하여, 대각화가능한지 확인하시오.
[Sage 코드 및 답안]

[2주차] 주요 질의 사항 (1)
01 닮은 행렬 설명 중, 삼각행렬의 특성방정식에 대하여 언급하신 부분이 있는데, 특성방정식에 대해서 자세한 설명을 찾기 힘들어, 설명을 해주시길 부탁드립니다.
1) 특성 방정식이란 무엇인지 (특별히 삼각행렬의 특성방정식에 대해)
2) 특성 방정식을 구하는 방법 (간략히)
02 자체 예제 213번의 결과가 오류로 인하여 나오지 않는데, 어떤 오류고 어떻게 해야 정상적으로 작동되는지 아시는 분 계신다면 알려주길 부탁드립니다.
[Act14] (요약6 & 실습6) [2주차] 강의 내용 복습 요약 & 실습 (2) _ 2019311465 이승재
[2주차] 강의 내용 복습 요약 (2)
01 직교행렬의 정의와 직교행렬의 여러 정리들에 대해 간략히 배움
02 직교 대각화란 무엇인지, 직교 대각화의 필요충분조건인 A가 대칭행렬 일 것에 대해 간략히 배움
03 고윳값 분해에 대해 간략히 배움 (복습 요구됨)
04 특이 값 분해에 대해 간략히 배움 (복습 요구됨)
05 일반화된 역행렬과 관련된 내용에 대해 간략히 배움
06 일반화된 역행렬을 이용한 최소제곱해 문제에 대해 간략히 배움
07 이차 곡선 방정식의 행렬적 표현, 원뿔곡선에 대해 간략히 배움
08 R^(2 / n)상의 이차형식에 대해 간략히 배움
09 R^(2)의 주축정리에 대해 간략히 배움
10 음/양의 정부호와 부정부호에 대해 간략히 배움
[2주차] 강의 내용 실습 (2)
강의 내용에 관한 실습 내용입니다.
{교재 예제 5.} (자체적으로 예제를 제작하려 했으나, 중간 과정에서 나오는 숫자가 복잡하여 교제 예제로 대체합니다.)

[Sage 코드 및 답안]
먼저, 고윳 값과 고유 벡터를 구해줍니다.

다음, 고유벡터 x3와 x4가 직교가 아닐수 있으므로, Gram-Schmidt 정규직교화 과정을 통해 직교기저를 찾아줍니다.

앞서 찾은 것들을 바탕으로, 답을 찾을 수 있습니다.

{교재 예제 1.}

[Sage 코드 및 답안]
우선 고유벡터를 구합니다.

다음, 구한 고유벡터를 토대로 답을 구합니다.

{자체 예제 223.} 이차 형식 q(x, y, z) = 이 양의 정부호, 음의 정부호, 부정부호 중 어떤 것에 해당하는지 보이시오.
[Sage 코드 및 답안]

실행 결과를 토대로 본 결과, 주어진 이차형식은 부정부호에 속합니다.
[Act15] (정리3 & 댓글3) Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재
Q.
01 닮은 행렬 설명 중, 삼각행렬의 특성방정식에 대하여 언급하신 부분이 있는데, 특성방정식에 대해서 자세한 설명을 찾기 힘들어, 설명을 해주시길 부탁드립니다.
1) 특성 방정식이란 무엇인지 (특별히 삼각행렬의 특성방정식에 대해)
2) 특성 방정식을 구하는 방법 (간략히)
A. (by 김진웅)
특성방정식은 고유값과 관련이 있습니다.

Q.
02 자체 예제 213번의 결과가 오류로 인하여 나오지 않는데, 어떤 오류고 어떻게 해야 정상적으로 작동되는지 아시는 분 계신다면 알려주길 부탁드립니다.
A. (by 김진웅, SGLee)
A=random_matrix(ZZ,5,5)
print(A.is_diagonalizable(QQbar))
하시면 될 겁니다.

Comment (by 이승재)
오류에 대해 정상적으로 작동할 수 있게 알려주신 분들 모두 감사드립니다. :) 덕분에 오류 나지 않고 정상 작동한것을 확인했습니다.
특성방정식에 대한 추가자료를 보면서 어느정도 이해가 갔습니다. 자료 올려주신 것에 감사드립니다.
(추가 댓글 내용)
이상구(LEE SANGGU)7월 25일 오전 6:40
삼각행렬의 특성방정식 추가 자료 입니다. https://m.blog.naver.com/PostView.nhn?blogId=ldj1725&logNo=220262866094&proxyReferer=https:%2F%2Fwww.google.com%2F
실습(7개) (중간 4개 기말 3개)
13‘[HW 실습] 1주차 실습’
23‘[HW 실습] 2주차 실습’
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘
45’[실습] 4주차 실습‘
49’포아송분포와 베르누이분포 관계 실습 <--- Practice in http://matrix.skku.ac.kr/KOFAC/ <--결과 사진 수정했습니다’
53’[5주차] [실습] 5주차 실습 <--- R언어가 제공하는 시각화 이미지 코드, 통계에 필요한 함수 코드는 편리했습니다.‘
64’[6주차] 6주차 실습‘
13‘[HW 실습] 1주차 실습’
목차
#벡터 정의
#합, 차, 스칼라배
#norm, 거리, 내적
#정사영, 벡터성분, 점-면 거리
#행렬 정의
#첨가행렬, RREF, Gauss-Jordan 소거법(해-소거법), 해-함수
#행렬의 덧셈, 스칼라배, 곱셈
#전치행렬, 가역성(false-negative 있음), 역행렬-함수
#기본행연산, 역행렬-RREF, 해-역행렬
#대각선행렬, 단위행렬, 영행렬, 대칭행렬, 반대칭행렬
#치환, 행렬식, 수반행렬, 역행렬-수반행렬
#일차독립-행렬식, 해공간, rank, nullity
#최소제곱해, Gram-Schmidt 정규직교화법, QR분해, 최소제곱해-QR분해
#벡터 정의
a=vector([1,2,3,4,5,6,7])
b=random_vector(7, x=-10, y=10)
c=random_vector(ZZ, 5)
print("a=", a)
print("b=", b)
print("c=", c)
#합, 차, 스칼라배
print("a+b=", a+b)
print("a-b=", a-b)
k=2
print("k*a=", k*a)
#norm, 거리, 내적
print("||a||", a.norm())
print("distance a,b:", (a-b).norm())
print("inner product a,b=", a.inner_product(b))
#정사영, 벡터성분, 점-면 거리
p=a.inner_product(b)/b.inner_product(b)*b
w=a-p
print("projection of a onto b=", p)
print("vector component of a onto b=", w)
n=vector([1,5,3,4,2,4,0])
d=2
D=abs(a.inner_product(b)+d)/n.norm()
print("distance a,n^perp=", D)
#행렬 정의
A=Matrix([[1,2,3,5,3],[4,5,6,0,1],[7,8,9,2,3],[0,2,3,1,2],[1,3,0,0,2]])
B=Matrix(5, 5, [0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12])
C=random_matrix(ZZ, 7, 7, x=-10, y=10)
print("A=")
print(A)
print("B=")
print(B)
print("C=")
print(C)
#첨가행렬, RREF, Gauss-Jordan 소거법(해-소거법), 해-함수
print("[C:b]=")
print(C.augment(b))
print("A's RREF=")
print(A.rref())
print("[A:c]=")
print(A.augment(c))
print("[A:c]'s RREF=")
print(A.augment(c).rref())
print("Ax=c's solution=", A.solve_right(c))
#행렬의 덧셈, 스칼라배, 곱셈
print("A+B=")
print(A+B)
k=4
print("k*A=")
print(k*A)
print("A*B=")
print(A*B)
#전치행렬, 가역성(false-negative 있음), 역행렬-함수
print("B^t=")
print(B.transpose())
print("A is invertible?", A.is_invertible())
print("A^-1=")
print(A.inverse())
#기본행연산, 역행렬-RREF, 해-역행렬
E1=elementary_matrix(7, row1=1, row2=4)
E2=elementary_matrix(7, row1=2, scale=-3)
E3=elementary_matrix(7, row1=0, row2=6, scale=10)
print("E1=")
print(E1)
print("E2=")
print(E2)
print("E3=")
print(E3)
I=identity_matrix(5)
print("[A:I]'s RREF=")
print(A.augment(I).rref())
print("A^-1=")
print(A.augment(I).rref().submatrix(0,5,5,5))
print("Ax=c's solution:", A.inverse()*c)
#대각선행렬, 단위행렬, 영행렬, 대칭행렬, 반대칭행렬
D = diagonal_matrix([-5,-3,-1,1,3,5,7])
I = identity_matrix(7)
O = matrix(7, 7, 0)
print("D=")
print(D)
print("I=")
print(I)
print("O=")
print(O)
S=matrix([[1,2,3,4],[2,5,6,7],[3,6,8,9],[4,7,9,10]])
K=matrix([[0,-1,-2,-3],[1,0,-4,-5],[2,4,0,-6],[3,5,6,0]])
print("S is symmetric?", bool(S==S.transpose()))
print("K is skew-symmetric?", bool(K==-K.transpose()))
#치환, 행렬식, 수반행렬, 역행렬-수반행렬
print("positions where inversion occured:", Permutation([3,1,2,4,7,5,6]).inversions())
print("number of inversions:", Permutation([3,1,2,4,7,5,6]).number_of_inversions())
print("even permutation?:", Permutation([3,1,2,4,7,5,6]).is_even())
print("|A|=", A.det())
adjA=A.adjugate()
print("adjA=")
print(adjA)
print("A^-1=")
print((1/A.det())*A.adjugate())
#일차독립-행렬식, 해공간, rank, nullity
list=[]
for i in range(7):
list.append(random_vector(7, x=-10, y=10))
V=column_matrix(list)
print("V=")
print(V)
print("det V of list=", V.det())
P=matrix([[1,1,1,1],[2,2,2,2],[1,2,3,5],[0,0,0,0],[1,2,4,7]])
print("Null(P)=")
print(P.right_kernel())
print("rank(P)=", P.rank())
print("nullity(P)=", P.right_nullity())
#최소제곱해, Gram-Schmidt 정규직교화법, QR분해, 최소제곱해-QR분해
D=matrix([[1,0],[1,2],[1,4],[1,6],[1,7]])
b=vector([1,2,4,6,6])
print("Dx=b`s LSS=", (D.transpose()*D).inverse()*D.transpose()*b)
[G, mu]=A.gram_schmidt()
N=matrix([G.row(i)/G.row(i).norm() for i in range(0, G.nrows())])
print("o.n basis of A=")
print(N)
def gs_orth(A):
m, n = A.nrows(), A.ncols()
r = A.rank()
if m <n:
raise ValueError("The number of rows must be larger than the number of columns.")
elif r <n:
raise ValueError("The matrix is not full column rank.")
[G, mu] = A.transpose().gram_schmidt()
Q1 = matrix([G.row(i) / G.row(i).norm() for i in range(0, n)])
R1 = Q1*A
Q = simplify(Q1.transpose())
R = simplify(R1)
return Q, R
Q, R = gs_orth(A)
print("Q =")
print(Q)
print("R =")
print(R)
print("Q*R =")
print(Q*R)
print("Ax=c`s LLS=", R.solve_right(Q.transpose()*c))
23‘[HW 실습] 2주차 실습’
#함수 정의, 선형변환 정의, 표준행렬-단위백터, 표준행렬-명령어, image 구하기-선형변환, image 구하기-표준행렬
#kernel 구하기, 치역 구하기, 단사 확인, 전사 확인
#고유값, 고유벡터
#대각화가능, 대각화하는행렬, 대각화한 대각선행렬
#직교대각화가능, 직교대각화하는행렬, 직교대각화한 대각선행렬
#SVD
#Pseudo Inverse, 최소제곱해-Pseudo Inverse
#선행주소행렬식
#함수 정의, 선형변환 정의, 표준행렬-단위백터, 표준행렬-명령어, image 구하기-선형변환, image 구하기-표준행렬
var('a, b, c, d, e, f, g')
h(a, b, c, d, e, f, g) = [f + g,\
a - b + c - d + e - f + g,\
a + c + e + 2*d + 2*f + 2*g,\
b - c + 3*d - 3*e + 5*f -5*g,\
-2*a + -3*b,\
3*c + 2*d]
print(h)
print()
T = linear_transformation(QQ^7, QQ^6, h)
print(T)
print()
e1 = vector([1, 0, 0, 0, 0, 0, 0])
e2 = vector([0, 1, 0, 0, 0, 0, 0])
e3 = vector([0, 0, 1, 0, 0, 0, 0])
e4 = vector([0, 0, 0, 1, 0, 0, 0])
e5 = vector([0, 0, 0, 0, 1, 0, 0])
e6 = vector([0, 0, 0, 0, 0, 1, 0])
e7 = vector([0, 0, 0, 0, 0, 0, 1])
A = column_matrix([T(e1), T(e2), T(e3), T(e4), T(e5), T(e6), T(e7)])
print(A)
print()
A = T.matrix(side = 'right')
print(A)
print()
x0 = random_vector(7)
print("x0=", x0)
print("T(x0)=", T(x0))
print("A*x0=", A*x0)
print("=====")
#kernel 구하기, 치역 구하기, 단사 확인, 전사 확인
K = T.kernel()
print(K)
print()
I = T.image()
print(I)
print()
print("A is injective?", T.is_injective())
print("A is surjective?", T.is_surjective())
print("=====")
#고유값, 고유벡터
A = matrix(QQ, [[1, 1, 4], [0, -4, 0], [-5, -1, -8]])
print("A=")
print(A)
print("Eigenvalues of A (%d)="%len(A.eigenvalues()), A.eigenvalues())
print("Eigenvectors of A =")
print(A.eigenvectors_right())
print("=====")
#대각화가능, 대각화하는행렬, 대각화한 대각선행렬
print("A is diagonalizable?", A.is_diagonalizable(QQbar))
D, P = A.eigenmatrix_right()
print("Diagonalizing P")
print(P)
print("Diagonalized Diagonal D")
print(D)
print("A=PDP^-1:")
print(P*D*P^-1)
print("=====")
#직교대각화가능, 직교대각화하는행렬, 직교대각화한 대각선행렬
A = matrix([[2, 1, 1, 0], [1, 2, 1, 0], [1, 1, 2, 0], [0, 0, 0, 1]])
print("A=")
print(A)
print("A is orthogonally diagonalizable?", A.is_symmetric())
D, P = A.eigenmatrix_right()
P = P.transpose().gram_schmidt()[0]
P = matrix([P.row(i) / P.row(i).norm() for i in range(0, P.nrows())]).transpose()
print("Orthogonally diagonalizing P=")
print(P)
print()
print("Orthogonally diagonalized diagonal D=")
print(D)
print("A=PDP^t:")
print(P*D*P.transpose())
print("=====")
#SVD
A = matrix([[0, 1], [1, 1], [1, 0]])
print("A=")
print(A)
print()
transposed = False
if A.nrows() >A.ncols():
A = A.transpose()
transposed = True
B = A.transpose()*A
eig = B.eigenvalues()
sv = [sqrt(i) for i in eig if i != 0]
S = diagonal_matrix(sv)
if S.nrows() <A.nrows():
Z = zero_matrix(A.nrows()-S.nrows(), S.ncols())
S = block_matrix([[S], [Z]], subdivide=False)
if S.ncols() <A.ncols():
Z = zero_matrix(S.nrows(), A.ncols()-S.ncols())
S = block_matrix([S, Z], nrows=1, ncols=2, subdivide=False)
if transposed == True:
S = S.transpose()
print("S=")
print(S)
print()
V_ = B.eigenmatrix_right()[1]
#V_ = gram_schmidt()[0] #When not orthogonal (check only eigenvectors for the same eigenvalue
V_ = matrix([V_.column(i) / V_.column(i).norm() for i in range(0, V_.ncols())]).transpose()
U_ = matrix([A*V_.column(j)/sv[j] for j in range(0, len(sv))]).transpose()
if transposed == True:
V = simplify(U_)
U = simplify(V_)
else:
V = simplify(V_)
U = simplify(U_)
print("V=")
print(V)
print("U=")
print(U)
print("A=USV^t:")
print((U*S*V.transpose()))
print()
print("=====")
#Pseudo Inverse, 최소제곱해-Pseudo Inverse
A = matrix([[1, 2, 3], [0, 1, 0], [2, 3, 10], [3, 0, 0]])
print("A=")
print(A)
print()
print("Psuedo Inverse of A=")
print((A.transpose()*A).inverse()*A.transpose())
#출처 http://matrix.skku.ac.kr/math4ai/part1/
x1 = vector([1 for i in range(105)])
x2 = vector([3.45, 2.78, 2.52, 3.67, 3.24, 2.1, 2.82, 2.36, 2.42, 3.51, 3.48, 2.14,
2.59, 3.46, 3.51, 3.68, 3.91, 3.72, 2.15, 2.48, 3.09, 2.71, 2.46, 3.32,
3.61, 3.82, 2.64, 2.19, 3.34, 3.48, 3.56, 3.81, 3.92, 4, 2.52, 2.71,
3.15, 3.22, 2.29, 2.03, 3.14, 3.52, 2.91, 2.83, 2.65, 2.41, 2.54, 2.66,
3.21, 3.34, 3.68, 2.84, 2.74, 2.71, 2.24, 2.48, 3.14, 2.83, 3.44, 2.89,
2.67, 3.24, 3.29, 3.87, 3.94, 3.42, 3.52, 2.24, 3.29, 3.41, 3.56, 3.61,
3.28, 3.21, 3.48, 3.62, 2.92, 2.81, 3.11, 3.28, 2.7, 2.62, 3.72, 3.42,
3.51, 3.28, 3.42, 3.9, 3.12, 2.83, 2.09, 3.17, 3.28, 3.02, 3.42, 3.06,
2.76, 3.19, 2.23, 2.48, 3.76, 3.49, 3.07, 2.19, 3.46])
A = column_matrix([x1, x2])
b = vector([3.52, 2.91, 2.4, 3.47, 3.47, 2.37, 2.4, 2.24, 3.02, 3.32, 3.59, 2.54,
3.19, 3.71, 3.58, 3.4, 3.73, 3.49, 2.25, 2.37, 3.29, 3.19, 3.28, 3.37,
3.61, 3.81, 2.4, 2.21, 3.58, 3.51, 3.62, 3.6, 3.65, 3.76, 2.27, 2.35,
3.17, 3.47, 3, 2.74, 3.37, 3.54, 3.28, 3.39, 3.28, 3.19, 2.52, 3.08,
3.01, 3.42, 3.6, 2.4, 2.83, 2.38, 3.21, 2.24, 3.4, 3.07, 3.52, 3.47,
3.08, 3.38, 3.41, 3.64, 3.71, 3.01, 3.37, 2.34, 3.29, 3.4, 3.38, 3.28,
3.31, 3.42, 3.39, 3.51, 3.17, 3.2, 3.41, 3.29, 3.17, 3.12, 3.71, 3.5,
3.34, 3.48, 3.44, 3.59, 3.28, 3, 3.42, 3.41, 3.49, 3.28, 3.17, 3.24,
2.34, 3.28, 2.29, 2.08, 3.64, 3.42, 3.25, 2.76, 3.41])
c, d = n((A.transpose()*A).inverse()*A.transpose()*b, digits = 5)
print(c, d)
p1 = point([(x2[i], b[i]) for i in range(105)])
p2 = plot(c + d*x, (x, 2, 4), color = 'red')
(p1+p2).show()
print("=====")
#선행주소행렬식
A = random_matrix(ZZ, 5, 5)
print("A=")
print(A)
print()
for i in range(1, 6):
principal_minor = A.submatrix(0, 0, i, i).det()
print(i, "th principal minor= ", principal_minor)
Comment
실습하면서 SVD를 구현하는 것이 꽤나 어렵다는 것을 느꼈습니다.
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘
##함수 정의, 함수 그리기, 함수 분리 그리기
##극한·좌극한·우극한 구하기, 도함수 구하기, 접선의 방정식 구하기, 최대값·최소값 구하기, 적분
##평면 그리기, 벡터 그리기, 내적·외적·사잇각 구하기
##벡터함수 정의, 벡터함수 그리기
##벡터도함수 구하기, 위치벡터·접선벡터 그리기, 곡선 길이 구하기
##편도함수 구하기, 2계편도함수 구하기, 연쇄법칙
##그래디언트·방향도함수·방향미분계수 구하기, 임계점 구하기, 극값 구하기-고유값·소행렬식
##함수 정의, 함수 그리기, 함수 분리 그리기
#함수 정의
var('x')
h=abs(x)^sqrt(2)
f1(x)=-abs(x-3)
f2(x)=abs(x-3)
#함수 그리기
var('x')
h=abs(x)^sqrt(2)
A = plot(h, x, -3, 3, linestyle="--", color='green')
B = plot(1-e^(-x)/e^x+1, x, -3, 3)
show(A + B, ymax=10, ymin=-10)
print()
#함수 분리 그리기
var('x')
f1(x)=-abs(x-3)
f2(x)=abs(x-3)
plot(piecewise([[(-3, 0), f1], [(0, 3), f2]]), (x, -3, 3)).show()
print("=====")
##극한·좌극한·우극한 구하기, 도함수 구하기, 접선의 방정식 구하기, 최대값·최소값 구하기, 적분
#극한·좌극한·우극한 구하기
var('x')
g(x)= (x/abs(x))*ln(abs(x))/(e^x+1)
print("limit of g(x)=", limit(g(x), x=0))
print("l.limit of g(x)=", limit(g(x), x=0, dir='-'))
print("r.limit of g(x)=", limit(g(x), x=0, dir='+'))
#도함수 구하기
var('x')
f(x)=cos(e^x-1)+sin(1-e^x)
print("derivative of f(x)=", diff(f(x), x))
print("2nd derivative of f(x)=", diff(diff(f(x), x), x))
print("3rd derivative of f(x)=", diff(diff(diff(f(x), x), x), x))
#접선의 방정식 구하기
var('x')
f(x)=x^5-3*x^4+sqrt(abs(x))
df(x)=diff(f(x), x)
y(x)=df(1)*(x-1)+f(1)
print("tangent line of f(x) at x=1:", y(x))
p1=plot(f(x), x, -1, 3, linestyle="--", color='blue')
p2=plot(y(x), x, -1, 3, color='red')
show(p1+p2)
print()
#최대값·최소값 구하기
var('x')
f(x)=x^5-x^3
plot(f(x), x, -1, 1).show()
print("derivative = 0:")
print(solve(diff(f(x))==0, x)) #-1/5*sqrt(5)*sqrt(3), 1/5*sqrt(5)*sqrt(3), 0
ma=max(f(-1/5*sqrt(5)*sqrt(3)), f(1/5*sqrt(5)*sqrt(3)), f(-1), f(1))
mi=min(f(-1/5*sqrt(5)*sqrt(3)), f(1/5*sqrt(5)*sqrt(3)), f(-1), f(1))
print("maximum of f in [-1,1]:", ma)
print("minimum of f in [-1,1]:", mi)
#적분
var('x')
f(x)=(e^x)/(x+3)
p1=plot(f(x), -1, 1, fill='axis')
p2=plot(f(x), -2, 2, color='red')
show(p1+p2)
print("integral of f in [-1,1]:", integral(f(x), x, -1, 1).simplify_full().n(digits=5))
print("=====")
##평면 그리기, 벡터 그리기, 내적·외적·사잇각 구하기
#평면 그리기
var('x, y, z')
implicit_plot3d(x+y+z==1, (x,-3,3), (y,-3,3), (z,-3,3))
#벡터 그리기
a = vector([0, 1])
b = vector([1, 0])
c = a + b
print(c)
plot(a, color='red')+plot(b, color='green')+plot(c, color='black')
#내적·외적·사잇각 구하기
a = vector([1, 2, 3, 4, 5, 6, 7])
b = vector([0, 1, 0, 1, 5, 6, 7])
print("inner product:", b.dot_product(a))
print("cross product:", b.cross_product(a))
print("theta(radian):", arccos(b.dot_product(a)/(a.norm()*b.norm())).n(digits=5))
print("=====")
##벡터함수 정의, 벡터함수 그리기
#벡터함수 정의
var('t')
r = vector([sin(2-t), cos(t^2), t])
#벡터함수 그리기
var('t')
r = vector([sin(2-t), cos(t^2), t])
C = parametric_plot3d(r, (t, -pi, pi), color='green', thickness=2)
Ar = arrow3d(r(t=0), r(t=0+0.1), color='red')
show(C+Ar)
print("=====")
##벡터도함수 구하기, 위치벡터·접선벡터 그리기, 곡선 길이 구하기
#벡터도함수 구하기
var('t')
r(t) = (sin(2-t), cos(t^2))
dr = diff(r(t), t)
print("r`(t) =", dr(t))
#위치벡터·접선벡터 그리기
var('t')
r(t) = (sin(t), cos(t))
dr = diff(r(t), t)
sp = r(0.1)
ep = dr(0.1)/abs(dr(0.1)) + r(0.1)
p = parametric_plot(r(t), (t, -pi, pi))
tv = line([sp, ep], color='red')
show(p + tv)
#곡선 길이 구하기
var('t')
r(t) = (sin(t), cos(-t), e^t)
dr = diff(r(t), t)
s(t) = dr.norm()
print("length of r(t) [-pi,pi]:", integral(s(t), t, -pi, pi).n(digits=5))
parametric_plot3d(r(t), (t, -pi, pi))
print("=====")
##편도함수 구하기, 2계편도함수 구하기, 연쇄법칙
#편도함수 구하기
var('x, y')
f(x, y) = 12*x^2 + 21*y^2 - 2*x*y
print("f_x(x, y) =", diff(f(x, y), x, 1))
print("f_y(x, y) =", diff(f(x, y), y, 1))
#2계편도함수 구하기
var('x, y')
f = e^x*cos(y) - e^y*x^2
print("f_xx =", diff(f, x, 2))
print("f_xy =", diff(f, x, y))
print("f_yx =", diff(f, y, x))
print("f_yy =", diff(f, y, 2))
#연쇄법칙
var('u, v, s, t')
x = cos(u)*e^v
y = -u+v
z = s*sin(t)
print("dz/du =", diff(z(s=x, t=y), u).simplify_full())
print("dz/dv =", diff(z(s=x, t=y), v).simplify_full())
print("=====")
##그래디언트·방향도함수·방향미분계수 구하기, 임계점 구하기, 극값 구하기-고유값·소행렬식
#그래디언트·방향도함수·방향미분계수·헤시안 구하기
var('x, y')
f(x, y) = x + 2*y^2 + 3*x^3
u = vector([cos(pi/4), sin(pi/4)])
gradf = f.gradient()
print("gradient of f =", gradf)
print("directional derivative Duf(x, y) =", gradf(x, y).dot_product(u))
print("directional derivative Duf(0, 0) =", gradf(0, 0).dot_product(u))
print("Hessian of f =")
print(f.hessian())
#임계점 구하기
var('x, y')
f(x, y) = x^3 - y^2 + 3*x*y
gradf = f.gradient()
print("critical point :")
print(solve([gradf[0]==0, gradf[1]==0], x, y))
#극값 구하기-고유값·소행렬식
var('x, y, z')
f(x, y, z) = x^3 - y^2 + z^3 - x + y - z
gradf = f.gradient()
print("critical point :")
print(solve([gradf[0]==0, gradf[1]==0, gradf[2]==0], x, y, z))
h = f.hessian()
H = [None]*5
H[1] = h(1/3*sqrt(3), 1/2, 1/3*sqrt(3))
H[2] = h(1/3*sqrt(3), 1/2, -1/3*sqrt(3))
H[3] = h(-1/3*sqrt(3), 1/2, 1/3*sqrt(3))
H[4] = h(-1/3*sqrt(3), 1/2, -1/3*sqrt(3))
for i, h in enumerate(H[1:], start=1):
print("eigenvalues of H%d =" %i, h.eigenvalues())
for i in range(1, h.ncols()+1):
H_principal_minor = h.submatrix(0, 0, i, i).det()
print("The ", i, "번째 principal minor 는 ", H_principal_minor)
print("H1 indefinite (1/3*sqrt(3), 1/2, 1/3*sqrt(3)) 안장점")
print("H2 indefinite (1/3*sqrt(3), 1/2, -1/3*sqrt(3)) 안장점")
print("H3 indefinite (-1/3*sqrt(3), 1/2, 1/3*sqrt(3)) 안장점")
print("H4 negative definite (-1/3*sqrt(3), 1/2, -1/3*sqrt(3)) 극대")
실습 Comment: 벡터 외적 구할 때 5차원이 오류를 내면서 7차원은 된다고 해서 신기했습니다. 배운대로 실제로 극값을 판별해 보니 재미있었습니다.
경사하강법 내용 정리 및 질문
작성자 : 장환승(2016****69)작성일 : 8월 9일 오후 7:51
조회수 : 32
http://matrix.skku.ac.kr/math4ai/part2/ 에서 가져옴
2.5 Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)
16강 동영상, Gradient Descent Algorithm https://youtu.be/XWDPAdKhq-Q (16:29)
Gradient Descent Algorithm은 어떤 모델에 대한 비용(Cost)를 최소화 시키는 알고리즘으로써, 머신러닝 및 딥러닝 모델에서 사용되는 가중치의 최적해를 구할 때 널리 쓰이는 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다. [Key Idea 2]
▪ 이제 제약조건이 없는 최적화(unconstrained optimization) 문제
![]()
를 푸는 경사하강법(gradient descent method)에 대하여 살펴보자.
[Fermat의 임계점 정리]에 의해 위 문제의 최적해(optimal solution)
는 다음을 만족한다.
![]()
따라서 2.4절에서 배운 바와 같이 방정식
을 풀어서 나온 해들이 최적해가 되는지 판단하면 된다.
그러나 함수
가 비선형인 경우는 방정식을 풀어서 임계점을 구하는 것조차도 쉽지 않다. 이런 경우에는 수치적인 방법으로 임계점을 구한다. 최적화문제를 푸는 계산방법은 대개 반복법(iterative method)으로, 초기 근사해
으로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해
,
, ... 를 생성한다. 목표는
번째 근사해
또는 극한값
에서
을 만족하도록 하는 것이다.
▪
번째 반복단계는 보통 다음과 같은 (직선의 벡터방정식) 형식으로 구성된다.
![]()
여기서
는 탐색방향(search direction),
는 step-size (머신러닝에서는 이를 learning rate)라 한다. 즉
상에서
방향으로
만큼 이동하여
을 생성한다.
▪ 보통
는 함수값이 감소하는 방향으로 정한다. 즉 다음을 만족한다.
![]()
이러한
는 특히 하강방향(descent direction)이라고도 한다.
방향을 따라 움직이면 함수
가 감소한다는 보장이 있으므로 step-size
는
이 만족되도록 정한다.
▪ step-size
를 택하는 방법은 대개 다음 두 가지로 나눌 수 있다.
① 반직선
(
) 상에서 함수
의 값이 가장 작게 되는
를 찾는다.
![]()
이 방법을 exact line search라 하고, 이때의
를 optimal step-size라 한다. 대개는 cost가 많이 들어서 잘 사용되지 않는다.
② 만일
을 정확하게 풀지는 않지만 함숫값이 충분히 감소한다는 것을 보장하는
를 선택하는 방법이 있다면, exact line search를 피하여 cost를 상당히 줄일 수 있다. 이 방법을 inexact line search 라 한다. 즉, 다음 조건을 만족하는
를 찾는다.
![]()
여기서
이다. 이를 그림으로 표현하면 다음과 같다.

따라서 위의 두 부등식을 만족하는
는 폐구간
에서 택하면 된다.
[참고]
가 만족해야 하는 조건은 여러 가지가 있으나, 위의 두 부등식이 주로 쓰인다. 이를 Wolfe condition이라 하고, 그 중 첫 번째 부등식을 특히 Armijo condition이라 한다.
● 경사하강법(gradient descent method)은 탐색방향을
로 택하는 경우이다. 앞서 살펴본 바와 같이 음의 그래디언트
방향이 점
에서
가 가장 가파르게 하강하는 방향이므로, 경사하강법 방법의 아이디어가 쉽게 이해된다. (스키장에서 가장 빠르게 하강하는 길을 찾는 알고리즘의 아이디어와 일치한다) 경사하강법은 모든 차원과 모든 공간에서의 적용이 가능하다. 심지어 무한차원 벡터함수에도 쓰일 수 있다. (이 경우 해당 차원이 만들어내는 공간을 함수공간(function space)이라고 한다. 벡터공간을 일반화 하는 함수공간은 모두 수렴의 개념을 갖춘 선형공간(linear space)으로서, 수렴의 개념을 Norm에 입각한 거리에 의해 정한 Banach공간 또는 Hilbert공간인 경우가 많으나, 보다 일반적인 선형위상공간도 포함한다.) 다음은 경사하강법의 알고리즘이다.
[경사하강법] (
의 의미는
같이
이 1 보다 아주 작다는 의미이다.)
[단계 1] 초기 근사해
와 허용오차(tolerance)
을 준다.
이라 한다.
[단계 2]
를 계산한다. 만일
이면, 알고리즘을 멈춘다.
[단계 3] line search를 수행하여 적절한 step-size
를 구한다.
[단계 4]
,
라 두고 [단계 2]로 이동한다.
▪ 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다.
[출처] J. Barzilai 와 J. M. Borwein, Two-Point Step Size Gradient Methods, IMA J. Numer. Anal. (1988) 8 (1): 141-148.
,
, ![]()
여기서
이고,
는 Hessian
가 양의 정부호(positive definite)인 이차함수이므로 exact line search를 수행하면,
는 다음과 같이 closed-form으로 나온다.


위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.

[경사하강법의 iterative 단계(빨간색)]
[경사하강법은 탐색방향을 현재의 위치
의 근방에서 가장 가파르게 하강하는 방향
로 사용한다. 그러나 이 경우 그림의 빨간색 경로와 같이 해 근처에서 zigzag 현상이 발생하여 마지막 단계에서 수렴속도가 많이 늦어진다. 이를 보완하여 Conjugate Gradient Method(CGM, 공액경사법, 켤레기울기법)은
와 이전의 방향
를 조합하여 새 탐색방향
으로 사용한다. (녹색)]
● 뉴턴 방법(Newton’s method)은 탐색방향을
로 택하는 경우를 말한다. 왜냐하면
근방에서
는 다음의 이차함수를 이용하여 근사화 할 수 있기 때문이다.
![]()
따라서
에서
로 진행하기 위하여, 최적화 문제
![]()
의 최적조건으로부터
를 얻을 수 있다.
![]()
이다. 다음은 뉴턴 방법(Newton’s method)의 알고리즘(Algorithm)이다.
[뉴턴 방법(Newton’s method)]
[단계 1] 초기 근사해
과 허용오차(tolerance)
을 준다.
이라 한다.
[단계 2] 만일
이면, 알고리즘을 멈춘다.
[단계 3]
를 계산한다.
[단계 4]
라 두고 [단계 2]로 이동한다.
▪ 다음은 주어진 함수에 뉴턴 방법(Newton’s method)을 적용한 예시이다. 허용오차는
으로 주었다.
[출처] J.E. Dennis, Jr. and R.B. Schnabel, Numerical Methods for Unconstrained Optimization and Nonlinear Equations, 1996. SIAM
, ![]()

뉴턴 방법을 적용하여 얻은 해는 실제 최적해
에 수렴함을 알 수 있다. ■
이 양의 정부호(positive definite) 행렬이면, 역행렬
도 양의 정부호 행렬이므로, 뉴턴 방법의 탐색방향
역시 하강방향(descent direction)이 된다. 즉
![]()
이다. 따라서
방향으로 진행하면 함수값이 감소함을 알 수 있다.
▪ 그러나 뉴턴 방법은 헤시안을 계산해야 하므로, 변수
이 큰 함수의 경우 헤시안을 계산하는 데 많은 연산이 필요하여 효과적이지 않을 수 있다. 그리고 초기 근사해
이 문제의 해
의 근방에 있어야만 뉴턴 방법이 수렴한다는 보장이 있으나, 이는 미리 알 수 없으므로 실제 뉴턴 방법을 적용할 때는 step-size
도 같이 고려한다. 즉 적절한 line search를 동반한다. 그 후
을 계산한다.
![]()
● 이외에도
를 택하는 방법에 따라 quasi-Newton method, conjugate gradient method 등이 있다. 자세한 사항은 아래의 <최적화(Optimization)> 관련 도서를 참고하라.
[1] S. Boyd and L. Vandenberghe, Convex Optimization, Cambridge University Press, 2004. http://stanford.edu/~boyd/cvxbook/
[2] J. Nocedal and S. Wright, Numerical Optimization, 2nd ed., Springer, 2006.
[3] R. Fletcher, Practical Methods of Optimization, 2nd ed., John Wiley and Sons, 1987.
[4] J. Dennis and R. Schnabel, Numerical Methods for Unconstrained Optimization and Nonlinear Equations, SIAM, 1987.
질문
1. 경사하강법에서는 방정식을 푸는 것이 cost가 많이 들고 어려워서
를 만족하는 오차가 가장 적은 x의 값을 찾아가는 것이 요지인데, 항상 컴퓨터가 계산해줘서 의문을 갖지 않았던 것에 대해 질문을 하고자 합니다. 경사하강법에서는 방정식의 미분이 필수인데 방정식이 아무리 난해해도 미분은 어렵지 않나요? 제 생각으로는 변수가 많아질수록, 또 식이 복잡할수록 시간이 많이 걸릴 것 같은데(특히 개형도가 복잡한, 즉 변수가 많을수록..) 미분에 관해서는 cost 측면에서 너그러운 편인가요?
정원철(2017****79)8월 9일 오후 9:15
경험상 실제로 연산이 너무 많아지면 잘 돌아가지 않는 것 같습니다.그래서 머신러닝에서는 minibatch를 뽑아서 반복 실행하면서 hyperparameter를 계속 업데이트 해주는 SGD(Stochastic Gradient Descent)를 주로 사용합니다.그러나 이전 글에서도 논의가 됐듯이 SGD를 해도 지역 최소값에 빠져서 학습이 멈추는 등의 문제가 나와서, SGD에 모멘텀을 더해주거나 Adagrad, RMSProp, Adam 등을 사용하는데 주로 Adam이 대부분 제일 효율적이여서 자주 쓰인다고 합니다.추가로 저희가 배운 개념과 관련해서 기존에 알고있는 경사하강법 처럼 1차함수로(직선) 기울기를 구하는게 아니라 Hessian과 Newton method를 사용해서 2차함수로 기울기를 구하는 Quasi-Newton methods나 L-BFGS 등을 사용하기도 합니다.(그러나 저장공간은 굉장히 expensive하겠죠 ..)
45’[실습] 4주차 실습‘
##경사하강법-(steepest descent method), 경사하강법-(Newton's method)
##이중적분, 이중적분-변수구간, 삼중적분, 통계적분
##Jacobian, 변수변환, 극좌표 변수변환(변수변환후)
##경사하강법-(steepest descent method), 경사하강법-(Newton's method)
#경사하강법-(steepest descent method)
A = diagonal_matrix(RR, [15, 10, 5, 1])
b = vector(RR, [1, 2, 3, 4])
x0 = vector(RR, [0, .1, .2, 3])
d0 = -b
r = []
for i in range(0, 200):
if i%20==0: print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b))
d0n = d0.norm()
r.append((i, d0n))
if d0n <10^(-7):
break
w = A*d0
a = d0.inner_product(d0)/(d0.inner_product(w))
x1 = x0-a*d0
d1 = A*x1-b
x0 = x1; d0 = d1
print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b))
show(line2d(r) + point(r, color='red'))
#경사하강법-(Newton's method)
var('x, y')
tol=1e-8
f(x, y) = (x-3)^6+(x-3)^4*y^2 + (y+2)^2
gradf = f.gradient()
hessf = f.hessian()
x0 = vector(RDF, [2, -1])
g0 = gradf(x0[0], x0[1])
g0n = g0.norm()
print("x0 =", x0.n(digits=6), "f(x0) =", f(x0[0], x0[1]).n(digits=6))
k = 0
while g0n >tol:
h = hessf(x0[0], x0[1])
d0 = h.solve_right(-g0)
x0 = x0 + d0
k = k+1
print("x%d =" %k, x0.n(digits=6), "f(x%d) =" %k, f(x0[0], x0[1]).n(digits=6))
g0 = gradf(x0[0], x0[1])
g0n = g0.norm()
print("=====")
##이중적분, 이중적분-변수구간, 삼중적분, 통계적분
#이중적분
var('x, y')
f(x, y) = x^3*y^4
print("double integral dydx=", integral(integral(f, y, -1, 0), x, 1, 2))
print("double integral dxdy=", integral(integral(f, x, 1, 2), y, -1, 0))
#이중적분-변수구간
var('x, y')
f(x, y) = 1 + 2*y^2 + 3*y^3
print("double integral on x^2=", integral(integral(f, y, 0, x^2), x, -1, 1))
#삼중적분
var('x, y, z')
f = x^3 - y^2 + z
print("triple integral dxdydz=", integral(integral(integral(f, x, 0, 1), y, 0, 1), z, 0, 1))
#통계적분
var('x, y')
f = exp(-x)
print("integral e^(-x)=", integral(f, x, 0, infinity))
f = exp(-x^2)
print("integral e^(-x^2)=", integral(f, x, 0, infinity))
f = exp(-x^2-y^2)
print("integral e^(-x^2-y^2)=", integral(integral(f, y, 0, infinity), x, 0, infinity))
f = 1/9*exp(-(x+y)/3)
print("integral on [X+Y<1/2]=", integral(integral(f, y, 0, 1/2-x), x, 0, 1/2).n(digits=5))
print("=====")
##Jacobian, 변수변환, 극좌표 변수변환(변수변환후)
#Jacobian
var('u, v')
T = (u + 2*v^2, 3*u^2 + 4*v)
print("Jacobian =", jacobian(T, (u, v)).det())
#변수변환
var('x, y, u, v')
print("x(u,v), y(u,v)=")
print(solve([u == x-2*y, v == 2*x+3*y], x, y)) #x=3/7*u+2/7*v, y=-2/7*u+1/7*v
T = (3/7*u + 2/7*v, -2/7*u + 1/7*v)
J = jacobian(T, (u, v)).det()
f(x, y) = x*y + x^2 + y^2
print("double integral dudv=", integral(integral(f(T[0], T[1])*J, u, 0, 1), v, 2, 3))
#극좌표 변수변환(변수변환후)
var('r, theta')
f = 4*r
print("double integral drdθ=", integral(integral(f, r, 0, 2), theta, 0, pi))
정리 Comment: 경사하강법을 실습하여 다변수함수의 최소값을 구할 수 있게 되었습니다. 치환적분은 수작업을 해야 함을 느꼈습니다.
49’포아송분포와 베르누이분포 관계 실습 <--- Practice in http://matrix.skku.ac.kr/KOFAC/ <--결과 사진 수정했습니다’
평균이 각 20, 10, 5, 4, 3, 2, 1일 때의 포아송분포와 베르누이분포를 같은 평균끼리 그래프로 그렸습니다. 베르누이분포는 그 n이 커질수록 같은 평균의 포아송분포에 수렴하게 됩니다.
R code
Practice inhttp://matrix.skku.ac.kr/KOFAC/mean <- 20
calib <- 0
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
mean <- 10
calib <- 0
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
mean <- 5
calib <- 1
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
mean <- 4
calib <- 2
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
mean <- 3
calib <- 2
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
mean <- 2
calib <- 2
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
mean <- 1
calib <- 2
plot(dpois(0:(2*mean+calib), mean), type='l', xlim=c(0, 2*mean+calib), ylim=c(0, 1), main=mean, xlab="X", ylab="Possibility")
n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2)
n2 <- mean+5; lines(dbinom(0:(2*mean+calib), n2, mean/n2), lty=2, col=2)
n3 <- 100; lines(dbinom(0:(2*mean+calib), n3, mean/n3), lty=2, col=2)
legend('topright', c(paste("P(",mean,")"), paste("B(",n1,",",mean/n1,")"), paste("B(",n2,",",mean/n2,")"), paste("B(",n3,",",mean/n3,")")), lty=c(1,2,2,2), col=c(1,2,2,2))
"The Result"
실행결과



Comment:
n을 극한으로 보내면 베르누이분포는 같은 평균의 포아송분포에 수렴함을 눈으로 확인할 수 있었습니다. 또 평균이 5를 넘어가면 n이 크지 않은 한, 베르누이분포의 모양이 같은 평균의 포아송분포의 모양과 차이가 많이 남을 볼 수 있었습니다.
3개의 댓글
이상구(LEE SANGGU)8월 13일 오후 7:19
Good job^^
이상구(LEE SANGGU)8월 13일 오후 7:25
Nice try^^^
나종진(2017****17)8월 14일 오전 00:58
궁금해서 저도 위의 코드를 R에 실습해보았습니다. 눈으로 확인하니 정말 신기하네요. 추가적으로 그래프가 같은 색이여서 n이 21, 25, 100일 때 각각의 그래프가 어떤 것을 의미하는 지 잘 안보였습니다.n1 <- mean+1; lines(dbinom(0:(2*mean+calib), n1, mean/n1), lty=2, col=2) 이 부분에서 col=에 숫자를 바꾸거나 col='blue' 처럼 색을 입력하면 확실하게 구분이 될 것같습니다.
5주차 실습 질문
질문 by 김태호
답변 by 안성진, 김범준, 유가이 올렉산드르
Finalized by 유가이 올렉산드르


Q: 어느 부분에서 에러가 생겼는지 이해가 안됩니다.
A:
안성진(2015****36)8월 16일 오후 10:57
셀 우측 하단에 Language를 R로 바꾸고 해보시면 될것 같습니다. 지금 Sage로 설정이 되어 있는것 같네요.
김범준(2017****99)8월 16일 오후 10:57
혹시 언어를 R이아닌 SAGE로 하신것이 아닌지요?
추가 답변:
Language를 R로 바꾸면 문제가 없어집니다.
그러나 Sage를 사용할 수도 있습니다. 코드를 약간 변경하면 됩니다.
예제:
R Code:
gr = c(113, 45, 213, 23, 12, 24)
print(mean(gr))
print(median(gr))
quantile(gr, type=2)
Output 1:

Sage Code:
gr = ([113, 45, 213, 23, 12, 24])
print(n(mean(gr), digits=7))
print(n(median(gr), digits=3))
r.quantile(gr, type=2)
Output 2:

Comment: In the realm of Statistics, it is easier and more convenient to use statistical directed languages such as R or SAS , but Python, SageMath and other languages can also be used.
[Final OK by SGLee] [Finalize by 안성진][5주차] hw-5주차 분산의 성질에 관한질문 Q by 김범준 A by 이상구 교수님
작성자 : 안성진(2015****36)작성일 : 8월 22일 오전 1:45
조회수 : 10
[Final OK by SGLee] [Finalize by 안성진][5주차] hw-5주차 분산의 성질에 관한질문 Q by 김범준 A by 이상구 교수님
Question
아래에 천가영학우분의 질문 으로 인해 저 또한 궁금한 점이 생겨서 질문드립니다.
,
,
라는 분산의 성질은 확률밀도함수(이산확률이 아닌경우)인 경우에만 성립하는 것인지 아니면 이산확률에서도 성립하는 것 인지 궁금합니다.
보통 이러한 정리를 통해 구할때는 연속함수형태에서 y=ax+b의 형태에서만 구해보았기 때문에, 또한 교과서에서 이산확률의 경우에 이를 계산하는 문제가 없어 질문드립니다.
Answer
이상구(LEE SANGGU)8월 18일 오후 1:58
위의 공식은 이산확률분포와 연속확륭분포 모두에 똑 같이 적용됩니다.교재에서 보았듯이이산의 경우는 Sum 으로 연속의 경우는 적분 integral 으로 계산 하는 것만 다르지 ... 식은 모두에 성립됩니다. 됩니다.
Comment
평균의 성질이나 분산의 성질을 나타낼 때 사용하는 E(X) 및 V(X) 표기법은 이산, 연속 확률 분포에 모두 적용 되는 범용적인 표기이다. 다만, 각각의 E(X)와 V(X)를 계산할 때 차이가 있다.
이산확률분포 일 경우:

연속확률분포 일 경우:

이상구(LEE SANGGU)8월 22일 오전 10:35
Good!
[Final OK by SGLee] 0[Finalize by 안성진][6주차] 공분산의 정의 질문 Q by 이상현 A by 이상구 교수님, 채희준
작성자 : 안성진(2015****36)작성일 : 8월 22일 오전 2:01
조회수 : 10
[Final OK by SGLee] [Final OK by SGLee] 0[Finalize by 안성진][6주차] 공분산의 정의 질문 Q by 이상현 A by 이상구 교수님, 채희준
Question
1. E[(X-ux)(Y-uy)]가 E(XY)-uxuy 와 같은 이유가 뭔가요?
Answer
2개의 댓글
이상구(LEE SANGGU)8월 21일 오후 10:43
https://pubdata.tistory.com/m/135공분산 구하는 원리는각각 확률변수의 평균(기대값)을 구하고(X 확률변수값 - X평균)*(Y 확률변수값 - Y평균)의 평균즉, X의 편차와 Y의 편차를 곱한 것의 평균https://m.blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221025662499&proxyReferer=https:%2F%2Fwww.google.com%2FCovariance는 한국말로는 공분산이라고 할 수 있고, 보통 Cov 라고 표현한다. 공분산은 두 개 또는 그 이상의 랜덤 변수에 대한 의존성을 의미한다.* 정의:X와 Y가 랜덤 변수이고, ux는 E(X), uy는 E(Y)라고 하자.그러면 Cov(X, Y) = E{(X-ux)(Y-uy)} 이다.정의를 수학적으로 뜯어 보면, X의 편차와 Y의 편차를 곱하여 그것의 평균이다?좀 더 직관적으로 생각해보자.어떤 특정 샘플의 X라는 특징이 x의 평균 보다 크고, 그 샘플의 Y라는 특징이 y의 평균 보다 크다면,둘 다 양수가 될 것이다. 그 말은 X가 큰 값을 가질 때 Y도 큰 값을 가진다는 의존성을 보여준다. 이러한 경향이 크게 나타난다면, 자연스럽게 반대 방향도 함께 일어난다. 반대 방향이라는 것은 X가 작은 값을 가질 때는 자연스럽게 Y의 작은 값이 된다. 이 때에도 마찬가지로 편차의 곱은 양수가 된다. 왜냐하면 "음수 x 음수 = 양수" 이기 때문이다. 자, 그러면 이러한 상태가 되면 평균을 취하게 되면 큰 양수 값이 나올 것이다. 그렇단말은 정의에 의해서 X와 Y 사이의 의존성이 높다는 것이다.X와 Y가 의존성이 높다는 것은 그렇다면 뭘 의미할까?앞에서도 설명했듯이, X가 증가할 때, Y도 증가하려고 하고, X가 감소할 때, Y도 감소하려고 하는 것이다. 따라 하니깐, 의존성이 높은 거다.의존성이 낮은 상황을 보자.가장 의존성이 낮은 상황은 당연히 서로 독립인 상황이다. X가 어떻게 되든 상관 없이 Y는 어떤 값이든 가질 수 있다. 즉, X가 높은 값을 가졌을 때, Y는 높은 값일 수도 있고, 아닐 수도 있다. 그것이 완전히 랜덤이라면, 편차의 곱 항이 양수와 음수가 골고루 나올 것이고, 그걸 평균하면 0에 가까울 것이다.표기하기로는 Cov(X, Y)라고 주로 하지만, 시그마를 사용해서 index로 변수 두 개를 넣어서 하기도 한다. 분산은 한 변수에 대해서 Cov(X, X)를 한 거랑 마찬가지이고, 따라서, 제곱의 형태가 되기 때문에 분산은 항상 양수가 되어야 한다. 하지만 앞에서 설명했듯이 Cov는 양수도 음수도 될 수 있다.이러한 상황이 바로 선형 관계이다. XY를 곱한 것의 평균이 공분산이 될 수 있다. 만약에 X와 Y를 각각 demeaning 또는 centering 시켜서 평균이 0이 되도록 하게 되면, 아래에 보이겠지만, Cov(X,Y) = E(XY) - uxuy 인데, 이 경우, ux = 0, uy = 0이 되기 때문에, 그저 공분산은 X와 Y의 곱의 평균이 될 수 있고, 이렇게 되었을 때 위에서 말한 직관이 그대로 적용되며, 선형 관계가 된다. 따라서, 독립이라는 조건은 보다 강력한 조건이 된다. (독립 -> 공분산 = 0) 하지만, 공분산이 0이라고 해서 항상 독립이 되진 않는다. 이유는 공분산은 선형 관계에 대한 의존성을 말하고, 공분산이 0이 되면 두 변수의 선형 관계가 없다는 것을 의미하지, 모든 관계가 없다는 것을 의미하진 않기 때문이다. 독립이라는 조건은 두 변수의 모든 관계가 없다는 것을 의미하므로, 그냥 독립이라는 개념이 보다 상위 개념이 된다. 즉, y = x^2 이라는 관계가 있고, 그래프로 표현하면 아래와 같다고 한다면, 여기서 y와 x는 서로 선형이 아니기 때문에 cov(x,y) = 0이 된다.하지만, 그렇다고 이 두 변수가 독립이라고는 할 수 없다. 이유는 x가 0에서부터 증가하면 y가 증가하고, x가 0에서부터 감소하면 y가 또 증가하는 이러한 관계를 가지기 때문이다. 이걸 직접 증명해보면,위와 같이, Y = X^2의 관계를 가진다고 하고, X가 normal distribution의 평균이 0이고, 분산이 1인 표준 정규분포라고 하자. 그러면 Cov(X,Y)는 E(X^3) - E(X)E(X^2)이 된다. 여기서 E(X)는 이미 X가 0이 평균이 이라고 했으므로, 0이 되는 것은 쉽게 알 수 있다. 그런데 앞에 E(X^3)은 어떤가? 만약에 x의 pdf가 위에서 보이는 것과 같다면(가우시안 가정이므로) 여기서 + 부분을 세 번 곱한 것이랑, - 부분을 세 번 곱한 것이나 값은 동일하되 부호가 반대이므로, 이를 덥하면 0이 된다. 그래프로 표현해도 쉽게 이해가 된다. Y = X^3 그래프를 그려보면 위에 오른쪽에 보이는 그래프가 되고, 이들의 평균은 0이 되기 때문이다.
채희준(2016****00)8월 21일 오후 11:40
Cov(X,Y) = E[(X-ux)(Y-uy)]= E[(XY - ux*Y - X*uy + ux*uy)]= E(XY) - ux*E(Y) - uy*E(X) + ux*uy= E(XY) - ux*uy - uy*ux +ux*uy= E(XY) - ux*uy전개하면 위와 같이 나옴을 확인하실 수 있습니다.
Comment
수식을 평균이 지니고 있는 성질에 기반하여 전개하면 좌변을 우변으로 나타낼수 있다. 공분산은 X, Y 사이의 의존성을 나타낸다. 다만 공분산은 X와 Y의 범위에 따라 값의 범위가 다르게 나올 수 있는데, 이것을 정규화 (normalize) 해준 것이 상관계수이다. 두 변수의 공분산을 각 변수의 표준편차를 구하여 곱한 값으로 나누어 주면 상관계수가 도출된다.
53’[5주차] [실습] 5주차 실습 <--- R언어가 제공하는 시각화 이미지 코드, 통계에 필요한 함수 코드는 편리했습니다.‘
Inhttp://matrix.skku.ac.kr/KOFAC/we do practice.
##데이터, 도수분포표, 비율분포표, 원도표, 막대도표 [R]
##표본평균, 표본분산, 표본표준편차, 중위수, 4분위수, 상자도표 [R]
##순열, 조합, 확률, 조건부확률 [Sage] 표본추출, 조합, 확률 [R]
##[이산] 확률변수, 확률분포, 기대값, 분산, 표준편차 [R] [연속] 확률변수, 확률분포, 기대값, 분산, 표준편차 [Sage]
##[연속] 다른 확률변수 기대값, 분산, 표준편차 [Sage]
##베르누이분포, 이항분포, 포아송분포 [Sage] 베르누이분포, 이항분포, 포아송분포 [R]
##이항분포 표본추출, 이항분포 특정확률, 포아송분포 표본추출, 포아송분포 특정확률 [R] 이항분포 기대값, 분산, 표준편차 [R]
##데이터, 도수분포표, 비율분포표, 원도표, 막대도표 [R]
#데이터
data <- c(1, 2, 3, 2, 3, 2, 3, 1, 1, 0, 2, 3, 1, 2, 3, 1, 3, 1, 2, 3, 1, 1, 1, 2,
2, 3, 1, 3 ,1 ,2, 0, 1, 2, 3, 3, 1, 3, 1, 3, 2, 0, 1, 2, 2, 1, 3, 3, 3,
2, 3, 1, 3, 3, 1, 1, 2, 2, 1, 3, 2, 2, 1, 2, 1, 3, 2, 3, 2, 3, 3, 2, 2)
print(data)
#도수분포표
cnt <- table(data)
print(cnt)
#비율분포표
prop <- prop.table(cnt)
print(prop)
#원도표
pie(cnt)
#막대도표
barplot(cnt)
##표본평균, 표본분산, 표본표준편차, 중위수, 4분위수, 상자도표 [R]
data <- c(12, 12, 23, 32, 23, 12, 23, 31, 21, 30, 12, 33, 21, 12, 33, 21, 13, 11, 12, 23,
11, 31, 21, 22, 12, 23, 31, 23, 31, 12, 10, 21, 12, 23, 33, 11, 23, 11, 33, 32,
10, 21, 32, 22, 21, 23, 13, 13, 12, 33, 31, 33, 23, 21, 11, 12, 22, 21, 23, 12,
1, 2, 3, 4, 5, 40, 50, 60)
#표본평균
print(mean(data))
#표본분산
print(var(data))
#표본표준편차
print(sd(data))
#중위수
print(median(data))
#4분위수
print(quantile(data, type=2))
#상자도표
boxplot(data)
##순열, 조합, 확률, 조건부확률 [Sage]
#순열
print("Permutation of 100, 5 =", binomial(100, 5)*factorial(5))
#조합
print("Combination of 100, 5 =", binomial(100, 5))
#확률
S = Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
A = Set([2, 3, 5, 7])
B = Set([2, 4, 6, 8, 10])
AuB = A.union(B)
P = AuB.cardinality() / S.cardinality()
print("Probability of prime or even =", P)
#조건부확률
S = Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
A = Set([2, 3, 5, 7])
B = Set([2, 4, 6, 8, 10])
AB = A.intersection(B)
P = AB.cardinality() / A.cardinality()
print("Probability of even condition prime =", P)
##표본추출, 조합, 확률 [R]
#표본추출
print(sample(c("H", "T"), 100, replace=TRUE))
print(sample(1:75, 5))
#조합
print(choose(75, 5))
#확률
print(1/choose(75, 5))
##[이산] 확률변수, 확률분포, 기대값, 분산, 표준편차 [R]
#확률변수
x <- c(0, 1, 2, 3, 4, 5, 6, 7)
print(x)
#확률분포
pr.x <- c(0.01, 0.02, 0.03, 0.04, 0.2, 0.3, 0.4)
print(pr.x)
#기대값
e.x <- sum(x * pr.x)
print(e.x)
#분산
v.x <- sum(x^2 * pr.x) - e.x^2
print(v.x)
#표준편차
s.x <- sqrt(v.x)
print(s.x)
##[연속] 확률변수, 확률분포, 기대값, 분산, 표준편차 [Sage]
#확률변수
var('x')
#확률분포
pr_x = 3*x^2
#기대값
e_x = integral(x * pr_x, x, 0, 1)
print("Expectation of X =", e_x)
#분산
e_x2 = integral(x^2 * pr_x, x, 0, 1)
v_x = e_x2 - e_x^2
print("Variance of X =", v_x)
#표준편차
s_x = sqrt(v_x)
print("Standard deviation of X =", s_x)
##[연속] 다른 확률변수 기대값, 분산, 표준편차 [Sage]
print("Y = 2X + 1")
#다른 확률변수 기대값
e_y = integral((2*x+1) * pr_x, x, 0, 1)
print("Expectation of Y =", e_y)
#다른 확률변수 분산
e_y2 = integral((2*x+1)^2 * pr_x, x, 0, 1)
v_y = e_y2 - e_y^2
print("Variance of Y =", v_y)
#다른 확률변수 표준편차
s_y = sqrt(v_y)
print("Standard deviation of Y =", s_y)
##베르누이분포, 이항분포, 포아송분포 [Sage]
#베르누이분포
pd = [(3/10)^x * (1-3/10)^(1-x) for x in range(0, 1+1)]
print("probability distribution of B(1, 3/10) =", pd)
#이항분포
pd = [binomial(5, x) * (3/10)^x * (1-3/10)^(5-x) for x in range(0, 5+1)]
print("probability distribution of B(5, 3/10) =", pd)
#포아송분포
pd = [(e^(-5) * 5^x / factorial(x)).n(digits=4) for x in range(0, 10)]
print("probability distribution of P(5) =", pd)
##베르누이분포, 이항분포, 포아송분포 [R]
#베르누이분포
print(dbinom(0:1, 1, 3/10))
#이항분포
print(dbinom(0:5, 5, 3/10))
#포아송분포
print(dpois(0:10, 5))
##이항분포 표본추출, 이항분포 특정확률, 포아송분포 표본추출, 포아송분포 특정확률 [R]
#이항분포 표본추출
print(rbinom(100, 5, 0.3))
#이항분포 특정확률
print(dbinom(3, 5, 0.3))
print(pbinom(2, 5, 0.3, TRUE))
print(pbinom(3, 5, 0.3, FALSE))
#포아송분포 표본추출
print(rpois(100, 5))
#포아송분포 특정확률
print(dpois(3, 5))
print(ppois(2, 5, TRUE))
print(ppois(3, 5, FALSE))
##이항분포 기대값, 분산, 표준편차 [R]
n = 5; p = 0.3
#이항분포 기대값
e.x = n*p
print(e.x)
#이항분포 분산
v.x = n*p*(1-p)
print(v.x)
#이항분포 표준편차
s.x = sqrt(v.x)
print(s.x)
Comment: R언어를 처음 써보는데 Python과 그 밖에 알고 있었던 다른 언어들과 다른 점이 (1) = 기호도 쓰기도 하고 더 일반적인 <- 기호를 쓴다는 것과 (2) 변수 이름에 .이 들어간다는 것이 새로웠습니다. 또 R언어는 문자열과 이미지가 출력될 때 서로 뒤죽박죽 될 때가 있고, 실습창에서 print를 할 때 원소값에 다 줄바꿈이 되어 길게 보여지는 불편함이 있었습니다. 하지만 R언어가 제공하는 시각화 이미지 코드, 통계에 필요한 함수 코드는 편리했습니다.
64’[6주차] 6주차 실습‘
http://matrix.skku.ac.kr/math4ai/part3http://matrix.skku.ac.kr/math4ai/part4
##균등분포 표본추출·확률범위, 정규분포 표본추출·확률범위, 지수분포 표본추출·확률범위
##중심극한정리-균등분포·지수분포
##공분산, 상관계수
##PCA
##균등분포 표본추출·확률범위, 정규분포 표본추출·확률범위, 지수분포 표본추출·확률범위
#균등분포 표본추출
print("random 200 species of uniform distribution of [10, 20]")
runif(200, min=10, max=20)
#균등분포 확률범위
print("probability [0, 3] of uniform distribution of [0, 10]")
punif(3, min=0, max=10, TRUE)
print("probability [3, 8] of uniform distribution of [0, 10]")
punif(8, min=0, max=10, TRUE) - punif(3, min=0, max=10, TRUE)
#정규분포 표본추출
print("random 200 species of normal distribution of mean 10, sd 2")
rnorm(100, mean=10, sd=2)
#정규분포 확률범위
print("probability [-3, 3] of normal distribution of mean 0, sd 1")
pnorm(3, mean=0, sd=1, TRUE) - pnorm(-3, mean=0, sd=1, TRUE)
#지수분포 표본추출
print("random 200 species of exponential distribution of lambda 3")
rexp(200, rate=3)
#지수분포 확률범위
print("probability [0, 1] of exponential distribution of lambda 3")
pexp(1, rate=3, TRUE)
##중심극한정리-균등분포·지수분포
CLT.plot <- function(r.dist, n, ...) {
means <- double()
for(i in 1:1000) means[i] = mean(r.dist(n,...))
std.means <- scale(means)
par(mfrow = c(1, 2))
hist(std.means, prob = T, col = "light grey", border = "grey", main = NULL, ylim = c(0, 0.5))
lines(density(std.means))
box()
curve(dnorm(x, 0, 1), -3, 3, col = 'blue', add = T)
qqnorm(std.means, main="", cex = 0.8)
abline(0, 1, lty = 2, col = "red")
par(mfrow = c(1, 1))
}
#중심극한정리-균등분포
CLT.plot(runif, n=1, min=10, max=20)
CLT.plot(runif, n=5, min=10, max=20)
CLT.plot(runif, n=10, min=10, max=20)
#중심극한정리-지수분포
CLT.plot(rexp, n=1, rate=3)
CLT.plot(rexp, n=10, rate=3)
CLT.plot(rexp, n=100, rate=3)
##공분산, 상관계수
x.1 <- c(-1,10,100,1)
x.2 <- c(2,20,50,2)
x.3 <- c(3,30,5,3)
x.4 <- c(-10,40,30,4)
x.5 <- c(1,2,1,2)
M <- cbind(x.1,x.2,x.3,x.4,x.5)
#공분산
cov(M)
#상관계수
cor(M)
##PCA
x.1 <- c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2)
x.2 <- c(2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3)
x.3 <- c(-4, 4, -4, 4, -4, 4, -4, 4, -4, 4, -4, 4, -4, 4, -4, 4)
x.4 <- c(3, 3, 3, 3, 3, 3, 3, 3, -3, -3, -3, -3, -3, -3, -3, -3)
x.5 <- c(-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
data <- data.frame(x.1,x.2,x.3,x.4,x.5)
mydata <- scale(data, center = T, scale = T)
#PCA
mypca <- prcomp(mydata, center = F, scale = F, retx = T)
PC1 = mypca$x[,1]
PC2 = mypca$x[,2]
PC3 = mypca$x[,3]
myclust <- kmeans(mypca$x[,1:3], centers = 4, nstart = 10)
plot(PC1, PC2, xlab = "PC 1", ylab = "PC 2", type="p", col = myclust$cluster)
plot(PC2, PC3, xlab = "PC 2", ylab = "PC 3", type="p", col = myclust$cluster)
plot(PC3, PC1, xlab = "PC 3", ylab = "PC 1", type="p", col = myclust$cluster)
screeplot(mypca, type = "lines", col = 2)
실행결과
##중심극한정리-균등분포·지수분포


##PCA


Comment: 실습을 통해 중심극한정리가 성립함을 알 수 있었습니다. r의 prcomp함수로 PCA를 수행하여 주성분 3개를 골라 2D그래프로 그렸는데, 잘 수행되는 것 같아 좋았습니다.
정리(6개) (중간 4개 기말 2개)
18’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
29’3주차 다변수함수의 극대극소판정법 정리‘
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘
41’4주차 Gradient Descent Algorithm 추가 정리‘
54’6주차 PCA 정리‘ 정리
61’7주차 오차역전파법 정리‘
18’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
[Final OK by TA]
2주차 SVD 정리 (Very Good^^) <SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준
작성자 : 임동선(2017****79)작성일 : 7월 24일 오후 1:20
SVD를 공부하면서 알아야 할 것들이 무엇이 있는지 정리할 필요성을 느껴 정리해 보았습니다. 조금이나마 도움 되길 바랍니다.
1.
와
는 항상 대칭행렬이다. 각각
,
정사각행렬이다.
2.
와
에 대하여 0 아닌 고유값이 서로 같다.
3.
의 고유값은 모두 0보다 크거나 같다.
4.
의 rank와
의 rank는 같다.
5. n차정사각행렬
와
가 직교닯음 ⇔
인 직교행렬
가 존재.
6. 직교대각화가능한 n차정사각행렬
⇔
는 대칭행렬 ⇔
는 n개의 일차독립인 고유벡터를 가짐 &서로 다른 고유값에 대응하는 고유벡터들은 서로 직교.
7.
에서, 직교대각화가능한 n차정사각행렬
의 직교대각화하는
는
의 정규직교화된 고유벡터를 열로 갖는 직교행렬,
는 대각선성분으로
의 고유값을 갖는 대각선행렬.
8.
와
는 항상 대칭핼렬이므로,
와
는 항상 직교대각화가 가능.
○ 임의의
행렬
는 SVD를 통하여
로 분해된다는 것입니다.
는 singular value와 singular vector를 가지는데,
가
의 singular value
를 갖고 있고,
와
가
의 singular vector
,
를 열로 갖고 있습니다.
그러면
,
,
를 구해봅시다.
는 를
직교대각화하는 직교행렬입니다.
를 구할 때는
의 고유값(
의 고유값이 아닙니다)과 고유벡터를 구하고, 고유벡터를 정규직교화하여, 그것을 열(right singular vector
)로하는 행렬로
를 구하게 됩니다.
이 때 고유값을 같이 구했으므로, 이 고유값의 square root인 singular value
를 대각선성분으로 하는 대각선행렬
를 함께 구하게 됩니다. singular value
를 단조감소하도록 배치하여
와
를 구해야 합니다.
는
를 직교대각화하는 직교행렬입니다.
를 구할 때와 같이 하기 보다, 이미 구해 놓은
와
를 이용합니다.
를 구할 때는
를 열(left singular vector
)로하는 행렬
로 를 구하게 됩니다.
이로써
,
,
를 구했습니다.
○ 이제, 왜 singular value
는 고유값의 square root이고,
의 대각선성분으로 고유값이 아닌 singular value
를 갖는지 알아보겠습니다.
직교대각화가능한
와 이를 직교대각화하는 직교행렬
로부터, 무엇이
와 직교닮음인지 알 수 있습니다.
![]()
와
가 직교닮음인 것입니다.
를 직접 계산해보면
입니다.
즉,
입니다.
마찬가지로,
와
는 직교닮음이고,
입니다.
singular value
가 왜 고유값의 square root인지 알아보겠습니다.
직교대각화가능한
의
, 여기에서는
가 대각선성분으로
의 고유값 을 갖는 대각선행렬이 됩니다. (7.을 떠올립시다)
따라서
의 식이 세워지게 되고 singular value
는
의 square root,
가 되는 것입니다.
마찬가지로,
의 대각선성분으로 고유값
이 아닌 singular value
를 갖는 이유는,
가 대각선성분으로 고유값
를 가지는 것이고, 는 대각선성분으로 singular value
를 갖게되는 것이기 때문입니다.
이로써, 왜 singular value
는 고유값의 square root이고,
의 대각선성분으로 고유값이 아닌 singular value
를 갖는지 알아보았습니다.
○ 저는 singular value
가 고유값의 제곱근이라는 사실을 듣고, 고유값은 음수일수도 있는데 어떻게 되는거지라고 생각했는데, 3.의 성질이 있음을 알고나서
의 고유값은 양수 또는 0이니 제곱근을 가질 수 있음을 이해하였고, 더불어서 SVD에서 쓰이는 고유값은
의 고유값이 아닌
의 고유값임을 다시금 깨닫게 했던 좋은 기회였습니다. 또,
에서 책에서는
이
의 rank라고 적혀 있어서 이건
가 아니라
와 관련 있는 것이 아닌가 했는데 4.의 성질을 보고 이해하게 되었습니다. 등등 왜 이렇게 되는지 이해가 명확히 되지 않다가 1.~4.의 성질이 있음을 알게 된 후 각 개념의 연결이 선명해지는 느낌을 받았습니다. 5.~8.은 배웠던 것을 정리한 것입니다. 아무쪼록 제가 이해한대로 설명한 것이 SVD를 이해하는데 도움이 되었으면 좋겠습니다. 틀린 것이 있다면 알려주세요. 감사합니다.
도움 받았던 자료입니다.
https://people.sc.fsu.edu/~jburkardt/classes/gateway_2014/lecture_week09.pdf
http://matrix.skku.ac.kr/math4ai-intro/W12/
[Final OK by SGLee]
특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승
작성자 : 전재현(2015****91)작성일 : 7월 27일 오후 9:03
SVD를 공부하면서 실제로 어떻게 활용될 수 있을지 고민하던 중에 진행해본 작업입니다.
저와 같은 궁금증을 품으셨던 분들에게 도움이 되기를 바랍니다 :)
주 참고자료 : darkpgmr.tistory.com/106 (특이값 분해의 활용)
들어가기에 앞서
특이값분해의 원리를 충분히 이해하시고 읽어주시면 감사하겠습니다. 김진웅 학우의 ‘2주차 SVD 정리’ 글이 도움이 될 것입니다. 😊
최소자승법 : ‘최소제곱법’이라고도 불리며 어떤 계의 해방정식을 근사적으로 구하는 방법으로, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법(위키백과)
최소자승법을 설명한 이유는 이번에 사용하려는 의사역행렬이 이와 유사한 개념으로 활용되기 때문입니다. 역행렬이 존재하지 않는 비가역행렬에 의사역행렬을 생성하여 비가역행렬 A에서 Ax = b의 해를 A의 의사역행렬 A+를 활용하여 x = A+b 형태로 계산하고 이 x가 llAx-bll를 최소화하게끔 만드는 식으로 활용합니다. (오차의 제곱의 합이 최소가 되는 해를 구하는 최소자승법의 개념을 응용한다는 뜻입니다)
의사역행렬의 SVD 공식은 A+ = VΣ+UT 이며 기존 SVD 공식에서 U와 V의 순서가 바뀌고 전치가 바뀌며, Σ에서 0이 아닌 고유값들의 역수를 취한 후 전치하여 nxm행렬로 만듭니다. 기존 SVD 공식이 A = UΣVT 였던 것과 비교하며 확인하시기 바랍니다.
(https://bskyvision.com/256 참고)
기반 데이터
통계청 해외직접투자 현황, 2002 ~ 2019년까지의 연도별 투자금액 데이터 (KOSIS)
(수식을 간단하게 만들기 위해 해당 데이터를 천만 달러 단위로 축약하여 사용)

투자금액 추이가 다음과 같은 모습을 보이고 있으므로 모델을 2차 포물선으로 만들기로 합니다.
모델
연도를 x, 투자 금액을 y로 하고서 y = ax2 + bx + c로 모델을 형성하고 이를 선형 연립방정식으로 재정리하면 아래와 같아집니다.
ax12 + bx1 + c = y1
ax22 + bx2 + c = y2
ax32 + bx3 + c = y3
…
ax182 + bx18 + c = y18

역행렬이 존재한다면 해당 점을 모두 지나는 포물선이 존재한다는 뜻인데 불가능한 일이므로 의사역행렬을 이용합니다. Python에서는 numpy 패키지의 pinv()함수를 이용하면 의사역행렬을 손쉽게 구할 수 있습니다. 하지만 SVD를 이용하여 이를 구해내는 과정을 경험하는 것이 목적이므로 직접 풀어보며 돌아가는 방법을 택하겠습니다.
코딩 (with Python)

먼저 필요한 패키지들을 import 한 뒤 앞서 설명한 행렬 A와 B를 생성합니다.
하단의 A.shape와 B.shape는 행렬의 mxn 형태를 보여주는 식입니다.


다음과 같이 알맞게 행렬 A와 B가 형성되었습니다.

그 이후에는 특이값 분해를 실행합니다. numpy.linalg 패키지의 svd 함수를 활용하여 간단하게 특이값 분해를 진행할 수 있습니다.


결과로 Sigma Value에 고유값이 3개 형성된 것을 볼 수 있습니다.

이제 의사역행렬을 만들어낼 차례입니다. 이를 위해서 앞서 설명한대로 s를 S_mat의 형태로 변형합니다.
Reciprocal()함수를 이용해 고유값들의 역수를 취한 re_s를 만들고 transpose()함수를 이용하여 이를 전치한 S를 만든 뒤, S를 대각행렬에 0을 붙인 형태인 S_mat으로 만듭니다.
이때 S_mat은 nxm 행렬이 된다는 것을 잊지맙시다.

(그림출처: https://darkpgmr.tistory.com/106)
위와 같이 s가 S_mat으로 변형됩니다.
공식에 맞게 각 행렬들을 수정한 뒤에 의사역행렬 piA를 계산합니다.
만약 piA가 제대로 구해졌다면 A에서 piA의 전치를 뺀 행렬은 영행렬에 가까워져야 할 것입니다.

결과가 어느정도 0에 가깝게 나타난 것 같습니다. (사실 더 0에 가깝게 만들고 싶었지만 실패했습니다..)

이제 구해진 의사역행렬으로 해를 구해보겠습니다.
직접 손 코딩으로 구해본 의사역행렬이 numpy에서 제공하는 pinv()함수와 비교했을 때 얼마나 차이가 있는지 확인해봅시다.

완벽하게 동일한 결과가 만들어졌습니다! 원리를 이해했으니 앞으로는 pinv()함수를 사용하여 간편하게 계산하도록 합시다..!

이제 2020년의 금액을 추정해보고 이를 시각화하여 표현해봅시다
![]()
앞서 구한 값들을 a,b,c에 대입하여 구해진 2020년의 해외직접투자 금액은 56,237 천만 달러로 추정되었습니다.

전체 그래프로 확인했을 때 2006년부터 곡선을 중심으로 위아래로 변화하며 상승하는 모습을 보이는데 2020년에는 다시 하락세를 형성한다고 예측되었습니다.
아직 2020년이 다 끝나지않아서 실제로 맞아 떨어지는지는 알 수 없습니다만, 더 높은 정확도를 가지는 모델들을 활용하는 것이 좋아 보입니다.
마치며
지금까지 python을 활용하여 2020년 해외직접투자 금액을 추정하는 모델을 SVD와 의사역행렬을 이용하여 만들어보았습니다.
이번 주 초에 완성해서 올려보고 싶었으나 처음 배우고 행해보는 일이라 꽤나 많은 시간이 소모되었습니다.
또 타인의 눈에도 잘 진행된 시도였는지 모르겠네요.
다만 해당 과정에서 SVD와 의사역행렬에 대한 개념, 그리고 이를 활용하는 방법에 대하여 제대로 숙지할 수 있었던 것 같습니다.
여러분들도 기회가 된다면 직접 코딩해보며 개념을 익혀보시는걸 추천 드립니다 :)
(파이썬 원본 파일은 요청하시면 공유하도록 하겠습니다)
--------------------------------------------------------------------------
많은 분들이 좋은 반응을 보여주셔서 고생한 보람이 가득한 결과였습니다.
교수님께서 이번 기말고사 유형으로 만들어보자는 의견을 내주셨는데, 적극 찬성입니다!
이번 경험을 통해 실제로 배운 개념을 활용해보는 시도는 결과를 떠나 이를 익히고 기억하는데 큰 도움이 된다고 느꼇습니다.
기말고사 형식으로 추가된다면 저와 비슷한 시도를 해보려고 생각하던 학우분들께도 큰 동기부여와 기회가 만들어질 수 있을 것 같습니다.
무엇보다 재미있을 것 같습니다! 긍정적으로 고려해주시면 감사하겠습니다 :)
채희준 학우님께서 제 코드를 활용해보고 싶어하시는 듯 하여 원본 파이썬 파일을 첨부합니다.
SVD와 의사역행렬, 그리고 파이썬을 공부하시는데 도움이 되기를 바랍니다.
svd_pinv_amount_of_investment.py
채희준(2016****00)7월 27일 오전 10:54
좋은 글 감사합니다. 이론을 배우고 이를 실제 데이터를 활용한 코딩을 해보고 싶었는데, 컴퓨터 언어에 대해 가진 지식이 부족해 실제로 시도해보지는 못하고 있었습니다. 전재현 학우님, 올려주신 코드를 따라가며 연습을 해보고 싶은데, 혹시 코드를 활용해도 괜찮을까요...?
Part 3 에서 배울 내용 미리 공유합니다.
<SVD 와 주성분 분석과 공분산 행렬>
주성분 분석은 원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터들을 저차원 공간으로 변환하는 기법이다.
그런데 원 데이터의 분포에 대한 정보는 공분산 행렬에 담겨 있다. 왜냐하면 공분산 행렬은 주대각선 상의 성분에 각 확률변수가 얼마나 퍼져 있는지를
나타내는 분산과 주대각선 이외의 성분에 확률변수 간의 상관관계를 나타내는 공분산으로 되어 있기 때문이다. 따라서 주성분 분석은 공분산 행렬과 관계가 있다.
데이터 행렬
가 센터링(mean-centered) 되어 있는 행렬이면,
공분산 행렬
는 다음과 같이 계산된다.


주성분 분석의 목표는 ‘공분산 행렬로 부터 얻은 정보’를 최대한 보존하는 ‘더 적은 개수(
)의 새로운 변수들’을 찾으려는 것이다.
의 특잇값 분해
![]()
로부터 다음 관계를 얻는다.
![]()
![]()
![]()
![]()
따라서 ![]()
, 즉
(
)인 관계가 성립한다. 이때
를
의 고윳값(eigenvalue),
를 고유벡터(eigenvector)라고 한다.
는
번째 PC의 분산을 나타내며,
는
번째 축을 나타낸다. (고윳값, 고유벡터에 관한 자세한 사항은 대학수학에서 다룬다. http://matrix.skku.ac.kr/math4ai/part1/ )
[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승
[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승
SVD를 공부하면서 실제로 어떻게 활용될 수 있을지 고민하던 중에 진행해본 작업입니다.
저와 같은 궁금증을 품으셨던 분들에게 도움이 되기를 바랍니다 :)
주 참고자료 : darkpgmr.tistory.com/106 (특이값 분해의 활용)
들어가기에 앞서
특이값분해의 원리를 충분히 이해하시고 읽어주시면 감사하겠습니다. 김진웅 학우의 ‘2주차 SVD 정리’ 글이 도움이 될 것입니다. 😊
최소자승법 : ‘최소제곱법’이라고도 불리며 어떤 계의 해방정식을 근사적으로 구하는 방법으로, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법(위키백과)
최소자승법을 설명한 이유는 이번에 사용하려는 의사역행렬이 이와 유사한 개념으로 활용되기 때문입니다. 역행렬이 존재하지 않는 비가역행렬에 의사역행렬을 생성하여 비가역행렬 A에서 Ax = b의 해를 A의 의사역행렬 A+를 활용하여 x = A+b 형태로 계산하고 이 x가 llAx-bll를 최소화하게끔 만드는 식으로 활용합니다. (오차의 제곱의 합이 최소가 되는 해를 구하는 최소자승법의 개념을 응용한다는 뜻입니다)
의사역행렬의 SVD 공식은 A+ = VΣ+UT 이며 기존 SVD 공식에서 U와 V의 순서가 바뀌고 전치가 바뀌며, Σ에서 0이 아닌 고유값들의 역수를 취한 후 전치하여 nxm행렬로 만듭니다. 기존 SVD 공식이 A = UΣVT 였던 것과 비교하며 확인하시기 바랍니다.
(https://bskyvision.com/256 참고)
기반 데이터
통계청 해외직접투자 현황, 2002 ~ 2019년까지의 연도별 투자금액 데이터 (KOSIS)
(수식을 간단하게 만들기 위해 해당 데이터를 천만 달러 단위로 축약하여 사용)
투자금액 추이가 다음과 같은 모습을 보이고 있으므로 모델을 2차 포물선으로 만들기로 합니다.
모델
연도를 x, 투자 금액을 y로 하고서 y = ax2 + bx + c로 모델을 형성하고 이를 선형 연립방정식으로 재정리하면 아래와 같아집니다.
ax12 + bx1 + c = y1
ax22 + bx2 + c = y2
ax32 + bx3 + c = y3
…
ax182 + bx18 + c = y18
역행렬이 존재한다면 해당 점을 모두 지나는 포물선이 존재한다는 뜻인데 불가능한 일이므로 의사역행렬을 이용합니다. Python에서는 numpy 패키지의 pinv()함수를 이용하면 의사역행렬을 손쉽게 구할 수 있습니다. 하지만 SVD를 이용하여 이를 구해내는 과정을 경험하는 것이 목적이므로 직접 풀어보며 돌아가는 방법을 택하겠습니다.
코딩 (with Python)
먼저 필요한 패키지들을 import 한 뒤 앞서 설명한 행렬 A와 B를 생성합니다.
하단의 A.shape와 B.shape는 행렬의 mxn 형태를 보여주는 식입니다.
다음과 같이 알맞게 행렬 A와 B가 형성되었습니다.
그 이후에는 특이값 분해를 실행합니다. numpy.linalg 패키지의 svd 함수를 활용하여 간단하게 특이값 분해를 진행할 수 있습니다.
결과로 Sigma Value에 고유값이 3개 형성된 것을 볼 수 있습니다.
이제 의사역행렬을 만들어낼 차례입니다. 이를 위해서 앞서 설명한대로 s를 S_mat의 형태로 변형합니다.
Reciprocal()함수를 이용해 고유값들의 역수를 취한 re_s를 만들고 transpose()함수를 이용하여 이를 전치한 S를 만든 뒤, S를 대각행렬에 0을 붙인 형태인 S_mat으로 만듭니다.
이때 S_mat은 nxm 행렬이 된다는 것을 잊지맙시다.
(그림 출처 : https://darkpgmr.tistory.com/106)
위와 같이 s가 S_mat으로 변형됩니다.
공식에 맞게 각 행렬들을 수정한 뒤에 의사역행렬 piA를 계산합니다.
만약 piA가 제대로 구해졌다면 A에서 piA의 전치를 뺀 행렬은 영행렬에 가까워져야 할 것입니다.
결과가 어느정도 0에 가깝게 나타난 것 같습니다. (사실 더 0에 가깝게 만들고 싶었지만 실패했습니다..)
이제 구해진 의사역행렬으로 해를 구해보겠습니다.
직접 손 코딩으로 구해본 의사역행렬이 numpy에서 제공하는 pinv()함수와 비교했을 때 얼마나 차이가 있는지 확인해봅시다.
완벽하게 동일한 결과가 만들어졌습니다! 원리를 이해했으니 앞으로는 pinv()함수를 사용하여 간편하게 계산하도록 합시다..!
이제 2020년의 금액을 추정해보고 이를 시각화하여 표현해봅시다
앞서 구한 값들을 a,b,c에 대입하여 구해진 2020년의 해외직접투자 금액은 56,237 천만 달러로 추정되었습니다.
전체 그래프로 확인했을 때 2006년부터 곡선을 중심으로 위아래로 변화하며 상승하는 모습을 보이는데 2020년에는 다시 하락세를 형성한다고 예측되었습니다.
아직 2020년이 다 끝나지않아서 실제로 맞아 떨어지는지는 알 수 없습니다만, 더 높은 정확도를 가지는 모델들을 활용하는 것이 좋아 보입니다.
마치며
지금까지 python을 활용하여 2020년 해외직접투자 금액을 추정하는 모델을 SVD와 의사역행렬을 이용하여 만들어보았습니다.
이번 주 초에 완성해서 올려보고 싶었으나 처음 배우고 행해보는 일이라 꽤나 많은 시간이 소모되었습니다.
또 타인의 눈에도 잘 진행된 시도였는지 모르겠네요.
다만 해당 과정에서 SVD와 의사역행렬에 대한 개념, 그리고 이를 활용하는 방법에 대하여 제대로 숙지할 수 있었던 것 같습니다.
여러분들도 기회가 된다면 직접 코딩해보며 개념을 익혀보시는걸 추천 드립니다 :)
(파이썬 원본 파일은 요청하시면 공유하도록 하겠습니다)
--------------------------------------------------------------------------
많은 분들이 좋은 반응을 보여주셔서 고생한 보람이 가득한 결과였습니다.
교수님께서 이번 기말고사 유형으로 만들어보자는 의견을 내주셨는데, 적극 찬성입니다!
이번 경험을 통해 실제로 배운 개념을 활용해보는 시도는 결과를 떠나 이를 익히고 기억하는데 큰 도움이 된다고 느꼇습니다.
기말고사 형식으로 추가된다면 저와 비슷한 시도를 해보려고 생각하던 학우분들께도 큰 동기부여와 기회가 만들어질 수 있을 것 같습니다.
무엇보다 재미있을 것 같습니다! 긍정적으로 고려해주시면 감사하겠습니다 :)
채희준 학우님께서 제 코드를 활용해보고 싶어하시는 듯 하여 원본 파이썬 파일을 첨부합니다.
SVD와 의사역행렬, 그리고 파이썬을 공부하시는데 도움이 되기를 바랍니다.
svd_pinv_amount_of_investment.py
#%%
import numpy as np
from numpy.linalg import svd
import matplotlib.pyplot as plt
# 행렬 A,B 생성
year = [2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,
2014,2015,2016,2017,2018,2019]
A = np.array([2002*2002,2002,1])
for years in year:
add = np.array([years*years,years,1])
A = np.vstack((A,add))
if years == 2019:
break
B = np.array([[4056],[4770],[6552],[7282],[11876],[22687],[24021],[20709],[24637],
[29082],[28540],[30192],[26998],[27180],[34986],[43696],[49781],[61847]])
print(A.shape,B.shape)
print(A)
print(B)
# %%
# 특이값 분해 실행, 여기서 s는 고유값 리스트
U, s, Vt = np.linalg.svd(A, full_matrices=True)
print(U.shape, s.shape, Vt.shape)
print('U matrix:\n',np.round(U, 3))
print('Sigma Value:\n',np.round(s, 3))
print('Vt transpose matrix:\n',np.round(Vt, 3))
# %%
# 의사역행렬을 piA를 구하기 위하여 s를 변형 (S_mat)
# 이때 변형된 s는 원래의 행렬에서 0이 아닌 고유값들의 역수를 취한 후 전치시킨 행렬
re_s = np.reciprocal(s)
S = np.transpose(re_s)
S_mat = np.diag(S)
for i in range(0,15,1) :
plus = np.array([[0],[0],[0]])
S_mat = np.hstack((S_mat,plus))
Ut = np.transpose(U)
V = np.transpose(Vt)
piA = np.dot(V,np.dot(S_mat,Ut))
# 만약 제대로 의사역행렬이 구해졌다면 행렬 A에 A의 의사역행렬 piA를 전치시킨 값을 뺏을때
# 0에 가까운 값들로 구성된 행렬이 나와야 함
print(A - np.transpose(piA))
# => 결과가 0에 가까운 것을 알 수 있음
# %%
# 의사역행렬을 통해 해를 구하기
X = np.dot(piA,B)
print(X)
piA_t = np.linalg.pinv(A)
X_t = np.dot(piA_t,B)
print(X_t)
# pinv 함수와 비교했을때 동일한 결과가 나오는 것을 확인할 수 있다.
# %%
# 시각화 표현, 여기서 2020년의 데이터는 예측치로 약 56,237(천만 달러)가 수치화되었다.
x = np.array([[2002],[2003],[2004],[2005],[2006],[2007],[2008],[2009],[2010],
[2011],[2012],[2013],[2014],[2015],[2016],[2017],[2018],[2019],[2020]])
forcast = 2020*2020*X[0]+X[1]*2020+X[2]
add_b = np.array([forcast])
y = np.vstack((B,add_b))
plt.figure(figsize=(15,5))
plt.plot(x,y,'o', label='투자 금액',markersize=10)
plt.ylabel('연도')
plt.xlim(2001,2021)
plt.ylim(0,80000)
plt.plot(x,X[0]*x*x+X[1]*x+X[2],'r')
plt.xticks([2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,
2014,2015,2016,2017,2018,2019,2020])
plt.title('Amount of investment to abroad', loc='center')
plt.legend
print(forcast)
# %%
이상구(LEE SANGGU)7월 27일 오후 10:07
프로젝트는 그럼 좀 더 같이 의논하여 ... 중간고사 마치고 결정 할께요^^
전재현(2015****91)7월 27일 오후 10:16
네 알겠습니다 :)
이상구(LEE SANGGU)7월 28일 오후 4:50
Share
(18, 3) (18, 1)
[[4008004 2002 1]
[4012009 2003 1]
[4016016 2004 1]
[4020025 2005 1]
[4024036 2006 1]
[4028049 2007 1]
[4032064 2008 1]
[4036081 2009 1]
[4040100 2010 1]
[4044121 2011 1]
[4048144 2012 1]
[4052169 2013 1]
[4056196 2014 1]
[4060225 2015 1]
[4064256 2016 1]
[4068289 2017 1]
[4072324 2018 1]
[4076361 2019 1]]
[[ 4056]
[ 4770]
[ 6552]
[ 7282]
[11876]
[22687]
[24021]
[20709]
[24637]
[29082]
[28540]
[30192]
[26998]
[27180]
[34986]
[43696]
[49781]
[61847]]
(18, 18) (3,) (3, 3)
U matrix:
[[-0.234 0.386 -0.447 -0.241 -0.22 -0.202 -0.187 -0.176 -0.168 -0.164
-0.164 -0.167 -0.174 -0.184 -0.198 -0.215 -0.236 -0.26 ]
[-0.234 0.341 -0.289 -0.225 -0.177 -0.13 -0.082 -0.035 0.011 0.058
0.104 0.15 0.195 0.24 0.285 0.33 0.375 0.419]
[-0.234 0.296 -0.151 0.003 0.106 0.189 0.251 0.293 0.315 0.317
0.298 0.259 0.2 0.12 0.021 -0.099 -0.24 -0.4 ]
[-0.234 0.251 -0.033 0.923 -0.074 -0.07 -0.065 -0.059 -0.052 -0.045
-0.036 -0.027 -0.016 -0.005 0.008 0.021 0.035 0.05 ]
[-0.235 0.206 0.065 -0.078 0.916 -0.088 -0.089 -0.088 -0.084 -0.077
-0.068 -0.056 -0.041 -0.024 -0.004 0.018 0.044 0.071]
[-0.235 0.161 0.144 -0.077 -0.092 0.898 -0.108 -0.111 -0.109 -0.104
-0.094 -0.08 -0.063 -0.041 -0.016 0.014 0.047 0.085]
[-0.235 0.115 0.203 -0.075 -0.095 -0.111 0.878 -0.127 -0.128 -0.124
-0.114 -0.1 -0.081 -0.057 -0.028 0.007 0.046 0.09 ]
[-0.235 0.07 0.242 -0.071 -0.096 -0.115 -0.129 0.863 -0.14 -0.137
-0.129 -0.115 -0.095 -0.07 -0.039 -0.003 0.039 0.086]
[-0.236 0.025 0.262 -0.066 -0.093 -0.115 -0.131 -0.141 0.854 -0.144
-0.137 -0.124 -0.106 -0.081 -0.051 -0.015 0.027 0.075]
[-0.236 -0.021 0.262 -0.059 -0.087 -0.11 -0.127 -0.139 -0.145 0.855
-0.14 -0.129 -0.113 -0.09 -0.062 -0.029 0.01 0.055]
[-0.236 -0.066 0.243 -0.05 -0.078 -0.101 -0.118 -0.13 -0.138 -0.14
0.863 -0.129 -0.116 -0.097 -0.074 -0.046 -0.012 0.027]
[-0.236 -0.112 0.204 -0.04 -0.065 -0.086 -0.103 -0.116 -0.124 -0.128
-0.128 0.876 -0.115 -0.103 -0.086 -0.064 -0.039 -0.01 ]
[-0.237 -0.157 0.145 -0.029 -0.049 -0.067 -0.082 -0.095 -0.104 -0.11
-0.113 -0.114 0.889 -0.106 -0.097 -0.086 -0.072 -0.054]
[-0.237 -0.203 0.066 -0.015 -0.03 -0.044 -0.056 -0.067 -0.077 -0.086
-0.093 -0.099 -0.103 0.893 -0.109 -0.11 -0.109 -0.107]
[-0.237 -0.249 -0.032 -0.001 -0.008 -0.016 -0.024 -0.034 -0.044 -0.055
-0.066 -0.079 -0.092 -0.106 0.88 -0.136 -0.152 -0.169]
[-0.237 -0.294 -0.15 0.015 0.018 0.017 0.013 0.006 -0.004 -0.018
-0.034 -0.054 -0.077 -0.103 -0.132 0.836 -0.2 -0.238]
[-0.237 -0.34 -0.288 0.033 0.047 0.054 0.056 0.052 0.042 0.026
0.004 -0.024 -0.058 -0.098 -0.143 -0.195 0.747 -0.316]
[-0.238 -0.386 -0.445 0.052 0.079 0.096 0.105 0.104 0.095 0.076
0.048 0.011 -0.035 -0.09 -0.155 -0.228 -0.311 0.598]]
Sigma Value:
[1.71495661e+07 2.20110000e+01 0.00000000e+00]
Vt transpose matrix:
[[-1. -0. -0. ]
[-0. 1. 0.001]
[-0. 0.001 -1. ]]
[[ 4.00800400e+06 2.01965351e+03 -1.77627632e+04]
[ 4.01200900e+06 2.01442699e+03 -1.15015186e+04]
[ 4.01601600e+06 2.00997852e+03 -6.02241086e+03]
[ 4.02002500e+06 2.00630811e+03 -1.32544002e+03]
[ 4.02403600e+06 2.00341576e+03 2.58939396e+03]
[ 4.02804900e+06 2.00130147e+03 5.72209107e+03]
[ 4.03206400e+06 1.99996523e+03 8.07265132e+03]
[ 4.03608100e+06 1.99940706e+03 9.64107469e+03]
[ 4.04010000e+06 1.99962693e+03 1.04273612e+04]
[ 4.04412100e+06 2.00062487e+03 1.04315108e+04]
[ 4.04814400e+06 2.00240086e+03 9.65352361e+03]
[ 4.05216900e+06 2.00495491e+03 8.09339951e+03]
[ 4.05619600e+06 2.00828702e+03 5.75113854e+03]
[ 4.06022500e+06 2.01239719e+03 2.62674071e+03]
[ 4.06425600e+06 2.01728541e+03 -1.27979399e+03]
[ 4.06828900e+06 2.02295169e+03 -5.96846556e+03]
[ 4.07232400e+06 2.02939603e+03 -1.14392740e+04]
[ 4.07636100e+06 2.03661842e+03 -1.76922193e+04]]
[[ 7.18192724e+01]
[-2.86027881e+05]
[ 2.84781198e+08]]
[[ 7.18192724e+01]
[-2.86027881e+05]
[ 2.84781198e+08]]
[56237.98528445]
이상구(LEE SANGGU)7월 28일 오후 4:52
http://matrix.skku.ac.kr/KOFAC/. 에서 Sage 로 실습 해보았 습니더.
이상구(LEE SANGGU)7월 27일 오전 9:20
전재현 씨, NICE TRY^^ 이번 기말고사가 Takehome Exam 인데 ...
1. 중간고사에서 ... 좋은 Project 제안서를 낸 학생 중 Accept 된 경우 ...
2. 기말고사를 자신의 Project 수행과 ... 제출 ... 그리고 ... 동영상 발표 제출로 하는 것도
고려해 볼까 하는 생각이 듭니다.
어떻게 생각하세요?
김범준(2017****99)7월 27일 오전 9:21
현실에서의 데이터를 이용해 최소제곱해를 구하는 것을 적용해보고자 한 계획은 있었는데 어떻게 구성해야할지 잘 몰라 못하고 있었는데, 전재현학우님의 실습을 통해 배워갑니다. 좋은 자료 감사합니다.
이상구(LEE SANGGU)7월 27일 오전 9:51
연도별 해외직접투자 현황 데이터 http://kosis.kr/statHtml/statHtml.do?orgId=102&tblId=DT_AS10203-N001
박은아(2016****73)7월 27일 오전 10:27
SVD의 개념을 익히는 것에서 더 나아가 활용 방안에 대해서는 고민을 해보았으나 막막하다고 느껴졌었습니다. 전재현학우님께서 진행하신 주어진 데이터를 활용해 추정하는 내용을 읽어보며 도움이 되었습니다. 감사합니다!
채희준(2016****00)7월 27일 오전 10:54
좋은 글 감사합니다. 이론을 배우고 이를 실제 데이터를 활용한 코딩을 해보고 싶었는데, 컴퓨터 언어에 대해 가진 지식이 부족해 실제로 시도해보지는 못하고 있었습니다. 전재현 학우님, 올려주신 코드를 따라가며 연습을 해보고 싶은데, 혹시 코드를 활용해도 괜찮을까요...?
천가영(2020****17)7월 27일 오전 11:59
덕분에 SVD, 의사역행렬의 개념과 활용법에 대하여 더 잘 이해하게 된 것 같습니다. 좋은 글 공유해주셔서 감사합니다.
김진웅(2015****73)7월 27일 오후 3:02
배웠던 수학 이론과 원리를 실제 데이터에 적용하는 과정을 잘 보았습니다.
다양한 데이터의 추세를 (1) 시험삼아 SVD를 이용하여 pseudo inverse를 만들어서 추정해 보고 (2) 패키지에서 제공하는 함수로 바로 pseudo inverse를 적용할 수 있음을 알게 되었습니다.
이에 (1) numpy.linarg.svd()로 svd를 구할 수 있음과 (2) numpy.linarg.pinv()로 pseudo inverse를 구할 수 있음을 알게 되었습니다.
응용 감사합니다.
장환승(2016****69)7월 27일 오후 3:10
많은 영향 받았습니다!!! 좋은 글 올려주셔서 감사합니다.
이상구(LEE SANGGU)7월 27일 오후 8:07
훌륭합니다. 이 정도에서 정리하고 ... 참여한 사람 이름 모두 담아 누가 Final 선언 해 주세요^^
-> 처음 올라온 프로젝트인데 개인적으로 많은 자극이 되었습니다!!
[Final OK by SGLee] Final by 장환승, 재밌는 확률 문제 소개 (2) Answer by 김태호, 정원철, 나종진, 박지수, 고경원
작성자 : 장환승(2016****69)작성일 : 8월 21일 오후 6:07조회수 : 32
개인적으로 확통 수업을 들을 때, 문제로 접할 때는 단순히 계산만 치중한 문제였으나, 해답을 구한 뒤 문제를 다시 읽었더니 새로운 insight가 생겨 공유해봅니다.
어떤 병에 걸릴 확률이 0.5%라고 가정합니다. 병원에서 이 병에 걸렸는지 판정하는 검사도구를 개발했는데, 검사의 정확도는 ‘실제로 병이 있는 경우에 병이 있다고 정확히 진단할 확률’이 95%이고, ‘실제로 병이 없는 경우에 병이 없다고 정확히 판정할 확률’이 99%라고 합니다. 어떤 사람이 검사를 받은 결과 병이 있는 것으로 양성판정을 받았을 때, 이 사람이 실제로 병에 걸려 있을 확률은 얼마나 될까?
###하단 답###
문제를 푸는 것은 강의를 듣고 실습에 참여했다면 어렵지 않을 것입니다. 약 0.32, 즉 32%로 나오게 되는데요. 그냥 답으로만 보게 되면 이상해보이지 않지만 문제를 읽고 답을 보게 되면 조금 의아하실 수도 있을 것 같습니다. 병에 걸릴 확률이 낮은 것은 둘째 치고, 무언가 정확하게 판단할 확률이 각각 95%이상이니 꽤 정확해 보이는 진단 키트인데, 오류율은 약 32%로 상당하니까요. 어디서 이런 오류율이 생기는 것이고 어떤 상황에서는 개선되는지 생각을 나누면 좋을 것 같습니다^^...0.5%
김태호(2016****92)8월 21일 오후 12:03
매우 흥미롭네요 감사합니다^^
정원철(2017****79)8월 21일 오후 1:31
굉장히 흥미로운 지적이십니다.
실제로 병이 있다고 / 없다고 판정할 확률이 각각 95%, 99%로 높은걸로 봐서 당연히 오류률이 더 낮아야 한다고 생각하는게 당연해보이지만 ..
아마도 32%는 '어떤 병에 걸릴 확률이 0.5%'인 상황에서 기인하는 거 같습니다.
베이즈 정리 식을 생각해서 대충 어림잡아보면 여기서 0.05%로 줄이면 오류률이 10%대로 줄어들 것이고, 5%로 늘리면 오류률이 80~90%대 까지 오를것 같네요.
나종진(2017****17)8월 21일 오후 1:40
흥미롭네요. 위에 정원철학우분이 설명해주신대로 베이즈정리 식으로 인해 생긴 결과인 것 같습니다.
흥미로운 주제 감사합니다.
박지수(2016****86)8월 21일 오후 1:55
병에 걸릴 확률이 0.5%로 낮아서 그런 것 같아요. 병이 있는 경우 정확히 판정이 95%이고 병이 없는 경우 병이 있다고 판정하는게 1%이지만 병에 걸리지 않을 확률의 1%가 병에 걸릴 확률의 95%보다 훨씬 많으니까요... 오히려 굉장히 높아진 것 같습니다 0.5% 확률로 병에 걸리는데 검사를 해서 양성이 나오면 32% 확률로 병에 걸려있다는거니까 검사를 거듭하면 되지 않을까요?... 한번에 높은 %가 나오는 방법은 떠오르지 않네요 좋은 글 감사합니다~
고경원(2013****45)8월 21일 오후 4:20
진양성 95%, 진음성 99%의 엄청난 정확성을 가진 키트가 정작 양성판정이 떴을 때 실제로 양성일 확률이 32%인 건 아마도 진양성의 사례 숫자가 200건 당 1건의 95%인데 비해, 위양성의 숫자가 200건 당 199건의 1%이니, 충분히 많은 표본을 확보하면 0,95:1.99라서 대략 1:2 보다 살짝 낮은 비율로 나와서 그런 거 같습니다.
만약 전파력이 더 높은 병이었다면 진양성의 사례가 증가하고 위양성의 사례가 감소할 테니 양성판정을 받은 사람이 진양성일 확률은 올라갈 것 같습니다.
장환승(2016****69)8월 21일 오후 6:05
감사합니다 ^^... 학우분들이 말씀해주신 것처럼, 전염력이 높은 경우, 키트의 정확도가 개선되는 결과가 나오게 됩니다. 댓글만 읽어도 이해가 잘 갈 수 있게 많은 분들이 잘 정리해주셨네요.
-> 다들 고심하고 댓글을 적어주신게 느껴져 감사하고 자극이 되었습니다.
이상구(LEE SANGGU)7월 23일 오전 3:24
김진웅 군은 내가 가르친 어떤 학생보다 SVD를 잘 이해하였고, classemate 들에게 쉽게 설명하였습니다. 설명에 틀린 부분 없습니다. Very good. SVD 읽은 다른 학생들은 . . . 모두 . . . 여기 아래에 코멘트 꼭 다시기 바랍니다. ^^
채희준(2016****00)7월 24일 오전 11:24
교재를 통해 공부하면서 어려움을 겪고 있던 부분이었습니다. 교재에는 간략히 적혀있던 부분들을 자세히 설명해주셔서 감사합니다. 덕분에 잘 이해할 수 있었습니다.
29’3주차 다변수함수의 극대극소판정법 정리‘
○ Taylor 정리에서 시작합니다.
미적분학에서 Taylor 정리를
로 배웠습니다.
이 Taylor 정리를 다변수함수로 확장하면
가 됩니다.
이차근사식은 Taylor 정리에서 3번째 항인 이차항까지만을 가져온 것인
입니다.
다변수함수와 이차근사식의 관계는
근방에서
입니다.
(책에서는
대신
입니다.)
(책의
부분에서
대신
를,
대신
를 넣으면 이차근사식과 유사한 식이 나올 것입니다.
입니다.)
○ 이제 다변수함수의 극대극소판정법을 알아보겠습니다.
극대극소판정법은 다변수함수
의 2계편도함수가 임계점
에서 연속일 때 적용 가능합니다.
임계점은
인 점입니다. 이차근사식이
*가 됩니다.
'
의 이차형식'을 찾게 되는데, 이는 '
의 이차근사식의 이차형식'을 말합니다.
이 부분입니다.
(이 부분은 책에 나와 있습니다: 부호만이 중요하므로 앞의 계수를 떼어냅니다.
와
를 적용하여,
의 이차형식은
입니다.)
이
의 이차형식 안의 (
의
부호) 또는 (
의
부호)로 다변수함수의 극대극소판정을 하는 것입니다.
○ 그렇다면, 이차형식으로 어떻게 함수의 극대극소를 판정할 수 있다는 것일까요?
식 *으로부터
입니다.
는 상수이므로,
만이
의 극대극소를 설명할 것입니다.
앞 강의에서 배웠듯이,
가 positive definite ⇔
. 네,
근방의
들은
인 것입니다.
는 극소입니다.
마찬가지로,
가 negative definite ⇔
이므로,
근방의
들은
인 것입니다.
는 극대입니다.
가 indefinite ⇔
에 따라
또는
이므로,
의 방향에 따라
근방의
들이 보이는 행태가 달라집니다.
는 극대극소이 아닌 saddle-point입니다.
(극대값, 극소값으로 써야 할 곳도 극대, 극소로 표현하였습니다.)
이렇게 이차형식으로 함수의 극대극소를 판정할 수 있는 이유를 알아봤습니다.
○ 정리 Comment: 처음에 책에서 Taylor 정리가 나왔을 때, 식을 이해하기 어려웠습니다. 여러 자료들을 보고 정리하여 Taylor 정리로부터 나온 이차근사식을 이해할 수 있었고, 이를 시작점으로 하여 다변수함수의 극대극소판정법의 원리(특히, 이차형식과 극대극소판정의 연결고리)를 이해할 수 있었습니다. 이번 정리가 도움이 되었으면 좋겠습니다. 틀린 부분이 있다면 알려주세요. 감사합니다.
참고한 자료들 입니다.
https://www.cs.princeton.edu/courses/archive/fall18/cos597G/lecnotes/lecture3.pdf
http://www.math.jhu.edu/~jmb/note/localmax.pdf
https://people.maths.bris.ac.uk/~maxmr/opt/multvar.pdf
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘
º Gradient Descent Algorithm은 함수 f(x)의 최소값을 음의 gradient로 반복하여 구하는 방법입니다.
함수 f(x)는 최대최소값 정리(최소→극값또는경계값), 제약조건이 없는 조건(최소→극값), Fermat의 임계점 정리(극값→∇f=0)에 의해 그 최소값을 ∇f=0에서 찾을 수 있습니다.
(∇f=0에는 최소값, 극소값, 안장점이 있으므로 최소값만이 아닌 극소값 또는 안장점에 수렴할 수 있습니다.)
복잡한 함수 f(x)에 대해서는 ∇f=0의 해를 구하는 것이 어려우므로, 앞에서 근을 구하기 위해 뉴턴방법을 이용한 것 처럼 반복근사하여 ∇f=0의 근을 찾아가는 Gradient Descent Algorithm을 적용하게 됩니다.
º Gradient Descent Algorithm의 핵심은
에서 방향
과 크기
를 찾는 것입니다.
이 될 때까지 입니다.
방향
는
로 찾으면 Gradient Descent Method,
로 찾으면 Conjugate Gradient Method,
로 찾으면 Newton Method 입니다.
크기
를 찾는 것을 line search라고 합니다. 크기
를 찾기 위한 방법으로 ① exact line search ② inexact line search가 있습니다.
º 이 그림을 먼저 보겠습니다.
[출처: 교재 http://matrix.skku.ac.kr/math4ai/part2/]
축부터 보겠습니다. x축은 찾아야 할
, y축은 함수값
인 좌표평면입니다.
곡선을 보겠습니다. 곡선은
인 그래프입니다. 여기서 방향
는 함수값
를 가장 가파르게 감소시키는
로 이미 정해진 값입니다.
일 때
값을 갖습니다.
에서 방향
로 얼마나
뻗어나가야 최소를 찾을 수 있을까?를 알고자 함수값
과 대응해 그린 그래프입니다.
를 찾기 위해 ① exact line search를 적용한다면 저 그래프의 최소점에 대응하는
로
를 바로 찾게 되는 것입니다. 대게 cost가 많이 드는 방법입니다. (여기서 최소값을 찾은 것은 아닙니다.)
º 다음으로 저 빨강, 초록, 파랑선을 설명하기 위해 알아야 할 내용을 상기시켜보겠습니다.
방향도함수(방향미분계수)는
입니다. 한 점
에서의 기울기는
가 됩니다.
직선방정식은
입니다.
입니다.
빨강선을 보겠습니다. 빨강선의 기울기는
입니다. 빨강선의 직선방정식은
입니다.
초록선과 파랑선의 기울기는 빨강선의 기울기에 각각
와
을 곱한 값입니다.
이므로 빨강선보다 완만한 초록선, 초록선보다 완만한 파랑선이 될 것입니다.
초록선을 보겠습니다. 초록선의 기울기는
입니다.
파랑선을 보겠습니다. 파랑선의 기울기는
입니다. 파랑선의 직선방정식은
입니다.
º
를 찾기 위한 ② inexact line search는 Wolfe condition ![]()
과 ![]()
를 만족하는
로
를 찾습니다.
조건 (1)은 파랑선 밑으로
를 찾아야 한다는 것입니다. 접점에서의
를
로 합니다. 조건 (2)는 초록선 의 기울기보다 한 점에서의 기울기가 더 커야 한다는 것입니다. 그
를
라 합니다.
그러면,
는
에서 하나의 값을 고르는 것입니다.
이상으로 Gradient Descent Algorithm을 정리하였습니다.
º 오늘 배운 Gradient Descent Algorithm은 한 번에 이해하기 정말 어려운 알고리즘이었습니다. 그래프를 해석하면서 Wolfe condition의 의미를 알 수 있어서 좋았습니다. inexact line search에 대해서 잘 알게 되었습니다. 틀린 것이 있다면 꼭 알려주세요. 감사합니다.
41’4주차 Gradient Descent Algorithm 추가 정리‘
º 다음은 교재 예제
에서
exact line search(steepest-descent method)를 수행하여
어떻게
를 유도해 내었는지를 정리합니다.
조건은
와
입니다.
에서
와
를 찾아야 합니다.
예제에서는 exact line search를 하면서 steepest-descent method를 사용하였습니다.
이고 이 함수에서는
입니다.
(일변수함수와 비교하면 이해 되실 겁니다.
)
이제
를 구하기 위해서,
를
에 대하여 전개합니다. (exact line search는
를 최소화하는
를 찾습니다.)

*은
가 symmetric이므로 성립합니다.
이제
를
에 대하여 미분합니다.
![]()
인
가
를 최소화합니다. (
가 positive definite이기 때문에 최소화입니다.)
즉,

네, 맞습니다.
는
입니다.
정리하면, steepest descent method에서
가 positive definite symmetric인
simple quadratic function의
는
입니다.
º정리하면서 Gradient Descent Algorithm에서 exact line search를 어떻게 하는지 예제를 통해 알게 되었습니다.
큰 도움을 받은 자료입니다.
2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬>
작성자 : 김진웅(2015****73)작성일 : 7월 23일 오전 2:33
조회수 : 50
SVD를 공부하면서 알아야 할 것들이 무엇이 있는지 정리할 필요성을 느껴 정리해 보았습니다. 조금이나마 도움 되길 바랍니다.
1.
와
는 항상 대칭행렬이다. 각각
,
정사각행렬이다.
2.
와
에 대하여 0 아닌 고유값이 서로 같다.
3.
의 고유값은 모두 0보다 크거나 같다.
4.
의 rank와
의 rank는 같다.
5. n차정사각행렬
와
가 직교닯음 ⇔
인 직교행렬
가 존재.
6. 직교대각화가능한 n차정사각행렬
⇔
는 대칭행렬 ⇔
는 n개의 일차독립인 고유벡터를 가짐 & 서로 다른 고유값에 대응하는 고유벡터들은 서로 직교.
7.
에서, 직교대각화가능한 n차정사각행렬
의 직교대각화하는
는
의 정규직교화된 고유벡터를 열로 갖는 직교행렬,
는 대각선성분으로
의 고유값을 갖는 대각선행렬.
8.
와
는 항상 대칭행렬이므로,
와
는 항상 직교대각화가 가능.
○ 임의의
행렬
는 SVD를 통하여
로 분해된다는 것입니다.
는 singular value와 singular vector를 가지는데,
가
의 singular value
를 갖고 있고,
와
가
의 singular vector
,
를 열로 갖고 있습니다.
그러면
,
,
를 구해봅시다.
는
를 직교대각화하는 직교행렬입니다.
를 구할 때는
의 고유값(
의 고유값이 아닙니다)과 고유벡터를 구하고, 고유벡터를 정규직교화하여, 그것을 열(right singular vector
)로하는 행렬로
를 구하게 됩니다.
이 때 고유값을 같이 구했으므로, 이 고유값의 square root인 singular value
를 대각선성분으로 하는 대각선행렬
를 함께 구하게 됩니다. singular value
를 단조감소하도록 배치하여
와
를 구해야 합니다.
는
를 직교대각화하는 직교행렬입니다.
를 구할 때와 같이 하기 보다, 이미 구해 놓은
와
를 이용합니다.
를 구할 때는
를 열(left singular vector
)로하는 행렬로
를 구하게 됩니다.
이로써
,
,
를 구했습니다.
○ 이제, 왜 singular value
는 고유값의 square root이고,
의 대각선성분으로 고유값이 아닌 singular value
를 갖는지 알아보겠습니다.
직교대각화가능한
와 이를 직교대각화하는 직교행렬
로부터, 무엇이
와 직교닮음인지 알 수 있습니다.
![]()
와
가 직교닮음인 것입니다.
를 직접 계산해보면
입니다.
즉,
입니다.
마찬가지로,
와
는 직교닮음이고,
입니다.
singular value
가 왜 고유값의 square root인지 알아보겠습니다.
직교대각화가능한
의
, 여기에서는
가 대각선성분으로
의 고유값
을 갖는 대각선행렬이 됩니다. (7.을 떠올립시다)
따라서
의 식이 세워지게 되고 singular value
는
의 square root,
가 되는 것입니다.
마찬가지로,
의 대각선성분으로 고유값
이 아닌 singular value
를 갖는 이유는,
가 대각선성분으로 고유값
를 가지는 것이고,
는 대각선성분으로 singular value
를 갖게되는 것이기 때문입니다.
이로써, 왜 singular value
는 고유값의 square root이고,
의 대각선성분으로 고유값이 아닌 singular value
를 갖는지 알아보았습니다.
○ 저는 singular value
가 고유값의 제곱근이라는 사실을 듣고, 고유값은 음수일수도 있는데 어떻게 되는거지라고 생각했는데, 3.의 성질이 있음을 알고나서
의 고유값은 양수 또는 0이니 제곱근을 가질 수 있음을 이해하였고, 더불어서 SVD에서 쓰이는 고유값은
의 고유값이 아닌
의 고유값임을 다시금 깨닫게 했던 좋은 기회였습니다. 또,
에서 책에서는
이
의 rank라고 적혀 있어서 이건
가 아니라
와 관련있는것이 아닌가 했는데 4.의 성질을 보고 이해하게 되었습니다. 등등 왜 이렇게 되는지 이해가 명확히 되지 않다가 1.~4.의 성질이 있음을 알게 된 후 각 개념의 연결이 선명해지는 느낌을 받았습니다. 5.~8.은 배웠던 것을 정리한 것입니다. 아무쪼록 제가 이해한대로 설명한 것이 SVD를 이해하는데 도움이 되었으면 좋겠습니다. 틀린 것이 있다면 알려주세요. 감사합니다.
도움 받았던 자료입니다.
https://people.sc.fsu.edu/~jburkardt/classes/gateway_2014/lecture_week09.pdf
http://matrix.skku.ac.kr/math4ai-intro/W12/
Part 3 에서 배울 내용 미리 공유합니다.
< SVD 와 주성분 분석과 공분산 행렬>
주성분 분석은 원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터들을 저차원 공간으로 변환하는 기법이다.
그런데 원 데이터의 분포에 대한 정보는 공분산 행렬에 담겨 있다. 왜냐하면 공분산 행렬은 주대각선 상의 성분에 각 확률변수가 얼마나 퍼져 있는지를
나타내는 분산과 주대각선 이외의 성분에 확률변수 간의 상관관계를 나타내는 공분산으로 되어 있기 때문이다. 따라서 주성분 분석은 공분산 행렬과 관계가 있다.
데이터 행렬
가 센터링(mean-centered) 되어 있는 행렬이면,
공분산 행렬
는 다음과 같이 계산된다.


주성분 분석의 목표는 ‘공분산 행렬로 부터 얻은 정보’를 최대한 보존하는 ‘더 적은 개수(
)의 새로운 변수들’을 찾으려는 것이다.
의 특잇값 분해
![]()
로부터 다음 관계를 얻는다.
![]()
![]()
![]()
![]()
따라서 ![]()
, 즉
(
)인 관계가 성립한다. 이때
를
의 고윳값(eigenvalue),
를 고유벡터(eigenvector)라고 한다.
는
번째 PC의 분산을 나타내며,
는
번째 축을 나타낸다. (고윳값, 고유벡터에 관한 자세한 사항은 대학수학에서 다룬다. http://matrix.skku.ac.kr/math4ai/part1/ )
[열린문제] 공분산 행렬에 대한 주성분분석(PCA)을 하여, 차원을 축소하는 과정에 대하여 이해한 바를 토론하시오.
*12.6 주성분 분석과 선형회귀
...
이전
다음
10개의 댓글
이상구(LEE SANGGU)7월 23일 오전 3:24
김진웅 군은 내가 가르친 어떤 학생보다SVD를 잘 이해하였고, classemate 들에게 쉽게 설명하였습니다.설명에 틀린 부분 없습니다.Very good.SVD 읽은 다른 학생들은 . . . 모두 . . . 여기 아래에 코멘트 꼭 다시기 바랍니다. ^^
박정호(2014****10)7월 23일 오후 3:40
읽기 쉽게 정리 잘 해주셔서 저도 한 번 더 복습하는 기회를 가진 것 같습니다. 감사합니다.
한수현(2019****61)7월 23일 오후 11:51
어려움을 느꼈던 부분인데 이렇게 정리해주셔서 감사합니다. 복습할 때 이 글을 참고해서 공부하면 도움이 많이 될 것 같아요.
나종진(2017****17)7월 24일 오전 00:25
특이값분해를 배우려고 지금까지 열심히 배웠나봅니다. 배운 내용중에 가장 어려웠습니다. 잘 정리해주셔서 이해에 많은 도움이 되었습니다. 감사합니다.
이상구(LEE SANGGU)7월 24일 오전 9:18
Very good^^^
채희준(2016****00)7월 24일 오전 11:24
교재를 통해 공부하면서 어려움을 겪고 있던 부분이었습니다. 교재에는 간략히 적혀있던 부분들을 자세히 설명해주셔서 감사합니다. 덕분에 잘 이해할 수 있었습니다.
김홍민(2014****22)7월 25일 오후 2:21
강의를 듣고 교재를 보며 공부를 하는데 이해가 잘 되지 않았던 부분인데 큰 도움이 된 것 같습니다. 감사합니다
배유근(2020****34)7월 26일 오전 11:47
이해하기 쉽게 설명해주셔서 감사합니다. 복습할때 참고하겠습니다!
이상우(2016****46)8월 16일 오전 4:53
Singular Value Decomposition (SVD) is an algorithm widely used in the field of machine learning. It can be used not only for feature decomposition in dimensionality reduction algorithms, but also for recommendation systems, natural language processing and other fields. It is the cornerstone of many machine learning algorithms. Thank you for your summary, very useful.
안성진(2015****36)8월 18일 오후 8:46
감사합니다. singular value가 eigenvalue의 square root인 이유가 이해 안됬는데, 본 글을 읽고 이해가 되었습니다.
54’6주차 PCA 정리‘ 정리
º 데이터행렬과 그 변수로부터 시작합니다.

변수의 공분산행렬을 구합니다.

공분산행렬의 고유값과 고유벡터를 구합니다.

이는 구하고자 하는 주성분의 분산과 주축에 해당합니다.

데이터행렬에 주축을 곱하여 데이터행렬을 주성분화 합니다.

주성분으로 나타난 주성분화된 데이터행렬을 구하게 되었습니다. 주성분 score는 이것의 열벡터들입니다.

마지막으로, 주성분을 선택하여 데이터행렬을 축소시키게 됩니다. 주성분을
개 만큼만 갖습니다. 몇개를 고를지는 주성분의 분산으로 판단합니다.

º SVD를 사용하여 주성분분석을 하겠습니다.

데이터행렬의 SVD를 구합니다.

SVD를 구하면 공분산행렬의 고유값과 고유벡터를 따로 구할 필요 없습니다.
는 계산만 하면 됩니다.

주성분화 데이터행렬도 마찬가지로 SVD로부터 바로 구해집니다.

SVD의 행렬
와
로부터 주성분
개를 선택하여 축소된 주성분화 데이터행렬을 만들게 됩니다. 몇개를 선택할지는 주성분의 분산으로 판단합니다.

º SVD로 주성분분석하는 것을 정리하겠습니다.

1. 데이터행렬의 SVD를 구한다.

2. SVD로부터 주성분의 분산
를 구한다.

3. 주성분의 분산
으로부터 주성분을 얼마나 고를지
를 정한다.

4.
개를 선택한 SVD의
로축소된 주성분화 데이터행렬을 구한다.

º Comment: PCA를 정리하면서 처음에는 식과 변수들이 여러개 나와 복잡하고 헷갈려서 어려웠는데, 정리를 하고나서 개념을 정돈할 수 있었습니다. PCA는 SVD가 핵심임을 알 수 있었고, 앞으로 차원축소의 한 기법인 주성분분석을 적용할 수 있게 되었습니다. 틀린 것 있다면 알려주세요. 감사합니다.
61’7주차 오차역전파법 정리‘
º오차함수
가 오차제곱합(Sum of Squared Errors)일 때 오차역전파법을 설명하겠습니다.
(책에서는 활성화함수가 sigmoid일 때만을 설명하고 있으므로, 이를 일반화하려는 것입니다.)
가중치
와 활성화함수
를 갖는 신경망으로 시작합니다.
신경망의
번째 층과 그 다음
번째 층을 나타내었습니다. index는 해당 층에 속함을 의미합니다.
º
번째 층의 출력을 설명합니다.

먼저,
번째 층의 출력
를 얻었습니다.

에 가중치
를 곱하면
를 얻습니다.

에 활성화함수
를 적용하면
번째 층의 출력
를 얻습니다.

º 오차를 역전파하는 것을 설명합니다.

먼저,
번째 층에 역전파된 오차
를 얻습니다.

번째 층의 역전파된 오차를 얻기 위하여,
번째 층의
와활성화함수
가필요합니다.

번째 층의 활성화함수
의 도함수
를 구합니다.

번째 층의 역전파된 오차
는 다음과 같습니다.

단,
번째 층이 출력층일 때
는
입니다.

º
번째 층의 가중치를 갱신하는 것을 설명합니다.

번째 층의 가중치
를
로 갱신하기 위해서는,

경사하강법을 적용하게 되고,
를 계산해야 합니다. 오차함수
가 오차제곱합일 때는
입니다.

따라서, 다음과 같이
를 구하여
번째 층의 가중치를 갱신합니다.

º 정리하면서 오차역전파법이 무엇인지 확실히 알게 되었고 신경망이 학습하는 원리를 이해할 수 있게 되었습니다. 오차역전파법은 (1) 이전층에 오차를 역전파하고 (2) 현재층의 가중치를 갱신하는 것입니다. 또, 오차역전파법에서 가중치를 갱신할 때 경사하강법을 사용합니다. 감사합니다.
참고한 자료입니다.
https://dustinstansbury.github.io/theclevermachine/derivation-backpropagation
풀이(2개) (중간 2개)
4‘[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이’
47’[중간고사 과제] 열린문제 4문제‘
4‘[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이’
[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이
[HW 10문제 풀이 by 김진웅] 기초수학 입문 열린문제 풀이
Solved by 김진웅
Finalized by 장환승
Final OK by SGLee
[열린문제 1] 다른 교재에서 찾은 몇 가지 다항함수의 개형을 그리시오.
(1)
(2) ![]()

[열린문제 2]
그래프의 개형을 그리시오.
[열린문제 3] 앞에서 배운 함수들 중 학습한 함수의 합성함수를 만들고, 그래프를 그리시오.
[열린문제 4] 다음 학생들의 문제풀이를 참고하여 다양한 방정식의 (근사)해를 구하시오.
(1)
(2) ![]()
-0.7199997828641306 0.9986407863870402 1.8571838602077428 4.536403654973528

[열린문제 5] 행렬에 대해 학습한 다른 교재의 행렬 연산을 시행해 보시오.
A, B, C, k에 대하여 A - B, k*A + B, A*C*B를 수행하였습니다.
A = random_matrix(ZZ, 6, 7, x=-100, y=100)
B = random_matrix(ZZ, 6, 7, x=-100, y=100)
C = random_matrix(ZZ, 7, 6, x=-10, y=10)
k = ZZ.random_element(x=-100, y=100)
print("A =")
print(A)
print("B =")
print(B)
print("C =")
print(C)
print("k =", k)
print()
print("A - B =")
print(A - B)
print("k*A + B =")
print(k*A + B)
print("A*C*B =")
print(A*C*B)

[열린문제 6] 인터넷이나 다른 교재에서 5차 (이상) 행렬을 찾아서, 전치행렬과 역행렬이 존재하는지를 확인하고, 존재하면 찾아보시오.
7X7행렬 A에 대하여 전치행렬과 역행렬을 찾아봤습니다.
A = matrix([[1, 2, 3, 4, 5, 6, 7], [1, 2, 4, 8, 16, 32, 64], [2, 3, 5, 7, 11, 13, 17],
[0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1]])
print("A =")
print(A)
print()
print("A^T =")
print(A.transpose())
print()
print("A is invertible?")
print(A.is_invertible())
if A.is_invertible():
print("inverse of A =")
print(A.inverse())

[열린문제 7] 거리 척도를 사용하여 유사도를 계산할 수 있는 데이터의 종류에는 어떤 것이 있는지 생각해보시오.
데이터의 속성 간 비율(데이터의 방향)보다는 그 속성 자체의 절대량이 중요한 데이터들이 있습니다. 이들은 거리 척도로 유사도를 계산할 때 그 유사도가 유의미합니다.
대표적인 예로, 위치좌표 데이터가 있습니다.
[열린문제 8] 위의 거리 척도로 유사도를 판단하기가 용이하지 않은 데이터의 경우에 유사도를 판단하는데 사용이 가능한 다른 척도는 무엇이 있을지 생각해보시오.
데이터의 속성 간 비율만을 계산하는 각도 척도가 있습니다.
[열린문제 9] 두 개의 7차원 벡터(데이터) 사이의 거리(distance)를 직접 구하시오.
랜덤한 7차원 벡터의 거리를 구했습니다.
a = random_vector(ZZ, 7, x=-100, y=100)
b = random_vector(ZZ, 7, x=-100, y=100)
print("a =")
print(a)
print("b =")
print(b)
print()
print("dist(A, B) =", (a - b).norm())
![]()
[열린문제 10] 어떤 데이터들이 코사인 유사도를 사용하여 분석 가능할지 생각해보시오.
데이터의 속성 간 비율만이 중요한 데이터들이 코사인 유사도를 사용할 때 그 값이 유의미합니다.
대표적인 예로 색의 색상(Hue)이 있습니다.
[열린문제 11] 두 개의 5차원 데이터(벡터) 사이의 내적과 사잇각
를 구하시오.
랜덤한 5차원 벡터로부터 내적과 사잇각(radian과 degree)을 구했습니다.
a = random_vector(ZZ, 5, x=-100, y=100)
b = random_vector(ZZ, 5, x=-100, y=100)
ab = a.inner_product(b)
an = a.norm()
bn = b.norm()
cos_sim = ab/(an*bn)
ang = arccos(cos_sim)
print("a =")
print(a)
print("b =")
print(b)
print()
print("a.b =", ab)
print("||a|| =", an)
print("||b|| =", bn)
print("cosine similarity =", cos_sim.n(digits=3))
print("angle(rad) =", ang.n(digits=3))
print("angle(degree) =", (ang*180/pi).n(digits=3))
[열린문제 12] 다른 교재의 선형 연립방적식의 해를 위의 명령어로 구하시오.
랜덤한 5x5 행렬 A와 5차 벡터 b를 이용하여 Ax=b의 해를 구하고 다시 Ax를 계산하여 검산했습니다.
A = random_matrix(ZZ, 5, 5, x=-10, y=10)
b = random_vector(ZZ, 5, x=-10, y=10)
print("A =")
print(A)
print("b =")
print(b)
print()
print("x =", A.inverse()*b)
print("x =", A.solve_right(b))
print()
print("b =", A*A.solve_right(b))

[열린문제 13] 주어진 선형연립방정식이 유일해를 갖는지, 무수히 많은 해를 갖는지, 해가 존재하지 않는지를 판단하는 것은 첨가행렬의 RREF를 구하여 이것만 자세히 보면 바로 판단이 가능한 이유를 설명하시오.
RREF의 가장 큰 특징은 leading 1을 보고 leading variable(해당 행에 leading 1이 있음)과 free variable(해당 행에 leading 1이 없음)를 한눈에 구분해 낼 수 있음과 동시에 leading variable간 연관성이 제거된 해, 각 leading variable이 free variable로만 이루어진 해를 한눈에 파악할 수 있다는 것입니다. 이로 하여금 leading variable이 없는 첫 행이 있다면 그 행의 마지막 성분이 0이 아닐 때에는 해가 존재하지 않고, 그렇지 않다면 free variable이 하나라도 존재하면 무수히 많은 해를 갖고, free variable 없이 leading variable만이 존재한다면 유일해를 갖게 되는 것입니다.
[열린문제 14] 평면의 6개의 점에 (best fit 하는) 3차의 최소제곱곡선
을 구할 수 있음에 대하여 토론하시오.
6개의 데이터를 3차함수에 대입하여 나온, 3차함수의 계수 a, b, c, d를 미지수로 갖는 6개의 선형방정식을 묶어 선형연립방정식을 만들면 그 행렬형태는 6x4 계수행렬 A와 4x1 벡터 u의 곱은 6x1 벡터 y라는 식으로 표현됩니다. Au=y에 대한 최소제곱해는
입니다. 서로 다른 6개의 점에 대하여 계수행렬 A의 열벡터들
은 일차독립을 이룹니다. 따라서 A가 full column rank이므로 A^tA가 가역이 되고. 6개의 점에 대하여 3차 최소제곱곡선을 구할 수 있습니다. 이와 같이, n개 이상의 서로 다른 점이 있다면 위의 최소제곱해를 이용하여 n차 최소제곱곡선을 구할 수 있습니다.
[열린문제 15] 다른 교재에서 찾은 선형연립방정식의 최소제곱해를 구하시오.
선형연립방정식
의 최소제곱해 
def gs_orth(A):
m, n = A.nrows(), A.ncols()
r = A.rank()
if m <n:
raise ValueError("The number of rows must be larger than the number of columns.")
elif r <n:
raise ValueError("The matrix is not full column rank.")
[G, mu] = A.transpose().gram_schmidt()
Q1 = matrix([G.row(i) / G.row(i).norm() for i in range(0, n)])
R1 = Q1*A
Q = simplify(Q1.transpose())
R = simplify(R1)
return Q, R
A = matrix([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])
b = vector([4, 1, -1, 3])
Q, R = gs_orth(A)
print(R.solve_right(Q.transpose()*b))
![]()
[열린문제 16] 다른 교재에서 찾은 행렬의 특잇값 분해(SVD)를 구하시오.
의 SVD
,
,![]()
A = matrix(RDF, [[1, 2, 3], [4, 5 ,6]])
U,S,V = A.SVD()
print("A = ")
print(A)
print("U = ")
print(U.n(digits=2))
print("S = ")
print(S.n(digits=2))
print("V = ")
print(V.n(digits=2))
print("USV^t = ")
print((U*S*V.transpose()).n(digits=2))

47’[중간고사 과제] 열린문제 4문제‘
[열린문제 1] 다른 교재에서 찾은 (연속) 미분가능한 함수의 3계 도함수(3rd derivative)를 구하시오.
의 3계도함수 ![]()
코드입니다.
var('x')
f(x)=e^(sin(x))
print("derivative of f(x)=", diff(f(x), x))
print("2nd derivative of f(x)=", diff(diff(f(x), x), x))
print("3rd derivative of f(x)=", diff(diff(diff(f(x), x), x), x))
derivative of f(x)= cos(x)*e^sin(x)
2nd derivative of f(x)= cos(x)^2*e^sin(x) - e^sin(x)*sin(x)
3rd derivative of f(x)= cos(x)^3*e^sin(x) - 3*cos(x)*e^sin(x)*sin(x) - cos(x)*e^sin(x)
손으로 푼 것과 일치합니다.
[열린문제 2] 주어진 구간에서 두 번 미분가능한 함수를 골라서 그 함수의 극댓값, 극솟값 및 그 구간에서의 최댓값, 최솟값을 찾아보시오.
의 극댓값 0 at x=0, 극솟값 -108/3125 at x=2/5, 최댓값 0.00121 at x=1.1, 최솟값 -108/3125 at x=2/5
코드로 풀었습니다.
var('x')
f(x)=x^5-3*x^4+3*x^3-x^2
show(plot(f(x),(x,-0.1,1.1)))
print(solve(diff(f(x))==0, x)) # x=2/5 x=1 x=0
print("local maximum of f at 0:", f(0))
print("local minimum of f at 2/5:", f(2/5))
ma=max(f(2/5), f(0), f(-0.1), f(1.1))
mi=min(f(2/5), f(0), f(-0.1), f(1.1))
print("global maximum of f in [-0.1,1.1]:", ma)
print("global minimum of f in [-0.1,1.1]:", mi)
[
x == (2/5),
x == 1,
x == 0
]
local maximum of f at 0: 0
local minimum of f at 2/5: -108/3125
global maximum of f in [-0.1,1.1]: 0.00121000000000038
global minimum of f in [-0.1,1.1]: -108/3125
[열린문제 3] 함수
의 최솟값을 구하시오. 단
=0 , eta=0.1 , epsilon=10^-6 으로 한다.
의 최솟값 4.64
Gradient Descent Method로 풀었습니다.
var('x')
f(x)=9*x^2-7*x+6
#Gradient Descent Method
A = diagonal_matrix(RR, [18])
b = vector(RR, [7])
c = 6
eta = 0.1
epsilon = 10^(-6)
x0 = vector(RR, [0])
d0 = -b
r = []
for i in range(0, 200):
if i%20==0: print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b)+c)
d0n = d0.norm()
r.append((x0[0], 1/2*x0.inner_product(x0*A)-x0.inner_product(b)+c))
if d0n <epsilon:
break
a = eta
x1 = x0-a*d0
d0 = A*x1-b
x0 = x1
print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b)+c)
show(plot(f(x),(x,0,1)) + point(r, color='red'))
0 (0.000000000000000) 6.00000000000000
20 (0.384405305259862) 4.63906981158831
40 (0.388837196689053) 4.63888891293764
60 (0.388888292918401) 4.63888888889209
71 (0.388888940082364) 4.63888888888891
71번째에 tolerance안으로 들어옵니다.
[열린문제 4] 다양한 미분가능 함수인 경우, 일단 그래프의 개형을 그리고, 눈으로 확인되는 극솟값을 포함하는 작은 구간들을 정한다. 임의의 미분가능한 함수를 골라서 그 후, 각각의 구간에서 시작점을 잡아 경사하강법을 적용한다. 결과값(output)에 대하여 토론하시오.
김진웅: gradient descent method는 search direction
와 step-size
를 잘만 잡아준다면 발산하지 않고 정해 놓은 최소값·극소값에 수렴할 것입니다. 그렇지 않으면 발산을 하거나 다른 최소값·극소값에 수렴하거나 최소값·극소값이 아닌 안장점에 수렴할 수 있습니다. 문제에서, 각각의 작은 구간들이 다른 최소값·극소값과 안장점을 포함하지 않고 경사하강법의
와
를 잘 정의하면 모든 결과값은 정해 놓은 최소값·극소값에 수렴할 것입니다.

[https://ruder.io/optimizing-gradient-descent/index.html#visualizationofalgorithms]
질문(6개) (중간 5개 기말 1개)
7‘[Final] by 김진웅 질문 by 김진웅 답변 by 정환승, 유가이올렉산드르 [HW 질문] 열공간, 행공간, 영공간 사이의 관계’ ‘[Final OK by TA] [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’
9‘[Final OK by TA] [Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’
16’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
17’[Final OK by TA] [Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘
34’[Final OK by TA and SGLee] [Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘
58’[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 < --- 답 <---보충), A by 이상구, 이재화‘
7‘[Final] by 김진웅 질문 by 김진웅 답변 by 정환승, 유가이올렉산드르 [HW 질문] 열공간, 행공간, 영공간 사이의 관계’ ‘[Final OK by TA] [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’
[HW 질문] 열공간, 행공간, 영공간 사이의 관계
질문 by 김진웅
답변 by 정환승, 유가이올렉산드르
Finalized by 김진웅
행렬 A와 열공간 Row(A), 행공간 Col(A), 영공간 Null(A) 사이의 관계

의 증명을 알고 싶습니다.
장환승(2016****69)7월 19일 오전 12:09
u라는 벡터가 Null(A)에 속하는 벡터라고 하고 v라는 벡터는 Row(A)에 속하는 벡터라고 하면, A^T = [w1 w2 ... w(n)] 이라고 하면 (크기가 n) v = a1w1 + a2w2 + .... + a(n)w(n) v = (A^T)a a^T = [a1 a2 .... a(n)] u*v(내적) = (u^T)v = (u^T)(A^T)a = ((Au)^T)a = (0^T)a = 0 따라서 Row(A) ㅗ Null(A) 입니다. ^T 는 transpose 를 의미합니다.
Finalized by 유가이 올렉산드 [HW 질문 ] 열공간 , 해공간 , 영공간 사이의 관계
질문 by 김진웅
답변 by 장환승
추가답변 및 Finalized by 유가이 올렉산드르
Q: 행렬 A와 열공간 Row(A), 행공간 Col(A), 영공간 Null(A) 사이의 관계
의 증명을 알고 싶습니다.
참고: http://matrix.skku.ac.kr/LA-Lab/7-2/7-2.htm

http://matrix.skku.ac.kr/LA-K/Ch-7/
주어진 행렬의 기본 공간들 사이의 관계
●
Col(
), Col(
)=Row(
,
● Row(
)![]()
Null(
), Null(
)![]()
Row(
),
● Col(
)![]()
Null(
), Null(
)![]()
Col(
)
http://matrix.skku.ac.kr/nla/rank-review/Reciew-rank.htm
Main Theorem Let
TFAE
(1) A가 invertivle
(2) det A
0
(3) A ~
(row equivalent)
(4) A는 Elementary matricces의 product
(5) PA=LDU with all
0
(6) Ax=b has a solution ![]()
(7) N(A)={0}
(8) A의 col's가 가 L.I
(9) C(A) =![]()
(10) A has a left inverse
(11) rank A = n
(12) A의 row's가 L.I
(13) R(A)=![]()
(14) A has a right inverse
(15)* L.T A :
via A(x)=Ax 가 단사
(16)* 위의 L.T가 전사
(17)* 0은 A의 고유값이 아니다,
A:
u 라는 벡터가 Null(A)에 속하는 벡터라고 하고
v 라는 벡터는 Row(A)에 속하는 벡터라고 하면,
A T = [w1 w2 ... w(n)] 이라고 하면 (크기가 n )
v = a 1 w 1 + a 2 w 2 + .... + a n w n
v = (A T )a
a T = [a 1 a 2 .... a n ]
u*v(내적 ) = (u T )v = (u T )(A T )a = ((Au)T )a = (0 T )a = 0
따라서 Row(A)⊥ = Null(A) 입니다.
T 는 transpose 를 의미합니다.
추가 답변 :
► 아래에 증명에도 참고하세요 .
1) Prove that, Row(A)⊥ = Null(A)
Prove:


2) Prove that, Col(A)⊥ = Null(A T )
Prove:

Final Comment: 두 학우분의 답변으로 행공간의 perp가 영공간이고, 열공간의 perp가 transpose의 영공간임을 증명을 통해 잘 알게 되었습니다. 감사합니다.
9‘[Final OK by TA] [Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’
[HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법
질문 by 김진웅
답변 by 이재화, 전재현, 이상구
Finalized by 김진웅
선형연립방정식 Ax=b에 대하여 mxn(m>=n) 계수행렬 A가 full column rank이면 QR분해를 통해 쉽게 최소제곱해를 구할 수 있습니다.
그렇다면, A가 full column rank가 아닌 경우는 어떤 것이 있을까요? 예컨대 식(데이터)이 미지수보다 부족하여 m<n인 경우가 있을 것입니다. 이 외에 A의 열벡터들이 서로 일차독립이지 않는 경우로 어떤 예가 있을까요?
또, 이렇게 A가 full column rank가 아닌 경우에는 어떤 방법으로 쉽게 최소제곱해를 구할 수 있을까요?
이재화 7월 19일 오전 1:27
A가 full column rank가 아닌 경우 A의 SVD를 이용하여 구할 수 있습니다.
전재현(2015****91)7월 19일 오전 3:23
1. 정사각행렬의 경우 열이 일차독립이지 않은 경우는 det A= 0인 행렬들이 모두 예가 될 수 있습니다. 2. 즉 정사각행렬의 경우, 역행렬이 존재하지 않거나, 하나의 열벡터를 나머지 열벡터들의 일차결합으로 표현할 수 있다거나 등등입니다. 이 경우 열벡터들이 서로 일차독립이지 않는 예가 됩니다. 무수히 많은 예가 있습니다. <잘못 생각하고 있는게 있다면 답변 부탁드립니다. <--- 잘 이해 하셨습니다.>
이상구(LEE SANGGU)7월 19일 오전 5:22
1. 선형연립방정식 Ax=b에 대하여 mxn(m>=n) 계수행렬 A가 full column rank가 아닌 경우는 ... 이재화 박사님 의견대로 SVD 를 이용하면 됩니다. 2. 그리고 이런 경우... A가 full column rank가 아닌 경우에는 ... 쉽게 생각하면 ... 먼저 A^T 의 REF 를 구하여, 일차독립인 벡터들을 구분하고, 나머지 일차종속인 벡터들 ... 즉 대응하는 열 column 중에서 일차종속인 것들은 ... 다 제외하고 .. 남은 Full column rank 갖는 (부분) 행렬 (submatrix)에 QR분해를 하는 아이디어를 적용하여... 답을 구하고... 그 답이 원래 문제 에 어떤 의미를 주는 답인지 ... Re -interpretation 하시면 됩니다. SVD 나 일차종속인 열을 제외하고 ... 알고리즘을 적용하는 ... 이런 기법들을 이용하여 ... 필요로 하는 ... 최적해를 구할 수 있습니다. 3. 이 외에 A의 열벡터들이 서로 일차독립이지 않는 경우로 어떤 예가 있을까요? <--- 무수히 많은 예가 있습니다.
Final Comment: 선형연립방정식의 계수행렬이 full column rank가 아닌 경우로 'det A=0' 등 무수히 많은 예가 있고, 그러한 경우에는 SVD(고유값분해)를 이용하거나 일차종속인 열을 제외하는 방법을 이용하여 최적해를 구하게 된다는 것을 배웠습니다. 감사합니다.
16’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
[HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원
질문 by 김진웅
답변 by 유가이올렉산드르, 이상구
Finalized by 김진웅
어떤 행렬 A 와 B 가 주어졌을 때 ...
서로 같은 (중근의) 고유값에 대응하는 (일차독립인) 고유벡터들이 이루는 부분공간 (eigenspace) 의 차원이 다를 때가 있는데 ...
어떻게 구분하여 알 수 있나요?
A 의 닮은 대각선행렬 : ![]()
B 의 닮은 대각선 행렬 :
라는 의미는? 무엇인가요?
유가이올렉산드르(2018****33)7월 21일 오전 2:58
Let's try to analyze the given example.
The first matrix "D = ([[1, 0], [0, 1]])" has two eigenvalues (1 and 1) but they are obviously not distinct. Since A is the identity matrix, Av=v for any vector v, i.e. any vector is an eigenvector of A. We can thus find two linearly independent eigenvectors (say <-2,1> and <3,-2>) one for each eigenvalue.
But, the second matrix "D = ([[1, 0], [1, 1]])" also has non-distinct eigenvalues of 1 and 1. All eigenvalues are solutions of (A-I)v=0 and are thus of the form <t,0>. Hence, in this case there do not exist two linearly independent eigenvectors for the two eigenvalues 1 and 1 since <t,0> and <s,0> are not linearly independent for any values of s and t.
Remark 1: Every eigenvalue with multiplicity = n will be associated with n different (as in linearly independent) eigenvalues.
Multiplicity is how many "times" it shows up as an eigenvalue. It is like when you find only one solution to a second degree equation, which always has two roots. This solution has a multiplicity = 2.
Remark 2: If a matrix has more than one eigenvector the associated eigenvalues can be different for the different eigenvectors.
Geometrically, the action of a matrix on one of its eigenvectors causes the vector to stretch (or shrink) and/or reverse direction.
이상구(LEE SANGGU)7월 21일 오전 4:17
Good.
1. 답은 Ax = lamda x 의 해공간의 차원 은 2 이고, Bx = lamda x 의 해공간의 차원은 1 이 라는 의미입니다.
즉, A 의 고윳값 1은 고유공간의 차원은 2 이고, B의 고유공간의 차원은 1 이라는 의미입니다.
고유공간(eigenspace) 에 대하여 좀 더 알아봅시다.
2. 더 자세히 설명하자면
행렬에 대응하는 고유값들은 여러분들이 이미 알고 있는 (대수적) 중복도를 가질 수 있습니다.
지금 물어본 그리고 유가이 군이 아주 자세히 준 설명은 , 고윳값에 대한
기하적 중복도 (Geometric multiplicity) 라는 새 개념 입니다.
1. 고윳값에 대응하는 기하적중복도는 그 고윳값에 대응 하는 일차독립인 고유벡터들의 개수 를 의미 합니다. 또 고윳값 lamda 에 대해 Ax = lamda x 의 해공간의 차원도 lamda 의 기하적 중복도 와 일치 합니다. 그래서 기하적 중복도는 연립 방정식을 풀어서 구하면 됩니다.
3. 즉 위의 둘이 기하적 중복도에 대한 같은 정의 입니다.
4. 여러분들은 지금 단계에서는 대충 그렇게만 알고 지나가시고, 보통 선형대수학
입문의 9장 Jordan 표준형 http://matrix.skku.ac.kr/JCF/ 배울때 Jordan 표준형을 구하라는 문제를 풀면서
자동으로 각 고윳값의 기하적 중복도를 한눈에 확인 합니다.
더 자세한 내용은 JCF 에서 천천히 배우면 됩니다.
5. JCF 은 명령어 하나로 쉽게 구하도록 만들어 두었습니다. http://matrix.skku.ac.kr/JCF/
5. 그것을 보시면 각 고윳값에 대응하는 Jordan block 의 개수가 그 고윳값의 기하적 중복도 임을 너무 쉽게 알 수 있습니다.
인공지능 기초수학 에서는 그 정도 만 아시면 됩니다.
스스로 진지하게 인공지능에 필요한 수학 내용을 스스로
깨우쳐가는 좋은 질문과 답을 하는 여러분들을 Respect
합니다. ^^
Final comment:
위에 D_1 의 고유값 1은 대수적 중복도가 2, 기하적 중복도가 2이고,
밑에 D_2의 고유값 1은 대수적 중복도가 2, 기하적 중복도가 1인 것이군요.
기하적 중복도라는 새 개념이 있다는 것과 JCF를 배우면 기하적 중복도를 알 수 있다는 것을 알았습니다.
모두 좋은 답변들 감사드립니다.
17’[Final OK by TA] [Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘
[HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬
질문 by 김진웅
답변 by 이상구
Finalized by 김진웅
Q1. (Euclidean) isometry와 직교행렬은 어떠한 관계를 가지나요?
Q2. (Euclidean) isometry의 표준행렬이 항상 직교행렬이 되나요?
이상구(LEE SANGGU)7월 21일 오후 2:00
먼저 동형 사상(同型寫像, isomorphism, iso는 같다는 의미고 morphism은 mapping의 의미입니다.)은 서로 구조가 같은 두 대상 사이에, 모든 구조를 보존하는 사상이다.
에 대하여는 http://matrix.skku.ac.kr/knou-knowls/cla-week-14-sec-9-3.html 을 보시기 바랍니다. Isometry (iso는 같다는 의미고 metry 는 metric 즉 거리 라는 의미입니다. 따라서 거리를 보존한다는 의미입니다.) 이 둘은 다른 용어인데 혼동하신 듯합니다.
isometry 는 길이를 보존한다는 의미이고, isomorphism 은 구조를 보존하는 mapping 입니다. 차이가 있습니다.
Q1. 그렇다면, (Euclidean) isometry 동형 사상(同型寫像, 문화어: 동형넘기기, 영어: isomorphism) 과 직교행렬은 어떠한 관계를 가지나요?
<--- Q1. 답. 우선 (Euclidean) isometry 를 의미하는 것은 동형 사상(同型寫像, 문화어: 동형넘기기, 영어: isomorphism) 과 는 다른 개념입니다.
그리고 직교행렬은 길이를 보존 하는 (Euclidean) isometry 함수의 한 예입니다.
따라서 질문을 틀렷습니다. 맞는 질문은
(Euclidean) isometry 와 직교행렬은 어떠한 관계를 가지나요? 라는 질문이면
정답은 직교행렬은 길이를 보존 하는 (Euclidean) isometry 함수의 한 예입니다. 다 맞는 답니다.
Q2. (Euclidean) isometry 동형사상의 표준행렬이 항상 직교행렬이 되나요?
답. (Euclidean) isometry 함수가 항상 직교행렬 (또는 Unitary 행렬) 이 되는 것은 아니지만,
반대로 직교행렬 (또는 Unitary 행렬) 은 항상 (Euclidean) isometry 함수 입니다.
Final Comment
동형사상은 거리를 보존하는 것이 아니라 `구조`를 보존하는 변환이라는 것,
`거리`를 보존하는 변환으로 isometry(등거리변환)라는 용어를 쓴다는 것,
직교행렬은 항상 등거리변환의 표준행렬이 된다는 것과 등거리변환은 선형변환이 아닐 수 있으므로 표준행렬이 존재하지 않을 수도 있다는 것을 알았습니다.
등거리변환이 선형변환이어서 표준행렬을 갖게 될 때, 그 표준행렬이 직교행렬이 되지 않는 예로 어떤 것이 있는지 궁금합니다.
좋은 답변 감사드립니다.
34’[Final OK by TA and SGLee] [Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘
[질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프
질문 by 김진웅
답변 by 박정호, 전재현
Finalized by 김진웅
임계점에서 함수의 극대극소가 됨을 판단할 때 함수의 Hessian 행렬이 positive definite, negative definite, indefinite 임에 따라 극소, 극대, 안장점이 됨을 배웠습니다.
그렇다면, (1)positive semidefinite이나 (2)negative semidefinite이 될 때 극대극소를 판별하는 방법과 그려지는 그래프 그리고 (3)indefinite가 (양,음)일 때와 (양,음,영)일 때 극대극소를 판별하는 방법이나 그려지는 그래프가 차이나는지 궁금합니다.
박정호 (2014****10)8월 1일 오후 5:08
1. positice definite와 같이 극소를 가집니다. 아래로 볼록한 이차함수를 앞뒤로 길게 늘린 모양을 생각해 보세요.
2. 1과 마찬가지로 위로 볼록한 이차함수를 쭉 늘린 모양이므로 극대를 가집니다.
3. 0이 포함될 때는 xy평면과 평행한 방향으로 쭉 늘어지는 그림이 그려질 것입니다.
전재현 (2015****91)8월 1일 오후 5:30
3. Hessian 행렬의 고유값에 양, 음 모두 존재할 경우에는 안장 모양의 쌍곡포물면(hyperbolic paraboloid)이 그려지며, 고윳값중 하나가 0이면 함수 의 모습은 포물기둥 모양의 그래프가 그려집니다. (http://matrix.skku.ac.kr/math4ai/part2/ 임계점 파트 참고)
Final Comment: semidefinite인 경우에도 definite의 경우와 같이 극대극소를 갖는다는 것과, 그 모양은 0을 포함한 경우에도 평면 상의 그래프가 공간 상에서 길게 늘어진 모양을 한다는 것을 알게 되었습니다.
13.[Final OK by SGLee] Finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준
[Final OK by SGLee] Finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준
[HW-2주차-질문] 단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)
[HW-2주차-질문] 단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)
(우선 질문 표현이 틀려서 교수님이 고쳐주셨습니다)
R^3의 표준 단위 standard unit 벡터 를 이용하여
R^3의 표준기저 는 열(column) vectors e_1 = (1, 0, 0) = [1 0 0]^T (3 by 1 vector) , e_2 = (0, 1, 0)=[0 1 0]^T (3 by 1 vector), e_3 = (0, 0, 1) =[0 0 1]^T (3 by 1 vector) 인 것은 알았습니다.
( (column) vectors 를 이용하여야만 A x = b [ m by n 행렬 곱하기 n by 1 vector = m by 1 vector ] 표현이 이해된답니다)
Q. 1 즉 R^3 에서 각각의 열(column) vectors 벡터를 단위벡터라고 이해하면 되는 건가요? <--- 아닙니다.
Q. 2 그리고 선형변환에 대응하는 표준행렬을 구할 때 왜 단위행렬이 아닌 단위벡터 가 필요한지 궁금합니다.
일단. 아래를 보시고 누가 Q 2 에 답을 보태주십시요^^
***
http://matrix.skku.ac.kr/knou-knowls/cla-week-11-sec-8-1.html
표준기저에 대한 선형변환의 표준행렬과 전이행렬의 관계도





x, y = var('x, y')
h(x, y) = [x+y, x-3*y, -2*x+y]
T = linear_transformation(QQ^2, QQ^3, h)
x1=vector([1, 1])
x2=vector([2, 1])
y1=vector([1, 0, -1])
y2=vector([-1, 2, 1])
y3=vector([0, 1, 1])
B=column_matrix([y1, y2, y3, T(x1), T(x2)])
# 열벡터로 이루어진 행렬 생성
print B
C=B.rref()
print C
Ap=C.submatrix(0, 3, 3, 2) # A.submatrix(a, b, c, d)
# 행렬의 (a+1, b+1) 성분부터 c개의 행, d개의 열로 이루어진 부분행렬
print Ap
[3][Final OK by SGLee] Q by 김정한 A by 이상구 교수님 F by 김정한 댓글 by 채희준 : [2주차] 선형변환에 대한 개념 정리 및 질문 <-- 답 입니다.
[1]선형 변환
입력과 출력이 모두 벡터인 함수를 변환(Transformation)이라 한다.
![]()
[2] 선형 변환의 조건

[3] 핵(kernel)

개념 정의만으로는 이해가 조금 안되어 간단한 예제를 가지고 설명해보고자 한다.
예를 들어 2차원 상에 선형 변환 T:R2->R2, T(x,y)=(x-y,0)에 대하여
ker T를 구해보면, ker T={(x,y) ∈ R2 l (x-y,0)=(0,0)}
={(x,y) ∈ R2 l y=x}이다.
다시 말해 R2안에 있는 직선 y=x가 T의 kernel이 되는 것이다.
[4] 단사와 전사, 전단사

[5] 선형변환이 단사일 필요충분조건
![]()
Q1. R^n 에서 R^n 으로 보내는 모든 선형변환을 R^n 위의 선형 연산자 라고 부르나요? 답: Yes
예를 들어 R^2에서 x축, y축 또한 원점을 지나는 임의의 직선에 대한 대칭 변환 모두 선형 연산자라고 부를 수 있는 것일까요? 답: Yes
답: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html

|
정의. |
행렬변환(matrix transformation), 선형변환(linear transformation) |
(1) 입력과 출력이 모두 벡터인 함수를 변환(Transformation)이라 한다. 그리고
에서
으로의 변환
에서
를 벡터
의
에 대한 이미지(image),
를 벡터
의 원상(pre-image)이라 한다.

변환의 특수한 경우로,
가
행렬이고,
,
인
를 행렬변환(matrix transformation)이라 한다.
(2)
에서
으로의 변환
가 임의의 벡터
와 임의의 스칼라
에 대하여 다음 두 조건을 만족하면
를
에서
로의 선형변환(linear transformation)이라고 한다.
(1)
(2)
(
)
특히,
에서
자신으로의 선형변환
를
위의 선형연산자(linear operator)라고 한다.
V, W라는 벡터공간에서, V의 원소 A, B와 실수 k가
T(A+B) =T(A) +T(B), T(kA) = kT(A)를 만족할 때, T를 V에서 W로의 선형변환이라고 합니다.
이때, T가 n차원 -> m차원으로 사상한다고 할 때, T 선형변환의 정의에 의해 아래와 같이 다시 표현됩니다.

이렇게 해서 표현되는 A를 표준행렬이라고 하며, 이때 T(x)는 표준행렬에 의해 표현된 선형변환이라고 합니다.
이때 x에 임의의 값 ei를 대입하면 T(ei) =Aei =Bei 라는 관계가 성립되어, A와 B의 어떠한 열벡터도 서로 같기 때문에 선형변환 T에 대응하는 표준행렬이 유일하다는 사실을 알 수 있습니다.

T 역시 일종의 함수이므로 정의역과 치역이 있는데 이때 치역을 'lm(T)’라고 하며, 이때 lm(T)=0, 즉 치역의 0이 되는 근들의 집합을 kerT라고 하고 ‘핵’이라고 합니다.
그리고 위에서 전사와 단사의 정의가 잘 와닿지 않았는데, 쉽게 말하자면 f: x-> y 라는 함수가 있을 때 f(x) =f(y) => x=y를 만족하는 f를 단사라고 하며,
임의의 y에 대해 y=f(x) 인 x가 존재하면 f를 전사라고 합니다. 또한 전사이면서 단사인 것을 전단사 함수라고 합니다.
아래 그림을 보고 쉽게 이해했습니다.
<전사> <전단사> <단사>



T가 단사임을 알 기 위해서는 kerT=0임을 보여도 되고(충분), 역으로 kerT를 모두 구해서 그것이 단사임을 보이면(필요) 됩니다.
pf)

<파이썬 실습>


1개의 댓글
김범준(2017****99)8월 4일 오후 8:09
comment: 교과서의 내용과 본인이 필기한 내용을 함께사용하여 잘 정리했다고 생각합니다.
-----------------------------------------------------------------------
Finalized by 정원철. [2주차] 고유값 분해를 이용한 피보나치수 일반항 유도 작성자 : 정원철(2017****79)작성일 : 8월 5일 오후 3:36
2주차 내용을 정리하던 차에 흥미로운 주제를 발견하여 공유해드립니다.
필요 개념 정리
먼저 수업에서 다음 내용을 숙지해야합니다
1. 고유벡터, 고유값
![]()
: 일차변환을 했을 때 그 방향이 유지되고, 원래 벡터의 실수배가 되는 특수한 벡터를 고유벡터라고 하며, 그 실수배를 고유값이라고 합니다.
-> 선형연립 미분방정식을 풀기 위해 도입된 개념입니다.(람다 값 기준으로 ..)
Q2. R^n 에서 R^m 으로 보내는 선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
답: 복잡한 치역에서 생각해야 할 거리/크기에 관한 함수 T(x) 에 대한 모든 연구를
이미 모두 알고 있는 간단한 정의역에서 해도 되는 엄청난 장점이 있습니다.
Q3. R^n 에서 R^m 으로 보내는 선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다.특히 T가 단사일 떄는 왜 ker T={0}인가요?

답: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html 에 증명 있습니다.
[증명]


교수님 답변에 추가적인 의견을 내보았습니다.
Q1. 임의의 직선에 원점을 지나는 임의의 직선에 대한 대칭 변환이 모두 선형 연산자라는 것은 아래와 같은 증명으로 판명이 가능합니다.



이러한 단순 직선 뿐만 아니라 층밀림 변환이라는 것도 존재한다는 것을 파악할 수 있었습니다.


예를 들어 위와 같은 변환은 각 점을 x축을 따라 ky 만큼 평행이동 시킨 것이라고 알 수 있습니다.
Q2. R^n 에서 R^m 으로 보내는 선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
: 예시로 R^2를 생각해보면, R^2에서 길이를 보존하게 되면 선형변환의 이미지가 단위 원 안에 머물러 있어, 일반적으로 연구가 쉬워진다고 생각하게 되었습니다.
Q3. R^n 에서 R^m 으로 보내는 선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다.특히 T가 단사일 떄는 왜 ker T={0}인가요?
:

첫번째 증명: Ker T에 임의의 벡터가 있다고 하면 T(v)=0 인데 T(0)은 언제나 0이다. 이 때 T가 단사이므로(단사의 정의에 의해) v=0라고 말할 수 있다. 결론적으로 ker T={0}이다.
두번째 증명: 만일 T(v1)=T(v2)에서 T(v2)를 뺴주면 0=T(v1)-T(v2)로 표현해줄 수 있다. 또 T는 선형 변환이므로 T(v1)-T(v2)=T(v1-v2)로 풀어쓸 수 있다. 그렇다면 v1-v2는 ker T 안에 있고, ker T에는 {0}-> 영벡터 하나밖에 없으므로 v1-v2는 영벡터이고 v1=v2가 될 수 밖에 없다. 따라서 T는 단사라고 할 수 있다.
개념 출처: 인공지능을 위한 기초수학 [교재]
http://matrix.skku.ac.kr/LA-K/Ch-6/
http://matrix.skku.ac.kr/LA-Lab/Solution/
![]()
Final Okay by SGLee
Chapter6 p.g225
Let
and
are defined as follows:
![]()
.
(1) Find the standard matrix for each
and
.
(2) Find the standard matrix for each
and
.
Sol)
(1)


■
(2)
![]()
■
Double check by Sage)http://matrix.skku.ac.kr/KOFAC/
|
x,y,z=var('x y z') A(x,y,z)=(4*x,-2*x+y,-x-3*y) a(x,y,z)=(x+2*y,-z,4*x-z) T=linear_transformation(QQ^3, QQ^3,A) t=linear_transformation(QQ^3, QQ^3,a) C = T.matrix(side='right') c = t.matrix(side='right') print "[T1]=" print C print "[T2]=" print c print "[T2*T1]=" print C*c print "[T1*T2]=" print c*C |
|
[T1]= [ 4 0 0] [-2 1 0] [-1 -3 0] [T2]= [ 1 2 0] [ 0 0 -1] [ 4 0 -1] [T2*T1]= [ 4 8 0] [-2 -4 -1] [-1 -2 3] [T1*T2]= [ 0 2 0] [ 1 3 0] [17 3 0] |
Comment : Ch.6의 2번문제와 마찬가지로 선형변환
,
는 3차원이므로 가장 간단한 단위직교벡터를 이용하여 표준행렬을 찾았고, Sage의 계산결과와 같음을 확인 할 수 있었다.
이상구(LEE SANGGU)7월 20일 오후 5:18
https://m.blog.naver.com/PostView.nhn?blogId=ldj1725&logNo=220267079754&proxyReferer=https:%2F%2Fwww.google.com%2F 을 보세요^^
김진웅(2015****73)7월 20일 오후 10:23
Q2. 예를들어 R^3의 표준기저 들을 순서대로 각각주어진 선형변환을 취해 얻은,R^2 안의 이미지 (output 벡터) 벡터들을 . . . 순서대로 < 열 column 벡터>로 하는 2 by 3 행렬 . . . 이<(표준기저들 가진) 주어진 선형변환에 대한 표준 행렬 표현 standard matrix, matrix representation of linear transformation > 이기 때문입니다.즉, 행렬에 벡터를 곱하니까 벡터가 나오고. 이것이 우리가 정의역 과 치역을 벡터들의 집합 으로 보는 것이고, 행렬을 함수 로 보는 것과 모두 일치 합니다.1. 자세한 증명은 책 (T:R^n→R^m을 임의의 선형변환이라 할 때,...) 에 나와 있습니다.
김호연(2020****32)7월 24일 오전 2:10
풀이가 우수합니다.
comment: PBL중간보고서를 작성중에 Final선언을 하지않은것을 발견하여 이제서야 Final 합니다. 처음에 증명을 보았을때는 이해가 힘들었지만 김진웅학우의 코멘트를 보면서 하나씩 따라가다보니 누군가에게 설명할 정도는 아니지만 제 스스로의 이해는 가능하였습니다. 감사합니다.
14. [Final OK by SGLee] Finalized by 임성규 Q by 김범준 A by 정원철, sanggulee // [HW-4주차] 삼각함수의 미분법
[HW-4주차] 삼각함수의 미분법
3변수 함수
의 극값을 구하여라.
풀이.우선 임계점을 모두 구한다.
,![]()
이므로
의 임계점은
이 정수일 때
이다. 각각의 임계점에서 헤시안을 구한다
에서 Y의 편미분의 값이 왜 저러한 결과값이 나오는지 궁금합니다. 그리고 이렇게 SIN과 COS형태의 함수를 삼각함수라 하는것이 맞나요?
또한 3siny를 미분했을때 3cosy가 나오는 이유도 궁금합니다.
4개의 댓글
정원철(2017****79)8월 3일 오후 9:50
네 ,, sin, cos은 tan과 함께 가장 기본적인 삼각함수 입니다.
<https://ko.wikipedia.org/wiki/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98>
일반적으로,
cosx를 미분하면 -sinx가 됩니다.
반대로 sinx를 적분하면 -cosx가 되겠지요.
sinx와 cosx 간에는 다음과 같은 관계가 성립합니다.
(sinx)' = cosx , ∫sinx dx = -cosx.
(cosx)' = -sinx, ∫cosx dx = sinx
따라서 위에서 f를 y에 대해서 2번 편미분하면 다시 cosy로 돌아옵니다.
pf) (cosx) ' = lim(Δx->0) {cos(x+Δx)−cosx}/ Δx *미분계수의 정의
= lim(Δx->0) {cosxcosΔx−sinxsinΔx−cosx}/ Δx * 합차공식
= lim(Δx->0) {cosx(cosΔx−1)−sinxsinΔx}/ Δx = lim(Δx->0) {cosx(1 - sin^2(Δx/2) - 1) - sinxsinΔx}/ Δx
= lim(Δx->0) {-cosx sin(Δx/2) sin(Δx/2)/(Δx/2) - sinx (sinΔx)/Δx}/ Δx = lim(Δx->0) {-cosx sin(Δx/2) sin(Δx/2)/(Δx/2)} - lim(Δx->0){sinx (sinΔx)/Δx}/ Δx * 분배법칙
= -cosx lim(Δx->0)sin(Δx/2) lim(Δx->0) sin(Δx/2)/(Δx/2) - sinx lim(Δx->0) sinΔx/Δx * cosx 부분 -> 0
= -sinx * 삼각함수의 극한. -> 로피탈 풀이도 가능-나무위키 보다 친절한 풀이는 아래 링크를 확인해보시면 도움되실 겁니다.
<https://blog.naver.com/a4gkyum/220967747214> -그림
<https://m.blog.naver.com/PostView.nhn?blogId=mondvopel&logNo=220302229851&proxyReferer=https:%2F%2Fwww.google.com%2F> -로피탈 등
김범준(2017****99)8월 4일 오전 1:48
감사합니다.
이상구(LEE SANGGU)8월 4일 오후 5:20
1. f( x, y, z ) 의 x 에 대한 편도함수를 구할 때는 x 외의 다른 변수는 모두 상수로 생각하고 도함수를 구하면 되고
2. f( x, y, z ) 의 y 에 대한 편도함수를 구할 때는 y 외의 다른 변수는 모두 상수로 생각하고 도함수를 구하면 되고
3. f( x, y, z ) 의 z 에 대한 편도함수를 구할 때는 z 외의 다른 변수는 모두 상수로 생각하고 도함수를 구하면 됩니다.
그렇게 세 개를 구한 것입니다.
그리고 Final 하신분 께서 삼각함수에 대해 자세히 내용을 공유해 밑에 출처 링클를 옮깁니다.
https://ko.wikipedia.org/wiki/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98
추가 comment- 말로만 들었던 삼각함수에 대해 알지못해 미분관련내용을 이해하는데 있어 어려움을 겪었었는데 삼각함수를 알게 되고 제가 미분할 수 있는 영역이 넓어졌습니다.
[Final OK by SGLee] 김범준, 이상구 중간pbl보고서에 대한 질문 <--- 답변 [Final OK by SGLee]by김범준, 이상구중간pbl보고서에 대한 질문 <--- 답변
저번주 웹엑스 OH때 들은것 같은데 기억이 나지않아 질문하게 되었습니다.
1. 양식에는 팀프로젝트와 관련한 내용도 있는데 이는 안하는것이 맞는건가요?
2. 활동내역을 옮길때 교수님, 조교님의ok사인이 있는것만 옮기나요 아니면 Final선언한 모든것을 옮길수 있나요?
감사합니다.
이상구(LEE SANGGU)8월 5일 오후 1:37
1. 양식에는 팀프로젝트와 관련한 내용도 있는데 이는 안하는것이 맞는건가요? <--- 오프라인 강의에서는 팀플이 필수 인데 온라인 강의에서는 ... 일단 아이디어를 채우는 것만 필수 입니다. ... 그 중 내용이 다른 학생들에게 도움 될 내용이고 본인이 원하는 경우만 ... 실제 수행을 허락하고, 무사히 마치고 발표하면 가산점을 주는 것이 이번 학기 방침입니다. 즉 채우기만 하시고 실제 수행은 안하셔도 된다는 의미입니다.2. 활동내역을 옮길때 교수님, 조교님의 ok사인이 있는것만 옮기나요 아니면 Final선언한 모든것을 옮길수 있나요?<-- 가능하면 OK 받은 것만 제출하시면 됩니다. 오래 전 뒤에 Final 선언 하신 것 중 OK 못 받은 것은 ... 다시 앞으로 꺼내서 Final 선언을 다시 하시면 채점 하고 OK 줄께요&^^그러나 마감 시간이 임박해서 ... 너무 늦어서 OK 받을 시간이 없었다면 ... Final 선언 한 것을 포함하여 제출하셔도 됩니다.
[3주차] 미적분학 실습
작성자:정유민(2019****80)작성일:8월 9일 오후 11:30
조회수:2
1학년 때 배운 미적분학이었기 때문에 내용은 어렵지 않았습니다. 하지만 sage를 통해 플룻을 그리고 계산하는 것이 선대에 비해 복잡했습니다. 이를 연습할 수 있었던 좋은 시간이었던 것 같습니다.
1. 최대최소의 정리

2. 벡터방정식

3. 곡선의 길이

4. 편도함수

감사합니다.
1개의 댓글
박은아(2016****73)8월 10일 오전 00:53
작성해주신 내용 중 1번 실습 결과에서 '최댓값'과 '최솟값'이라고 나와야 할 부분에서 한글이 제대로 표현되지 않는 현상을 저도 겪었는데, 영어로 작성했을 때는 제대로 결과가 나왔습니다.!
1. Finalize by 김범준 q.장환승 a. 이상구교수님, 정원철 [경사하강법 내용 정리 및 질문] 경사하강법 내용 정리 및 질문
http://matrix.skku.ac.kr/math4ai/part2/에서 가져옴
2.5 Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)
16강 동영상, Gradient Descent Algorithmhttps://youtu.be/XWDPAdKhq-Q(16:29)
Gradient Descent Algorithm은 어떤 모델에 대한 비용(Cost)를 최소화 시키는 알고리즘으로써,머신러닝 및 딥러닝모델에서 사용되는 가중치의 최적해를 구할 때 널리 쓰이는 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다.[Key Idea 2]
▪ 이제제약조건이 없는 최적화(unconstrained optimization) 문제
![]()
를 푸는경사하강법(gradient descent method)에 대하여 살펴보자.
[Fermat의 임계점 정리]에 의해 위 문제의 최적해(optimal solution)
는 다음을 만족한다.
![]()
따라서2.4절에서 배운 바와 같이 방정식
을 풀어서 나온 해들이 최적해가 되는지 판단하면 된다.
그러나함수
가 비선형인 경우는방정식을 풀어서임계점을 구하는 것조차도 쉽지 않다.이런 경우에는 수치적인 방법으로임계점을 구한다. 최적화문제를 푸는 계산방법은 대개반복법(iterative method)으로, 초기 근사해
으로부터 시작하여특정한 반복단계를 거쳐 이전보다 나은 근사해
,
, ... 를 생성한다. 목표는
번째 근사해
또는 극한값
에서
을 만족하도록 하는 것이다.
▪
번째 반복단계는 보통 다음과 같은(직선의 벡터방정식)형식으로 구성된다.
![]()
여기서
는탐색방향(search direction),
는step-size(머신러닝에서는 이를learning rate)라 한다. 즉
상에서
방향으로
만큼 이동하여
을 생성한다.
▪보통
는 함수값이 감소하는 방향으로 정한다.즉 다음을 만족한다.
![]()
이러한
는 특히 하강방향(descent direction)이라고도 한다.
방향을 따라 움직이면 함수
가 감소한다는 보장이 있으므로step-size
는
이 만족되도록 정한다.
▪step-size
를 택하는 방법은 대개 다음 두 가지로 나눌 수 있다.
①반직선
(
) 상에서 함수
의 값이 가장 작게 되는
를 찾는다.
![]()
이 방법을exact line search라 하고, 이때의
를optimal step-size라 한다. 대개는 cost가 많이 들어서 잘 사용되지 않는다.
② 만일
을 정확하게 풀지는 않지만함숫값이 충분히 감소한다는 것을 보장하는
를 선택하는 방법이 있다면, exact line search를 피하여 cost를 상당히 줄일 수 있다. 이 방법을inexact line search라 한다. 즉,다음 조건을 만족하는
를 찾는다.
![]()
![]()
여기서
이다. 이를 그림으로 표현하면 다음과 같다.

따라서 위의 두 부등식을 만족하는
는 폐구간
에서 택하면 된다.
[참고]
가 만족해야 하는 조건은 여러 가지가 있으나, 위의 두 부등식이 주로 쓰인다. 이를 Wolfe condition이라 하고, 그 중 첫 번째 부등식을 특히 Armijo condition이라 한다.
●경사하강법(gradient descent method)은탐색방향을
로 택하는 경우이다. 앞서 살펴본 바와 같이음의 그래디언트
방향이 점
에서
가 가장 가파르게 하강하는 방향이므로,경사하강법 방법의 아이디어가 쉽게 이해된다. (스키장에서 가장 빠르게 하강하는 길을 찾는 알고리즘의 아이디어와 일치한다) 경사하강법은 모든 차원과 모든 공간에서의 적용이 가능하다. 심지어 무한차원 벡터함수에도 쓰일 수 있다.(이 경우 해당 차원이 만들어내는 공간을 함수공간(function space)이라고 한다. 벡터공간을 일반화 하는 함수공간은 모두 수렴의 개념을 갖춘 선형공간(linear space)으로서, 수렴의 개념을 Norm에 입각한 거리에 의해 정한 Banach공간 또는 Hilbert공간인 경우가 많으나, 보다 일반적인 선형위상공간도 포함한다.)다음은경사하강법의 알고리즘이다.
[경사하강법](
의 의미는
같이
이 1 보다 아주 작다는 의미이다.)
[단계 1]초기 근사해
와허용오차(tolerance)
을 준다.
이라 한다.
[단계 2]
를 계산한다. 만일
이면, 알고리즘을 멈춘다.
[단계 3] line search를 수행하여 적절한 step-size
를 구한다.
[단계 4]
,
라 두고[단계 2]로 이동한다.
▪다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다.
[출처] J. Barzilai 와 J. M. Borwein,Two-Point Step Size Gradient Methods, IMA J. Numer. Anal. (1988) 8 (1): 141-148.
,
,![]()
여기서
이고,
는 Hessian
가 양의 정부호(positive definite)인 이차함수이므로 exact line search를 수행하면,
는 다음과 같이 closed-form으로 나온다.

![]()

위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.

[경사하강법의 iterative 단계(빨간색)]
[경사하강법은 탐색방향을 현재의 위치
의 근방에서 가장 가파르게 하강하는 방향
로 사용한다. 그러나 이 경우 그림의 빨간색 경로와 같이 해 근처에서 zigzag 현상이 발생하여 마지막 단계에서 수렴속도가 많이 늦어진다. 이를 보완하여Conjugate Gradient Method(CGM, 공액경사법, 켤레기울기법)은
와 이전의 방향
를 조합하여 새 탐색방향
으로 사용한다.(녹색)]
●뉴턴 방법(Newton’s method)은 탐색방향을
로 택하는 경우를 말한다. 왜냐하면
근방에서
는 다음의이차함수를 이용하여 근사화 할 수 있기 때문이다.
![]()
따라서
에서
로 진행하기 위하여, 최적화 문제
![]()
의최적조건으로부터
를 얻을 수 있다.
![]()
![]()
![]()
이다. 다음은뉴턴 방법(Newton’s method)의 알고리즘(Algorithm)이다.
[뉴턴 방법(Newton’s method)]
[단계 1]초기 근사해
과 허용오차(tolerance)
을 준다.
이라 한다.
[단계 2]만일
이면, 알고리즘을 멈춘다.
[단계 3]
를 계산한다.
[단계 4]
라 두고[단계 2]로 이동한다.
▪ 다음은 주어진 함수에뉴턴 방법(Newton’s method)을 적용한 예시이다. 허용오차는
으로 주었다.
[출처] J.E. Dennis, Jr. and R.B. Schnabel,Numerical Methods for Unconstrained Optimization and Nonlinear Equations, 1996. SIAM

,![]()
뉴턴 방법을 적용하여 얻은 해는 실제최적해
에 수렴함을 알 수 있다.■
![]()
이양의 정부호(positive definite)행렬이면, 역행렬
도 양의 정부호 행렬이므로, 뉴턴 방법의 탐색방향
역시하강방향(descent direction)이 된다. 즉
![]()
이다. 따라서
방향으로 진행하면 함수값이 감소함을 알 수 있다.
▪ 그러나 뉴턴 방법은 헤시안을 계산해야 하므로, 변수
이 큰 함수의 경우 헤시안을 계산하는 데 많은 연산이 필요하여 효과적이지 않을 수 있다. 그리고 초기 근사해
이 문제의 해
의 근방에 있어야만 뉴턴 방법이 수렴한다는 보장이 있으나,이는 미리 알 수 없으므로 실제 뉴턴 방법을 적용할 때는step-size
도 같이 고려한다. 즉 적절한 line search를 동반한다. 그 후
을 계산한다.
![]()
●이외에도
를 택하는 방법에 따라quasi-Newton method, conjugate gradient method등이 있다. 자세한 사항은 아래의<최적화(Optimization)>관련 도서를 참고하라.
[1] S. Boyd and L. Vandenberghe,Convex Optimization, Cambridge University Press, 2004.http://stanford.edu/~boyd/cvxbook/
[2] J. Nocedal and S. Wright,Numerical Optimization, 2nd ed., Springer, 2006.
[3] R. Fletcher,Practical Methods of Optimization, 2nd ed., John Wiley and Sons, 1987.
[4] J. Dennis and R. Schnabel,Numerical Methods for Unconstrained Optimization and Nonlinear Equations, SIAM, 1987.
질문
1. 경사하강법에서는 방정식을 푸는 것이 cost가 많이 들고 어려워서
를 만족하는 오차가 가장 적은 x의 값을 찾아가는 것이 요지인데, 항상 컴퓨터가 계산해줘서 의문을 갖지 않았던 것에 대해 질문을 하고자 합니다. 경사하강법에서는 방정식의 미분이 필수인데 방정식이 아무리 난해해도 미분은 어렵지 않나요? 제 생각으로는 변수가 많아질수록, 또 식이 복잡할수록 시간이 많이 걸릴 것 같은데(특히 개형도가 복잡한, 즉 변수가 많을수록..) 미분에 관해서는 cost 측면에서 너그러운 편인가요?
이상구(LEE SANGGU)8월 9일 오후 8:22
Gradient 구하는 시간과 비용 만 문제인데 ... 이미 보셨다시피 ... 컴퓨터가 Gradient는 바로 바로 구해 주니 ... 그리고 Gradient = 0 을 수치적으로 푸는 것은이미 보셨다시피 ... 컴퓨터가 시간과 cost 별로 안 들이고 구해주기 때문에 ... 지금은 우리가 배운 내용과 이론 및 코드로 충분합니다.
정원철(2017****79)8월 9일 오후 9:15
경험상 실제로 연산이 너무 많아지면 잘 돌아가지 않는 것 같습니다.그래서 머신러닝에서는 minibatch를 뽑아서 반복 실행하면서 hyperparameter를 계속 업데이트 해주는 SGD(Stochastic Gradient Descent)를 주로 사용합니다.그러나 이전 글에서도 논의가 됐듯이 SGD를 해도 지역 최소값에 빠져서 학습이 멈추는 등의 문제가 나와서, SGD에 모멘텀을 더해주거나 Adagrad, RMSProp, Adam 등을 사용하는데 주로 Adam이 대부분 제일 효율적이여서 자주 쓰인다고 합니다.추가로 저희가 배운 개념과 관련해서 기존에 알고있는 경사하강법 처럼 1차함수로(직선) 기울기를 구하는게 아니라 Hessian과 Newton method를 사용해서 2차함수로 기울기를 구하는 Quasi-Newton methods나 L-BFGS 등을 사용하기도 합니다.(그러나 저장공간은 굉장히 expensive하겠죠 ..)
comment: 우선 장환승학우님의 정라와 질문에 감사드립니다.
모든 계산에는 비용이란 측면에 대한 검토가 필요하다고 생각합니다. 교수님 말씀처럼 저희가 교과서 내용에서 배우는 코드로만 계산하여도 비용측면에서 고려가 작은부분도 있습니다. 하지만 정원철 학우분의 말처럼 굉장히 복잡하고 변수가 많은 계산에 있어서는 다른방법이 요구될 수도 있습니다.
개인적으로 생각하기에, 우선 교과서에 있는 코드를 먼저 완전히 이해하고 그 후에 비용을 고려한 계산이 필요할때 그에 필요한 것에 대한 검토를 해 나가는 방식이 이번수업에 있어서 중요한 측면이라고 생각됩니다.
58’[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 < --- 답 <---보충), A by 이상구, 이재화‘
[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 < --- 답 <---보충), A by 이상구, 이재화
- 게시글





- 답변 및 댓글





- comment
저도 표본분산을 계산할 때 n-1을 이용해야한다고 알고 있었는데, 상황에 따라 식을 변형할 수 있다는 걸 알았습니다.
답변(25개) (중간 21개 기말 4개)
3‘[Final OK by TA] [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구, 장환승,권서영’
5‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’
8‘[Final OK by TA] Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’
10‘[Final OK by TA] [HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요? by 권서영, 김진웅, 이상구 교수님’
11’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘
15’[Final OK by SGLee] Finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준‘
19’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘
21’[해결] SAGE 질문 SyntaxError‘
22‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘
28’[Final OK by TA] Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘
30’[Final OK by TA][FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘
31’Finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘
33’[Final OK by SGLee] [3주차] 요약 및 질문’
36’[Final OK by SGLee] [Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의 by 박진형,이상구(LEE SANGGU), 김진웅‘
37’[Final OK by SGLee] Finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘
43’[Final OK by SGLee] Final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅‘
44’Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅,채희준,정원철‘
55’[Final OK by SGLee] Finalized by 이승재 Q by 장환승 A by 김진웅 Comment by SGLee, 이승재 " 6주차 강의 내용 질문 "’
56’6주차 요약: 연속확률분포, 결합확률분포, 공분산행렬.‘
57’열린문제 3 구하는 법 질문‘
59’[Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준‘
3‘[Final OK by TA] [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구, 장환승,권서영’ : Norm의 정의를 설명함.
Final OK by SGLee with 권서영 [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구
질문 by 이동현
답변 by 김진웅 , 나종진, 임동선, 이재화, 이상구
Finalized by 채희준
Q : llXll 으로 표현되는 노름의 값이 X*X로 표현되는 내적의 값과 동일하게 x1 x2 ..... xn 의 값을 제곱한 것으로 표현되는것 같은데 왜 내적이 노름의 제곱 (llXll)2 으로 표현되는지 이해가 안됩니다. 그리고 노름의 개념이 함수에서 길이를 표현하는 개념인것 같은데 내적은 어떤 개념으로 표현될 수 있는지 궁금합니다.
A :
김진웅(2015****73)7월 17일 오전 11:44
Norm의 정의 ||x|| = sqrt(x1^2 + ... +xn^2) 내적의 정의 x.y = x1y1 + .. +xnyn x.x = x1x1 + ... + xnxn = (sqrt(x1x1 + ... + xnxn))^2 = (||x||)^2
나종진(2017****17)7월 17일 오후 12:15
노름은 길이를 표현하는 개념이지만 내적은 어떤 개념인지 교재에 나오지 않아서 저도 내적을 어떤 개념으로 이해해야될지 고민이었습니다. 저는 내적을 각도 개념으로 이해했습니다. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
여기에 코시-슈바르츠 부등식 아래 정의를 보게되면 x·y=||x||*||y||*cosΘ 라고 나와있어 저는 각도의 개념으로 이해했습니다. 도움이 되셨으면 좋겠습니다.
임동선(2017****79)7월 17일 오후 12:55
엄밀하게 말하면 대칭성, 선형성, 정부호를 만족하는 벡터공간을 내적공간이라고 합니다.
그 중에 가장 대표적인 것이 R^n 에서 위와 같이 정의된 것 입니다. 또한 주어진 내적 공간에 대해서 노름을 정의를 할 수 있습니다. 위와 같이 노름을 정의하면 잘 정의된 노름이고, 위의 경우는 두 값이 같습니다.
이재화 7월 17일 오후 5:17
1. 직관적으로 노름은 벡터의 길이, 내적은 두 벡터 사이에 이루는 각을 정의하는 개념이라고 생각하면 됩니다.
2. 노름과 내적은 주어진 데이터가 얼마나 유사한지를 비교하는데 사용되는데 각각 사용하는 척도가 다릅니다.
3. 두 데이터 사이의 거리로 유사성을 비교할 때 노름이 사용되고, 두 데이터 사이의 패턴(방향)만 관심있을 때에는 두 벡터 사이의 각으로 유사성(코사인 유사도)을 비교합니다. 이때 내적이 사용됩니다. [참고] http://matrix.skku.ac.kr/math4ai-intro/W3/
4 . 내적을 활용한 코사인 유사도는 자연어 처리에도 사용된다고 합니다. [참고] https://wikidocs.net/24603
이상구(LEE SANGGU)7월 17일 오후 11:27
실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다.
추가 답변 및 정리 : http://matrix.skku.ac.kr/math4ai/ 에서 인용
|
정의. |
|
의 벡터
에 대하여
![]()
을
의 노름(norm, length, magnitude)이라 한다.
|
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터
,
에 대하여 실수
![]()
을
와
의 내적 (Euclidean inner product, dot product)이라 하고
로 나타낸다. 즉
![]()
![]()
=
=![]()
이 두 정의를 비교하면,
▪ ![]()
![]()
노름의 제곱은 내적과 같음을 확인할 수 있습니다.
그리고 노름은 벡터의 길이 또는 크기를 나타낸다면,
내적은 두 벡터 사이에 이루는 각 또는 두 벡터 사이의 관계를 나타낸다고 생각하면 될 것 같습니다.
※참고자료
1. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
![]()
의 벡터
,
에 대하여
![]()
, ![]()
인
를
와
가 이루는 각(angle, 사잇각)이라 한다.
2. http://matrix.skku.ac.kr/math4ai-intro/W3/
주어진 데이터를 분류하기 위해서는 각 데이터마다 우리가 다룰 수 있는 (계산할 수 있는) 형태로 표현할 수 있고, 각 범주와 얼마나 가까운지 (혹은 유사한지) 계산하여 최종 판단해야 한다.
이러한 척도를 데이터의 유사도 (similarity)라고 한다.
그렇다면 서로 다른 두 데이터가 얼마나 유사한지 어떻게 평가할 수 있을까?
가장 쉽게 생각해볼 수 있는 것은 두 데이터 사이의 거리 를 계산하는 것이다.
는 원점에서 점
에 이르는 거리 와 같다. 따라서 두 벡터
,
에 대하여
는 두 점
와
사이의 거리(distance)가 되며, 다음이 성립한다.
![]()
위 정의는 3차원은 물론 고차원 데이터에 대해서도 동일한 형태로 확장된다.
그러나 데이터 분석가가 단지 데이터의 패턴(방향)에만 관심이 있는 경우, (거리)척도는 적합하지 않다.
예를 들어, 아래와 같이 좌표평면 상에 벡터로 표현된 두 데이터
와
는 패턴(방향)은 유사하지만
거리는 매우 큰 값을 갖게 되어, (거리)척도로는 “두 데이터가 관계가 없다”고 판단하게 되기 때문이다.

단지 데이터의 패턴(방향)에만 관심이 있는 경우에는 유사도를 어떻게 측정해야 할까? 이번에 우리는 데이터의 패턴(방향)에만 관심이 있으므로,
두 데이터(벡터)가 이루는 사잇각
로 유사도를 측정할 수 있을 것 이다. 예를 들어,
가 작으면 데이터의 유사도가 높고,
가 크면 데이터의 유사도가 낮다고 판단할 수 있다.
그러나 사잇각은 벡터의 내적(inner product)으로부터 정의되므로,
를 직접 계산하기 보다는 벡터의 내적을 이용하여
의 코사인 값으로 유사도를 측정한다. 이를 코사인 유사도(cosine similarity)라고 한다.
장환승(2016****69)7월 18일 오후 10:53
내적이라는 개념은 알고 있었는데, 자연어 처리 또는 데이터의 패턴 개념에 있어 내적이라는 것이 어떻게 활용되는지 보니까 신기하네요. 코사인 유사도 라는 개념이 내적과 글을 통해 확 와닿습니다. 감사합니다.
권서영(2020****27)7월 19일 오전 1:29
Final Comment: 제가 교수님 강의를 공부하면서 미묘하게 헷갈리던 부분이 무엇인지 확신할 수 없어 고민중이었는데, 학우님께서 노름과 내적의 개념에 대해 질문한 글을 읽고 저 또한 개념정리가 미약하다는 것을 깨달을 수 있었습니다. 많은 학우분들이 내적은 '각'의 개념이라 정리해 주셔서 개념 정리가 되고, 왜 각이며 내적이 어떤 분석 (데이터의 패턴 혹은 방향)에 사용되는지 정리해주신 답변들을 읽어보며 내적과 노름의 개념과 응용을 정리할 수 있었습니다. 사실 내적이 왜 ||x||로 바 두 개를 사용하는 것일까? 라는 일차원적인 의문을 가지고 있었으나 (잘못된 생각이지만) 질문이 유치하게 보여 묻지 못했습니다. 하지만 교수님이 "실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다."라고 서술해주셔서 납득을 할 수 있었습니다. 먼저 강의 내용을 다 이해하고 정리하고 다른 분들 질문과 Finalized된 글을 읽어 볼 것이 아니라 (교재를 읽은 후 ... 다른 학생들이 토론한 내용을) 미리 읽으면서 (Re-Finalize 하거나, 추가로 질문하거나, Final 코멘트를 달면서) 자신의 이해를 더욱 높일 수 있고 추가적인 지식도 얻을 수 있음을 깨달았습니다.
좋은 질문과 답변 공유해 주셔서 감사합니다.
5‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’ : RREF로 역행렬을 구하는 과정을 설명함.



최종 Comment
일차원 벡터의 덧셈, 스칼라배 연산에 있어서 일차원 벡터를 하나의 숫자로 대응할 수 있다는 점을 알게되었고, 기본행 연산을 기본행렬의 곱으로 진행하는 방식에 대해 이해하고 역행렬을 구하는 과정에서 Gauss-Jordan 소거법을 활용하여 RREF를 만드는 과정과 결과에 대해 자세하게 알 수 있었습니다.
덕분에 많이 배웠습니다. 상세한 설명에 감사드립니다 :)
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’ : sage 코드상 Gram-Schhmidt 정규직교화법 원리를 설명함.
Q. 벡터의 빼기연산을 활용하면 어떠한 과정을 통해 벡터들이 직교화 되는지 이해가 잘 가지 않습니다.
이에 대해 설명해주시면 너무 감사할것 같습니다.
QR분해는 full column rank인 행렬 A를 Col(A)의 정규직교기저를 열로 하는 직교행렬 Q와 상삼각행렬 R의 곱으로 표현 가능하다는 것입니다.
QR분해를 한다는 것은 주어진 행렬 A로부터 아직은 알지 못하는 Q와 R을 구해내는 것입니다.
행렬 A에서 Gram-Schmidt 정규직교화법을 통해 Q를 구한다면 R은 Q^tA로 구할 수 있습니다. (A=QR에서 R=Q^-1A. Q는 직교행렬이므로 R=Q^tA.)
안타깝게도, sage의 gram_schmidt()함수는 하삼각행렬 M과 직교기저를 행으로 하는 직교행렬 G를 구해줍니다. (A=MG)
정규직교기저를 열로 하는 직교행렬 Q와 상삼각행렬 R을 구하기 위해서 적절한 변환을 하는 gs_norm() 함수를 정의합니다.
먼저, A^t.gram_schmidt()를 수행하여 직교기저를 행으로 하는 직교행렬 G를 얻어냅니다. A가 아닌 A^t를 적용하는 이유는 mxn행렬(m>n)일 때 G가 제대로 나오지 않기 때문입니다. 추정컨대, gram_schmidt() 함수가 column-by가 아닌, row-by이기 때문인 것 같습니다. A^t의 행기저를 A의 열기저로 쓸 수 있는 이유는 Col(A)=Row(A^t)이기 때문입니다.
G를 normalize하여 Q1을 얻습니다. 이 Q1은 정규직교기저를 행으로 하는 직교행렬입니다.
Q1과 A로 부터 R을 구합니다. 위의 R=Q^tA를 이용합니다. 여태껏 Q1을 transpose 하지 않은 이유입니다.
이제 Q1을 transpose하여 Q를 얻습니다.
따라서, gs_norm() 함수로 A를 QR분해 할 수 있습니다.
Gram-Schmidt 정규직교화법은 gram_schmidt() 내부에 구현되어 있습니다.
8‘[Final OK by TA] Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’ : 직교의 정의를 설명함.
Question by 장환승
1. 강의를 듣다 보니 일차독립이라는 말이 나와서 갑자기 궁금해진 부분이 n차 독립도 존재하는가 입니다.
정의에 관한 내용을 찾아보니 1차 독립은 원어로 linearly independent 이던데, 일차함수가 직선을 의미하고 일차독립의 정의를 생각해봤을 때, n차 독립이라는 것은 없을 것 같기는 한데 잘 모르겠습니다.
2. 오늘 들은 수업내용 중, 내적이라는 것을 할 때, 서로 직교하는 두 벡터 간의 내적은 0이라는 것을 자연스럽게 활용하셨는데 저도 고등과정을 통해서 직교하면 내적하면 0이다 라는 것이라고 외우기만 했지 원리를 몰라 찾아보았습니다.

도움이 되셨길 바라며... 위 과정에서 생각해보니, 오늘 배운 영벡터의 경우, 직교에 대한 판단을 어떻게 하는지 궁금합니다. 두 벡터가 직교한다는 것은 뭔가 머릿속으로 직각으로 만나는 것인데, 영벡터의 경우 내적은 0인데 직교에 대한 정의를 어떻게 내리나요?
Answer by 김진웅(2015****73)7월 19일 오전 00:00
1. (대수적 독립(algebraic independence), 아핀 독립(affinely independence) 같은 것은 있는데) 사실 행렬이나 텐서 같은 것들은 모두 벡터로 구성되어 있고 일차독립은 벡터의 집합에 대해서 성립하는 것이므로 실제로 2차 독립이라든지 n차 독립 같은 것은 없는 것 같습니다. 벡터의 집합으로 구성한 원소의 집합에 대하여 2차 독립을 논할 수 있을지도 모르겠습니다. 2.직교의 정의는 벡터의 내적 값이 0이므로, 영벡터와 내적한 모든 벡터는 직교하게 됩니다.
Answer by 이상구(LEE SANGGU)7월 19일 오전 5:15
1. 1차 독립 linearly independent 은 벡터들의 일차결합 linear combination 을 영벡터로 놓고, 연립방정식을 풀어서, 계수가 모두 영 인 즉, 연립방정식이 영벡터 만을 유일한 해로 가지는 경우, 우리는 그 주어진 벡터늘이 1차독립 이라고 합니다 . 그리고 n차 독립이라는 정의는 없습니다. 2. 영아닌 두 벡터의 내적이 영이면, 두 벡터는 orthogonal 직교 한다고 합니다. 가정을 negation 한 경우로 이런 문제는 Tautology 관련 이슈인데 ... 하나의 영벡터를 다른 영아닌 벡터와 내적을 구한 경우는 값이 항상 영이므로, 이 경우는 영벡터가 다른 벡터와 직교한다고 정의해도, 모순이 없으므로 직교한다고 정의하는 것. 정도로 이해 하시고 다음 단계로 진행하세요.
장환승(2016****69)7월 19일 오후 3:12
아하 감사합니다.
10‘[Final OK by TA] [HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요? by 권서영, 김진웅, 이상구 교수님’ : 직교성분을 설명함.
[HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요?
다름이 아니라 정사영의 정의 (아래 사진파일 첨부) 에서 x*(y-p) = 0 이라 서술이 되어 있는데
그렇다면 w가 0이 되는 것인가요? <--- 아닙니다.
두 벡터가 직교하면 내적이 0이 된다 서술이 되어 있던데, 그 개념이 연결되어 있는 것인가요? <--- 물론 연결되어 있습니다.
만약 그렇다면(연결되어 있습니다. ), 혹시 설명해 주실 수 있으실까요? 감사합니다 ㅜㅜㅜ
답:
2개의 댓글
김진웅(2015****73)7월 19일 오전 1:20
원벡터 y에서 정사영 벡터 p를 뺀 것이 벡터성분 w입니다. (w=y-p) 원벡터가 정사영하는 공간에 속해있지 않는 한, 벡터성분 w는 0이 되지 않습니다. x와 y-p 그러니까 x와 w는 서로 직교하므로, x·(y-p)=0 그러니까 x·w=0인 것입니다.
이상구(LEE SANGGU)7월 19일 오전 5:26
김진웅 군 , 답을 아주 정확하게 주었습니다. w 가 영벡터가 아니라 ... x와 w는 서로 직교하므로, x·(y-p)=0 그러니까 x·w=0인 것입니다. 주어진 x 와 y 로 부터, projection p 를 구한 후, 이것을 이용하여 w 가 x 와 orthogonal 이 되도록 w를 정의한 것 입니다.
11’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’ : sage 코드상 vector()함수를 설명함.
[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 &실습 &질의
asked by 임성규
answered by 김진웅, sanggulee
<질의 및 답변 내용>
3. 질의
3.1 예제를 실습하면서 궁금한 점이 생겼습니다. v=vector([1489,-1239,293]) 로 변수를 선언 하면 v에 단순 list가 아닌 벡터의 개념으로 데이터가 저장되는지 궁금합니다.
answered by 김진웅 : sage의 vector() 함수는 Vector class(주어진 input에 따라 Vector_integer_dense,Vector_rational_dense,FreeModuleElement_generic_dense 등등) 객체를 반환합니다. 단순 list와는 달리, norm() method 등을 쓸 수 있습니다.
commented by 임성규 : vector라는 함수가 따로 존재하는 이유 중 하나로 여러가지 반환값과 추가 매소드를 지원함을 알게 되었습니다. 감사합니다.
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘ : 행렬이 full column rank일 때 행렬의 전치행렬과 행렬의 곱의 행렬식이 0이 아님을 설명함.
[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,
[Discuss] How to find least square solution? 해가 존재하지 않는 연립방정식의 optimal solution [최소제곱해, least square solution] 는 어떻게 구하나?]
작성자 : 이상구(LEE SANGGU)작성일 : 7월 10일 오후 1:15
조회수 : 24
오차(error)
• 때로는 최소제곱법을 이용하여 구한 근사 직선이 오차가 너무 커지는 경우도 있다. 예를 들면, 그림 14-2-2 (a), (b) 의 경우는 최적곡선이 직선이 아니다. 실제로(a), (b) 의 경우에 데이터의 점에 가장 근사한 곡선은 각각 2차식인
![]()
• 이고 3차식인
![]()
• 이다. 일반적으로 데이터의 점
에 가장 근사한
차의 다항식
(7)
• 을 구하고자 할 때는 다음과 같이 한다.
(a)
(b)
그림 14-2-2 데이터 점들을 이었을 때 직선이 나오지 않는 경우
• 우선, 식 (7)에 주어진 데이터의 점을 대입하여 미지수가
인 연립방정식
(8)
• 를 얻는다. 만일
의 값 중 서로 다른 것이
개 있다면,
이므로 정규 시스템
는 유일한 해
를 갖는다. 이 때 이 계수를 갖는
차 다항식이 바로 가장 근사한 곡선의 방정식이다.
위의 내용 중에서 마지막 부분,
만일
의 값 중 서로 다른 것이
개 있다면,
이므로
가 잘 이해가 되지 않습니다... 어떻게
가 되는 건가요?
***
선형대수학에서 방데르몽드 행렬(-行列, 영어 : Vandermonde matrix)은 각 행이 초항이 1인 등비수열로 구성된 행렬이다. 프랑스의 수학자 알렉상드르 테오필 방데르몽드의 이름에서 따왔다. 다항식 보간법, 최소 자승 근사법 등에서 나타난다.
방데르몽드 행렬은 다음과 같은 형태를 가진다.

간단히 표현하면 모든 i와 j에 대하여 다음과 같이 쓸 수 있다.
![]()
일부에서는 이 행렬의 전치행렬을 방데르몽드 행렬이라고 부르기도 한다.
nxn 방데르몽드 행렬의 행렬식은 다음과 같이 간단히 정리할 수 있다.
![]()
이 행렬식을 방데르몽드 행렬식 또는 방데르몽드 다항식(Vandermonde determinant, Vandermonde polynomial)이라고 한다.
https://ko.wikipedia.org/wiki/%EB%B0%A9%EB%8D%B0%EB%A5%B4%EB%AA%BD%EB%93%9C_%ED%96%89%EB%A0%AC
증명 https://steemit.com/kr-math/@beoped/vandermonde-determinant

답:
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로
데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다.
따라서 A^T A 의 행렬식도 영이 아닙니다.
* 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립
이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다.
[3-4] ![]()
가 다음과 같을 때 연립방정식
의 최소제곱해를 찾아라.
3.
, ![]()
Ans
이므로 ![]()
4.
, ![]()
Ans

A=matrix([[1, 3, 5, 2, -2], [-2, 1, -2, 1, 0], [-1, -3, 0, 1, 0], [-3, 0, 1, 0, 0], [0, 1, 2, -2, 1]])
print A
print
b=matrix(5, 1, [1, 0, 1, 0, 0])
print b
print
AT=A.transpose()
AtA=AT*A
print AtA
print
Atb=AT*b
print Atb
print
AtA.solve_right(Atb)
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
# normal equation로 계산한 것과 비교
AtA = A.transpose()*A
Atb = A.transpose()*b
AtA.solve_right(Atb)
따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
박정호(2014****10)7월 19일 오후 5:35
A의 column들이 일차 독립일 경우 A^TA가 역행렬을 갖습니다. 현재 A의 열이 k+1개가 있으므로 x_1, x_2, ..., x_n 중 서로 다른 값이 k+1개만 되면 column끼리의 일차 결합이 불가능해서 full column rank를 가진다는 설명인 것 같습니다.
이상구(LEE SANGGU)7월 19일 오후 5:53
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로 데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다. 따라서 A^T A 의 행렬식도 영이 아닙니다. * 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다. 따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
김진웅(2015****73)7월 19일 오후 6:16
'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다'는 것은 n 은 적어도 k+1개 이상이고, '서로 다른' 조건에 의하여 (1)'A는 full column rank를 갖는다'는 것입니다. '|A^tA|≠0'이라는 것은 'A^tA가 가역'이라는 것입니다. 'A^tA가 가역'이라는 것은 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (A의 가역을 보이기 위해서 'Ax=0일 때 x=0'을 보이면 됩니다.) 따라서, 'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다면 |A^tA|≠0이다'라는 것은 (1)'A는 full column rank를 갖는다'일 때 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (1)을 이용하여 (2)가 옳음을 보이면 됩니다. (2)의 A^tAx=0부터 시작합니다. x^tA^tAx=0 (x^t를 양변에 곱했습니다.) (Ax)^tAx=0 (Ax)·(Ax)=0 (Ax는 nx1 벡터입니다. 벡터끼리의 내적입니다.) ||Ax||^2=0 Ax=0 입니다. (1)에 의해, 즉 'Ax=0이면 x=0'(full column rank이면 왼쪽 식을 만족합니다)에 의해 x=0입니다. 따라서 (1)일 때 (2)'A^tAx=0 일 때, x=0'가 옳음을 보였습니다.
박정호(2014****10)7월 19일 오후 10:39
방데르몽드 행렬식을 보니 명확하게 이해가 되었습니다. 감사합니다.
15’[Final OK by SGLee] Finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준‘ : 단위벡터로 선형변환의 표준행렬을 구함을 설명함.
[HW-2주차-질문] 단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)
작성자 : 김범준(2017****99)작성일 : 7월 20일 오후 4:51
조회수 : 37
선형변환에서 표준행렬을 구할때 단위벡터를 활용하는데
(우선 질문 표현이 틀려서 교수님이 고쳐주셨습니다)
R^3의 표준 단위 standard unit 벡터 [100][010][001] 를 이용하여
R^3의 표준기저 는 열(column) vectors e_1 = (1, 0, 0) = [1 0 0]^T (3 by 1 vector) , e_2 = (0, 1, 0)=[0 1 0]^T (3 by 1 vector), e_3 = (0, 0, 1) =[0 0 1]^T (3 by 1 vector) 인 것은 알았습니다.
( (column) vectors 를 이용하여야만 A x = b [ m by n 행렬 곱하기 n by 1 vector = m by 1 vector ] 표현이 이해된답니다)
Q. 1 즉 3*3 행렬 R^3 에서 각각의 열(column) vectors 벡터를 단위벡터라고 이해하면 되는 건가요? <--- 아닙니다.
Q. 2 그리고 선형변환에 대응하는 표준행렬을 구할 때 왜 단위행렬이 아닌 단위벡터 가 필요한지 로 나눠서 이용하는지 궁금합니다.
일단. 아래를 보시고 누가 Q 2 에 답을 보태주십시요^^
이상구(LEE SANGGU)7월 20일 오후 5:18
https://m.blog.naver.com/PostView.nhn?blogId=ldj1725&logNo=220267079754&proxyReferer=https:%2F%2Fwww.google.com%2F 을 보세요^^
김진웅(2015****73)7월 20일 오후 10:23
Q2. 예를들어 R^3의 표준기저 들을 순서대로 각각 주어진 선형변환을 취해 얻은, R^2 안의 이미지 (output 벡터) 벡터들을 . . . 순서대로 <열 column 벡터>로 하는 2 by 3 행렬 . . . 이 <(표준기저들 가진) 주어진 선형변환에 대한 표준 행렬 표현 standard matrix, matrix representation of linear transformation >이기 때문입니다. 즉, 행렬에 벡터를 곱하니까 벡터가 나오고. 이것이 우리가 정의역 과 치역을 벡터들의 집합 으로 보는 것이고, 행렬을 함수 로 보는 것과 모두 일치 합니다. 1. 자세한 증명은 책 (T:R^n→R^m을 임의의 선형변환이라 할 때,...) 에 나와 있습니다.
김호연(2020****32)7월 24일 오전 2:10
풀이가 우수합니다.
comment: PBL중간보고서를 작성중에 Final선언을 하지않은것을 발견하여 이제서야 Final 합니다. 처음에 증명을 보았을때는 이해가 힘들었지만 김진웅학우의 코멘트를 보면서 하나씩 따라가다보니 누군가에게 설명할 정도는 아니지만 제 스스로의 이해는 가능하였습니다. 감사합니다.
19’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘ : sage 코드상 linear_transformation()이 보이는 표준행렬을 설명함.
표준행렬에 대해 질문있습니다
질문 by 이상현
답변 by 김진웅
Finalized by 천가영
Q.

위 그림에서 파랗게 선택된 부분이 선형변환T의 표준행렬이라고 합니다.
하지만 저는 3차원의 U를 2차원의 V로 변환하고 있었고
그러기 위해서는 U(x,y,z)^(T)라고 할때 2x3 행렬을 3x1 행렬과 곱해 2차원 V와 부합하는 2x1 행렬을 도출해 내기위해
표준행렬이 2x3 행렬이어야 한다고 생각합니다.
그러나 위 그림에서 선형변환T의 표준행렬이 3x2 행렬 이라고 합니다. 왜 이렇게 나오나요?
A
"notation의 차이 떄문입니다" 그간 선형변환 T(x)를 배울 때 domain 벡터(pre-image)를 표준행렬의 '오른쪽'에 곱한 것으로 배웠습니다. (T(x)=Ax) 그런데 linear_transformation() 함수는 VectorSpaceMorphism객체를 만들어 내면서 이 객체가 표현하는 행렬을 domain 벡터(pre-image)를 표준행렬의 `왼쪽`에 곱한 것으로 표시합니다. (T(x)=x^tA') A'=A^t 이므로, sage에서 표시한 행렬은 A를 transpose 한 것이라고 생각하시면 됩니다. 다음을 실행해보면 정상적으로 작동합니다. x=vector(ZZ, [1,2,3]) print(TA(x))
느낀점 :
학우분들의 좋은 질문과 친절한 답변 덕분에 linear_transformation() 함수에 대해 더 잘 이해하게 되었습니다. 내용 이해와 요약을 위주로 공부하며 실습 진도가 밀려 있는데 서둘러 해야겠다는 생각도 들었습니다.
21’[해결] SAGE 질문 SyntaxError‘ : sage 코드상 sage 작동 원리 중 preparse를 설명함.
2주차 SAGE에서 실습을 하다가 SyntaxError가 나와서 멈췄습니다.

혹시 해결할 수 있는 방법을 알고계신 분 계십니까?
김진웅(2015****73)7월 23일 오후 5:16
print(preparse('h(x, y, z) = [x + 2*y, -x - y, z, x + z]')) 해 보시면 해당 구문을 먼저 파싱하여 __tmp__=var("x,y,z"); h = symbolic_expression([x + Integer(2)*y, -x - y, z, x + z]).function(x,y,z) 이런 형태로 만들어 주는데 그런 작업을 제대로 수행하지 못하고 있는 것 같습니다.
나종진(2017****17)7월 23일 오후 6:43
sage.skku.edu에서 실행하니 되었습니다. sage에서 실행을 눌러도 실행값이 안떠서 SageMathCell에서 해서 그랬던것같습니다. 해결되었습니다. 감사합니다.
이상구(LEE SANGGU)7월 24일 오전 5:40
Good^^
22‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’ : 특성방정식의 간략한 설명과 sage 코드상 is_diagonalizable(QQBar)를 설명함.
Q.
01 닮은 행렬 설명 중 , 삼각행렬의 특성방정식에 대하여 언급하신 부분이 있는데 , 특성방정식에 대해서 자세한 설명을 찾기 힘들어 , 설명을 해주시길 부탁드립니다 .
1) 특성 방정식이란 무엇인지 (특별히 삼각행렬의 특성방정식에 대해 )
2) 특성 방정식을 구하는 방법 (간략히 )
A. (by 김진웅)
특성방정식은 고유값과 관련이 있습니다.

Q.
02 자체 예제 213 번의 결과가 오류로 인하여 나오지 않는데 , 어떤 오류고 어떻게 해야 정상적으로 작동되는지 아시는 분 계신다면 알려주길 부탁드립니다 .
A. (by 김진웅, SGLee)
A=random_matrix(ZZ,5,5) print(A.is_diagonalizable(QQbar)) 하시면 될 겁니다.

Comment (by 이승재)
오류에 대해 정상적으로 작동할 수 있게 알려주신 분들 모두 감사드립니다. :) 덕분에 오류 나지 않고 정상 작동한것을 확인했습니다.
특성방정식에 대한 추가자료를 보면서 어느정도 이해가 갔습니다. 자료 올려주신 것에 감사드립니다.
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘ : sage 코드상 plot() 함수의 detect_poles옵션을 설명함.
[Final OK by SGLee] 100점 입니다. 협동적 학습경험
[Final OK by SGLee] 100점 입니다. Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준
var('x')
plot((x^2 - 4)/abs(x – 2),x,-1,3)

손으로 그릴때에는 아래와 같이 그리는 것이 맞다고 생각합니다.

(왜냐하면, x=2일때 y가 -4이상4이하의 값을 가지는것은 아니라고 생각했기 때문입니다.) 혹시 sage에서 함수를 구현할때 이러한 부분까지
고려해서 그리는 방법이 있을까요?
김진웅학우님의 답변
김진웅(2015****73)7월 27일 오후 5:02
detect_poles="show" 옵션을 plot()함수의 parameter에 넣어주면 됩니다. plot((x^2 - 4)/abs(x - 2),x,-1,3, detect_poles="show")
그 결과
var('x')
plot((x^2 - 4)/abs(x - 2),x,-1,3, detect_poles="show")

박은아학우님의 답변- 불연속점을 알 경우에 적용가능한 코드
박은아(2016****73)7월 27일 오후 5:11
김진웅 학우분께서 답변해주셨지만, 만약 불연속점을 알고있다면 아래와 같이 exclude를 사용하는 방법도 있습니다. var('x') plot((x^2-4)/abs(x-2),x,-1,3,exclude=[2])
그 결과
var('x')
plot((x^2-4)/abs(x-2),x,-1,3,exclude=[2])

28’[Final OK by TA] Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘ : 미적분학의 기본정리 증명에 다른 변수가 들어가면 안 된다는 것과 그럴 필요도 없음을 설명함.
[HW-3주차-자료공유]미적분학의 기본정리와 그 증명
작성자 : 김범준(2017****99)작성일 : 7월 27일 오후 8:00
조회수 : 27
현재 교과서에 있는 정리입니다.
|
정리. |
미적분학의 기본정리 (적분과 미분의 연결고리) |
가
에서 연속이고
를
의 임의의 한 부정적분,
이라 하면 다음식이 성립한다.
![]()
제가 증명방식이 궁금해 찾아보다가 알게된것들(이미 알고계신분들도 있으시겠지만)을 공유하고자 합니다.
1. 미적분학의 기본정리는 제1정리와 제2 정리가 있습니다. 현재 교과서에 있는것은 제2정리입니다.
2.제1 정리는 미분과 적분이 서로 역연산 관계에 있다는 것입니다. 이는 교과서에 미적분학의 기본정리라고 표기는 명시적으로 따로 되어있지는 않지만, 교과서에 적분의 연산이 그 내용을 포함하고 있습니다.
3. 제 2정리의 증명은 다음과 같습니다.(책에서 x라는변수로 표시한 것을 t변수로 표시한 차이 밖에 없습니다.)
함수
를 다음과 같이 정의하자.
![]()
함수
가
의 임의의 부정적분이므로 다음이 성립한다.
(단,
는 상수)- 여기까지는 미분과 적분이 역연산관계에 있다는 점을 통해 알 수 있습니다.
함수
와
모두
에서 연속이므로 다음이 성립한다.

4. 따라서 제 2정리가 말하고자 하는 것은 부정적분간의 차를 이용해 정적분을 구할 수 있다는 것 입니다.
혹시 제가 정리한 내용중에 잘못된 부분이 있으면 댓글로 알려주시면 갑사합니다.
전재현(2015****91)7월 28일 오후 6:10
문득 궁금한 부분이 생겨 여쭤봅니다. 만약 F(b) - F(a)에서 a가 아닌 다른 값이 들어가도 같은 의미를 가지나요? 어차피 무수히 많이 존재할 수 있는 상수 C를 없애는건 동일하니 상관없을까요?
김진웅(2015****73)7월 28일 오후 10:49
함수 G를 a에 대하여 정의하였기에, F(b) - F(a)에 a아닌 다른 값이 들어가면 네번째 등호를 넘어가지 못할 것입니다. 어차피 함수가 연속이게만 하면 되는 임의의 a,b이므로 모든 경우를 커버할 것입니다.
comment: 제가 찾아본 증명법칙 하에서는 성립하지 않습니다. 그리고 적분을 이미지화 했을때의 이해를 바탕으로 하면,
떤 구간에서 정의된 함수
에 대하여 이 구간의 모든
에 관하여
를 만족하는 함수
가 존재할 때
를
의 원시함수 또는 부정적분(indefinite integral)이라고 한다.
가 주어졌을 때 그 부정적분
를 구하는 것을
를 적분한다 고 한다.
의 부정적분을
로 나타내고
를 적분기호,
를 피적분함수,
를 적분변수 라고 한다.
가
의 한 부정적분이면
는 임의의 상수) (3-2)
이다. 식 (3-2)의 우변의
를 적분상수 라고 한다.
에서 연속인 함수
는
에서 적분가능 이라고 하며,
의
로부터
까지의 정적분(definite integral)을
로 정의한다.

![]()
F(b)-F(a)를 통해 정적분을 구하는 것이 옳은풀이라고 생각합니다.
30’[Final OK by TA][FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘ : 2계도함수와 n계도함수의 의미를 설명함.
(10강) (미적분 1 극한과 도함수)를 듣는중에 궁금한 점이 생기어 여쭤봅니다.
제가 이전에 듣던 강의중에 파생상품론이라는 수업을 들었는데 2계도함수 활용하여 파생상품 함수의 볼록성를 구하는 방식을 사용했엇는데요. 미분은 기울기를 알 수 있고 적분은 면적을 구할수 있듯이 2계도함수를 활용하면 어떤 값을 구할 수 있어서 볼록성을 알 수 있게 되는 것인가요?
그리고 비슷한 주제로 3계도함수. 4계도함수를 구하는 목적이 무엇인가요?
김진웅(2015****73)7월 29일 오전 10:55
2계도함수는 기울기의 변화를 알려줍니다. 2계도함수가 양수이면 기울기가 커질 것이고, 음수이면 기울기가 작아지게 됩니다.
그래서 2계도함수가 0인 지점 사이의 구간들은 볼록하고 오목하게 됩니다.
이와 같이 n+1계도함수는 n계도함수의 변화를 알려줍니다. 그 함수의 변화를 알고 싶을 때 구하면 됩니다.
이상구(LEE SANGGU)7월 29일 오전 11:00
https://darkpgmr.tistory.com/132 을 보세요
1. 3계도함수. 4계도함수 도함수도 필요시 사용하려고 구 할 수 있는지 없는지는 언제나 미리 알아 둡니다. 그러나 Gradient, Jacobian 행렬, Hessian 행렬, Laplacian 등에 모두 쓰이는 1계나 2계 도함수 보다 사용도는 떨어집니다.
2. Gradient, Jacobian 행렬, Hessian 행렬, Laplacian 등 2계도함수 활용 은 무수히 가능합니다.
3. 2계도함수를 활용하면 기울기가 양에서 음으로 그리고 음에서 양으로 변하는 구간을 찾을 수 있어서 그 구간에서의 아래로 볼록, 또는 위로 볼록을 쉽게 답을 준답니다.
- Gradient(그레디언트): http://en.wikipedia.org/wiki/Gradient
- Jacobian(야코비언) 행렬: http://en.wikipedia.org/wiki/Jacobian_matrix
- Hessian(헤시안) 행렬: http://en.wikipedia.org/wiki/Hessian_matrix
- Laplacian(라플라시안): http://en.wikipedia.org/wiki/Laplace_operator
박은아(2016****73)7월 29일 오후 3:09
이계도함수는 오목성(위로 볼록, 아래로 볼록), 변곡점, 임계점 판정에 사용할 수 있습니다.
오목성: 이계도함수가 양의 값을 가지면 위로 오목(볼록함수라고도 한다.)하게 되는데, 이는 접선이 함수의 그래프 아래쪽에 위치함을 의미한다. 유사하게, 이계도함수가 음의 값을 가지면 아래로 오목(오목함수라고도 한다.)하게 되는데, 이는 접선이 함수의 그래프의 위쪽에 위치함을 의미한다.
변곡점: 이계도함수의 부호가 바뀌면, 함수의 그래프는 아래로 오목에서 위로 오목으로 바뀌거나 그 반대가 된다. 이러한 경우가 일어나는 점을 변곡점이라고 부른다. 이계도함수가 연속이라고 하면, 비록 이계도함수가 0이 되는 모든 점이 변곡점인 것은 아니지만, 변곡점에서 이계도함수의 값은 0이 된다.
임계점: 이계도함수와 그래프의 관계는 함수의 임계점 (즉, f'(x)=0 )이 극대 또는 극소인지를 판정하는데 사용될 수 있다.
출처: https://en.wikipedia.org/wiki/Second_derivative
임성규(2015****08)7월 29일 오후 3:33
미분법의 중요한 학습의미 중 하나로 미분법을 이용하여 함수를 그래프로 표현할 수 있습니다.
도함수로 원래 함수의 극값을 알 수 있습니다.
이계도함수로 함수의 극대와 극소, 그래프의 개형 (오목, 볼록)을 알 수 있습니다.
그 이유로 도함수는 함수 그래프위의 한점에서 접선의 기울기를 의미하며 이계도함수는 접선 기울기의 변화를 측정하여 나타내기 때문입니다.
따라서 이계도함수가 양이면 위로 오목하고 이계도함수가 음의 값인 구간에서는 아래로 오목함을 알 수 있습니다.
3차이상의 고계 도함수는 김진웅 학우분이 말씀하신 것 처럼 n+1계도함수는 n계도함수의 변화를 알려줌을 도함수와 이계도함수와의 관계를 통해 알 수 있습니다.
다만 저도 고계 도함수가 어디에 응용되고 활용이되는지 궁금하여 자료를 찾아보았으나 적합한 자료를 찾을 수 없었습니다.(혹여 찾으신 분은 남겨주시면 감사하겠습니다.)
같은 고민을 하신분의 글이 있어 참고자료로 남깁니다.
이 글을 쓰신분은 삼계도함수를 원운동에 적용해 보았으며 그 이유로 원운동이 가속도가 일정한 속도로 바뀌는 운동이기 때문입니다.
즉, 삼계도함수를 이용하여 이계도함수로 구할 수 있는 가속도의 변화를 측정할 수 있다는 생각입니다.
참고자료 : https://nfish.tistory.com/entry/3계-도함수
31’Finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘ : sage 코드상 var()함수와 3차원 벡터 표기를 위해 plot()함수를 설명함.
a = vector([3,5,2])
b = vector([7,1,4])
c = vector([3,4,1])
d = a + b + c
print d
implicit_plot3d(d,(x, 0, 20), (y, 0, 20), (z, 0, 20))
(13, 10, 7)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-4301d71bae1a> in <module>()
4 d = a + b + c
5 print d
----> 6 implicit_plot3d(d,(x, Integer(0), Integer(20)), (y, Integer(0), Integer(20)), (z, Integer(0), Integer(20)))
NameError: name 'y' is not defined
3차원 벡터의 합을 그래프를 통해 나타내고 싶어서 여러 코드들을 보고 시도하였지만 구현하는데 실패하였습니다. 어떤 방식으로 접근해야 할 지 궁금합니다.
또한 plot과 show처럼 그림으로 나타낼 수 있는 여러 명령어간의 차이도 궁금합니다.
김진웅(2015****73)8월 1일 오후 5:24
일단 저 오류 name 'y' is not defined는 코드 맨 앞에 var('x', 'y', 'z')를 넣으면 해결됩니다. implicit_plot3d()에는 함수를 넣어야 하는데 벡터를 넣었기 때문에, f(x,y,z)=(d[0],d[1],d[2])를 정의하여 적용해봅니다. 함수 f를 정의하고 적용해 보면 'tuple' object is not callable 오류가 뜨는데, multiple equation을 받지 않는 것 같습니다. implicit_plot3d() 함수 대신에 plot_vector_field3d() 함수에 함수 f를 적용하면 결과가 1개로 나오지 않고 벡터공간에 모두 존재하게 표시됩니다. 가장 간단한 방법은 plot(d)하면 됩니다.
var('x', 'y', 'z')
a = vector([3,5,2])
b = vector([7,1,4])
c = vector([3,4,1])
d = a + b + c
plot(a, color= 'red' ) + plot(b, color = 'green') + plot(c, color = 'blue') + plot(d, color= 'black' )
정원철학우분께서 개인적으로 연락을 주셔서 https://sagecell.sagemath.org/ 를 통해 다시 실현해본 결과 다음과 같았습니다.
Type some Sage code below and press Evaluate.
var('x', 'y', 'z')
a = vector([3,5,2])
b = vector([7,1,4])
c = vector([3,4,1])
d = a + b + c
plot(a, color= 'red' ) + plot(b, color = 'green') + plot(c, color = 'blue') + plot(d, color= 'black' )
결과적으로 변수선언(var이 빠졌던 부분이 문제였던것 같습니다.)
추가: 천가영학우분의 show와 plot의 차이에 대한 설명
천가영(2020****17)7월 31일 오후 7:10
저도 plot과 show 함수에 대해 궁금해서 관련 내용을 찾아보았습니다. 제가 이해한 바에 따르면, show 함수는 변수에 저장(할당)된 그래프를 그려주는 역할을 하며, show(변수명) 혹은 변수명.show()의 방식으로 사용 가능한 것 같습니다. 그리고 plot 함수는 괄호 안에 함수식과 변수에 대한 정보를 입력하면 그 함수의 그래프를 그려주는 명령어인 것 같습니다. https://doc.sagemath.org/html/en/tutorial/tour_plotting.html plot 함수에 대해 덧붙이자면 , plot 함수에 대해 아래와 같은 설명이 있습니다. plot() - plot of a function or other Sage object (e.g., elliptic curve). 이 설명에 따르면 plot 함수는 함수 뿐 아니라 타원 곡선과 같은 것들도 그려주는 것 같네요 https://doc.sagemath.org/html/en/reference/plotting/sage/plot/plot.html
comment: sage.skku.edu 에서 구동상 문제가 있다하여 명령어 코드가 잘못된것이라 판단하기는 힘들다.
33’[Final OK by SGLee] [3주차] 요약 및 질문’ : 뉴턴방법의 주의점을 설명함.
[6일차]
• 극한 '0<|x-a|<δ → |f(x)-b|<ε, 모든 ε>0'인 δ 존재 → b는 f(x)의 x→a 극한
연속 (1) 좌극한 (2) 우극한 (3) f(a) (4) 좌극한=우극한=f(a) → f(x)는 연속 at x=a
• 미분가능 f(x) at x=a ⇔ lim h→0 {f(a+h)-f(a)}/h 존재
• 미분계수 lim h→0 {f(a+h)-f(a)}/h = f'(a)
도함수 각 점 x에 그 점에서의 미분계수를 대응한 함수 f`(x)=lim h→0 {f(x+h)-f(x)}/h
f(x)를 미분한다 ⇔ f(x)의 도함수를 구한다
tangent line y=f`(a)(x-a)+f(a) normal line tangent line에 수직인 직선
최대최소값의 정리 f(x) 연속 [a,b] → f(x)의 최대값·최소값 존재, (1) 극값 또는 (2) 양 끝값이 최대값·최소값 후보
뉴턴 방법 함수의 근을 그래프와 도함수로 구하는 방법, a_{n+1} = a_{n} - f(a_{n})/f`(a_{n})
• 부정적분 F`(x)=f(x)인 F(x) 존재 → F(x)는 f(x)의 부정적분, ∫f(x)dx
f(x)를 적분한다 ⇔ f(x)의 부정적분을 구한다
f(x) 미분가능 [a,b] → f(x) 연속 [a,b] → f(x) 적분가능 [a,b]
정적분 ∫a,b f(x)dx
평균값 정리 f(x) 연속 [a,b] → ∫a,b f(x)dx=(b-a)f(ξ), a<ξ<b인 ξ 존재
미적분학 기본정리 f(x) 연속 [a,b], F`(x)=f(x) → ∫a,b f(x)dx=F(b)-F(a)
[7일차]
• 외적 a X b = |[i j k][a1 a2 a3][b1 b2 b3]|, 벡터
코시슈바르츠 부등식 |x·y| ≤ ∥x∥∥y∥, x·y = ∥x∥∥y∥cosθ
• 편도함수 f_x = lim h→0 {f(x+h, y)-f(x, y)}/h about x of f
(1)f_xy (2)f_yx (3) f_xy, f_yx 모두 연속 → f_xy = f_yx → Hessian ∇² 대칭행렬
방향도함수 D u f(a,b) = lim t→0 {f(a+tu1, b+tu2)-f(a, b)}/t at (a,b) about u of f
f(x,y) 미분가능 (a,b) → Du f(a,b) = ∇f(a,b)·u = ∥∇f(a,b)∥cosθ
(a,b)에서 ∇f(a,b)의 방향이 f가 가장 가파르게 증가하는 방향
(a,b)에서 -∇f(a,b)의 방향이 f가 가장 가파르게 감소하는 방향
• 그래디언트 f의 편도함수를 성분으로 하는 벡터 ∇f(a,b) = <f_x, f_y>
헤시안 f의 2계편도함수를 성분으로 하는 행렬 ∇²f(a,b) = [[f_xx f_xy][f_yx f_yy]]
• 임계점 ∇f(a,b)=0 인 점 (a,b) → (1) 극소·극대점 또는 (2) 안장점(극소·극대 모두 아닌 점)
임계점에서 다변수함수 극대극소판정법: 다변수함수의 Hessian 행렬 (Δ부호) 또는 (λ부호)로 판단
H가 positive definite → 임계점은 극소, H가 negative definite → 임계점은 극대, H가 indefinite → 임계점은 안장
김진웅 학우분의 요약글을 가져왔습니다. 하단은 제가 개인적으로 중요하다고 생각해 추가한 부분입니다.(from http://matrix.skku.ac.kr/math4ai/part2/)
Newton’s Method (뉴턴 방법) : 실숫값 함수의 근(근사값)을 그래프와 도함수를 이용하여 쉽게 구하는 방법. https://darkpgmr.tistory.com/58
https://www.quora.com/In-which-cases-is-Newtons-method-not-applicable
주어진 함수의 그래프를 그린 후, Newton의 방법에 의하면 그 함수가
축과 만나는 근(무리수 값의 근)의 근사값을 소숫점 이하 몇 번째 자리까지든지 원하는 대로 정확하게 구할 수 있다.

[wiki 크리에이티브 커먼즈 그림] 
최적화문제를 푸는 계산방법은 대개 반복법(iterative method)으로, 초기 근사해로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해들을 생성한다. 위의 그림에서 곡선
를 생각하자.
을 방정식
의 근
에 대한 첫 번째 근사값이라 하자. 그럼
은 점
에서의 곡선
에 대한 접선의 방정식 이다. 그래프를 보고
을
에 적당히 가까운 값으로 선택하면, 이 접선은 보통
축과 점
에서 만나는데, 그 점의
좌표
는
보다
에 더 가까운 근사값이 된다. 따라서 위식에
를 대입하면,
을 얻는다. 다시
를 첫 번째 근사값으로 생각하고 다음 접선을 이용하면
를 얻는다. 이 과정을 반복하면 공식
,
을 얻게 된다. 이 Newton 의 공식을 반복하여 사용하면, 원하는 근을 소숫점 이하 몇째 자리까지라도 필요한 오차 이내로 정확하게 구할 수 있다.
《주의》 첫 번째 근사값
을 찾으려는 근
에 충분히 가깝게 택하지 못하면 Newton의 공식은 불합리한 결과를 초래할 수도 있다. 이를 보완하는 한 방법은 근에 상당히 가까운 근사값에 이를 때까지는 그래프를 먼저 그리거나, 이등분법(bisection method)을 사용하여, 근에 충분히 가까운 점에 온 후 Newton의 방법으로 전환하는 것이다.
이 과정을 아래 도구를 이용하여 실습하도록 하자.
http://matrix.skku.ac.kr/Mobile-Sage-G/sage-grapher-newton_method.html
미적분학 스토리텔링 http://matrix.skku.ac.kr/Calculus-Story/index.htm ■
질문
1. 《주의》 첫 번째 근사값
을 찾으려는 근
에 충분히 가깝게 택하지 못하면 Newton의 공식은 불합리한 결과를 초래할 수도 있다.
이 주의가 뜻하는 것이, 3차원 함수로 나타냈을 경우, 최솟값을 찾는 것이 아닌 극솟값에 빠지는 경우를 뜻하는 것인가요?
김진웅(2015****73)8월 3일 오전 1:01
뉴턴방법은 좌표평면(2차원) 상의 도구로 알고 있습니다.
위에 글에 뉴턴방법이 적용가능하지 않은 경우로 4가지 경우가 있다고 나옵니다. https://www.quora.com/In-which-cases-is-Newtons-method-not-applicable
이 그림도 잘 설명해줍니다. https://www.researchgate.net/profile/Paulo_Flores3/publication/299604992/figure/download/fig26/AS:613932318343200@1523384279523/Examples-in-which-the-Newton-Raphson-method-fails-to-converge.png (여기 (b)의 예는 초기값을 다른 근에 더 가깝게 선택했으므로 제외합니다. 찾고자 하는 근에 충분히 가깝지 않아 다른 근에 가깝게 되는 경우로 보겠습니다.)
(1) 찾고자 하는 근에서의 이계미분계수가 0
(2) 초기값(또는 뉴턴방법 적용하면서 나오는 값)에서의 미분계수가 0에 근사
(3) 초기값(또는 뉴턴방법 적용하면서 나오는 값)에서의 미분계수가 0
(4) 초기값이 극대극소 근처
어느 경우도 찾고자 하는 근에 수렴하지 못하고 발산하거나 다른 근에 수렴하게 됩니다.
(1)은 근이 문제, (2)(3)(4)는 초기값이 문제입니다.
이상구(LEE SANGGU)8월 3일 오전 4:35
Good. 장환승군이 요약 잘했고, 장 군 질문에 김진웅 군이 정확한 답을 주었습니다.
답.
1. 《주의》 첫 번째 근사값 을 찾으려는 근에 충분히 가깝게 택하지 못하면 Newton의 공식은 ... 발산 하거나, 엉뚱한 값으로 수렴한다.
가 의미 이고 김 군이 그 예의 그림을 위에서 제시 했습니다.
36’[Final OK by SGLee] [Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의 by 박진형,이상구(LEE SANGGU), 김진웅‘ : 극대극소가 어떻게 판별되는지 설명함.
아래 이미지를 보시면 f의 이차근사식 중 임계점 x=a 에서 grad f(a) = 0 이기 때문에
f(x) ≈ f(a) + 1/2 (x-a)^T ∇^2 f(a)(x-a)
가 되는 것 까지는 이해가 됩니다.
그런데 여기서 어떻게 우변의 두 번째 항이 함수 f의 x=a 에서의 극대, 극소를 결정하는 것인지 이해가 안 됩니다.
f(x)를 미분하면 f(a)는 사라지고 두 번째 항만 미분이 되므로 도함수에서 의미있는 항은 두 번째항이므로 다음과 같이 표현한 것인가요?
잘 이해가 안 됩니다.

이상구(LEE SANGGU)8월 2일 오후 2:41
= 이 아니라 f(x) ~~ 을 두개 표현 한 의미 가 바로 근사하다는 말 입니다
얘기한대로 delta x 의 세 제곱 을 곱하는 항 부터는 ... 4차 항, 5차항 등의 경우 ... 델타엑스가 적으면 ... 너무 작아져서 ... 큰 의미가 없어집니다.
김진웅(2015****73)8월 2일 오후 5:09
∇²f(a)가 positive definite이면 (x-a)^t∇²f(a)(x-a)>0 이어서 f(a)는 극소가 됩니다.
∇²f(a)가 negative definite이면 (x-a)^t∇²f(a)(x-a)<0 이어서 f(a)는 극대가 됩니다.
∇²f(a)가 infinite이면 방향에 따라 (x-a)^t∇²f(a)(x-a)>0일 때도 있고 (x-a)^t∇²f(a)(x-a)<0일 때도 있기에 f(a)는 안정점이 됩니다.
박진형(2018****59)8월 5일 오후 9:11
좋은 설명 감사합니다!
37’[Final OK by SGLee] Finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘ : 다변수함수의 이차형식을 설명함.
[Final OK by SGLee] Finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]
[2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]
작성자 : 임성규(2015****08)작성일 : 8월 2일 오후 3:52
조회수 : 32
-이차형식(quadratic form)
- r^2상의 이차형식
- r^n상의 이차형식
-주축정리(principal axis theorem)
-양의 정부호 음의 정부호 부정부호
를 복습하던 중에 수업을 들을 당시에는 이해를 했었는데 다시 보니 수식의 뜻이 명확히 이해가 되지 않아 고민 끝에 질문을 남깁니다.
-------------------------------------------------------------------------------------------
1. 질의
p.140
스크린샷 2020-08-02 오후 3.20.10.png

에서 노란 표시가 되어있는 부분에서 시그마표현식이 다시 보다보니 이해가 잘 가지 않습니다.
그리고 2. A = B (대칭행렬) + C (반대칭행렬) 로 나누어 썼을 때 , 항상 이차형식 값이 항상 q_[A} (x) = q_[B} (x) 인 이유에 대하여 조금 더 설명 부탁드립니다.
Comment: 교수님의 답변을 통해서 대칭행렬과 반대칭행렬의 합에 대해서, 진웅님의 설명을 통해서 이차형식의 식에 대해서 제대로 이해할 수 있었습니다. 뿐만 아니라 재밌는 실습예제를 접할 수 있었고, 마지막 문제에서 약간의 에러가 발생하였지만 교수님께서 피드백 주신 대로 하니까 잘 돌아가서 보람이 느껴졌습니다.
.
3개의 댓글
이상구(LEE SANGGU)8월 2일 오후 4:56
질문 2. 에 대한 답 http://matrix.skku.ac.kr/2008-Lecture/LAA-sglee/text-ch08.html 를 보시면 A = B (대칭행렬) + C (반대칭행렬) 로 나누어 썼을 때 q_[A} (x) = q_[B} (x) + q_[C} (x) 인데 항상 q_[C} (x) = 0 이므로 항상 q_[A} (x) = q_[B} (x) 이므로 A 대신 A 의 대칭행렬 부분인 {A + A^T }/ 2 인 B 로 q_{B} = q_[A} (x) 값을 구하면 마찬가지이므로 A 를 대칭행렬 로 여기고 이론을 전개해도 된다는 의미입니다.
김진웅(2015****73)8월 2일 오후 5:01
변수가 2개(x,y)였을 때는 이차형식이 x^2,y^2(같은 변수의 제곱)과 xy(다른 변수와의 곱)로 이루어진 합이었는데, 변수가 n개(x1,...,xn)로 확장할 때에는 이차형식이 x1^2,..., xn^2(같은 변수의 제곱)과 x1x2,...,xnxn-1(다른 변수와의 곱)으로 이루어진 합이 됩니다. 이것을 식으로 표현한 것이 Σaijxixj입니다. (aij는 각 항의 계수)< Ax, x>는 Ax와 x를 내적한 것이므로 x^tAx가 됩니다. x^tAx를 풀어보면 Σaijxixj가 됩니다.
이상구(LEE SANGGU)8월 5일 오전 7:45
그럼 아래 이차형식 내 자료 꼭 보고 Finalize 하세요 http://matrix.skku.ac.kr/2014-Album/Quadratic-form/
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘ : sage 코드상 다른 실습 사이트를 설명함.
[Final OK by SGLee]
질문 by 채희준
답변 by 김진웅, 이상구
Finalized by 채희준
Q :
수반행렬을 이용한 가역행렬의 역행렬 구하기를 해보는 중에 error 가 발생했습니다.
C = random_matrix(QQ, 10, 10)
print 'C='
print C
if C.is_invertible()==True:
dC = C.det() # 행렬식 구하기
adjC = C.adjugate() # 수반행렬 구하기
print("inverse of C = (1/dC)*adjC =")
print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기
else:
print 'C is not invertible'

교재 part1 예제에 나온 코드를 활용한 것인데 왜 이런 error가 뜨는 지 모르겠습니다.
행렬식과 수반행렬을 이용하여 행렬
의 역행렬을 구하여라.
A = matrix([[3, -2, 1], [5, 6, 2], [1, 0, -3]])
dA = A.det() # 행렬식 구하기
adjA = A.adjugate() # 수반행렬 구하기
print("inverse of A = (1/dA)*adjA =")
print((1/dA)*adjA) # 수반행렬을 이용한 역행렬 구하기
sage를 이용한 실습을 늦게 시작해 1주차 내용을 4주차에 와서 질문하게 됐습니다. 죄송합니다... 혹시 해결방법을 아시는 분은 도와주시면 감사하겠습니다.
A :
김진웅(2015****73)8월 4일 오전 1:16
여기에서 해 보세요 http://matrix.skku.ac.kr/KOFAC/ 실행 되는 것 확인했습니다. print는 괄호 쳐 주세요.
이상구(LEE SANGGU)8월 4일 오전 9:24
김진웅 군이 맞습니다. print는 괄호 쳐 주세요. <--- 명령어가 일부 update 되었습니다. 아래와 같이 하시면 됩니다. C = random_matrix(RDF, 10, 10) print ('C=') print (C) print if C.is_invertible()==True: dC = C.det() # 행렬식 구하기 adjC = C.adjugate() # 수반행렬 구하기 print("inverse of C = (1/dC)*adjC =") print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기 else: print ('C is not invertible')
comment:
http://sage.skku.edu/
여기서 실습을 했었는데, 여기는 업데이트 전 명령어를 사용하고 있었군요.
http://matrix.skku.ac.kr/KOFAC/ 에서 같은 코드로 실행해보니 제대로 나오는 것을 확인했습니다.
답변 해주셔서 감사합니다!!
43’[Final OK by SGLee] Final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅‘ : 극대극소의 정의로 안장점을 설명함.
[Final OK by SGLee] Final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅
3주차 임계점에 관한 질문입니다.
교재 p.178에 임계점에 대한 시각적인 이해 그림이 있습니다.

이 그림입니다.
이 그림이 평소 극대, 극소값을 보는 평면과 달라 이해가 잘 안됩니다.
제가 생각한 바로는 C점을 지나고 x축과 평행한 평면에 두고 생각하면 C점이 극댓값이 된다고 생각하였습니다.
꼭 x축과 평행하지 않아도 C점을 지나는 평면을 생각했을 때도 극대 또는 극소의 값을 갖을 것으로 봅니다.
어느 부분에서 극대,극소값을 갖지 않는지 궁금합니다.
Final

감사합니다.
극대,극소값이 되지 않는 경우가 있다고 해서 그 부분에 꽂혔나봅니다.
C점에서 극소도 되고 극대도 된다는 것이 모든 점에서 극소, 극대 한가지만 되는것이 아니라는 것을 알게되었습니다.
평면이 아닌 입체라서 당황했나봅니다. 제가 놓쳤던 부분을 알려주셔서 감사합니다.
44’Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅,채희준,정원철‘ : 임계점 풀이와 cos값을 설명함.
교재 p. 181에 예제 13번을 풀다가 의문이 생겨서 질문을 올립니다.
제가 삼각함수에 대해서는 고등학교때 배운 sin,cos,tan의 30,45,60도 일 때가 전부입니다.
그래서 이번 수업에서 sin,cos가 나올 때마다 긴장하고 집중하면서 공부하고 있습니다.
일단 문제는

여기서 풀이 첫번째 줄에서 2x+z / 3 sin y / x+2z / 3 cos y가 되는 것은 이해가 되었습니다.

그리고 f 의 임계점 a=(0,n pi,0)인 것도 이해가 되었습니다.
일단 첫번 째 질문은 i)에서 임계점 a=(0,2k pi,0)로 두는 건지 궁금합니다.
크게 상관없어보이지만 2k를 두어 왜 짝수모양으로 두는지 궁금합니다.
두번 째 질문은 f의 헤시안행렬을 구할 때 y^2부분(2,2부분?)에서 왜 3이 나오는지 궁금합니다. 3cos (2kpi)= -3 아닙니까?
이렇게 계산이 되니 Δ1=2, Δ2=-6 이 되어 값이 다르게 나옵니다.
제가 삼각함수를 잘 몰라서 그런지 답이 다르게 나옵니다.
혹시 제가 계산 실수가 있는지 확인 부탁드립니다.
Fianl
A1. n pi 를 홀수와 짝수로 나누는 이유는 둘의 값이 다르기 때문이다.
홀수일 때는 안장점이 되고, 짝수일 때는 극소값이 된다.
A2. 3cos(2k pi)=3 이다. cos pi=-1, cos2pi=1이다.
comment
삼각함수에 대해 잘 알지 못해서 어려웠었다.
많은 학우분께서 도움을 주셔서 쉽게 해결되었다.
감사합니다.
김진웅(2015****73)8월 5일 오전 12:42
(1) 2kπ일 때와 (2k+1)π일 때가 나오는 값이 다르기 때문에 나누어 풉니다.
(2) 3cos(2kπ)=3입니다. cos(2kπ)=1이기 때문입니다. cos(0)=1
채희준(2016****00)8월 5일 오전 12:51
f의 임계점의 y 성분이 pi의 정수배 이므로 교재에서는 2k(짝수)pi 일 때와 2k+1(홀수)pi 일 때로 나눠서 풀고 있습니다.
그 이유는, cos(2kpi) = cos(0) =1이 되고 cos((2k+1)pi) = cos(pi) = -1이 되기 때문입니다.
fyy는 3cos(2kpi) = 3cos(0) = 3 이 됩니다.
나종진(2017****17)8월 5일 오전 12:57
추가질문 (1) 왜 이번 문제는 짝수일 때를 가정하고 푸는 건가요?
3siny가 0이 될 때는 n pi에 n이 짝수, 홀수 상관없지 않나요?
정원철(2017****79)8월 5일 오전 9:19
진웅님과 희준님이 설명하신대로 입니다.
sin과 cos의 그래프를 한번 생각해보시면 와닿으실 것 같습니다.
sin은 π값이 정수가 될 때 0이 되서 상관 없지만 기본적인 cosx는 2π일 때는 1, 2π+1일 떄는 -1을 가져 극대, 극소가 번갈아가며 나옵니다.
sin(kπ) = 0
cos(2kπ) = 1, cos(2kπ+1) = -1
김진웅(2015****73)8월 5일 오후 12:38
(1) 뒤에 가 보면 홀수일 때를 가정하고 푸는 과정이 나와 있습니다.
이미지는 풀이 (i)입니다. (ii)가 있습니다.
55’[Final OK by SGLee] Finalized by 이승재 Q by 장환승 A by 김진웅 Comment by SGLee, 이승재 " 6주차 강의 내용 질문 "’
[Final OK by SGLee]Finalized by 이승재 Q by 장환승 A by 김진웅 Comment by SGLee, 이승재 " 6주차 강의 내용 질문 "
Q.

강의 내용 도중 문제 풀이 상, 정규분포 계산을 할 때 저 코드가 어떻게 나왔는지 궁금합니다.
김진웅(2015****73)8월 21일 오후 6:20
pbinom은 이항분포 구간확률을 (좌측 끝에서부터, 첫번째 파라미터 값까지) 보여줍니다.82이상 102미만을 물어보고 있으므로, pbinom(101) - pbinom(81)을 하면 82부터 101까지의 이산분포 확률을 보여줍니다.mu는 이 이산분포 확률변수의 평균을, sigma는 표준편차를 나타냅니다.pnorm은 정규분포 구간확률을 (좌측 끝에서부터, 첫번째 파라미터 값까지) 보여줍니다.이항분포는 정규분포에 근사하므로, 이를 설명해주는 코드입니다.정규분포는 연속확률분포로 이항분포의 이산확률분포와는 다르므로, "평균값(81.5, 101.5)을 취해 끝값(82, 101)을 포함"시켜 준 것으로 보입니다.pnorm(101.5) - pnorm(81.5)를 해보면 매우 근사함을 알 수 있습니다.
Comment. SG Lee
김진웅(2015) 군 clear!! 훌륭합니다^^^
Comment. 이승재
코드에 대한 자세한 해석을 해주신 것에 감사드립니다. 코드에 대한 자세한 이해와, 왜 이러한 코드가 쓰였는 지에 대해 이해하게 되었습니다.
56’6주차 요약: 연속확률분포, 결합확률분포, 공분산행렬.‘
1. 연속확률분포
• 균등분포: 일정 구간 내 임의의 점에서의 확률밀도함수값이 같은 분포.
• 정규분포: 평균을 중심으로 모여 있는 비편향된 분포.
• 표준정규분포: 정규분포를 따르는 확률변수 X를 N(0,1)의 형태로 표준화시킨 분포.
• 지수분포: 포아송 분포에 따라 단위 시간당 평균 λ번의 사건이 발생할 때, 그 사건 발생 간격의 분포.
• 중심극한정리: 표본의 크기가 충분히 크고(n>30), 모집단에서 무작위추출을 했을 때, 표본평균의 분포는 N(μ,σ^2/n)을 따르며, 이는 모집단의 정규분포 여부와는 무관하다.
• 단, 표준코시분포 등 ∫xf(x)dx 등을 정의할 수 없는 함수들은 중심극한정리의 예외에 해당한다.
2. 결합확률분포
• 결합확률분포: 이산확률변수들의 모든 조합의 확률을 각각 나타낸 분포.
• 주변확률분포: 단일확률변수만 고려한 확률분포.
• 결합밀도함수: 연속확률변수들의 밀도함수.
• 공분산: 확률변수들이 퍼져있는 정도. V(X)=E(X*X)-μx*μx, Cov(X,Y)=E(X*Y)-μx*μy.
• 상관계수: 확률변수의 크기에 영향을 받지 않도록, 두 확률변수의 분산의 곱의 제곱근으로 나눠 표준화한 공분산.
• 두 독립사건의 공분산은 0이고, 따라서 상관계수도 0이다.
3. 공분산행렬
• 공분산행렬: 주대각선성분을 확률변수의 분산으로 하고, 나머지 성분을 공분산으로 하는 정사각행렬.
• 공분산행렬의 고유벡터는 데이터가 퍼지는 방향을 보여 주고, 고윳값은 각 축의 공분산 값에 해당한다.
복기하다가 잘 이해가 안 가는 부분에 대한 질문입니다.
1. 표준코시분포가 적률생성함수를 갖지 않는다는 것이 왜 그런지 대강이나마 알고 싶습니다.
2. 주성분분석에서 라그랑주 승수법을 이용해서 z1의 최댓값을 구하는 과정에서, d/dv1
=
이 되는 이유는 v1^T=v1이 성립해서 그런 건가요.
이상구(LEE SANGGU)8월 21일 오후 8:56
1. https://pgr21.co.kr/qna/30329적률생성함수 M(x) 는 E(e^tx) 이다. 확률분포 중에서 초기하분포를 비롯한 몇개의 분포에서는 적률모함수가 존재하지 않는다!!답: 코시분포는 absolute converge하지 않습니다.따라서 moment값이 존재하지 않는다고 볼수있겠죠.
이상구(LEE SANGGU)8월 21일 오후 8:58
2. 에 대한 답은 < 시그마 v_1 = 람다 v-1 > 으로 행렬의 고윳값.고유벡터 관계이면 이 둘이 같으므로 뺀 것은 영이 되어야 한다" 가 답입니다.
김진웅(2015****73)8월 21일 오후 11:18
1. 표준코시분포의 확률밀도함수는 f(x)=1 / (pi * (1 + x^2)) 입니다.전체 확률값을 구하는 다음 sage코드를 돌려보면 1이 나옵니다.f = 1 / (pi * (1 + x^2))integral(f, x, -infinity, infinity)확률밀도함수에 x를 곱하여 적분한 것이 기대값이 될 텐데, 다음 sage코드를 돌려보면 'Integral is divergent'하다고 error가 나옵니다.f = 1 / (pi * (1 + x^2))integral(f*x, x, -infinity, infinity)저도 그래프상으로는 평균이 존재할 것 같은데, 기대값 정의로는 존재하지 않음이 신기했습니다.
김진웅(2015****73)8월 21일 오후 11:27
2. v1^t = v1는 크기가 다르므로 성립하지 않지만, 미분을 하게 되면 d/dv1 (v1^t)Σ(v1) = 2Σ(v1)가 되고 d/dv1 -λ(v1^t)(v1) = -2λ(v1)이 됩니다. 그냥 미분한다고 생각하시면 됩니다.
고경원(2013****45)8월 22일 오전 00:02
v1과 v1^T가 같지 않은데도 미분을 하면 그냥 v1^2의 미분 결과랑 같게 되는군요. 감사합니다.
고경원(2013****45)8월 22일 오전 00:12
1차 적률은 기댓값과 같은 의미이고, 표준코시분포는 적분결과가 수렴하지 않아서 기대값을 정할 수 없다는 의미군요. 감사합니다.
이상구(LEE SANGGU)8월 22일 오전 6:58
스마트폰 이라 답을 대충 주어도 서로 의논하며 잘 해결해가는 모습을 보니 보람을 느낍니다. 우리 성대 Math4AI 학생들이 훌륭합니다^^
이상구(LEE SANGGU)8월 22일 오전 10:45
[Final OK by SGLee] Go for A. A 받는 방법 하나.A 누가 그 동안 classmate 여러분들이 요약한 또는 Finalize 한 또는 남겨진1. 1주 부터 ... 7주차 학습내용 요약한 것을 잘 모아 ^^ 주차별로 긴 하나의 주차 내용 요약으로 Re-Finalize 하여 각각을 QnA 에 파이널라이즈 공유 하세요.^^2. 그것들만 모아도 파이널 pbl 보고서 내용 충분히 될것 입니다.3. 그 활동으로도 온라인 120점 시험 보는데 충분할 것 같습니다 .그동안 다른 일 하다 밀린 학생... 무엇을 할까 고민하는 학생이 있으면 ...그렇게 해 보도록 하세요
임성규(2015****08)8월 22일 오후 1:13
개념 정리된 것 잘 보았습니다. 감사합니다!
권희성(2019****96)8월 28일 오전 8:37
원함수가 같지 않더라도 미분을 하면 같아진다는 것이 신기합니다. 새로운 내용을 알게 된 것 같습니다. 감사합니다 !
57’열린문제 3 구하는 법 질문‘
열린문제 3을 시도해봤는데 잘 안 돼서 질문드려요..
먼저 1번문제에 대해서결합확률분포표에서 공분산을 어떤 코드로 구할 수 있을까요?? x1과 x2로 나눠서 해보고 있는데 어떻게 해야할지 잘 모르겠네요...

그리고 다음 건 답이 다르게 나오는데, 블로그에서는 n으로 나눴지만 cov코드로는 n-1로 나눠서 그런 것 같아요. 어떻게 해야 할까요?

아래는 교수님께서 올려주신 열린문제 원본 게시글입니다
문의게시판 글 링크 복사를 어떻게 하는지 모르겠네요...
[열린문제 3] 위의 코드를 이용하여 아래 데이터의 공분산행렬을 R code 로 구하시오.
작성자:이상구(LEE SANGGU)작성일:8월 17일 오후 3:14
조회수:17
[열린문제3]다른 교재에서 찾은 데이터의 공분산행렬을 구하시오.
http://matrix.skku.ac.kr/math4ai-intro/W11/
11.4 공분산 행렬(covariance matrix)
행렬을 이용하면 여러 개의 확률변수가 서로 어떤 관계를 가지는지를 쉽게 표현할 수 있다. 특히, 각 데이터의 분산과 공분산을 이용해 만드는 공분산 행렬이 이에 해당한다.
개의 확률변수 {
,
,
}에 대한공분산 행렬(covariance matrix)은
성분이
일 때는
번째 확률변수
와
번째 확률변수
사이의 공분산
으로,
일 때는
번째 확률변수의 분산
으로 하는
행렬로 정의하고
로 표기한다.
![]()
![]()
쉽게 말하면, 정사각행렬의 성분을 각 변수의 분산(주대각선)과 공분산으로 채운 것이 바로 공분산 행렬이다.
공분산 행렬은 아래 그림과 같이 데이터의 분포를 나타낸다고 볼 수 있다.

[그림 출처]https://www.ritchieng.com/machine-learning-anomaly-detection/
*공분산 행렬을 생성하는 R 코드 실습 :https://stats.seandolinar.com/making-a-covariance-matrix-in-r/또는http://matrix.skku.ac.kr/KOFAC/에서 실습하세요.
# 셀의 오른쪽 하단의 Language를 R로 변경하여 실행하세요.
#create vectors -- these will be our columns
a <- c(1,2,3,4,5,6)
b <- c(2,3,5,6,1,9)
c <- c(3,5,5,5,10,8)
d <- c(10,20,30,40,50,55)
e <- c(7,8,9,4,6,10)
#create matrix from vectors
M <- cbind(a,b,c,d,e)
cov(M)
답:
a b c d e
a 3.5 3.000000 4.0 32.500000 0.400000
b 3.0 8.666667 0.4 25.333333 2.466667
c 4.0 0.400000 6.4 38.000000 0.400000
d 32.5 25.333333 38.0 304.166667 1.333333
e 0.4 2.466667 0.4 1.333333 4.666667
[열린문제 3] 위의 코드를 이용하여 아래 데이터의 공분산행렬을 R code 로 구하시오. 공분산 행렬 구하는 예제
두확률변수
의 결합확률함수![]()
이 주어졌을 때
공분산행렬을 구하여라.
|
|
0 |
1 |
|
|
-1 |
0.24 |
0.06 |
0.3 |
|
0 |
0.16 |
0.14 |
0.3 |
|
1 |
0.4 |
0 |
0.4 |
|
|
0.8 |
0.2 |
1 |
위문제는 두 변수간의 공분산 구한후
각 변수의 자기분산을 구하여 공분산행렬을 완성하면된다.
공분산 행렬

![]()
각 변수의 평균 구하기
![]()
![]()
분산과 공분산을 구한다.
![]()
![]()
![]()
![]()

분산과 공분산을 이용해서 행렬완성
![]()
[출처]공분산 행렬 구하는 예제-수리통계|작성자isabella
http://www.joon.pe.kr/blog/140
![]()
![]()
라고 할때, 일단 평균을 구한다.
![]()
공분산 매트릭스를 구하는 식은 아래와 같다.![]()
위 식에 의해 공분산 매트릭스를 구하면,![]()
![]()
![]()
![]()
즉, 공분산 매트릭스
이다.
4개의 댓글
김진웅(2015****73)8월 22일 오후 11:15
2. (5.04 1.68 1.68 0.56) * 5 / 4 = (6.3 2.1 2.1 0.7) 이 정확한 공분산행렬입니다. (R코드 cov()함수도 이를 보여줍니다)n이 아닌 n-1로 나누는 것이 맞습니다.(https://rfriend.tistory.com/126에서 올바른 식을 볼 수 있습니다.)
김호연(2020****32)8월 23일 오전 2:14
이해하였습니다. 감사합니다!
한수현(2019****61)8월 23일 오후 2:18
제가 부족했던 걸 알아갑니다. 감사합니다.
정권채(2008****19)8월 26일 오후 6:38
좋은 정보 감사합니다.
59’[Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준‘
출처)http://matrix.skku.ac.kr/math4ai/part4/
주성분 분석(Principal Component Analysis, PCA)은 가장 널리 사용되는차원 축소 기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 서로 직교하는 새 기저(축)를 찾아, 고차원 공간의 데이터들을 선형 연관성이 없는 저차원 공간으로 변환한다. 이때 계산은 주로 행렬의고윳값 분해또는특이값 분해(SVD)를 사용한다.
PCA는기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉주성분(principal component,PC)들을 만들어 낸다.첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다.예를 들어,PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.
위의
를센터링(centering)하여,
를 정의하자. 이를 위해
(1)
의각 열(하나의 확률변수가 갖는 데이터)의 평균을 구한다. 확률변수
의 평균은
로 표기한다.
, ... ,
.
(2) 열(column)별로 데이터에서 (열의) 평균을 뺀다. 이 행렬을센터링된 행렬
라 한다.
![]()
제가 생각한 센터링이 필요한 이유 -> 각 열의 평균이 0이 되어서
PC score
▪
를 센터링(mean-centered)된
의 데이터 행렬이라 하자. 여기서
은 표본(sample)의 개수이고,
는 확률변수(variable, feature)의 개수이다.공분산 행렬
는
대칭행렬이므로, 다음과 같이직교대각화가 가능하다.
![]()
여기서
는
의 고윳값
를 크기 순서대로, 주대각선 성분에 배열한대각선행렬이고,
는 그에 대응하는 정규직교인 고유벡터를 열벡터로 하는직교행렬이다. 또한
이므로
는양의 준정부호(positive semidefinite)행렬이고, 고윳값은
이다. 그리고 고유벡터는주축(principal axes)또는주방향(principal directions)이라고도 부른다.
▪주성분(PC)
,
, ... ,
를 벡터로 나타내면다음과 같다.
![]()
![]()
![]()
그리고 각 확률변수
에 원 데이터를 대입하면 행렬
를 얻는다.

그러면
의
번째데이터의 좌표는
의
번째행벡터로 주어지고,
번째PC score(주성분점수, principal component score)는
의
번째열벡터로 주어진다.
이제
의 특이값분해(SVD)가 다음과 같이 주어져 있다고 하자.
![]()

![]()
![]()
![]()
여기서
,
는 직교행렬이고,
는 크기 순서대로 배열된 특이값(singular value)
을 주대각선 성분으로 하는
대각선행렬
이다. 그러면 관계식
![]()
![]()
![]()
![]()
으로부터 다음을 얻는다.
(1)
라 하면
의 열벡터가주축(principal axes)이 된다.
(2)
이므로,
의 열벡터들이PC score(주성분점수, principal component score)가 된다.
(3) 특이값
는
의 고윳값
와 관계식
을 만족하며,
는 대응하는 PC의 분산이 된다.
(4) 데이터를
차원에서
(
) 차원으로 줄이기 위하여,
의 처음
개의 열벡터(
)와
의
번째선행 주 부분행렬(leading principal submatrix)(
)을 택하면,
는 처음
개의 PC를 포함하는
행렬이 된다.
![]()
![]()
.
(5) (4)에서 얻은
에
,
, ... ,
에 대응되는 주축으로 이루어진 행렬
을 곱하면,
는 처음
개의 PC로부터 원 데이터를 복원하도록 해주는 rank가
인
행렬이 된다.[rank reduction]
![]()
![]()

![]()
.
이는
의 SVD에서 크기 순서대로
개의 큰 특이값
과 이에 대응되는
와
의 처음
개의 열벡터를 택하는 것과 같다. 이를truncated SVD라고 한다. 실제로
는 rank
인 행렬 중에서
에 가장 가까운 행렬이 된다.즉 다음이 성립한다.
.
# 데이터 입력
Price <- c(6, 7, 6, 5, 7, 6, 5, 6, 3, 1, 2, 5, 2, 3, 1, 2)
Software <- c(5, 3, 4, 7, 7, 4, 7, 5, 5, 3, 6, 7, 4, 5, 6, 3)
Aesthetics <- c(3, 2, 4, 1, 5, 2, 2, 4, 6, 7, 6, 7, 5, 6, 5, 7)
Brand <- c(4, 2, 5, 3, 5, 3, 1, 4, 7, 5, 7, 6, 6, 5, 5, 7)
data <- data.frame(Price, Software, Aesthetics, Brand)
# 데이터가 잘 입력되었는지 확인한다.
print(data)
# 데이터 행렬을 센터링 하여 mydata 행렬을 얻는다. (본 예제에서는 센터링 한 후에 다시 각 열을 해당 확률변수의 표준편차로 나누었다. 이를 scaling이라 하는데, 필요에 따라 scaling도 진행할 수 있다.)
# 표준화(centering, scaling) 작업
mydata <- scale(data, center = T, scale = T) # 데이터 행렬을 센터링, scaling 한다.
print(mydata)
# mydata 행렬에 PCA를 진행한다. (R의 prcomp 명령어를 이용하였다.)
# PCA 진행. 앞에서 이미 센터링 scaling 하였음. retx는 PC score를 제공할지 여부
mypca <- prcomp(mydata, center = F, scale = F, retx = T)
print(summary(mypca))
# 주성분을 찾을 때 필요한 적재계수는 다음 명령어를 이용하여 확인할 수 있다. 이는 직교행렬 V에 해당한다.
# loadings (V를 의미한다.)
print(mypca$rotation)
# 1~3번째 PC에서의 score는 다음 명령어를 이용하여 확인할 수 있다. 이는 행렬 Z=XV의 1~3번째 열벡터로 이루어진 행렬이다.
# PC1~PC3 score. 1열부터 3열까지
print(mypca$x[,1:3])
# 앞서 PC1, PC2가 원 데이터의 84.8% 정도를 보존한다고 이해할 수 있으므로, 15% 정도의 정보는 잃어버리더라도,
# PC1, PC2만 택하여 2차원 데이터로 차원을 줄 일 수 있다. 이를 활용하여 데이터를 시각화하거나 다른 데이터 분석기법을 적용할 수 있다.
# 예를 들어, 다음과 같이 주어진 데이터를 개의 클러스터로 묶는 알고리즘인 K-means clustering을 진행할 수 있다.
# 그리고 주성분의 고윳값에 대한 선 그림(line plot)인 scree plot을 활용하여 데이터의 차원을 줄일 때, 주성분을 몇 개로 선택할지 결정할 수 있다
# scree plot은 고윳값을 가장 큰 값에서부터 크기 순서대로 정렬하므로, 대개 기울기가 꺾이는 부분의 “elbow point” 왼쪽에 있는 성분까지 선택한다.
# 2차원으로 차원 축소 후(PC1과 PC2만 취하여) k-means clustering 진행
PC1 = mypca$x[,1] # 1열을 PC1라 함
PC2 = mypca$x[,2] # 2열을 PC2라 함
# PC1, PC2를 이용하여 클러스터의 개수(centers)를 4개로 하고
# 임의로 10번 시행(nstart)하여 가장 잘 clustering 하는 것을 찾음
myclust <- kmeans(mypca$x[,1:2], centers = 4, nstart = 10)
# clustering 후 시각화 결과 보여줌
plot(PC1, PC2, xlab = "PC 1", ylab = "PC 2", type="p", col = myclust$cluster)
# scree 그래프 (분산을 나타낸다)
screeplot(mypca, type = "lines", col = 2)
dev.off()
위 코드를 실행한 결과..

클러스터링이 잘 된 것을 알 수 있었다.
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
8개의 댓글
김진웅(2015****73)8월 23일 오후 11:22
1. 주성분이 얼마나 설명력있느냐에 달려 있습니다. 이 설명력은 모든 주성분의 분산 중 해당 주성분의 분산입니다.오른쪽 그래프에 4개의 주성분과 그 분산(2.5, 1.0, 0.5, 0)이 표시되어 있는데요,첫번째 주성분은 2.5/(2.5+1.0+0.5+0)=0.625만큼의 설명력이 있고,두번째 주성분은 1.0/(2.5+1.0+0.5+0)=0.25만큼의 설명력이 있는 것입니다.두 주성분을 이용하여 0.875만큼의 원데이터를 설명하고 있습니다.많은 주성분을 사용하면 설명력은 커지겠지만, 차원이 늘어난다는 trade-off가 있습니다.결론: 생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다. 고르는 사람 맘입니다.2. PC1, PC2는 각각 첫번째, 두번째 주성분입니다.
장환승(2016****69)8월 24일 오전 00:39
감사합니다. 2번 질문은 x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다는 의미였습니다.
임성규(2015****08)8월 24일 오전 00:45
코드 설명을 자세하게 적어주어 쉽게 읽고 이해했습니다.글의 정리내용을 다시 읽어보시면 질문에 대한 답변이 있습니다!PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다.--> PC1,PC2는 주성분을 의미.예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.--> 주성분이 원데이터의 성질을 얼마나 보존하는지 마지노선을 글을 쓰신 분은 90%로 정하였고 조건을 충족하는 PC3까지 주성분 3개를 택하여 차원을 줄였습니다.즉,데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
김정한(2017****99)8월 24일 오전 6:06
세세한 내용정리 잘 보았습니다.김진웅 학우님, 임성규 학우님의 답변 또한 잘 배워갑니다.제가 이해한 내용이라 부족한 부분도 있겠지만 질문에 추가적인 답변을 해보자면 PCA는 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법중 하나입니다. 머신러닝을 할 때 훈련 데이터의 변수가 많은 경우가 있습니다. 하지만 모든 변수가 결과에 주요한 영향을 끼치는 것은 아닙니다. 가장 중요한 변수가 있을 것이고, 그다음 중요한 변수가 있을 것이고, 상대적으로 중요치 않은 변수들도 있을 겁니다.(원데이터의 분포의 보존) 이런 변수 중 가장 중요한 주성분 몇 개 만을 선택하는 게 PCA입니다.n개의 변수가 있다고 해봅시다. n개의 변수와 1개의 label을 매핑시키는 그래프를 그리려면 n차원의 그래프가 있어야 합니다. 3차원이 넘어가면 우리의 눈으로는 볼 수 없을 것입니다. 이때 중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다.(->차원 축소를 통해 시각화를 할 수 있고, 시각화를 통해 데이터 패턴을 쉽게 인지할 수 있습니다.)
박은아(2016****73)8월 24일 오전 11:36
장환승학우님의 글과 김진웅, 임성규, 김정한 학우님의 댓글을 통해 PCA에 대해 공부할 수 있었습니다. 특히 주성분의 분산과, 차원 축소 방법으로서 PCA의 의미에 대해 더 잘 이해하였습니다. 감사합니다!
채희준(2016****00)8월 24일 오후 12:47
학우님들의 내용 정리, 질문, 답변을 보면서 PCA에 대한 이해도를 높일 수 있었습니다. 감사합니다.
등록
[정리 & Comment]
장환승 학우님의 질문:
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
(추가) x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다
답변 정리
질문 1
생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다.
데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
질문 2 PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다.--> PC1,PC2는 주성분을 의미.
중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다.
Comment
학우님들께서 작성해주신 질문과 답변을 통해 주성분분석(PCA)에 대한 큰 그림을 이해할 수 있었습니다. PCA에 대한 원리, 개념과 더불어 주어진 데이터를 선별하고 분석하며 시각화하는 과정을 파악할 수 있었습니다. 기존에 배웠던 SVD와 연결해서 공부하니 더욱 흥미롭게 느껴졌습니다.
Comment(10개) (중간 7개 기말 3개)
2‘[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.’
20’[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기‘
24’2주차 4-1, 4-2 요약정리 및 질문‘
26’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
32’[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습‘
46’[2주차] 고유값 분해를 이용한 피보나치수 일반항 유도‘
48’[Final OK by SGLee] Finalized by 김범준 [HW-5주차(자료공유)] 평균의 함정 사례by김범준 comment 및 추가의견 by 나종진학우님, 박정호학우님, 김진웅학우님, 이상구교수님‘
50’8/14(금) Office Hour 내용입니다. <-- 프로젝트 지원자 신청 받습니다.‘
51’[5주차]Finalized by 정권채; 포아송분포 예시‘
2‘[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.’
[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.
작성자 : 장환승(2016****69)작성일 : 7월 17일 오전 11:06
조회수 : 67
[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.
저도 방 코드를 숫자로만 적어야 된다는 사실을 몰라서 10분정도 늦게 들어갔습니다.
제가 들어간 이후부터 내용을 정리하자면,
1. 궁금한 점이 있으면 언제든지 문의 게시판에 글 남겨달라.
2. OH 가 필요하다면 요청하고, 금요일 오전 10시 반부터 11시 20분까지는 교수님이 시간 낼 수 있다고 하셨습니다.
3. 선형대수학을 선이수한 학생들은 문의 게시판에 다른 학생들 질문에 답변해주고 part 2 , 미적분학 먼저 공부하라.
4. 공부하실 때는, 교수님께서 올려주신 사이트 http://matrix.skku.ac.kr/math4ai/ 읽으시면서 학습하시면 되는 것 같습니다.
궁금한 한 것도 여기 http://matrix.skku.ac.kr/math4ai/ 서 복사해서 QnA 에 가져오면서 ... ... "바로 여기 몇번째 줄에서 .. 다음 줄로 넘어가는 부분이 이해 안됩니다." 하고 물어보면 서로 쉽습니다.
다른 학생 질문에 대해 설명하실 때와 앞으로 무슨 내용을 배울 지 사이트에서 설명해주셨거든요.
김진웅(2015****73)7월 17일 오전 11:46
어떻게 들어가는 지 몰라 참석을 못하였는데, 정리 감사합니다!
20’[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기‘
[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기
Solved and Finalized by 유가이 올렉산드르
I. 선형변환 (Linear Transformations) 강의 요약 및 정리
1. 행렬변환 (matrix transformation), 선형변환 (linear transformation)
► 입력과 출력이 모두 벡터인 함수를 변환 (transformation)이라 한다 . R n 에서 R m 으로의 변환 T: R n => R m 에서 w = T(x)를 벡터 x 의 T 에 대한 이미지 (image), x 를 벡터 w 의 원상 (pre-image)이라 한다 .
● Additional definition: A transformation (or function or mapping) T from R n to R m is a rule that assigns to each vector x in R n a vector T(x) in R m . The set R n is called the domain of T , and R m is called the codomain of T . For x in R n , the vector T(x) in R m is called the image of x (under the action of T ). The set of all images T(x) is called the range of T .

Figure 1: Domain, codomain, and range of T : R n => R m [2]
► 변환의 특수한 경우로 , A 가 mxn 행렬이고 , T A (x) = Ax , x ∈ R n 인 T A : R n => R m 를 행렬변환 (matrix transformation)이라 한다 .
●Additional definition (Matrix multiplication case): For each x in R n , T(x) is computed as Ax , where A is an mxn matrix. For simplicity, we sometimes denote such a matrix transformation by x ↦Ax . Note that, the domain of T is R n where A has n columns and the codomain of T is R m when each column of A has m entries. The range of T is the set of all linear combinations of the columns of A , because each image T(x) is of the form Ax .
► R n 에서 R m 으로의 변환 T : R n => R m 가 임의의 벡터 u , v ∈ R n 와 임의의 스칼라 k 에 대하여 다음 두 조건을 만족하면 T 를 R n 에서 R m 으로의 선형변환 (linear transformation)이라고 한다 .
(1)T(u+v) = T(u) + T(v) for all u , v in the domain of T ;
(2)T(ku) = kT(u) (k ∈R) for all scalars c and all u in the domain of T .
Note: R n 에서 R n 자신으로의 선형변환 T: R n => R n 를 R n 위의 선형연산자 (linear operator)라고 한다 .
●Remarks:
If T is a linear transformation, then T(0) = 0 and T(cu+dv) = cT(u) + dT(v) for all vectors u , v in the domain of T and all scalars c , d .
Note that, if a transformation satisfies equation T(cu+dv) = cT(u) + dT(v) for all c , d , it must be linear. Repeated application of T(cu+dv) = cT(u) + dT(v) produces a useful generalization:
T(c 1 v 1 + … + c p v p ) = c 1 T(v 1 ) + … + c p T(v p )
In engineering and physics, above equation referred to as a superposition principle .
► Theorem 1: Let T : R n ↦R m be a linear transformation. Then there exists a unique matrix A such that
T(x) = Ax for all x in R n
Here, A is the mxn matrix whose jth columns is the vector T(e j ), where e j is the jth columns of the identity matrix R n :
A = [T(e 1 ) ∙∙∙ T(e n )]
The matrix A above is called the standard matrix(표준행렬 ) for the linear transformation T .
■
● Remark: The term linear transformation focuses on a property of a mapping, while matrix transformation describes how such a mapping is implemented.
2. 핵 (kernel), 단사 , 전사 , 전단사 , 동형사상 (isomorphism )

► Theorem 2.1: Let T: R n -> R m be a linear transformation. Then T is one-to-one if and only if the equation T(x) = 0 has only the trivial solution .
► Theorem 2.2: Let T: R n -> R m be a linear transformation, and let A be the standard matrix for T . Then:
a.T maps R n onto R m if and only if the columns of A span R m ;
b.T is one-to-one if and only if the columns of A are linearly independent.
► 선형변환이 단사일 필요충분조건
R n , R m 이 벡터공간이고 T: R n -> R m 가 선형변환일 때 , T 가 단사일 필요충분조건은 ker(T) = {0}이다 .
연습문제 1: In the following problem, with T defined by T(x) = Ax , find a vector x whose image under T is b , and determine whether x is unique.
![]()
Solution

연습문제 2: In the following problem, fill in the missing entries of the matrix, assuming that the equation holds for all values of the variables.
![]()
Solution
1. Very fast method:

2. Slower, but more clear method:


Compare both sides

So, the matrix A is
■.
Comment: I think this to be a fairly simple, but useful topic in linear algebra. I would especially like to note its application in the field of image manipulation in Image Processing. I tried to summarize this topic as I understood it, and also gave several examples of solving problems manually for a deeper understanding.
김진웅(2015****73)7월 23일 오후 5:04
연습문제 2에서 A를 미지수로 잡을 필요 없이, e1=(1,0,0), e2=(0,1,0), e3=(0,0,1)를 [3x1-2x3, 4x1, x1-x2+x3]에 각각 대입하여 나온, T(e1)=(3, 4, 0), T(e2)=(0, 0, -1), T(e3)=(-2, 0, 1)를 열로하는 A를 구해도 될 것 같습니다. (solution 1과 비슷하지만 식으로 정리해 보았습니다.) 좋은 summary와 문제 잘 보았습니다. 감사합니다
24’2주차 4-1, 4-2 요약정리 및 질문‘
질문
1. 소행렬식을 이용하여, 이차형식의 정부호를 결정하는 것이 고윳값을 계산하는 cost가 들지 않기 때문에 좋은 방법인 것인가요?
제가 생각하기에 특정 행렬에서는(크기가 무척이나 큰 행렬..?) 반복문을 통해 소행렬식의 여러 개의 det을 구하는 것보다는 그냥 고윳값을 한 번 계산하는게 cost가 적을 수 있다는 생각이 듭니다.
2. 다음과 같은 정리에서
저 소행렬식을 통한 양의 정부호, 음의 정부호가 아닌 경우는 무조건 부정부호 인 것인가요? (준정부호 제외)
장환승(2016****69)7월 26일 오후 7:25
2번 질문은 정확하게 말해서, 두 조건을 제외한 나머지 조건의 경우, 부정부호의 필요충분조건이 되는 것인가요? 당연한 소리같긴한데..
이상현(2020****98)7월 26일 오후 8:50
양의 정부호가 아닐경우 모든 고윳값이 양수가 아닌 경우가 되고 음의 정부호가 아닐경우 모든 고윳값이 음수가 아닌 경우가 되기 때문에 양수 및 음수 고윳값을 둘 다 가진 경우가 됩니다. 이는 부정부호 행렬이기 위한 필요충분조건이기에 무조건 부정부호가 맞습니다.
이상구(LEE SANGGU)7월 26일 오후 8:51
2번 질문은 정확하게 말해서, 양의 정부호 도 아니고, 음의 정부호 가 아니면 3. 그리고 양인 소행렬식도 있고, 음일 소행렬식도 섞여서 있으면 무조건 부정부호입니다. 4. 이제 남는 것 이어떤 선행소행렬식이 영 인 경우 가 섞여 있는 경우입니다. 이 경우 positive semidefinite, negative semidefinite 도 따로 고려 합니다. 1. 모두 양 은 positive definite = pd = 양의 정부호 2. 모두 음, 은 nd = 음의 정부호 3. 양 과 음 이 섞여 있는 경우, indefinite = 부정부호그리고 4. 양과 영 only , 는 positive semi definite = psd. 5. 음과 영 only 는 nsd. 6. 양과 음 그리고 영도 섞여 있는 경우도 부정부호 입니다. indefinite = 부정부호입니다.
김진웅(2015****73)7월 27일 오후 3:18
(양,음) 뿐만아니라 (양,음,영)도 indefinite이 됨을 배워갑니다.
이상구(LEE SANGGU)7월 28일 오후 12:06
Good^^
26’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승
SVD를 공부하면서 실제로 어떻게 활용될 수 있을지 고민하던 중에 진행해본 작업입니다.
저와 같은 궁금증을 품으셨던 분들에게 도움이 되기를 바랍니다 :)
주 참고자료 : darkpgmr.tistory.com/106 (특이값 분해의 활용)
들어가기에 앞서
특이값분해의 원리를 충분히 이해하시고 읽어주시면 감사하겠습니다. 김진웅 학우의 ‘2주차 SVD 정리’ 글이 도움이 될 것입니다. 😊
최소자승법 : ‘최소제곱법’이라고도 불리며 어떤 계의 해방정식을 근사적으로 구하는 방법으로, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법(위키백과)
최소자승법을 설명한 이유는 이번에 사용하려는 의사역행렬이 이와 유사한 개념으로 활용되기 때문입니다. 역행렬이 존재하지 않는 비가역행렬에 의사역행렬을 생성하여 비가역행렬 A에서 Ax = b의 해를 A의 의사역행렬 A +를 활용하여 x = A +b 형태로 계산하고 이 x가 llAx-bll를 최소화하게끔 만드는 식으로 활용합니다. (오차의 제곱의 합이 최소가 되는 해를 구하는 최소자승법의 개념을 응용한다는 뜻입니다 )
의사역행렬의 SVD 공식은 A + = VΣ+U T 이며 기존 SVD 공식에서 U와 V의 순서가 바뀌고 전치가 바뀌며, Σ에서 0이 아닌 고유값들의 역수를 취한 후 전치하여 nxm행렬로 만듭니다. 기존 SVD 공식이 A = U ΣV T 였던 것과 비교하며 확인하시기 바랍니다 .
(https://bskyvision.com/256 참고)
기반 데이터
통계청 해외직접투자 현황, 2002 ~ 2019년까지의 연도별 투자금액 데이터 (KOSIS)
(수식을 간단하게 만들기 위해 해당 데이터를 천만 달러 단위로 축약하여 사용)

투자금액 추이가 다음과 같은 모습을 보이고 있으므로 모델을 2차 포물선으로 만들기로 합니다.
모델
연도를 x, 투자 금액을 y로 하고서 y = ax 2 + bx + c 로 모델을 형성하고 이를 선형 연립방정식으로 재정리하면 아래와 같아집니다.
ax 1 2 + bx 1 + c = y 1
ax 2 2 + bx 2 + c = y 2
ax 3 2 + bx 3 + c = y 3
…
ax 18 2 + bx 18 + c = y 18

역행렬이 존재한다면 해당 점을 모두 지나는 포물선이 존재한다는 뜻인데 불가능한 일이므로 의사역행렬을 이용합니다. Python에서는 numpy 패키지의 pinv()함수를 이용하면 의사역행렬을 손쉽게 구할 수 있습니다. 하지만 SVD를 이용하여 이를 구해내는 과정을 경험하는 것이 목적이므로 직접 풀어보며 돌아가는 방법을 택하겠습니다.
코딩 (with Python)

먼저 필요한 패키지들을 import 한 뒤 앞서 설명한 행렬 A와 B를 생성합니다.
하단의 A.shape와 B.shape는 행렬의 mxn 형태를 보여주는 식입니다.


다음과 같이 알맞게 행렬 A와 B가 형성되었습니다.

그 이후에는 특이값 분해를 실행합니다. numpy.linalg 패키지의 svd 함수를 활용하여 간단하게 특이값 분해를 진행할 수 있습니다.


결과로 Sigma Value에 고유값이 3개 형성된 것을 볼 수 있습니다.

이제 의사역행렬을 만들어낼 차례입니다. 이를 위해서 앞서 설명한대로 s를 S_mat의 형태로 변형합니다.
Reciprocal()함수를 이용해 고유값들의 역수를 취한 re_s를 만들고 transpose()함수를 이용하여 이를 전치한 S를 만든 뒤, S를 대각행렬에 0을 붙인 형태인 S_mat으로 만듭니다.
이때 S_mat은 nxm 행렬이 된다는 것을 잊지맙시다.
(그림 출처 : https://darkpgmr.tistory.com/106 )
위와 같이 s가 S_mat으로 변형됩니다.
공식에 맞게 각 행렬들을 수정한 뒤에 의사역행렬 piA를 계산합니다.
만약 piA가 제대로 구해졌다면 A에서 piA의 전치를 뺀 행렬은 영행렬에 가까워져야 할 것입니다.

결과가 어느정도 0에 가깝게 나타난 것 같습니다. (사실 더 0에 가깝게 만들고 싶었지만 실패했습니다..)

이제 구해진 의사역행렬으로 해를 구해보겠습니다.
직접 손 코딩으로 구해본 의사역행렬이 numpy에서 제공하는 pinv()함수와 비교했을 때 얼마나 차이가 있는지 확인해봅시다.

완벽하게 동일한 결과가 만들어졌습니다! 원리를 이해했으니 앞으로는 pinv()함수를 사용하여 간편하게 계산하도록 합시다..!

이제 2020년의 금액을 추정해보고 이를 시각화하여 표현해봅시다
![]()
앞서 구한 값들을 a,b,c에 대입하여 구해진 2020년의 해외직접투자 금액은 56,237 천만 달러로 추정되었습니다.

전체 그래프로 확인했을 때 2006년부터 곡선을 중심으로 위아래로 변화하며 상승하는 모습을 보이는데 2020년에는 다시 하락세를 형성한다고 예측되었습니다.
아직 2020년이 다 끝나지않아서 실제로 맞아 떨어지는지는 알 수 없습니다만, 더 높은 정확도를 가지는 모델들을 활용하는 것이 좋아 보입니다.
마치며
지금까지 python을 활용하여 2020년 해외직접투자 금액을 추정하는 모델을 SVD와 의사역행렬을 이용하여 만들어보았습니다.
이번 주 초에 완성해서 올려보고 싶었으나 처음 배우고 행해보는 일이라 꽤나 많은 시간이 소모되었습니다.
또 타인의 눈에도 잘 진행된 시도였는지 모르겠네요.
다만 해당 과정에서 SVD와 의사역행렬에 대한 개념, 그리고 이를 활용하는 방법에 대하여 제대로 숙지할 수 있었던 것 같습니다.
여러분들도 기회가 된다면 직접 코딩해보며 개념을 익혀보시는걸 추천 드립니다 :)
(파이썬 원본 파일은 요청하시면 공유하도록 하겠습니다)
많은 분들이 좋은 반응을 보여주셔서 고생한 보람이 가득한 결과였습니다.
교수님께서 이번 기말고사 유형으로 만들어보자는 의견을 내주셨는데, 적극 찬성입니다!
이번 경험을 통해 실제로 배운 개념을 활용해보는 시도는 결과를 떠나 이를 익히고 기억하는데 큰 도움이 된다고 느꼇습니다.
기말고사 형식으로 추가된다면 저와 비슷한 시도를 해보려고 생각하던 학우분들께도 큰 동기부여와 기회가 만들어질 수 있을 것 같습니다.
무엇보다 재미있을 것 같습니다! 긍정적으로 고려해주시면 감사하겠습니다 :)
채희준 학우님께서 제 코드를 활용해보고 싶어하시는 듯 하여 원본 파이썬 파일을 첨부합니다.
SVD와 의사역행렬, 그리고 파이썬을 공부하시는데 도움이 되기를 바랍니다.
svd_pinv_amount_of_investment.py
#%%
import numpy as np
from numpy.linalg import svd
import matplotlib.pyplot as plt
# 행렬 A,B 생성
year = [2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,
2014,2015,2016,2017,2018,2019]
A = np.array([2002*2002,2002,1])
for years in year:
add = np.array([years*years,years,1])
A = np.vstack((A,add))
if years == 2019:
break
B = np.array([[4056],[4770],[6552],[7282],[11876],[22687],[24021],[20709],[24637],
[29082],[28540],[30192],[26998],[27180],[34986],[43696],[49781],[61847]])
print(A.shape,B.shape)
print(A)
print(B)
# %%
# 특이값 분해 실행, 여기서 s는 고유값 리스트
U, s, Vt = np.linalg.svd(A, full_matrices=True)
print(U.shape, s.shape, Vt.shape)
print('U matrix:\n',np.round(U, 3))
print('Sigma Value:\n',np.round(s, 3))
print('Vt transpose matrix:\n',np.round(Vt, 3))
# %%
# 의사역행렬을 piA를 구하기 위하여 s를 변형 (S_mat)
# 이때 변형된 s는 원래의 행렬에서 0이 아닌 고유값들의 역수를 취한 후 전치시킨 행렬
re_s = np.reciprocal(s)
S = np.transpose(re_s)
S_mat = np.diag(S)
for i in range(0,15,1) :
plus = np.array([[0],[0],[0]])
S_mat = np.hstack((S_mat,plus))
Ut = np.transpose(U)
V = np.transpose(Vt)
piA = np.dot(V,np.dot(S_mat,Ut))
# 만약 제대로 의사역행렬이 구해졌다면 행렬 A에 A의 의사역행렬 piA를 전치시킨 값을 뺏을때
# 0에 가까운 값들로 구성된 행렬이 나와야 함
print(A - np.transpose(piA))
# => 결과가 0에 가까운 것을 알 수 있음
# %%
# 의사역행렬을 통해 해를 구하기
X = np.dot(piA,B)
print(X)
piA_t = np.linalg.pinv(A)
X_t = np.dot(piA_t,B)
print(X_t)
# pinv 함수와 비교했을때 동일한 결과가 나오는 것을 확인할 수 있다.
# %%
# 시각화 표현, 여기서 2020년의 데이터는 예측치로 약 56,237(천만 달러)가 수치화되었다.
x = np.array([[2002],[2003],[2004],[2005],[2006],[2007],[2008],[2009],[2010],
[2011],[2012],[2013],[2014],[2015],[2016],[2017],[2018],[2019],[2020]])
forcast = 2020*2020*X[0]+X[1]*2020+X[2]
add_b = np.array([forcast])
y = np.vstack((B,add_b))
plt.figure(figsize=(15,5))
plt.plot(x,y,'o', label='투자 금액',markersize=10)
plt.ylabel('연도')
plt.xlim(2001,2021)
plt.ylim(0,80000)
plt.plot(x,X[0]*x*x+X[1]*x+X[2],'r')
plt.xticks([2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,
2014,2015,2016,2017,2018,2019,2020])
plt.title('Amount of investment to abroad', loc='center')
plt.legend
print(forcast)
# %%
김진웅(2015****73)7월 27일 오후 3:02
배웠던 수학 이론과 원리를 실제 데이터에 적용하는 과정을 잘 보았습니다.
다양한 데이터의 추세를 (1) 시험삼아 SVD를 이용하여 pseudo inverse를 만들어서 추정해 보고 (2) 패키지에서 제공하는 함수로 바로 pseudo inverse를 적용할 수 있음을 알게 되었습니다.
이에 (1) numpy.linarg.svd()로 svd를 구할 수 있음과 (2) numpy.linarg.pinv()로 pseudo inverse를 구할 수 있음을 알게 되었습니다.
응용 감사합니다.
32’[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습‘
[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습
Solved and Finalized by 유가이 올렉산드르
I. 최대값 최소값 (Maximum and Minimum Values) [1], [2], [3]
►Definition (Increasing and Decreasing Function): A function f is increasing over I if, for every a and b in I ,
If a <b , then f(a) <f(b).
(If the input a is less than the input b , then the output for a is less than the output for b .)
A function f is decreasing over I if, for every a and b in I ,
If a <b , then f(a) >f(b).
(If the input a is less than the input b , then the output for a is greater than the output for b .)
● Important remark:

► Theorem 1: If f ‘(x) >0 for all x in an open interval I , then f is increasing over I .
If f ‘(x) <0 for all x in an open interval I , then f is decreasing over I .
● Example:

► Definition (Critical Values): A critical value of a function f is any number c in the domain of f for which the tangent line at (c, f(c)) is horizontal or for which the derivative does not exist.
That is, c is a critical value if f(c) exists and
f ‘(c) = 0 or f ‘(c)does not exist .

Note the following:
1. f ‘(c) = 0 at x = c 1 , c 2 , c 4 , c 7 , and c 8 . That is, the tangent line to the graph is horizontal for these values.
2. f ‘(c) does not exist at x = c 3 , c 5 , and c 6 . The tangent line is vertical at c 3 , and there are corner points at both c 5 and c 6 .
► Intuitive Definition (최대값과 최소값 ):f(x)가 폐구간 [a, b]에서 연속이면 이 구간에서 f(x)가 최소값을 취하는 점 및 최소값을 취하는 점이 존재한다 .

따라서 , 1 차 도함수의 방정식의 근인 극값에서의 함수 값과 구간의 양 끝점에서의 함수값을 비교하여 , 최댓값과 최솟값을 쉽게 구할 수 있다 .
► General Definition: Let c be a number in the domain D of a function f . Then f(c) is the
* absolute maximum value of f on D if f(c) ≥ f(x) for all x in D .
* absolute minimum value of f on D if f(c) ≤ f(x) for all x in D .
Note that , an absolute maximum or minimum is sometimes called a global maximum or minimum . The maximum and minimum values of f are called extreme values of f .
► Definition: The number f(c) is a
* local maximum values of f if f(c) ≥ f(x) when x is near c .
* local minimum value of f if f(c) ≤ f(x) when x is near c .
Note that , in this definition, if we say that something is true near c , we mean that it is true on some open interval containing c .

Figure: Absolute minimum f(a), absolute maximum f(d), local minimum f(c), f(e), local maximum f(b), f(d)
► Theorem 2 (The Extreme Value Theorem): If f is continuous on a closed interval [a, b], then f attains an absolute maximum value f(c) and an absolute minimum value f(d) at some numbers c and d in [a, b].
► Theorem 3 (Fermat’s Theorem): If f has a local maximum at c , and if f ‘(c) exists, then f ‘(c) = 0 .
► The Closed Interval Method: To find absolute maximum and minimum values of a continuous function f on a closed interval [a, b]:
1. Find the values of f at the critical numbers of f in (a, b).
2. Find the values of f at the endpoints of the interval.
3. The largest of the values from Steps 1 and 2 is the absolute maximum value; the smallest of these is the absolute minimum value.
► 연습문제 1: Find the absolute maximum and absolute minimum values of f on the given interval.
f(x) = 3x 4 – 4x 3 – 12x 2 + 1, [-2, 3]
Solution
In this problem, I want to show you how to use the Closed Interval Method to find the absolute maximum and minimum values of function.
Since f is continuous on [-2, 3], use the close interval method.
f(x) = 3x 4 – 4x 3 – 12x 2 + 1
f ‘(x) = 12x 3 – 12x 2 – 24x = 12x(x 2 – x - 2) = 12x(x - 2)(x + 1)
Therefore, f ‘(x) = 0 if 12x(x - 2)(x + 1) = 0 , that is x = -1 , x = 0 , or x = 2 .
Hence, the critical numbers of the function are -1 ;0 ; -2 and it lies in the interval [-2, 3].
The value of f at the critical numbers are,
f(-1) = 3(-1)4 – 4(-1)3 – 12(-1)2 + 1 = -4 ;
f(0) = 3(0)4 – 4(0)3 – 12(0)2 + 1 = 1 ;
f(2) = 3(2)4 – 4(2)3 – 12(2)2 + 1 = -31 .
The value of f at the endpoints of the interval are,
f(-2) = 3(-2)4 – 4(-2)3 – 12(-2)2 + 1 = 33 ;
f(3) = 3(3)4 – 4(3)3 – 12(3)2 + 1 = 28 .
Compare these values, the absolute maximum value is f(-2) = 33 and the absolute minimum value is f(2) = -31 .
Verification using SAGE + Graph plotting:
Code:
var('x')
f(x) = 3*x^4 - 4*x^3 - 12*x^2 + 1
P = plot(f(x), x, -4, 4, linestyle = "-", color = 'green')
show(P, ymax = 35, ymin = -35)
S = solve(diff(f(x)) == 0, x) # find the critical numbers
print('Critical numbers of function', S)
maximum = max(f(-1), f(0), f(2), f(-2), f(3)) # find maximum value
minimum = min(f(-1), f(0), f(2), f(-2), f(3)) # find minimum value
print('Absolute maximum value: ')
print(maximum)
print('Absolute minimum value:')
print(minimum)
Output:
. ■
II. 뉴턴-랩슨법 [1], [3], [4], [5], [6], [7]
► Definition (Newton’s method): 비선형방정식의 근을 결정할 때 자주 사용하는 방법 중 하나이다 . 개발자인 뉴턴 (Newton)과 랩슨 (Raphson)의 이름을 합쳐서 뉴턴 -랩슨법이라고도 한다 .

► Additional definition: The Newton-Raphson method (also known as Newton’s method) is a way to quickly find a good approximation for the root of real-valued function f(x) = 0 . It is uses the idea that a continuous and differentiable function can be approximated by a straight line tangent to it.
Unlike the bisection and false position methods, the Newton-Raphson (N-R) technique requires only one initial value x 0 , which we will refer to as the initial guess for the root . To see how the N-R method works, we can rewrite the function f(x) using a Taylor series expansion in (x-x 0 ):
f(x) = f(x 0 ) + f'(x 0 )(x-x 0 ) + 1/2 f''(x 0 )(x-x 0 )2 + ... = 0
where f'(x) denotes the first derivative of f(x) with respect to x , f''(x) is the second derivative, and so forth. Now, suppose the initial guess is pretty close to the real root. Then (x-x 0 ) is small, and only the first few terms in the series are important to get an accurate estimate of the true root, given x 0 . By truncating the series at the second term (linear in x ), we obtain the N-R iteration formula for getting a better estimate of the true root:

Thus the N-R method finds the tangent to the function f(x) at x=x 0 and extrapolates it to intersect the x axis to get x 1 . This point of intersection is taken as the new approximation to the root and the procedure is repeated until convergence is obtained whenever possible. Mathematically, given the value of x = x i at the end of the i th iteration, we obtain x i +1 as

● Remark: Note that, x 0 should be closer to the root you need than to any other root (if the function has multiple roots).
► Geometrical Representation: Here is a picture to demonstrate what Newton’s method actually does:

We draw a tangent line to the graph of f(x) at the point x = x n . This line has slope f'(x n ) and goes through the point (x n , f(x n )). Therefore it has the equation y = f'(x n )(x−x n )+f(x n ). Now, we find the root of this tangent line by setting y = 0 and x = x n+1 for our new approximation. Solving this equation gives us our new approximation, which is x n+1 = x n – f(x n ) / f'(x n ).
● Remark: 예를 들면 , 이분법은 함수 f(x)값만 알아도 되지만 , 뉴턴법은 함수 f(x)와 더불어 함수 f(x)의 1 차 도함수 f'(x)값도 반드시 알아야 하는 단점이 있다 . 그러므로 뉴턴법을 사용할 때는 반드시 근사시키는 함수 f(x)가 미분 가능한지를 먼저 확인해야 한다 .
♦ 근 찾기 방법 비교
► 근의 찾기 기본 방법에 대한 간략한 정의 :
(1) 이분법 :구간의 중앙값을 이용하여 함수의 근을 찾는 방법이다 .
● 이분법 공식
초기 구간 [a 1 , b 1 ]
연속 구간 [a i , b i ]
중앙값 c i = (a i + b i ) / 2
절대 오차 |α - c n | ≤ (1 / 2)n (b 1 – a 1 )
(2) 뉴턴법 /뉴턴 -랩슨법 :초기 근삿값 한 개를 이용하여 미분 가능한 연속 함수 f(x)와 함수의 1 차 도함수 f'(x)를 이용하여 함수의 근을 찾는 방법이다 .
● 뉴턴법 공식
x n+1 = x n – ( f(x n ) / f'(x n ) ) [n = 0, 1, 2, ···]
(3) 할선법 :뉴턴법을 기초로 이용하지만 뉴턴법과 다르게 1 차 도함수 f'(x)의 평가가 필요 없는 함수의 근을 찾는 방법이다 .
● 한선법 공식
x n+1 = x n – f(x n )·( (x n – x n-1 ) / (f(x n ) – f(x n-1 )) ) [n = 1, 2, 3, ···]
(4) 가위치법 :구간의 폭을 연속적으로 좁히면서 정확한 근을 구하지 않고 구간의 끝점들을 직선으로 연결하고 직선의 절편의 위치를 결정하여 함수의 근을 찾는 방법이다 .
● 가위치법 공식
m n = ( (f(b n ) – f(a n )) / (b n - a n ) ) [n = 0, 1, 2, ···]
x n = a n – ( (f(a n )) / (m n ) ) [n = 0, 1, 2, ···]
► 근 찾기 방법 비교하기
수치해석에서 이분법 , 뉴턴법 /뉴턴 -랩슨법 , 할선법 , 가위치법을 이용하면 함수의 실제 근 찾기가 가능하다 . 이 방법들은 반복 실행을 통해 점검 실제 근에 수렴하는 근삿값을 추정한 후에 함수 f(x)와 이전의 추정된 값을 토대로 이후의 값을 계산한다 .
● 이분법 :근삿값 두 개의 중앙값을 이용한 반복 수행으로 비교적 느린 속도로 실제 근에 수렴한다 . 이분법은 뉴턴법보다 실제 근에 수렴하는 속도는 느리지만 항상 수렴한다 . 반면에 뉴턴법은 근 찾기 방법 중에서 수렴 속도가 가장 빠르지만 종종 수렴에 도달하지 않는 경우도 있다 .
● 뉴턴법 /뉴턴 -랩슨법 :근 찾기에 매우 강력한 기술로 초기 근삿값 한 개만 필요로 한다 . 처음 추정하는 근삿값이 실제 근에 매우 근접하게 선택되는 경우에는 가장 빠르게 실제 근에 수렴되는 방법이다 . 반면에 실제 근에서 너무 멀리 떨어진 근삿값에서 시작하면 수렴하지 않을 수 있다 . 뉴턴법은 할선법보다 적은 반복으로 근을 찾으므로 수렴 속도가 빠르다 . 그러나 반복 실행으로 찾는 근삿값에서 함수 f(x )와 1 차 도함수 f'(x)의 더 복잡한 계산을 필요로 하기에 근 찾기에 더 많은 시간을 소모하는 단점이 있다 .
● 할선법 :뉴턴법과 거의 비슷하게 사용하는 근 찾기 방법이다 . 할선법은 초기 근삿값 두 개가 필요하지만 반복되는 각각의 근삿값에서 함수 f'(x)만 계산하면 된다 . 할선법은 이분법과 가위치법보다 더 좋은 근사치를 얻지만 실제 근에 완전하게 수렴하지 않는 단점이 있다 .
● 가위치법 :이분법과 할선법을 결합시킨 방법이다 . 할선법의 반복 (recurrence) 공식은 뉴턴법의 공식에서 유도할 수 있다 . 이분법과 다르게 뉴턴법 혹은 할선법은 주어진 구간에 대한 구간법 이용이 불확실하다 . 가위치법은 할선법과 동일한 방법으로 근삿값을 추정하지만 반복할 때마다 구간법을 이용한다 . 가위치법은 이분법보다 신속하게 근을 찾을 수 있지만 , 이분법보다 계산이 복잡하다 . 가위치법은 끝점 두 개가 필요하고 항상 실제 근에 수렴한다 .
► Remark:위의 모든 내용을 쉽게 이해하려면 다음 표를 참조하십시오 .
|
방법 |
필요한 초깃값 |
수렴 여부 |
수렴 속도 |
필요한 함수 |
|
이분법 |
2 |
항상 수렴 |
느림 |
f(x) |
|
뉴턴법 |
1 |
대개의 경우 수렴 |
가장 빠름 |
f(x), f'(x) |
|
할선법 |
2 |
대개의 경우 수렴 |
빠름 |
f(x) |
|
가위치법 |
2(끝점 ) |
항상 수렴 |
적당히 빠름 |
f(x) |
연습문제 2: 다음 비선형방정식이 구간 [0, 1]에서 양의 근이 하나 존재한다 . 뉴턴법을 이용하여 반복해서 나타나는 근들을 계산하라 .
f(x) = x 3 + 2x 2 – 1
Solution
함수 f(x)의 1 차 도함수는 f'(x) = 3x 2 + 4x 이다 . 추정하는 초깃값 x 0 는 주어진 중앙값 0.5 로 정하자 . 뉴턴 -랩슨법 공식과 x 0 를 이용하면 순서대로 추정하려는 근 x 1 , x 2 , ···를 계산할 수 있다 . 뉴턴 -랩슨법의 반복 계산은 다음과 같이 실행한다 .
x n+1 = x n – ( (x n 3 + 2x n 2 - 1) / (3x n 2 + 4x n ) ) [n ≥ 0]
위의 식에 n = 0 을 대입하면 다음과 같다 .
x 1 = x 0 – ( (x 0 3 + 2x 0 2 - 1) / (3x 0 2 + 4x 0 ) ) = 0.5 – ( ((0.5)3 + 2(0.5)2 - 1) / (3(0.5)2 + 4(0.5)) ) = 0.6363636364
계속해서 n = 1 , n = 2 , n = 3 을 순서대로 대입하면 다음과 같은 추정하려는 각각의 근을 구할 수 있다 .
x 2 = x 1 – ( (x 1 3 + 2x 1 2 - 1) / (3x 1 2 + 4x 1 ) ) = 0.6363636364 – ( ((0.6363636364)3 + 2(0.6363636364)2 - 1) / (3(0.6363636364)2 + 4(0.6363636364)) ) = 0.6183816184
x 3 = x 2 – ( (x 2 3 + 2x 2 2 - 1) / (3x 2 2 + 4x 2 ) ) = 0.61838162 – ( ((0.6183816184)3 + 2(0.6183816184)2 - 1) / (3(0.6183816184)2 + 4(0.6183816184)) ) = 0.6180341174
x 4 = x 3 – ( (x 3 3 + 2x 3 2 - 1) / (3x 3 2 + 4x 3 ) ) = 0.6180341174 – ( ((0.6180341174)3 + 2(0.6180341174)2 - 1) / (3(0.6180341174)2 + 4(0.6180341174)) ) = 0.6180339888
실제 근 α = 0.6180339889 와 추정한 결과를 비교해보니 x 4 값이 실제 근과 일치한다 .
Verification using SAGE:
Code:
#Use a loop to compute iterations of Newton-Raphson's Method
#Use a loop to compute iterations of Newton-Raphson's Method
x = var('x')
f(x) = x^3 + 2*x^2 – 1
fp = diff(f,x)
NewtonIteration(x) = x - (f/fp)(x)
xn = 0.5;
print('x0 =', xn);
for i in range(10):
xn = N(NewtonIteration(xn),digits=10);
print('x', i+1, '=', xn);
print("This is the exact answer for comparison: ")
print(solve(f(x)==0, x))
print("Note that, we have been trying to estimate the postive root, which is 1/2*sqrt(5) - 1/2 ≈ 0.6180339889")
Output:

● Remark: for easier understanding, I gave the code without using a loop (the results are the same), but the code with a loop is preferable .
x = var('x')
f(x) = x^3 + 2*x^2 - 1
fp = diff(f,x)
NewtonIteration(x) = x - (f/fp)(x)
x0 = 0.5
print(x0)
x1 = N(NewtonIteration(x0))
print(x1)
x2 = N(NewtonIteration(x1))
print(x2)
x3 = N(NewtonIteration(x2))
print(x3)
x4 = N(NewtonIteration(x3))
print(x4)
Additional verification using Sage Grapher for Newton's Method:
. ■
Comment: “Newton's method for solving equations is significant because it is often one of the fastest converging methods. In particular, if the function is convex near a root and at the initial value, x 0 , f(x 0 ) >0, then it converges. Applying it to the derivative of a function, it can be used for optimisation. Furthermore, using matrices, Newton's method generalises to solving simultaneous equations and optimising functions of more than one variable.” I also want to add to the above that the Newton-Raphson Method is often used in Medical Engineering, for example, when creating a knee joint prosthesis in the most suitable shape for a patient.
참고문헌 :
[1]이상구 , 이재화 ., (2019), “인공지능을 위한 기초수학”, BigBook, pp. 156~158
[2]James Stewart., (2016), “Calculus – Early Transcendentals”, Cengage Learning, pp. 276~291; 345~348
[3]Sang-Gu Lee., (N/D), “SKKU Calculus (미적분학 )”, SKKU Matrix Lab.,
URL: (Application of Differentiation) http://matrix.skku.ac.kr/Cal-Book1/Ch4/
[4]Mark D. Smith., (1998), “Newton-Raphson Technique”, MIT,
URL: http://www.mit.edu/course/10/10.001/Web/Course_Notes/NLAE/node6.html
[5]Ariel Gershon, Edwin Yung, and Jimin Khim., (2020), “Newton Raphson Method”, BRILLIANT,
URL: https://brilliant.org/wiki/newton-raphson-method/
[6]방성완 ., (2018), “MATLAB 으로 배우는 공학 수치해석 /Numerical Analysis with MATLAB”, 한빛아카데미 , pp.292~294
[7]Terry Moore., (2016), “Calculus: What is the significance of Newton’s Method?”, Quora,
URL: https://www.quora.com/Calculus-What-is-the-significance-of-Newtons-Method
이상구(LEE SANGGU)8월 1일 오전 4:10
아주 자세한 ... 잘 정리된 요약 입니다^^ Good.
김진웅(2015****73)8월 1일 오후 2:19
방정식의 근을 찾는 방법으로 뉴턴법 뿐만이 아니라 이분법, 할선법, 가위치법이 있고 그것들의 장단점을 알 수 있었습니다.
요약 감사합니다.
35’[Final] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python) 댓글 by 이상구 교수님, 김범준, 김진웅‘
사전 지식
Hessian Matrix (헤시안 행렬)
헤시안 행렬은 변수가 2개 이상인 다변수 함수의 임계점의 극대, 극소, 안장점 등을 판정하기 위해 사용되는 행렬로
어떠한 함수 f(x)의 2계 도함수 들을 이용하여 이계도 함수 를 행렬을 만든 로 표현한 것입니다.
따라서 x1,x2,x3...xn 를 모두 변수 로 갖는
다변수 함수 f(x) 의 헤시안 행렬은 다음과 같습니다.

보시다시피 각각의 행과 열 번호를 갖는 변수로 2차 미분한 것을 모아놓은 형태입니다.
그런데 우리가 알아볼 헤시안 행렬의 활용법을 이해하기 위해서는 헤시안 행렬로의 변형이 기하학적으로 어떤 의미를 가지는지 알아야합니다.
헤시안 행렬의 기하학적 의미
앞서 설명하였듯이 헤시안 행렬은 임계점의 극대, 극소, 안장점 등을 판정하는데 사용됩니다.
이는 즉 헤시안 행렬이 특정 함수의 특정 위치가 위 또는 아래로 볼록한지, 안장점 형태를 지니는지를 나타낸다는 뜻입니다.
따라서 헤시안 행렬의 고유값들이 어떠한 형태를 취하느냐에 따라 서로 다른 그래프를 그리게 됩니다.

(출처 : https://dsp.stackexchange.com/questions/1714/best-way-of-segmenting-veins-in-leaves)
보시다시피 헤시안 행렬의 고유값에 따라 나타나는 그래프의 형태는 다양합니다.
여기서 헤시안 행렬의 고유벡터는 변환 방향을, 고유값은 그 정도를 나타냅니다.(선형변환처럼 이해하면 됩니다)
따라서 헤시안 행렬을 통해서 가장 주요하게 휜 부분이 어디인지 알아낼 수 있는 것이죠.
그렇다면 이와같은 특성을 지니는 헤시안 행렬은 어떻게 활용될 수 있을까요?
Frangi Filter : Vessel Detection (혈관 검출)
실제로 의학계에서는 헤시안 행렬을 이용한 이미지 조작 방법인 Frangi filter를 활용하여 혈관 검출 사진을 만들고 있습니다.
Frangi Filter는 헤시안 고유 벡터와 고유값을 사용하여 이미지 내에 각 영역의 유사성을 계산하고 이를 표현하는 이미지 변환 기법입니다.
앞서 설명한대로 헤시안 행렬은 해당 영역이 얼마나, 어떻게 휘어서 어떠한 모습을 취하는지 나타내고 있기 때문에
아래처럼 특정 패턴에 따라 이를 정의내릴 수 있습니다.

![]()
(출처 : Multiscale vessel enhancement filtering(1998), Alejandro F. Frangi, http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.110.7722&rep=rep1&type=pdf)
이러한 유사도를 기준으로 이미지를 다시 만들어내면 아래와 같이 혈관을 부각시킨 사진을 만들어낼 수 있습니다.
보다 자세한 원리는 https://www.youtube.com/watch?v=GMFwBLfq7FU동영상이 굉장히 잘 설명하고 있으니 참고하시기 바랍니다.

실습 (With Python)
그럼 지금부터 Python을 활용하여 실제 망막 혈관을 촬영한 사진을 변형해봅시다.

우선 사용할 모듈을 불러옵니다. frangi 필터는 skimage.filters 패키지에 속해있습니다.
PIL은 이미지 파일을 로드하는 패키지로 해당 패키지 외에도 openCV 등을 활용하는 다양한 방법이 존재합니다.
불러온 모듈을 통해 이미지 파일을 행렬로 변환합니다. 각 요소들은 픽셀(x,y)에 명암을 값으로 가집니다.
따라서 사진을 Gray Scale로 변환해야 합니다.
만약 컬러 이미지를 그대로 사용하면 명암이 아닌 RGB 값들을 표현하는 행렬로 변하게 되어 frangi()함수를 사용할 수 없게 됩니다.

Frangi filter를 사용해보기 전에 먼저 핵심 원리인 헤시안 행렬의 고유값으로만 이미지를 변형해봅시다.
각주로 적어두었듯이 hessian_matrix()는 이미지 변환에 대한 깊은 이해도를 요구합니다..
궁금해하실 분들을 위해서 참고자료를 붙여두겠습니다. (https://patents.google.com/patent/KR20160109049A/ko%EF%BB%BF)
각 함수에 대한 python 내장 및 kite 영어 원문 설명은 아래와 같습니다.
hessian_matrix()
which is computed by convolving the image with the second derivatives of the Gaussian kernel in the respective x- and y-directions.
sigma : Standard deviation used for the Gaussian kernel, which is used as weighting function for the auto-correlation matrix.
hessian_matriix_eigvals()
Compute Eigenvalues of Hessian matrix.
Return : The eigenvalues of the Hessian matrix, in decreasing order. The eigenvalues are the leading dimension.
That is, eigs[i,j,k] contains the ith-largest eigenvalue at position(j,k)

결과를 보아하니 확실히 헤시안 행렬의 고유값으로만 표현해도 어느정도 시혈관이 두드러져 보입니다.
2번쨰 plot과 3번째 plot은 고유값의 크기에 따른 결과 차이를 보여줍니다.
이로써 헤시안 행렬의 고유값을 바탕으로 혈관을 부각시킬 수 있음을 확인하였습니다.
그렇다면 이번에는 본래 목적이었던 frangi filter를 적용해봅시다.

frangi() 함수의 alpha, beta, gamma 값은 굉장히 중요한 역할을 합니다.
실제로 이를 잘못 적용하면 찾아내야하는 혈관의 모양을 잡아내지 못해 아예 검은 화면이 나와버리는 경우도 발생합니다.
기본적인 default 값으로 설정이 되어 있지만 이번 예시에서는 더 좋은 결과를 위해 beta값과 gamma값을 수정하여 적용하였습니다.

확실히 원본 사진에서는 잘 보이지 않던 미세한 혈관까지 쉽게 확인할 수 있습니다.
굉장히 쓸모있는 기술이라는 생각이 드네요.
실제로 이러한 분별 기술을 강화하기 위해서 frangi filter와 다른 필터를 조합하거나(https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8819923)
딥러닝 기법을 활용하는 방식(http://kiss.kstudy.com/thesis/thesis-view.asp?key=3614484)들이 많이 연구되고 있습니다.
의학에서도 깊게 활용되고 있는걸 보니 수학의 적용범위는 무궁무진하다는 생각이 듭니다.
마치며
지금까지 Hessian 행렬이 실제로 어떻게 활용되고 있는지를 Frangi filter를 통하여 알아보았습니다.
어려운 개념도 기하학적인 해석을 포함하여 공부하면 조금 더 친숙하게 다가오는 것 같습니다. (특히 행렬과 관련된 부분에서!)
이번 실습도 여러분들의 궁금증과 개념 이해 및 기억하기에 도움이 되었기를 바랍니다.
(파이썬 원본 파일을 첨부하였으니 필요시에 활용하세요 :) frangi_filter_hessian.py )
참고문헌
https://angeloyeo.github.io/2020/06/17/Hessian.html(헤세 행렬의 기하학적 의미)
https://stackoverflow.com/questions/22378360/hessian-matrix-of-the-image(이미지의 헤시안 행렬)
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.110.7722&rep=rep1&type=pdf (Multiscale vessel enhancement filtering, Alejandro F. Frangi)
https://www.youtube.com/watch?v=GMFwBLfq7FU (kixcodes Explains Image processing - Frangi filter)
suwonseye.co.kr/disease/page02.html (에스안과, 정상안저 이미지)
https://patents.google.com/patent/KR20160109049A/ko%EF%BB%BF (고차 라플라시안 오브 가우시안 커널을 이용한 이미지의 특징점 추출 장치 및 방법)



--------------------------------------------------------------------------------------------
느낀점
교수님께서 공유해주신 회의 내용을 읽어보니 부정맥이나 저혈압을 예측하는 등 연구를 통해 개발될 수 있는 요소가 많아 보입니다.
더 열심히 공부해서 사회의 도움이 될 수 있는 무언가를 만들고싶다는 의욕이 생겨나네요 :)
다른 분들께도 새로운 지식을 알려드릴 수 있어 보람찼습니다.
앞으로도 수업에서 배운 내용을 토대로 다양한 시도를 하고 공유하도록 하겠습니다!
46’[2주차] 고유값 분해를 이용한 피보나치수 일반항 유도‘
2주차 내용을 정리하던 차에 흥미로운 주제를 발견하여 공유해드립니다.
필요 개념 정리
먼저 수업에서 다음 내용을 숙지해야합니다
1. 고유벡터, 고유값
![]()
: 일차변환을 했을 때 그 방향이 유지되고, 원래 벡터의 실수배가 되는 특수한 벡터를 고유벡터라고 하며, 그 실수배를 고유값이라고 합니다.
-> 선형연립 미분방정식을 풀기 위해 도입된 개념입니다.(람다 값 기준으로 ..)...
-> 고유값 분해는 A의 고유값과 고유벡터의 성질을 이용하여 k번 거듭제곱할 때 유용한 틀입니다.
피보나치 수열..
피보나치 수열은 0과 1로 시작하며, 그 이후에 오는 피보나치 수는 직전 두수의 합이 되는 특수한 수입니다.
시간이나 순서에 따라 특정 규칙으로 값이 변하는 수열은 계차방정식으로 표현할 수 있고, 대각화를 통해서 고유값과 고유벡터들의 조합으로 표현할 수 있습니다.
이를 통해서 특정 인덱스 값을 추론할 수 있고, 고유값을 통해 증가 폭을 가늠해볼 수 있습니다.
하나의 선형 시스템으로 만들기 위해 k+1에 대한 방정식을 추가로 만들고 해를 구하기 위한 해 벡터 상태로 표현했습니다.

이런식으로 피보나치 수열을 1차 선형 시스템으로 바꿔주었고, 이 시스템을 풀기 위해서는 고유값 을 구해야합니다.
구해진 2개의 고유값(람다)이 서로 다르기 때문에 A는 2개의 독립인 고유벡터가 존재하며, 대각화가 가능 합니다.

현재까지 만들어진 형태로 100번째 피보나치 수를 구해보면, 위와 같이 고유값과 고유벡터들의 선형결합으로 나타낼 수 있습니다.
이제 x1과 x2값을 알기 위해 고유벡터 를 구해보겠습니다.


이때, 고유벡터는 가우스 소거법을 이용하여 구할 수도 있으나, 여기서는 A에 고유값을 뺀 행렬이 특이 행렬이고, 벡터 x를 곱했을 때 0이 나온다는 사실로
미루어 보아 x = [ λ 1]T 임을 유추할 수 있습니다. 따라서 마지막으로 c1과 c2를 구하면 됩니다.


c1과 c2는 초기값을 구하는 계차방정식을 만들고 이를 고유값과 고유벡터로 분해하여 가우스 소거법을 이용하여 구했습니다.
이를 종합하면, 다음과 같은 피보나치 수의 일반항을 구할 수 있습니다.

참고
-http://judis.me/wordpress/2015/10/18/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-note-22-diagonalization-and-powers-of-a/
김진웅(2015****73)8월 5일 오후 3:51
고유값 분해로 피보나치 수열의 일반항을 구하는 과정을 알게 되었습니다.
정리 감사합니다.
이상구(LEE SANGGU)8월 5일 오후 5:01
Good^^
박은아(2016****73)8월 6일 오후 12:43
수열의 일반항을 고유값 분해를 이용해서도 구할 수 있군요! 새로 접해보는 내용이라 흥미롭게 읽었습니다. 감사합니다.
48’[Final OK by SGLee] Finalized by 김범준 [HW-5주차(자료공유)] 평균의 함정 사례by김범준 comment 및 추가의견 by 나종진학우님, 박정호학우님, 김진웅학우님, 이상구교수님‘
[Final OK by SGLee] Finalized by 김범준 [HW-5주차(자료공유)] 평균의 함정 사례by김범준 comment 및 추가의견 by 나종진학우님, 박정호학우님, 김진웅학우님, 이상구교수님
다른학우분들께서 하신 이번주차 강의요약이 제가 더 첨가할 만한 내용이 없어보여 저는 통계학과 관련한 이야기를 위주로 타 학우분들의 수학적 이해를 높이고자 합니다.
1. 노스캐롤라이나 대학교와 마이클조던
노스캐롤라이나 대학교에서 1985년 졸업생들의 과별로 평균초봉을 계산한적이 있었다. 이때 경영이나 법학 공학등 고소득을 받을것이라고 예측되는 다른학과들 보다 평균소득이 높은 학과 가 있었다. 지리학과가 예상을 벗어나 가장 높은 평균초봉을 기록하였는데 그 이유는 마이클조던이 지리학과의 졸업생이었기 때문이다.
한 쪽으로 표본의 꼬리가 길때 평균과 중의값의 관계는 흔히 아래와 같이 나타난다. 즉 마이클 조던의 소득이 중의값보다 평균을 지나치게 올려놓은 셈이다.

2. 정몽준과 국회의원 평균재산
이미지 출처:https://pabii.co.kr/52339/
국회의원 정수를 300명이라 가정하면, 정몽준 전 의원 혼자서 국회의원 평균재산을약 68억원이나 올린 셈이다.국회 공직자윤리위원회의 자료에 따르면 19대 국회의원 299명의 평균재산은 95억6천만원인데, 2조원이 넘는 재산을 지닌 정몽준 의원을 포함한 500억원 이상의 국회의원 4명을 제외하면 평균재산이 18억3천만원으로 줄어든다.
출처:https://analyticsstory.com/82[Analytics Story]
또한 이 외에도 대한민국상장기업 1,059곳 전체의 시가총액의 평균은 1조 천억원 규모이다. 여기서 삼성전자와 현대자동차 단 두 곳의 시가총액을 제외하면 평균은 8,700억원 규모로 약 21%가 하락하게 됩니다. 이렇듯이상치(outlier)가 존재하는 경우 평균은 대표성을 띄기 어렵다.
실제로 이러한 문제 때문에 사회과학에서의 소득조사의 경우 중의값을 통해 왜곡을 최소화 하거나, 이상치를 제외한 평균을 사용하기도 한다.
나종진(2017****17)8월 13일 오후 5:14
좋은 정보 감사합니다.
박정호(2014****10)8월 13일 오후 5:41
감사합니다
김진웅(2015****73)8월 13일 오후 5:54
outlier가 실생활에서 어떻게 나타나는지, outlier에 의해 평균값의 대표성이 얼마나 왜곡되는지 그 예시를 잘 보았습니다.공유 감사합니다.
그리고 이상구교수님께서 흥미로운 이야기를 추가해주셔서 아래에 옮깁니다.
이상구(LEE SANGGU)8월 13일 오후 6:19
마이클 조던도 수학도였다https://m.blog.naver.com/PostView.nhn?blogId=oryounga&logNo=120043466384&proxyReferer=https:%2F%2Fwww.google.com%2F2007. 10. 15. 11:59[황선욱 교수의 재미있는 수학에세이]어느 학문 분야를 공부하든 이후에 자신의 전공과 다른 일을 하게 되는 경우가 흔히 있게 마련이다.수학도 예외가 아니다. ‘이상한 나라의 앨리스’를 쓴 루이스 캐럴은 옥스퍼드대학의 수학 교수였다. 그는 본명 ‘Charles Lutwidge Dodgson’을 라틴어로 고쳐 쓴 ‘Carolus Lodovicus’를 다시 영어로 바꿔서 ‘Lewis Carroll’이라고 필명을 지었다. 또 구소련 체제를 비판한 ‘수용소 군도’로 노벨문학상을 수상한 솔제니친은 구소련의 로스토프대학에서 수학과 물리학을 전공했다.가수 가펑클·영화감독 버호벤등 유명인 수두룩1960~70년대를 풍미했던 듀엣 ‘사이먼과 가펑클’의 멤버인 가펑클은 가수 활동을 하면서도 1967년에 미국 컬럼비아대학에서 수학 석사학위를 받았다. 두 사람은 1953년 초등학생 때 ‘이상한 나라의 앨리스’ 연극에 함께 참여하면서 알게 되었다.1960년대에 미국에서 활약했던 작곡가이자 풍자 작가인 톰 레러(Tom Lehrer)는 18살 때인 1947년에 하버드대학을 최우등으로 졸업하고 이듬해에 석사학위를 받은 뒤 하버드와 MIT에서 수학을 가르쳤다. 후에 하버드대학 수학과 박사과정에 입학했으나 음악을 하기 위해 학업을 중단했다, 나중에 박사과정에 재입학했으나 학위를 받지는 못했다. 그 뒤 미국 캘리포니아대학(산타크루스)에서 교양 수학과 공연 음악을 가르쳤다. 영화 ‘토탈 리콜’, ‘로보캅’ 등을 감독한 폴 버호벤은 네덜란드의 라이든대학에서 수학 박사학위를 받았지만, 영화 일에 전념하기 위해 수학과 관련한 일을 하지 않았다.정치인 중에서 살펴보면, 알베르토 후지모리 전 페루 대통령이 미국 위스콘신대학(밀워키)에서 수학으로 석사학위를 받았으며, 싱가포르의 리센룽(李顯龍) 수상은 영국 케임브리지대학 수학과를 우등으로 졸업했다. 프랑스의 유명한 수학상을 여러 차례 수상한 수학 박사인 팽르베(Painleve, Paul)는 1906년부터 두 차례 프랑스 수상을 지냈다. 그는 1908년 라이트 형제가 조종한 비행기의 첫 탑승객 중 한 사람이었다. 뉴욕 시장을 지냈던 딘킨스(Dinkins D. N.)는 하워드대학에서 수학을 전공했다.우크라이나 태생의 볼셰비키 혁명가인 트로츠키는 오데사대학에서 수학을 전공했다. 아일랜드 공화국의 대통령을 두 차례 지냈던 발레라(de Valera)는 공화국이 독립하기 전에는 수학 교수를 했었다. 미국 국방장관을 지냈던 페리는 펜실베이니아 주립대학에서 수학 박사 학위를 받았으며, 지금은 스탠퍼드대학의 교수로 있다. 케냐의 부통령을 지낸 조지 사이토티(Saitoti G.)는 영국의 워윅대학에서 수학 박사 학위를 받았다. 아키노 전 필리핀 대통령도 수학을 부전공으로 이수했다.수학 고유‘창의력의 힘’뒷받침최고 위치 우뚝운동선수 중에서 대표적인 인물은 농구 황제 마이클 조던이다. 미국 북캐롤라이나대학 수학과에 입학해 3학년 때 전과했다. 또 샌안토니오 스퍼스의 농구선수 데이비드 로빈슨은 미국 해군사관학교에서 수학을 전공했다. 한편 1977년 윔블던 테니스 여자 단식 챔피언인 버지니아 웨이드는 영국 서섹스대학에서 수학과 물리학을 전공했다. 1960년대 미식축구의 스타 쿼터백이었던 프랭크 라이언은 프로 선수 생활을 하면서 미국 라이스대학에서 수학 박사 학위를 받았다. 이들은 모두 수학을 통해 창의력을 기르고 인생의 다양한 길을 열었던 셈이다.황선욱(숭실대학교 수학과 교수, shwang@ssu.ac.kr)
comment: 교수님께서 해주신 이야기를 읽으면서 수학과 관련한 일을 하지 않더라도 수학공부를 하는 사람들에 대해 알 수 있었다. 이는 수학이 다양한 모습을 가지고 있기 때문인데 단순히 숫자를 다루는 기술에서 부터 시작하여 사고력 추리력 논증력과 연관 된 넓은 범위로 까지 확장이 가능하기 때문일 것이다.
50’8/14(금) Office Hour 내용입니다. <-- 프로젝트 지원자 신청 받습니다.‘
1. 지속적인 Q&A 참여!!
2. 여태까지 참여 횟수를 채우지 못했다고 해서 포기하지 마시고
- 다른 분들 게시글에 멘트를 달거나 본인이 이해한 내용을 첨가하셔도 되고 수정할 부분이 있으면 수정하셔도 됩니다.
- 이해를 돕기 위해 타 사이트에서 읽은 글의 출처를 남기시고 글을 작성하셔도 됩니다(복사, 붙여넣기)
- 이해한 내용을 직접 손으로 풀어보거나 컴퓨터를 이용해 계산하셔서 문의게시판에 글을 남기시면 꾸준한 학습을 한 것으로 인정해주시겠다고 하셨습니다.
3. 중간 PBL보고서를 제출하지 못한 분들은 기말 PBL 보고서를 충실히 작성하시면 기말 점수로 cover가능하다고 하셨습니다.
<--- 1-4주차 부실 한 학생도 (안 낸 학생도... 일단 내고 ... Makeup 하겠다고 한 후, 지금부터 열심히 Comment 달면서 적어도 10~20개 정도 개념/문제풀이 등 이해한 것을 Re-Finalize 하시고, 그것들 모아서, 1-7주차 모두 모은 Final PBL 를 성실하고 우수하게 제출하면,
기말고사에서 60+40=100 점 받으면, 중간고사에서 아주 부실했던/부정행위 한 학생도
B 이상 (Makeup이 아주 두드러지면 A 도) 받을 수 있으니, 지금부터 밀린 것 다하시고 보고서 잘 내시면 B 받는 것 가능하다고 하셨습니다.
4. 어떠한 언어를 사용하셔도 무방합니다.(한국어로만 써야 하는 것은 아닙니다 You don't have to write only Korean. Any language is possible)
5. 수업 내용을 다 이해해서 또는 잘 이해가 안 돼서 게시판 참여에 소홀해지는 분들이 많은 것 같다고 하셨습니다.
- 2번을 참고하셔서 꾸준한 참여를 하시면 좋은 점수를 주시겠다고 하셨습니다.
6. '인공지능을 위한 기초수학' 초벌 번역 아르바이트를 모집 중입니다.
- 본인이 영어를 잘하시면 좋고 부족하더라도 구글이나 다른 사이트에 있는 번역기를 이용한 다음 수정/보완하는 방법도 괜찮다고 하셨습니다.
- 지원자는 교수님께 말씀드리면 됩니다.
- 가산점과 상금 10만원이 있습니다.
자연과학대학장이상구 님이 모두에게: 오전 11:13
프로젝트로 < 강의 >인공지능을 위한 기초수학 입문 [실습실]
01주차http://matrix.skku.ac.kr/math4ai-intro/W1/
02주차http://matrix.skku.ac.kr/math4ai-intro/W2/
03주차http://matrix.skku.ac.kr/math4ai-intro/W3/
04주차http://matrix.skku.ac.kr/math4ai-intro/W4/
05주차http://matrix.skku.ac.kr/math4ai-intro/W5/
06주차http://matrix.skku.ac.kr/math4ai-intro/W6/
07주차http://matrix.skku.ac.kr/math4ai-intro/W7/
08주차http://matrix.skku.ac.kr/math4ai-intro/W8/
09주차http://matrix.skku.ac.kr/math4ai-intro/W9/
10주차http://matrix.skku.ac.kr/math4ai-intro/W10/
11주차http://matrix.skku.ac.kr/math4ai-intro/W11/
12주차http://matrix.skku.ac.kr/math4ai-intro/W12/
13주차http://matrix.skku.ac.kr/math4ai-intro/W13/
14주차http://matrix.skku.ac.kr/math4ai-intro/W14/
통계와 인공지능 일부 를 프로젝트로 또는 번역으로 하고,
번역의 경우 <아르바이트>로 1주차에 10만원 정도 초벌번역 수당 받는 것 원하면 지금 여기에 이름 남겨 두세요^^
자연과학대학장이상구 님이 모두에게: 오전 11:14
Makeup or 프로젝트 or보너스 점수 or 아르바이트 비 : 관심 있으면 여기에 의사 남겨 두세요^
박지수 님이 모두에게: 오전 11:17
언제까지 하는건가요??
자연과학대학장이상구 님이 모두에게: 오전 11:17
10일 정도 에 8페이지?
2016315146_이상우 님이 모두에게: 오전 11:15
yse
김범준2017****99 님이 모두에게: 오전 11:16
김범준(소비자학과) 관심있습니다.
유가이올렉산드르 님이 모두에게: 오전 11:17
저도 관심있습니다. (유가이 올렉산드르 - 바이오메카트로닉스학과)
박지수 님이 모두에게: 오전 11:18
관심있습니다. 박지수(미디어커뮤니케이션)
채희준_2016312300 님이 모두에게: 오전 11:19
채희준(물리학과) 관심있습니다.
<---B+ 와 A+ 를 원하시는 분들그리고 꼭 Pass 를 해야 할 분은 , Makeup 필요한 분은 프로젝트 지원 ... 아래 답글로 몇 명 더 지원해 주세요^^
기억나는 대로 추려봤습니다. 추가 사항 덧붙여주시면 감사하겠습니다~
8개의 댓글
이상구(LEE SANGGU)8월 14일 오후 12:11
프로젝트:1. 김범준 2017(소비자학과) 관심있습니다.2. 저도 관심있습니다. (유가이 올렉산드르 - 바이오메카트로닉스학과)3. 관심있습니다. 박지수(미디어커뮤니케이션)4. 채희준_2016 채희준(물리학과) 관심있습니다....
천가영(2020****17)8월 14일 오후 12:16
정리해주셔서 감사합니다.실력은 부족하지만 저도 초벌 번역에 참여해보고 싶습니다.
정원철(2017****79)8월 14일 오후 9:00
저도 정리해보고 싶습니다.
박은아(2016****73)8월 14일 오후 9:08
저도 참여하고 싶습니다. 부족하지만 열심히 해보겠습니다!
박진형(2018****59)8월 15일 오후 7:02
저도 참여하고 싶습니다! 최선을 다해보겠습니다
장환승(2016****69)8월 15일 오후 9:17
저도 참여해보고 싶습니다~!
김진웅(2015****73)8월 17일 오전 00:03
저도 프로젝트에 참여하고 싶습니다.
김호연(2020****32)8월 23일 오전 11:15
지금 프로젝트 받나요?
51’[5주차]Finalized by 정권채; 포아송분포 예시‘
정해진 시간 안에 어떤 사건이 일어날 횟수에 대한기댓값을
라고 했을 때, 그 사건이
회 일어날 확률은 다음과 같다.
(e는 자연장수, x=0,1,2, ...)
문제로만 볼때는
가 계속 주어져서 그냥 받아들였었는데 실생활에서 어떻게 쓰이는지 이해할 수 있었던
재미있었던 자료를 공유해드립니다.
아래는 호날두가 레알에서 뛰었던 9년간의 골 기록입니다.




여기서 단위시간당 평균 사건 발생 횟수인
는 호날두의 경기당 득점 횟수인 약 0.996이라고 할 수 있겠습니다.
# 람다(lambda)=단위시간당 평균 사건발생 횟수 =경기당 득점횟수 =90분당 득점횟수 # X=단위시간당 사건발생 횟수# 람다=0.99591인 분포에서 단위시간동안 특정사건이 0~6번(각각)일어날 확률ronaldo <-dpois(0:6,lambda =0.99591)>ronaldo[1]0.36938714920.36787635580.18318587080.06081221350.01514087290.00301578930.0005005758# 487경기니까 487을 곱해줍니다.>487*ronaldo[1]179.8915417179.1557853 89.2115191 29.6155480 7.3736051 1.4686894 0.2437804
위 자료는
487경기를 치르는 동안 호날두는...
180경기에는 득점에 실패할 것이다.
179경기에는 1득점에 성공할 것이다.
89경기에는 2득점에 성공할 것이다
... ... ...
1~2번 정도는 한 경기에 5골을 넣을 것이다.
라고
가 0.99591인 포아송분포는 예측했습니다.

실제 득점기록과 예측치가 비슷하다는 것을 알 수 있습니다. 물론 선수가 나이듦에 따라 경기력이 달라져서 내년도 예측이 정확하지 않을 수는 있지만이요.
참고자료
https://blog.naver.com/vi_football/221531696787
https://ko.wikipedia.org/wiki/%ED%91%B8%EC%95%84%EC%86%A1_%EB%B6%84%ED%8F%AC
지금껏 축구는 왜 오류투성일까 (크리스 앤더슨 / 데이비드 샐리 지음)
https://blog.naver.com/vi_football/221531
9개의 댓글
나종진(2017****17)8월 14일 오후 5:28
실제 저희가 접할 수 있는 문제로 포아송분포를 보니 색다르네요. 좋은 정보 감사합니다.
채희준(2016****00)8월 14일 오후 7:17
이렇게 보니 정말 신기하네요. 개인 또는 팀의 경기력이 다양한 변수에 의해 달라질 것이라 생각하는데, 9년간의 기록이 포아송 분포 비슷하게 그린다는 것이 놀랍습니다. 실제 데이터를 가지고 분석한 흥미로운 글을 공유해줘서 감사합니다.
이상구(LEE SANGGU)8월 14일 오후 10:06
Interesting^^
이승재(2019****65)8월 14일 오후 10:36
실제 스포츠의 데이터를 활용하여, 포아송 분포에 대해 알기 쉽게 설명해주시고, 그 예시를 들어주신 점에 감사드립니다 :) 덕분에 포아송분포에 대한 이해가 더 쉽게 이루어진것 같습니다.
고경원(2013****45)8월 15일 오후 12:25
야구와 통계치 이야기는 알음알음 들어본 바가 있지만, 축구에서 통계치의 의미를 보는 것도 신기하네요.
김진웅(2015****73)8월 17일 오전 00:43
포아송분포가 실제로 어떻게 쓰이는지를 예시로 잘 알게되었습니다.감사합니다.
김호연(2020****32)8월 23일 오전 11:13
오오 잘 이해갔습니다. 감사합니다.
손원식(2019****98)8월 27일 오전 00:11
포아송 분포에 대한 개념만 알고 있었는데, 이 개념을 스포츠에 활용한 글을 읽고 개념 복습과 더불어 폭넓은 이해가 가능했습니다. 감사합니다!!
김효경(2016****71)8월 27일 오전 1:17
포아송 분포를 실생활에서 어떻게 사용되는지 체감은 못 하지만, 이렇게 다양한 수치의 통계와 예측에 사용된다는 것을 보니 재미있네요.
프로젝트(1개) (기말 1개)
63’[프로젝트] Introductory Mathematics for Artificial Intelligence 2nd Week 김진웅 임성규‘
http://matrix.skku.ac.kr/2020-AI-translation-1/
[일반인을 위한]K-MOOC
인공지능을 위한 기초수학 입문
(Introductory Mathematics for Artificial Intelligence)
... 그리고 행렬곱은 다음과 같이 두 행렬이 있으면 앞의 행렬의 행(row)하고 두 번째 행렬의 열(column)을 곱한 것이 곱해진 행렬의 성분이 되도록 그래서행렬 C의
성분은 A의
번째 행(row)와 B의
번째 열(column)을 성분끼리 곱해서 더해서 표현되는 식으로 설명해 드렸습니다.그리고 주대각선 성분들을 더한 것이 trace라는 것, 역행렬 및 역행렬을 구하는 방법과 역행렬의 성질을 소개했고, 특수행렬로 상삼각행렬과 하삼각행렬을 소개하였습니다.
And the matrix multiplication is that for two matrices, the multiplication of the row of the first matrix and the column of the second matrix becomes the component of the multiplied matrix, so that the
, component of matrix C, is expressed by addition of corresponding component multiplication of the
th row of A and the
th column of B. And the definition that the addition of the main diagonal components is trace, the inverse matrix, its evaluating method and properties were introduced. And the upper and lower triangular matrices were introduced as special matrices.
이어서 3주차에는 데이터의 분류(classification)에 대해서 학습하도록 하겠습니다.
Next, in week 3, we will learn about classification of data.
감사합니다.
Thank you.
Comment: 프로젝트를 진행하면서 행렬 파트 내용을 어떻게 그 의미를 잘 전달할까 고민하게 되었고, 이해가 늘었습니다.
1‘[HW] 자기소개 및 수강동기 - 컴퓨터공학과 김진웅’ 소개
2‘[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.’ comment
3‘[FINAL][1주차 HW]자기소개 및 질의 / 답변 by 김진웅 나종진 임동선 이재화 이상구교수님’ answer → ‘[Final OK by SGLee] [Finalized by 채희준, 권서영 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구’ → ‘[Final OK by TA] [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구, 장환승,권서영’
4‘[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이’ 풀이
5‘강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’ answer → ‘Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’ → ‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’ answer → ‘[Final 1주차] by 이상구 교수님, 김진웅 2016310492 경영학과 김태호’
7‘[Final] by 김진웅 질문 by 김진웅 답변 by 정환승, 유가이올렉산드르 [HW 질문] 열공간, 행공간, 영공간 사이의 관계’ 질문 → ‘Finalized by 유가이 올렉산드 [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’ → ‘[Final OK by TA] [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’
8‘[1주차] 1-1,1-2,1-3 내용 정리 및 질문’ answer → ‘Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’ → ‘[Final OK by TA] Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’
9‘[Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’ 질문 → ‘[Final OK by TA] [Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’
10‘[HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요?’ answer → ‘[Final OK by SGLee] [HW] Finalized by 한수현, 권서영, 김진웅’ → ‘[HW질문] Re-Finalized by 채희준, 질문 by 권서영, 답변 by 김진웅, Finalized by 한수현’ → ‘[Final OK by TA] [HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요? by 권서영, 김진웅, 이상구 교수님’
11’[1-2강] 강의 내용 복습 및 요약 & 실습 & 질의‘ answer → ’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘ answer
13’[HW 실습] 1주차 실습’ 실습
14’[HW 요약] 1주차 요약‘ 요약 <이상 1주차; 14개 9개>
15’[HW-2주차-질문] 단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)‘ answer → ’[Final OK by SGLee] Finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준‘
16’[Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘ 질문 → ’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
17’[Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘ 질문 → ’[Final OK by TA] [Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘
18’2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬>‘ 정리 → ’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘ → ’[Final OK by SGLee] [2주차] singular value 가 eigenvalue의 square root인 이유 by 안성진 (김진웅님 글 참고)‘
19’표준행렬에 대해 질문있습니다.‘ answer → ’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘
20’[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기‘ comment
21’[해결] SAGE 질문 SyntaxError‘ answer
22’[2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’ answer → ‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’
23’[HW 실습] 2주차 실습‘ 실습
24’2주차 4-1, 4-2 요약정리 및 질문‘ comment
25’[HW 요약] 2주차 요약‘ 요약 → ’2주차 (FINAL) 내용정리와 관련된 예제 학습 Written by. 김진웅 added by 김태호‘ <이상 2주차; 11개 4개>
26’특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python‘ comment → ’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘ answer
28’[HW-3주차-자료공유]미적분학의 기본정리와 그 증명‘ answer → ’Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘ → ’[Final OK by TA] Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘
29’3주차 다변수함수의 극대극소판정법 정리‘ 정리
30’[FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘ answer → ’[Final OK by TA][FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘
31’Finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘ answer
32’[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습‘ comment
33’[요약] 3주차 요약‘ 요약 → ’[Final OK by SGLee] [3주차] 요약 및 질문’ answer → ‘[Final OK by SGLee] [3주차] [Re-Final by 안성진] [Final OK by SGLee] [3주차] 요약 및 질문 by 장환승, 김진웅’
34’[Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘ 질문 → ’[Final OK by TA and SGLee] [Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘
35’[3주차] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python)‘ comment → ’[Final] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python) 댓글 by 이상구 교수님, 김범준, 김진웅‘
36’[Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의‘ answer → ’[Final OK by SGLee] [Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의 by 박진형,이상구(LEE SANGGU), 김진웅‘
37’[2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘ answer → ’[Final OK by SGLee] Finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘ 실습 <이상 3주차; 13개 9개>
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘ 정리
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘ answer
41’4주차 Gradient Descent Algorithm 추가 정리‘ 정리
42’[요약] 4주차 요약‘ 요약
43’[Final OK by SGLee] Final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅‘ answer
44’Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅,채희준,정원철‘ answer
45’[실습] 4주차 실습‘ 실습
46’[2주차] 고유값 분해를 이용한 피보나치수 일반항 유도‘ comment
47’[중간고사 과제] 열린문제 4문제‘ 풀이 <이상 4주차; 9개 3개> <중간 총 47개 25개>
48’[Final OK by SGLee] Finalized by 김범준 [HW-5주차(자료공유)] 평균의 함정 사례by김범준 comment 및 추가의견 by 나종진학우님, 박정호학우님, 김진웅학우님, 이상구교수님‘ comment
49’포아송분포와 베르누이분포 관계 실습 <--- Practice in http://matrix.skku.ac.kr/KOFAC/ <--결과 사진 수정했습니다’ 실습
50’8/14(금) Office Hour 내용입니다. <-- 프로젝트 지원자 신청 받습니다.‘ comment
51’[5주차]Finalized by 정권채; 포아송분포 예시‘ comment <이상 5주차; 4개 1개>
52’[5주차] [요약] 5주차 요약 <-- 특히 Poisson 분포가 무엇인지 알게 되었습니다.‘ 요약 → ’Final Ok 5주차 정리 Finalized by 김다은 김진웅‘
53’[5주차] [실습] 5주차 실습 <--- R언어가 제공하는 시각화 이미지 코드, 통계에 필요한 함수 코드는 편리했습니다.‘ 실습
54’6주차 PCA 정리‘ 정리
55’6주차 강의 내용 질문‘ answer → ’[Final OK by SGLee] Finalized by 이승재 Q by 장환승 A by 김진웅 Comment by SGLee, 이승재 " 6주차 강의 내용 질문 "’
56’6주차 요약: 연속확률분포, 결합확률분포, 공분산행렬.‘ answer
57’열린문제 3 구하는 법 질문‘ answer
58’[Final OK by SGLee] [Final] by 김진웅 A by 이상구, 이재화 [질문] 데이터행렬의 공분산행렬 < --- 답 <---보충‘ 질문 → ’[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 < --- 답 <---보충), A by 이상구, 이재화‘
59’Final OK by SGLee 6주차 내용 정리, 실습 및 질문‘ answer → ’[Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준‘ <이상 6주차; 8개 3개>
60’Final OK by SGLee [요약] 6주차 요약‘ 요약
61’7주차 오차역전파법 정리‘ 정리 → ’Finalized by 정원철. 7주차 오차역전파법 정리 by 김진웅 + 아주 직관적인 예시 추가‘
62’[요약] 7주차 요약‘ 요약
63’[프로젝트] Introductory Mathematics for Artificial Intelligence 2nd Week 김진웅 임성규‘ 프로젝트
64’[6주차] 6주차 실습‘ 실습
65’[수강후기] 컴퓨터공학과 김진웅‘ 소개 <이상 7주차; 6개 1개> <기말 총 18개 5개> <총 65개 30개>








위 내용 중 정사영의 정의 파트에서 벡터가 존재하는 공간을 R^n으로 제한 해놓은 부분에서 의문이 생겼는데, 교수님의 답변으로 시각적으로 확인하기 쉽기 때문에 그렇게 한 것이고 다른 임의의 벡터공간의 벡터들에 대해서도 정사영이 가능하다는 것을 알았습니다.
1. 요약 및 정리
Part I 행렬과 데이터분석 정리 - 1 (1강 ~ 3강) with Comment
작성자 : 채희준(2016****00)작성일 : 7월 23일 오전 5:02
Part I 행렬과 데이터분석 정리 - 1
http://matrix.skku.ac.kr/math4ai/part1/
1. 벡터
|
정의. |
[ |
개의 실수의 순서조
![]()

|
정의. |
|
의 벡터
에 대하여
![]()
|
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터
,
에 대하여
![]()
![]()
=
=![]()
|
정의. |
|

, ![]()
2. 선형연립방정식
|
정의. |
선형연립방정식(system of linear equations) |
미지수
에 관한 유한개의 선형방정식의 모임
![]()
![]()
![]()
![]()
만일 상수항
이 모두 0일 경우, 동차선형연립방정식(homogeneous system of linear equations, 동차선형방정식시스템)이라 한다.
|
정의. |
첨가행렬(augmented matrix) |
선형연립방정식에 대하여



![]()
로 간단히 쓸 수 있다.
이때 행렬
를 선형연립방정식의 계수행렬(coefficient matrix)이라 하며,
에
를 붙여서 만든 행렬

을 선형연립방정식의 첨가행렬(augmented matrix)이라고 한다.
|
정의. |
기본행 연산(elementary row operation, ERO) |
행렬
에 관한 다음의 연산
E1:
의 두 행
행과
행을 서로 바꾼다. ![]()
E2:
의
행에
이 아닌 상수
를 곱한다. ![]()
E3:
의
행을
배 하여
행에 더한다. ![]()
|
정의. |
행 사다리꼴(row echelon form, REF) |
행렬
가 다음 3가지 성질을 만족할 때, 행 사다리꼴(row echelon form, REF)이라고 한다.
(1) 성분이 모두 0인 행이 존재하면 그 행은 행렬의 맨 아래에 위치한다.
(2) 각 행에서 처음으로 나타나는 0이 아닌 성분은 1이다. 이때 이 1을 그 행의 선행성분(leading entry, leading 1)이라고 한다.
(3)
행과
행 모두에 선행성분이 존재하면 (
)행의 선행성분은
행의 선행성분보다 오른쪽에 위치한다.
4번째 성질을 추가로 만족하면
를 기약 행 사다리꼴(reduced row echelon form, RREF)이라고 한다.
(4) 선행성분(leading entry in row)을 포함하는 열의 선행선분 외의 성분은 모두 0이다.
|
정리. |
행동치인 선형연립방정식은 해집합이 같다 |
*행동치 : 한 행렬을 여러 번의 기본 행 연산에 적용하여 다른 행렬로 변환시킬 수 있는 경우, 이들 두 행렬의 관계를 이르는 말.
3. 행렬과 행렬식
|
정리. |
가역행렬(invertible matrix)의 성질 2 |
만일
가 가역행렬이면,
도 가역행렬이고 다음이 성립한다.
![]()
|
정리. |
역행렬 구하는 방법 1 |
[단계 1] 주어진 행렬
에 단위행렬
을 첨가하여
행렬
을 만든다.
[단계 2] 단계 1에서 만든 행렬
의 RREF를 구한다.
[단계 3] 단계 2에서 얻어진 RREF를
라고 하면 다음이 성립한다.
(1)
이면
이다.
(2)
이면
는 비가역이고
은 존재하지 않는다.
|
정리. |
행렬의 가역성과 선형연립방정식의 해 사이의 관계 |
차의 정사각행렬
가 가역이고
가
의 벡터일 때, 연립방정식
는 유일한 해
를 갖는다.
|
정의. |
치환(permutation, 순열) |
(1) 자연수의 집합
의 치환(permutation, 순열)이란
에서
로의 일대일 대응함수이다.

▪ 앞으로 치환을 간단히 ![]()
로 나타낸다. 치환
는 일대일대응이므로 치역
은
의 숫자를 일렬로 배열하는 것에 지나지 않는다. 따라서
의 치환은 모두
개이다. 집합
의 모든 치환의 집합을
으로 표시한다.
(2) 치환
에서 반전(inversion)이란 큰 자연수가 작은 자연수보다 더 왼쪽에 먼저 나타나는 경우를 말한다. 예를 들어 아래 그림의 치환
에서
는
보다 더 왼쪽에 있으므로
에서 반전이 일어났다. 마찬가지로
에서도 반전이 일어났다.
![]()
(3) 치환이 가진 반전의 총 개수가 짝수이면 이 치환은 짝치환(even permutation), 홀수이면 홀치환(odd permutation)이라고 한다.
|
정의. |
치환(permutation, 순열), 행렬식 |
(1)
의 각 치환을
또는
이라는 수에 대응시키는 부호화 함수(signature function)
을 다음과 같이 정의한다.
![]()
(2) 행렬
가
차의 정사각행렬일 때,
의 행렬식을
또는
로 나타내고 다음과 같이 정의한다.
![]()
은 행렬
의 행과 열에서 중복됨 없이 하나씩 뽑아서 곱한 후 대응되는 치환의 부호를 붙인 것이다.
|
정리. |
가역행렬 |
(1)
가 가역행렬일 필요충분조건은
이다.
(2) 두 행렬
,
가
차의 정사각행렬일 때,
이 성립한다.
(3) 행렬
가 가역이면
이고,
이 성립한다.
|
정의. |
수반행렬(adjugate, adjunct 또는 classical adjoint matrix) |
차의 정사각행렬
의 성분
에 대한 여인자를
라 할 때, 행렬
를
의 수반행렬(adjugate, adjunct 또는 classical adjoint matrix)이라 하고, adj
로 나타낸다. 즉,


![]()
*http://matrix.skku.ac.kr/LA-K/
정사각행렬
의
행과
열을 제거하여 만든 부분행렬을
라 하고 그의 행렬식
를
의
에 대한 소행렬식(minor)이라 한다. 또, ![]()
![]()
를
의
에 대한 여인자(cofactor)라고 한다.
|
정리. |
수반행렬을 이용한 가역행렬의 역행렬 |
차의 정사각행렬
가 가역일 때,
의 역행렬은
이다.
Comment:
2017년 1학기에 선형대수학을 배웠습니다. 그때는 이해 안되는 부분이 있으면 외워서 사용하거나 그냥 넘어갔었는데, 이번 기회를 통해서 배운 내용 중에서 중요한 부분들을 직접 요약 및 정리하면서 그러한 부분들을 제대로 이해할 수 있게 되어서 좋습니다.
※ 이번에 제대로 이해하게 된 내용
치환(permutation, 순열),
, 수반행렬(adjugate, adjunct 또는 classical adjoint matrix),
[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,
[Discuss] How to find least square solution? 해가 존재하지 않는 연립방정식의 optimal solution [최소제곱해, least square solution] 는 어떻게 구하나?]
작성자 : 이상구(LEE SANGGU)작성일 : 7월 10일 오후 1:15
조회수 : 24
오차(error)
때로는 최소제곱법을 이용하여 구한 근사 직선이 오차가 너무 커지는 경우도 있다. 예를 들면, 그림 14-2-2 (a), (b) 의 경우는 최적곡선이 직선이 아니다. 실제로(a), (b) 의 경우에 데이터의 점에 가장 근사한 곡선은 각각 2차식인
![]()
이고 3차식인
![]()
이다. 일반적으로 데이터의 점
에 가장 근사한
차의 다항식
(7)
을 구하고자 할 때는 다음과 같이 한다.
(a)
(b)
그림 14-2-2 데이터 점들을 이었을 때 직선이 나오지 않는 경우
우선, 식 (7)에 주어진 데이터의 점을 대입하여 미지수가
인 연립방정식
(8)
를 얻는다. 만일
의 값 중 서로 다른 것이
개 있다면,
이므로 정규 시스템
는 유일한 해
를 갖는다. 이 때 이 계수를 갖는
차 다항식이 바로 가장 근사한 곡선의 방정식이다.
위의 내용 중에서 마지막 부분,
만일
의 값 중 서로 다른 것이
개 있다면,
이므로
가 잘 이해가 되지 않습니다... 어떻게
가 되는 건가요?
***
선형대수학에서 방데르몽드 행렬(-行列, 영어: Vandermonde matrix)은 각 행이 초항이 1인 등비수열로 구성된 행렬이다. 프랑스의 수학자 알렉상드르 테오필 방데르몽드의 이름에서 따왔다. 다항식 보간법, 최소 자승 근사법 등에서 나타난다.
방데르몽드 행렬은 다음과 같은 형태를 가진다.
간단히 표현하면 모든 와 에 대하여 다음과 같이 쓸 수 있다.
일부에서는 이 행렬의 전치행렬을 방데르몽드 행렬이라고 부르기도 한다.
방데르몽드 행렬의 행렬식은 다음과 같이 간단히 정리할 수 있다.

A=matrix([[1, 3, 5, 2, -2], [-2, 1, -2, 1, 0], [-1, -3, 0, 1, 0], [-3, 0, 1, 0, 0], [0, 1, 2, -2, 1]])
print A
print
b=matrix(5, 1, [1, 0, 1, 0, 0])
print b
print
AT=A.transpose()
AtA=AT*A
print AtA
print
Atb=AT*b
print Atb
print
AtA.solve_right(Atb)
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
# normal equation로 계산한 것과 비교
AtA = A.transpose()*A
Atb = A.transpose()*b
AtA.solve_right(Atb)
따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
박정호(2014****10)7월 19일 오후 5:35
A의 column들이 일차 독립일 경우 A^TA가 역행렬을 갖습니다. 현재 A의 열이 k+1개가 있으므로 x_1, x_2, ..., x_n 중 서로 다른 값이 k+1개만 되면 column끼리의 일차 결합이 불가능해서 full column rank를 가진다는 설명인 것 같습니다.
이상구(LEE SANGGU)7월 19일 오후 5:53
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다.따라서 A^T A 의 행렬식도 영이 아닙니다.* 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다. 따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
김진웅(2015****73)7월 19일 오후 6:16
'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다'는 것은 n 은 적어도 k+1개 이상이고, '서로 다른' 조건에 의하여 (1)'A는 full column rank를 갖는다'는 것입니다.'|A^tA|≠0'이라는 것은 'A^tA가 가역'이라는 것입니다. 'A^tA가 가역'이라는 것은 (2)'A^tAx=0 일 때, x=0'이라는 것입니다.(A의 가역을 보이기 위해서 'Ax=0일 때 x=0'을 보이면 됩니다.)따라서, 'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다면 |A^tA|≠0이다'라는 것은 (1)'A는 full column rank를 갖는다'일 때 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (1)을 이용하여 (2)가 옳음을 보이면 됩니다.(2)의 A^tAx=0부터 시작합니다.x^tA^tAx=0 (x^t를 양변에 곱했습니다.)(Ax)^tAx=0(Ax)·(Ax)=0 (Ax는 nx1 벡터입니다. 벡터끼리의 내적입니다.)||Ax||^2=0Ax=0 입니다.(1)에 의해, 즉 'Ax=0이면 x=0'(full column rank이면 왼쪽 식을 만족합니다)에 의해 x=0입니다.따라서 (1)일 때 (2)'A^tAx=0 일 때, x=0'가 옳음을 보였습니다.
박정호(2014****10)7월 19일 오후 10:39
방데르몽드 행렬식을 보니 명확하게 이해가 되었습니다. 감사합니다.
박정호(2014****10)7월 19일 오후 5:35
A의 column들이 일차 독립일 경우 A^TA가 역행렬을 갖습니다. 현재 A의 열이 k+1개가 있으므로 x_1, x_2, ..., x_n 중 서로 다른 값이 k+1개만 되면 column끼리의 일차 결합이 불가능해서 full column rank를 가진다는 설명인 것 같습니다.
이상구(LEE SANGGU)7월 19일 오후 5:53
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다.따라서 A^T A 의 행렬식도 영이 아닙니다.* 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다. 따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
김진웅(2015****73)7월 19일 오후 6:16
'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다'는 것은 n 은 적어도 k+1개 이상이고, '서로 다른' 조건에 의하여 (1)'A는 full column rank를 갖는다'는 것입니다.'|A^tA|≠0'이라는 것은 'A^tA가 가역'이라는 것입니다. 'A^tA가 가역'이라는 것은 (2)'A^tAx=0 일 때, x=0'이라는 것입니다.(A의 가역을 보이기 위해서 'Ax=0일 때 x=0'을 보이면 됩니다.)따라서, 'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다면 |A^tA|≠0이다'라는 것은 (1)'A는 full column rank를 갖는다'일 때 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (1)을 이용하여 (2)가 옳음을 보이면 됩니다.(2)의 A^tAx=0부터 시작합니다.x^tA^tAx=0 (x^t를 양변에 곱했습니다.)(Ax)^tAx=0(Ax)·(Ax)=0 (Ax는 nx1 벡터입니다. 벡터끼리의 내적입니다.)||Ax||^2=0Ax=0 입니다.(1)에 의해, 즉 'Ax=0이면 x=0'(full column rank이면 왼쪽 식을 만족합니다)에 의해 x=0입니다.따라서 (1)일 때 (2)'A^tAx=0 일 때, x=0'가 옳음을 보였습니다.
박정호(2014****10)7월 19일 오후 10:39
방데르몽드 행렬식을 보니 명확하게 이해가 되었습니다. 감사합니다.
[Final OK by SGLee] Q, A & Finalized by 이승재, 박상협, 박정호, 김정한, SGLee [HW] 벡터의 직교, Gram Schmidt 정규직교화 과정
작성자 : 이승재(2019****65)작성일 : 7월 19일 오후 10:16
Question. (By 박상협)
1. 정사영의 정의에서, y-p가 x에 직교하므로 (x) (y-p) = 0 이라고 하는데 이 부분이 왜 그런지 잘 이해되지 않습니다.
<--1. 그림에서 보듯이 w = y-p 를 (Projection of y onto x 인) 벡터 p 와 직교가 되도록 잡았으니 ... p 와 w 그 둘의 내적을 구하면 당연히 영이 되는 것이랍니다. http://matrix.skku.ac.kr/2018-album/LA-Sec-7-7-lab.html 그렇게 직교 orthogonal 가 되도록 w 를 정의한 것입니다.
2. 두 벡터가 서로 직교할때 벡터의 내적이 0이 되는 이유가 궁금합니다. <--- 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 때문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
(선형대수학이 처음이라 기초가 많이 미흡합니다. 도와주시면 감사하겠습니다!)

Answer by SGLee.
1. 그림에서 보듯이 w = y-p 를 (Projection of y onto x 인) 벡터 p 와 직교가 되도록 잡았으니 ... p 와 w 그 둘의 내적을 구하면 당연히 영이 되는 것이랍니다. http://matrix.skku.ac.kr/2018-album/LA-Sec-7-7-lab.html 그렇게 직교 orthogonal 가 되도록 w 를 정의한 것입니다.
2. 이 개념이 2차원에서, 3차원으로 , 그리고 4차원으로 그대로 확장이 되어 G-S 정규 직교화법이 만들어 지는 것이랍니다.http://matrix.skku.ac.kr/2012-album/Gram-Schmidt.html
3. 관련 동영상은 아래 웹사이트를 참조하세요.(Korean) https://youtu.be/EBCi1nR7EuE (English) https://youtu.be/Px6Gaks9fXQ

Answer by 박정호
내적을 정의할 때 벡터의 각 성분끼리의 곱의 합으로도 표현할 수 있지만 a*b*cos@로도 표현할 수 있습니다. a, b는 벡터의 크기니까 0이 아니므로 내적이 0이라면 코사인 값이 0인 것이고 코사인을 0으로 만들어주는 각이 90도이기 때문에 수직이라고 볼 수 있습니다. 2차원, 3차원에서는 수식으로나 그림으로 증명할 수 있고 그 이상의 차원에서도 내적을 같은 식으로 정의할 수 있기 때문에 내적이 0이다라는 것은 직교를 의미합니다.
Answer by 김정한
내적을 표현할 때는 x 보다 ⋅(dot 기호)를 사용하는게 바람직해 보입니다. w를 y에서 x방향으로의 성분(p)을 제외한 부분으로 생각하고 p는 x를 스칼라배한 것이므로 둘의 내적은 0입니다[직교].
이러한 직교 상황에 벡터의 내적이 0인 이유는 위에 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 떄문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
Comment by 이승재
- 박상협 학우님께서 질의 해 주신 부분은 제가 정사영이라는 개념을 처음 접하였을때 당시 어려움을 겪었던 부분 중 하나 입니다.
답변 해 주신 분들이 잘 설명해 주셔서 이해가 한층 더 되었던 것 같습니다.
Part I 행렬과 데이터분석 정리 - 2 (4강 ~ 6강)
작성자 : 채희준(2016****00)작성일 : 7월 23일 오전 5:22
Part I 행렬과 데이터분석 정리 - 2
http://matrix.skku.ac.kr/math4ai/part1/
4. 일차독립과 기저(basis) 및 차원(Dimension)
|
정의. |
일차독립(linearly independent) |
(1)
의 부분집합
에 대하여, 벡터
가
![]()
의 꼴로 표시되면,
를 벡터
의 일차결합(linear combination)이라고 한다.
(2) ![]()
![]()
에 대하여
이면,
벡터
(또는 집합
)는 일차독립(linearly independent)이라고 하고,
벡터
(또는 집합
)가 일차독립이 아니면 일차종속(linearly dependent)이라고 한다.
|
정리. |
일차독립(L.I.) 판정법 |
▪
는
들을 열벡터(column vector)로 가지는 행렬,
라 하자. 그렇다면 벡터들이 일차독립임을 보이기 위해서는 동차연립방정식
이 유일한 해
을 가져야 한다. 특히
일 경우
이면 유일해를 갖는다.
|
정의. |
부분공간(subspace) |
(1) 집합
가
의 부분집합이라 하자. 이때 다음 두 조건을 만족하면
는
의 부분공간(subspace)이다.
(덧셈에 닫혀 있다.)
(스칼라배에 닫혀 있다.)
(2) 행렬
에 대하여 집합
은
의 부분공간이다.
이러한
를
의 해공간(solution space) 또는
의 영공간(null space)이라 하며 기호로 Null
로 나타낸다.
(3)
의 부분집합
에 대하여
에 있는
개 벡터들의 일차결합 전체의 집합, 즉
는
의 부분공간이다.. 이러한
를
에 의하여 생성된(spanned)
의 부분공간이라 한다. 집합
는
를 생성(span)한다고 하고,
를
의 생성집합(spanning set)이라고 하며 기호로는 다음과 같이 나타낸다.
또는 ![]()
특히,
에 있는 모든 벡터가
에 있는
개 벡터들의 일차결합이면 집합
는
을 생성한다. 즉
![]()
![]()
이면,
는
을 생성한다고 한다.
|
정의. |
기저(basis) |
의 부분집합
가 아래 두 조건을 만족하면
를
의 기저(basis)라 한다.
(1)
가 일차독립
(2) ![]()
▪
의 기저는 무수히 많다. 그러나 각 기저에 속하는 벡터의 개수는 항상 같다.
|
정의. |
차원(dimension) |
집합
가
의 한 기저일 때,
에 속하는 벡터의 개수를
의 차원(dimension)이라 하며
로 나타낸다.
|
정의. |
nullity( |
행렬
에 대하여
의 해공간, 즉
의 영공간의 차원을 nullity(
)라고 나타낸다. 즉, dim Null(
)
nullity(
)이다.
▪ Gauss-Jordan 소거법을 이용하여 행렬
을 선형연립방정식의 첨가행렬
의 RREF라 하고 행렬
는 첫 행부터 ![]()
개의 영이 아닌 행을 갖는다고 하자.
(1)
이면
의 해는
만을 갖는다. 따라서 해공간의 차원은
이다.
(2)
이면 (필요한 경우 열을 교환하면—변수의 위치만 변경하면 되므로) 일반성을 잃지 않고

라고 할 수 있다. 그러면, 선형연립방정식은 다음과 동치이다.
![]()
![]()
![]()
![]()
즉,
은
개의 자유변수이다. 따라서 임의의 실수
에 대하여
이라 하면, 연립방정식의 일반해는 다음과 같이
개 벡터들의 일차결합으로 표현이 가능하다.

여기서,
이 임의의 실수이므로

도 연립방정식의 해이다. 따라서 위의 모든
개의 벡터들의 일차결합 해는
![]()
로 표현되므로 ![]()
는
의 해공간을 생성한다. 또,
가 일차독립임을 쉽게 알 수 있다. 따라서
는 이 해공간
의 기저이고 이 해공간의 차원은
이다.
|
정의. |
열공간(column space) Col |
행렬
에 대하여
의 각 행으로 이루어진
개의 벡터
![]()
![]()
과
의 각 열로 이루어진
개의 벡터

을 각각
의 행벡터(row vector), 열벡터(column vector)라고 한다.
이 행벡터
들에 의해서 생성된
의 부분공간 즉,
![]()
을
의 행공간(row space), Row
로 나타내고, 열벡터
에 의해 생성된
의 부분공간 즉,
![]()
을
의 열공간(column space)이라 하고, Col
로 나타낸다.
그리고 행공간의 차원을
의 행계수(row rank), 열공간의 차원을
의 열계수(column rank)라 하고, 각각
,
로 나타낸다. 즉,
dim Row
,
dim Col
![]()
|
정리. |
계수(rank), Rank-Nullity 정리 |
(1) 임의의 행렬
에 대하여
의 행계수와 열계수는 같다.
▪ 이 계수를 행렬
의 계수(rank)라 하고 아래와 같이 쓴다.
![]()
(2) 임의의 행렬
에 대하여 다음이 성립한다. [Rank-Nullity 정리]
rank(
)
nullity(
)
(column 의 개수)
|
|
최소제곱해(least square solution) |
대개 미지수의 개수보다 많은 데이터의 개수를 사용하므로, 방정식의 개수가 미지수의 개수보다 많은 (over-determined인) 선형연립방정식이 생긴다. 이런 경우, 일반적으로 선형연립방정식
를 만족하는 유일한 해는 물론 단 하나의 해도 없는 경우가 대부분이므로 대신
를 만족하는 근사해를 찾는다. 즉 오차
을 최소화하는 근사해를 찾는 이 문제를 최소제곱문제(least squares problem)라 한다.
를 모델
에
를 대입하여 얻은 값이라고 하면, (즉
) 최소제곱문제는 결국 오차
이 최소가 되는
,
를 구하는 것과 같다.
|
정의. |
Normal equation(정규방정식) |
가 최소제곱문제
의 해가 될 필요충분조건은
을 만족하는 것이다.
[이때 선형연립방정식
을 normal equation(정규방정식)이라 한다.]
(Sketch) 일단 선형연립방정식
의 해가 존재하지 않으므로
Col(
)이 성립한다.
의 Col(
) 위로의 정사영을
이라 하면,
의 해가 존재한다. 이 해를
이라 하면,
이 바로 최소제곱문제
의 최소제곱해(least squares solution)가 된다. 다음 그림에서
, ![]()
![]()
라 하면
Col(
)이므로
와
의 열벡터들이 각각 직교이므로
이 성립한다. 따라서
, 즉
이 성립한다.
의 열벡터들이 일차독립(이를
가 full column rank를 갖는다고 한다)이면,
가 가역이고,
의 열벡터들이 Col(
)의 기저가 된다. 따라서 최소제곱문제의 최소제곱해(least squares solution)는
![]()
이고, ![]()
를 만족한다.
|
정의. |
정규직교기저(orthonormal basis) |
(1)
의 벡터
에 대하여
![]()
라 하자. 이때,
의 서로 다른 임의의 두 벡터가 모두 직교하면
를 직교집합(orthogonal set)이라 한다. 특히, 직교집합
에 속하는 벡터가 모두 크기가 1인 경우
를 정규직교집합(orthonormal set)이라고 한다.
(2)
의 기저
가 직교집합이면 직교기저(orthogonal basis), 정규직교집합이면 정규직교기저(orthonormal basis)라고 한다.
|
정리. |
Gram-Schmidt 정규직교화 |
의 기저
로부터 직교집합
을 다음과 같은 단계로 계산한다.

[단계 1]
이라 한다.
[단계 2]
에 의하여 생성되는 부분공간을
이라 하고
![]()
![]()
로 한다.
[단계 3]
,
에 의하여 생성되는 부분공간을
라 하고
![]()
로 한다.
[단계 4] 에서부터
까지는 마찬가지 방법으로
![]()
![]()
위의 단계로부터 얻어지는
은 서로 직교인 직교집합이고, 각각의 크기를
로 하면, 즉 ![]()
라 정의하면 집합 ![]()
은
의 정규직교기저이다.
|
정리. |
QR 분해 |
행렬
가 rank
인
행렬이라면,
로 분해가능하다. 여기서
는
의 열공간 Col
의 정규직교기저로 만들어진
행렬이고,
은 가역인 크기
의 상삼각행렬이다.
이제 행렬
이고
인 경우
라 하자. Gram-Schmidt 정규직교화 과정에 의하여 행렬
의 열공간
의 정규직교기저
을 얻을 수 있다. 이제
와
사이의 관계를 알아보자.
![]()
가 Col
의 정규직교기저이므로
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
로 표현가능하다. 또한
(
)이므로 위의 표현은 다음과 같이 간단하게 표현가능하다. 즉,
![]()
![]()
![]()
.
이제 다음과 같이 상삼각행렬(upper triangular matrix)
을 정의하고,

앞서 정의한 행렬
와의 곱을 생각해보자. 행렬 곱
의
번째 열벡터는
이므로
의
번째 열벡터의 성분을 계수로 하는
의 열벡터들의 일차결합이다. 따라서
![]()
(1)
즉,
이다.
위에서 만들어진
차 정사각 삼각행렬
은 주대각성분이 모두 영이 아니므로, 가역행렬이다. 또한
이므로
는 (column) 직교행렬이다.
6. 고윳값, 고유벡터, 대각화(Diagonalization)
6.1 고윳값과 고유벡터
|
정의. |
고윳값(eigenvalue), 고유벡터(eigenvector) |
를
차의 정사각행렬이라 하자.
아닌 벡터
가 적당한 스칼라
에 대하여 다음을 만족하면
를
의 고윳값 (eigenvalue)이라 하고,
를
에 대응하는
의 고유벡터 (eigenvector)라고 한다.
![]()
가 고윳값
에 대응하는
의 고유벡터이면 영 아닌 임의의 스칼라
에 대하여
도
에 대응하는
의 고유벡터가 된다.
![]()
Note:
의 서로 다른 고윳값들에 대응하는 고유벡터들은 모두 일차독립이다.
6.2 닮음 행렬(similar matrix)과 행렬의 대각화(Matrix Diagonalization)
|
정의. |
닮은(similar) 행렬 |
정사각행렬
에 대하여 다음을 만족하는 가역행렬
가 존재할 때
는
와 닮은(similar) 행렬 이라고 한다.
![]()
이때,
라 쓴다.
(모든 행렬은 주대각선 성분이 고윳값인 삼각행렬과 닮음이고, 삼각행렬의 특성방정식은 쉽게 구할 수 있으며) 닮음행렬들은 행렬식이 같기 때문에, 특성방정식, 고윳값이 같다는 것을 아주 쉽게 보일 수 있다. 따라서 주어진 행렬문제는 좀 더 단순한 모양의 닮음행렬을 찾아서 쉽게 처리할 수 있다.
|
정의. |
대각화가능한(diagonalizable) 행렬 |
가 어떤 대각선행렬과 닮은 행렬일 때, 즉 적당한 가역행렬
가 존재하여
가 대각선행렬일 때
를 대각화가능한(diagonalizable) 행렬 이라 하며, 이때 행렬
를
를 대각화하는(diagonalizing) 행렬 이라고 한다.
|
정리. |
대각화가능할 필요충분조건 |
차의 정사각행렬
가 대각화가능할 필요충분조건은
가
개의 일차독립인 고유벡터 를 갖는 것이다. 이때,
는 자신의 고윳값
을 주대각선성분으로 갖는 대각선행렬
와 닮은 행렬이다.
▪
를 대각화하는 행렬
를 구하는 과정
1단계:
의
개의 일차독립인 고유벡터
을 구한다.
2단계:
을 열벡터로 갖는 행렬
를 만든다.
3단계: 이
가
를 대각화하는 행렬 이고
는
의 대응하는 고윳값
을 순서대로 주 대각선 성분으로 갖는 대각선행렬
이다.
![]()
6.3 직교대각화 (orthogonally diagonalizing)
|
정의. |
직교행렬(real orthogonal matrix, |
정사각행렬
에 대하여
이면
를 직교행렬(real orthogonal matrix)이라고 한다.
|
정리. |
직교행렬 정리 |
행렬
가 직교행렬 이면 다음을 만족한다.
(1) 행렬
의 행벡터들은 서로 직교이며, 정규벡터이다. (행들이 정규직교벡터이다)
(2) 행렬
의 열벡터들은 서로 직교이며, 정규벡터이다. (열들이 정규직교벡터이다)
(3)
는 가역행렬이다. (
,
)
(4)
를 만족한다. (즉, 길이를 보존한다)
![]()
▪ 직교행렬의 역행렬은 단지 전치행렬을 쓰기만 해도 구할 수 있다. (
)
|
정의. |
직교대각화 |
(1) 만일
와
가 같은 크기의 정사각행렬이라 할 때,
인 직교행렬
가 존재하면,
는
에 직교닮음(orthogonally similar)이라고 한다.
(2) 정사각행렬
에 대하여
를 대각화하는 직교행렬
가 존재할 때
는 직교대각화가능(orthogonally diagonalizable)하다고 하며
는
를 직교대각화하는(orthogonally diagonalizing) 행렬 이라고 한다.
|
정리. |
직교대각화가능할 필요충분조건 |
차 정사각행렬
가 직교대각화가능 할 필요충분조건 은
가 대칭행렬 인 것이다.
▪고윳값 분해(eigen-decomposition)
정사각행렬
가 대각화가능 하다면 대각선행렬
와 가역행렬
가 존재하여 다음이 성립한다.
특히
가 (실수) 대칭행렬 일 때는 위를 만족하는 대각선행렬
와 직교행렬
(즉
)가 존재 한다. 만일
와
,
를 각각
의
개의 (
) 고윳값과 대응하는
개의 (정규직교) 고유벡터라 하면,
는 직교행렬 (즉
)이 되고,

는 대각선행렬 이며, 다음이 성립한다.
.
이때
의 주대각선 성분은
의 고윳값이고,
의 열벡터는 그에 대응하는
개의 정규직교 고유 벡터 (따라서
의 o.n. basis가 된다)이다. 따라서 아래가 성립한다.
(
).
이 분해는 고윳값
와 그에 대응하는 고유벡터
만 이용하므로 행렬
의 고윳값 분해 (eigen-decomposition)라 하며, Spectral decomposition 이라고도 부른다. 여기서 모든
가 rank가 1 행렬 이고
가 rank 1 행렬들의 합 이므로 행렬
의 rank 1 decomposition 이라고도 한다.
(이 정리는 복소수 성분 행렬인 경우에도 유사하게 성립한다. Normal matrix!)
|
정리. |
|
차의 두 정사각행렬
가 닮음 이면 다음이 성립한다.
(1)
(![]()
(2)
![]()
▪
차 정사각행렬
의 고윳값 분해가 존재할 때, 다음 계산을 쉽게 할 수 있다.
(1) ![]()
![]()
(2) ![]()
(3) ![]()
![]()
(4)
(역행렬을 구하는 새 방법)
http://matrix.skku.ac.kr/math4ai/part1/ 에서 내용 가져왔습니다.
질문
1. http://matrix.skku.ac.kr/2018-album/SVD.html 에서 실습을 할 수 있어 들어갔는데,
이렇게 되어 있는데 여기서 RDF와 CDF가 뜻하는게 뭔지 알 수 있을까요?
이전
다음
3개의 댓글
이상구(LEE SANGGU)7월 26일 오후 5:57
( 정수 행렬이라도 실수 또는 복소수 고윳값도 가지므로 ...이런 경우까지 대비하여 ... 비용이 더 들더라도 ... 필요시 사용하는 ... )RDF 는 실수(체) R 상에서 연산을 수행하라는 의미이고, CDF가 복소수(체) C 상에서 연산을 수행하라는 의미입니다.그런데 장 군이 물어본 정수 행렬의 rank 구하는 경우에는 아무것도 없이 하거나 ZZ 또는 QQ 로 하는 것이 더 정확한 답을 더 빠르게 줍니다.<-- 그 이유를 알고 싶으면 WebEx OH 에 구두로 직접 물어 보세요^^
장환승(2016****69)7월 26일 오후 7:16
감사합니다
김호연(2020****32)8월 25일 오후 12:54
저도 행렬변환에 관하여 많이 알아갑니다~!!
-> 사소할 수도 있는 이 질문에 대해서 명확하게 답변을 주시니 감사했습니다.
5. 선형변환 (Linear Transformations)
|
정의. |
선형변환(linear transformation) |
에서
으로의 변환
가 임의의 벡터
와 임의의 스칼라
에 대하여 다음 두 조건을 만족하면
를
에서
로의 선형변환(linear transformation)이라고 한다.
(1)
(2)
(
)
|
정의. |
행렬변환(matrix transformation) |
에서
으로의 모든 선형변환
은 행렬변환
으로 나타낼 수 있다.
을 임의의 선형변환이라 할 때,
의 기본단위벡터 (표준기저)
에 대하여 모든
는

와 같이 나타낼 수 있고,
,
,
,
은 각각
행렬이므로

이라 할 수 있다. 따라서 모든 선형변환
은
![]()

(1)
의 형태로 표시할 수 있다. 여기서
,
,
,
을 열벡터로 갖는
행렬을
라 하면

이므로

![]()
이다. 위의 행렬
를 선형변환
의 표준행렬(standard matrix)이라 하며
라 표시한다. 따라서 (1)로 주어진 선형변환의 표준행렬은 기본단위벡터를 순서대로 대입하여 열을 구하여 쉽게 만든다.
|
정의. |
핵(kernel), 단사, 전사, 전단사, 동형사상(isomorphism) |
(1)
이 선형변환일 때,
에 의한 상이
이 되는
안의 벡터 전체의 집합을
의 핵(kernel)이라 하고
로 나타낸다. 즉
![]()

(2) 변환
가
를 만족하면 단사(one-to-one; injective)라 한다.
(3) 선형변환
에 대하여, 임의의
의 상
전체의 집합을
의 치역(range)이라 하고
로 나타낸다. 즉,
.
특히,
, 즉 변환
가 임의의
에 대해
인
가 존재하면 전사(onto, surjective)라 한다.
(4) 선형변환
가 단사이고 전사 (전단사)이면
이 되고,
를
에서
으로의 동형사상(isomorphism)이라고 한다.
|
정리. |
선형변환이 단사일 필요충분조건 |
이 벡터공간이고
가 선형변환일 때,
가 단사일 필요충분조건은
이다.
Comment:
QnA 공간이 있어 공부를 하면서 모르는 것을 바로 물어볼 수 있고, 다른 분들과 생각을 공유할 수 있다는 것은 굉장히 좋은 방법인 것 같습니다. 문의게시판을 통해 다른 분들이 질문 및 답변을 한 글을 참고하며 더 정확하고 효율적인 학습을 할 수 있었습니다.
[Final OK by SGLee]
채희준 Part Ⅱ 다변수 미적분학과 최적화 정리 - 3 (16강 ~ 17강)
작성자 : 채희준(2016****00)작성일 : 8월 3일 오후 7:54
Part Ⅱ 다변수 미적분학과 최적화 정리 - 3
http://matrix.skku.ac.kr/math4ai/part2/
2.5 Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)
Gradient Descent Algorithm은 어떤 모델에 대한 비용(Cost)를 최소화 시키는 알고리즘으로써, 머신러닝 및 딥러닝 모델에서 사용되는 가중치의 최적해를 구할 때 널리 쓰이는 알고리즘이다.
기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다.
의 그래디언트
방향이 점
에서
가 가장 가파르게 증가하는 방향이고, 음의 그래디언트
방향이 점
에서
가 가장 가파르게 감소하는 방향이다.
▪제약조건이 없는 최적화(unconstrained optimization) 문제
![]()
를 푸는 경사하강법(gradient descent method)에 대하여 살펴보자.
[Fermat의 임계점 정리]에 의해 위 문제의 최적해(optimal solution)
는 다음을 만족한다.
![]()
따라서 2.4절에서 배운 바와 같이 방정식
을 풀어서 나온 해들이 최적해가 되는지 판단하면 된다.
그러나 함수
가 비선형인 경우는 방정식을 풀어서 임계점을 구하는 것조차도 쉽지 않다. 이런 경우에는 수치적인 방법으로 임계점을 구한다. 최적화문제를 푸는 계산방법은 대개 반복법(iterative method)으로, 초기 근사해
으로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해
,
, ... 를 생성한다. 목표는
번째 근사해
또는 극한값
에서
을 만족하도록 하는 것이다.
▪
번째 반복단계는 보통 다음과 같은 (직선의 벡터방정식) 형식으로 구성된다.
![]()
여기서
는 탐색방향(search direction),
는 step-size (머신러닝에서는 이를 learning rate)라 한다. 즉
상에서
방향으로
만큼 이동하여
을 생성한다.
▪ 보통
는 함수값이 감소하는 방향으로 정한다. 즉 다음을 만족한다.
![]()
이러한
는 특히 하강방향(descent direction)이라고도 한다.
방향을 따라 움직이면 함수
가 감소한다는 보장이 있으므로 step-size
는
이 만족되도록 정한다.
▪ step-size
를 택하는 방법은 대개 다음 두 가지로 나눌 수 있다.
① 반직선
(
) 상에서 함수
의 값이 가장 작게 되는
를 찾는다.
![]()
이 방법을 exact line search라 하고, 이때의
를 optimal step-size라 한다. 대개는 cost가 많이 들어서 잘 사용되지 않는다.
② 만일
을 정확하게 풀지는 않지만 함숫값이 충분히 감소한다는 것을 보장하는
를 선택하는 방법이 있다면, exact line search를 피하여 cost를 상당히 줄일 수 있다. 이 방법을 inexact line search 라 한다. 즉, 다음 조건을 만족하는
를 찾는다.
![]()
여기서
이다. 이를 그림으로 표현하면 다음과 같다.

따라서 위의 두 부등식을 만족하는
는 폐구간
에서 택하면 된다.
[참고]
가 만족해야 하는 조건은 여러 가지가 있으나, 위의 두 부등식이 주로 쓰인다. 이를 Wolfe condition이라 하고, 그 중 첫 번째 부등식을 특히 Armijo condition이라 한다.
● 경사하강법(gradient descent method)은 탐색방향을
로 택하는 경우이다. 앞서 살펴본 바와 같이 음의 그래디언트
방향이 점
에서
가 가장 가파르게 하강하는 방향이므로, 경사하강법 방법의 아이디어가 쉽게 이해된다. 경사하강법은 모든 차원과 모든 공간에서의 적용이 가능하다. 심지어 무한차원 벡터함수에도 쓰일 수 있다. (이 경우 해당 차원이 만들어내는 공간을 함수공간(function space)이라고 한다. 벡터공간을 일반화 하는 함수공간은 모두 수렴의 개념을 갖춘 선형공간(linear space)으로서, 수렴의 개념을 Norm에 입각한 거리에 의해 정한 Banach공간 또는 Hilbert공간인 경우가 많으나, 보다 일반적인 선형위상공간도 포함한다.) 다음은 경사하강법의 알고리즘이다.
[경사하강법] (
의 의미는
같이
이 1 보다 아주 작다는 의미이다.)
[단계 1] 초기 근사해
와 허용오차(tolerance)
을 준다.
이라 한다.
[단계 2]
를 계산한다. 만일
이면, 알고리즘을 멈춘다.
[단계 3] line search를 수행하여 적절한 step-size
를 구한다.
[단계 4]
,
라 두고 [단계 2]로 이동한다.
▪ 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다.
[출처] J. Barzilai 와 J. M. Borwein, Two-Point Step Size Gradient Methods, IMA J. Numer. Anal. (1988) 8 (1): 141-148.
,
, ![]()
여기서
이고,
는 Hessian
가 양의 정부호(positive definite)인 이차함수이므로 exact line search를 수행하면,
는 다음과 같이 closed-form으로 나온다.

위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.

[경사하강법의 iterative 단계(빨간색)]
[경사하강법은 탐색방향을 현재의 위치
의 근방에서 가장 가파르게 하강하는 방향
로 사용한다. 그러나 이 경우 그림의 빨간색 경로와 같이 해 근처에서 zigzag 현상이 발생하여 마지막 단계에서 수렴속도가 많이 늦어진다. 이를 보완하여 Conjugate Gradient Method(CGM, 공액경사법, 켤레기울기법)은
와 이전의 방향
를 조합하여 새 탐색방향
으로 사용한다. (녹색)]
● 뉴턴 방법(Newton’s method)은 탐색방향을
로 택하는 경우를 말한다. 왜냐하면
근방에서
는 다음의 이차함수를 이용하여 근사화 할 수 있기 때문이다.
![]()
따라서
에서
로 진행하기 위하여, 최적화 문제
![]()
의 최적조건으로부터
를 얻을 수 있다.
![]()
다음은 뉴턴 방법(Newton’s method)의 알고리즘(Algorithm)이다.
[뉴턴 방법(Newton’s method)]
[단계 1] 초기 근사해
과 허용오차(tolerance)
을 준다.
이라 한다.
[단계 2] 만일
이면, 알고리즘을 멈춘다.
[단계 3]
를 계산한다.
[단계 4]
라 두고 [단계 2]로 이동한다.
이 양의 정부호(positive definite) 행렬이면, 역행렬
도 양의 정부호 행렬이므로, 뉴턴 방법의 탐색방향
역시 하강방향(descent direction)이 된다. 즉
![]()
이다. 따라서
방향으로 진행하면 함수값이 감소함을 알 수 있다.
▪ 그러나 뉴턴 방법은 헤시안을 계산해야 하므로, 변수
이 큰 함수의 경우 헤시안을 계산하는 데 많은 연산이 필요하여 효과적이지 않을 수 있다. 그리고 초기 근사해
이 문제의 해
의 근방에 있어야만 뉴턴 방법이 수렴한다는 보장이 있으나, 이는 미리 알 수 없으므로 실제 뉴턴 방법을 적용할 때는 step-size
도 같이 고려한다. 즉 적절한 line search를 동반한다. 그 후
을 계산한다.
![]()
● 이외에도
를 택하는 방법에 따라 quasi-Newton method, conjugate gradient method 등이 있다.
2.6 중적분 (double integral, multiple integral)
|
정의. |
이중적분 |
직사각형 영역
에서
의 이중적분은 다음과 같이 정의된다.
![]()

[(중적분) 구분구적법을 2축에 적용하는 방법, 긴 직육면체나무막대들의 부피를 구해 더하는 방식]
▶ 같은 방법으로 3차원 영역
위에서
의 3중적분(triple integral)도 정의할 수 있다.
(3차원 평면 위의 작은 조각 부피에 높이를 곱하여 부피를 구하여 그것 모두를 더하는 방식)
|
정리. |
Fubini의 정리 (연속 2변수함수의 2중적분 경우, 적분순서를 바꾸어도 이중적분값은 같다) |
가 직사각형 영역
에서 연속이면 다음이 성립한다.
|
정리. |
연속함수의 2중적분의 경우, 적분영역이 직사각형이 아닌 경우!! |
(1)
가 영역
에서 연속이면 다음이 성립한다.
![]()
(2)
가 영역
에서 연속이면 다음이 성립한다.
![]()
|
정리. |
이중적분의 변수변환 |
전단사함수
, ![]()
가 연속인 편도함수를 갖고,
이라 하자. 그러면 연속함수
에 대하여 다음이 성립한다.
![]()
※
을 ![]()
의 야코비안(Jacobian)이라 하고
으로 나타낸다.
극좌표에서의 이중적분은 변수변환의 특수한 예이다. 극좌표
and
.
에서의 야코비안은
으로 주어지고, 이중적분은 다음과 같이 쓸 수 있다.
![]()
![]()
![]()

여기서
,
,
,
는 적분영역
과 변환
에 따라 정해진다.
comment:
경사하강법을 단순히 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것으로 알고 있었습니다. 이번 강의를 통해서 learning late를 exact line search, inexact line search로 찾는 법을 새롭게 배우는 등, 경사하강법에 대해 좀 더 정확하게 알게 되어 좋습니다.
그리고 중적분에 대해서 복습할 수 있는 시간이었습니다.
이상구(LEE SANGGU)8월 3일 오후 9:08
채희준 군, Good job^^
Part Ⅲ 확률통계와 빅데이터 정리 - 3 (22강 ~ 23강)
작성자 : 채희준(2016****00)작성일 : 8월 19일 오후 3:53
Part Ⅲ 확률통계와 빅데이터 정리 - 3
http://matrix.skku.ac.kr/math4ai/part3/
3.2 연속확률분포(continuous probability distribution)
▶ 확률밀도함수(pdf)를 이용해 분포를 표현할 수 있는 경우를 의미한다.
연속 확률 분포를 가지는 확률변수는 연속 확률변수라고 부른다.
● 균등분포(Uniform distribution) ![]()
(1) 연속확률변수
가
와
사이에서 일정한 값을 취하고
일 때
는 균등분포(uniformly distribution)를 따른다고 하며,
로 표시한다.

(2)
일 때, 균등분포의 누적 분포함수(distribution function)는 다음과 같다.

(3)
일 때, 확률변수
의 기대값과 분산은 다음과 같다.
, ![]()
![]()
● 정규분포(Normal distribution) ![]()
(1) 확률변수
의 확률밀도함수가 다음과 같을 때,
는 정규분포(normal distribution)를 따른다고 하고
으로 표시한다.
![]()
정규분포의 확률밀도함수
가 그리는 아래 그래프를 정규분포곡선(normal distribution curve) 이라 한다.

(2)
일 때, 정규분포의 확률분포함수는 다음과 같다.
![]()

(3)
일 때, 정규분포의 기댓값과 분산은 다음과 같다.
, ![]()
(4) 확률변수
가 정규분포를 따를 때,
가
이상
이하의 값을 취할 확률은
![]()
이때 이것은 바로 아래쪽 그림의 색칠한 부분의 넓이를 의미한다.

|
정리. |
정규분포 곡선의 성질 |
(1) 형태는 종(Bell) 모양이다.
(2)
이고
을 축으로 좌우 대칭이다.
(3)
에서 최대값
을 갖고 그 점이 최빈수(mode, 가장 많이 관측되는 수)이다.
(4)
축을 점근선으로 갖는다. 단, ![]()
(5) 변곡점은
이고
에서 거의
축과 접하게 된다.
(6) 곡선과 수평축(
축) 사이의 면적은
이다.
(7)
에서 아래로 오목하고
에서 아래로 볼록하다.
(8)
가 일정하고
가 변화할 때
가 크면 오른쪽으로,
가 작으면 왼쪽으로 이동한다.
(9)
가 일정하고
가 변화할 때
가 크면 넓고 완만한 곡선,
가 작으면 좁고 뾰족한 곡선을 이룬다.
● 표준정규분포(Standard normal distribution) ![]()
(1) 확률변수
가 정규분포
를 따를 때, 표준화 확률변수
는 다음과 같은 확률밀도함수를 갖는다.
![]()
이 때,
는 표준정규분포(standard normal distribution)를 따른다고 하고,
로 표시한다.
(2)
일 때,
의 확률분포함수
는
![]()
이다.
를 표준정규분포함수(standard normal distribution function)라 한다.
(3)
일 때, 표준정규분포의 기댓값과 분산은 다음과 같다.
, ![]()
정규분포의 표준화 [표준정규분포의 기댓값과 분산]
(1) 확률변수
의 평균이
, 표준편차가
라 하면
![]()
![]()
따라서 확률변수
의 평균과 분산은 각각
이 된다.
표준화 ![]()
의 분포
의 분포
(2) 확률변수
가 정규분포
을 따르는 분포일 때, 확률
을 구하려면 변환
에 의하여 표준화된 확률변수
가 표준정규분포
에 따르는 분포를 이용하여
을 구한다.
라고 하면 ![]()
![]()
![]()
이항분포의 정규근사
확률변수
의 분포가 이항분포일 때
의 평균은
, 분산은
이므로
는 정규분포
에 근사 한다. 표준화한 변수
는 표준정규분포
에 가까워진다.

● 지수분포(Exponential distribution) ![]()
(1) 사건이 서로 독립적일 때, 단위 시간동안 발생하는 사건의 횟수가 푸아송 분포를 따른다면, 다음 사건이 일어날 때까지 대기 시간은 지수분포(Exponential distribution)를 따른다고 한다.
(2) 확률변수
가 지수분포를 따를 때, 확률밀도함수는 다음과 같이 주어진다.
![]()
이때
는 단위 시간당 발생하는 사건의 빈도를 나타내며,
으로 표시한다.
(3)
일 때,
의 확률분포함수는 다음과 같다.
![]()
예를 들어,
일 때, 지수분포의 확률밀도함수와 확률분포함수의 그래프는 다음과 같다.

(4)
일 때, 확률변수
의 기댓값과 분산은 다음과 같다.
, ![]()
*
는 단위 시간에 사건이
번 발생할 때, 사건과 사건 사이에 평균적인 대기 시간이
임을 뜻한다.
(5) 지수분포는 부품이나 시스템의 고장시간에 대한 모형으로 사용되고, 신뢰성 이론, 기대 시간, 수명 시간 등의 분포에서 이용되며, 지수분포는 종종 어떤 특정한 사건이 발생할 때까지 걸린 시간의 분포에서 사용 한다. 예를 들어, 지금부터 지진이 발생할 때까지의 시간, 새로운 전쟁이 일어날 때까지의 시간, 잘못 걸려온 전화를 받을 때까지의 시간 등에서 이용된다.
● 중심극한정리 (central limit theorem, CLT)
여러 통계분석기법에서 분석모형이 정규분포를 따른다는 가정을 하는 경우가 많다. 그 근거가 바로 중심극한정리이다. 이 정리는 확률, 통계 이론뿐만 아니라 실용적인 면에서도 의미가 크며, 품질관리에서도 많이 이용된다.
중심극한정리(Central Limit Theorem, CLT)란 동일한 확률분포를 가진 독립 확률변수
개의 평균의 분포는
이 적당히 크다면 정규분포에 가까워진다는 이론이다. 즉, 평균이
이고 분산이
인 모집단으로부터 추출한 크기가
인 확률표본의 표본평균
는
이 증가할수록 모집단의 분포유형에 상관없이 많은 경우는 근사적으로 정규분포
을 따른다는 것이다.

이를 정리하면 다음과 같다.
|
정리. |
표본평균의 확률분포와 중심극한정리 |
(1) 정규 모집단으로부터의 표본평균에 대한 확률분포
크기가
인 확률표본
이
, ![]()
이면, 표본평균
의 확률분포는 다음과 같은 정규분포를 따르게 된다.
![]()
(2) 중심극한정리 [Key Idea 3]
평균이
이고 분산이
인 모집단으로부터 추출한 크기
인 확률표본의 표본평균
는 표본의 크기가 큰 경우(보통 30 이상), 근사적으로 평균이
이고 분산이
인 정규분포를 따른다.
● 확률과 통계에서 중심극한정리(Central Limit Theorem)가 의미하는 것은 (대부분의 경우) 모집단의 분포가 연속형이든, 이산형이든, 또는 한쪽으로 치우친 형태이든 간에 표본의 크기가 클수록 표본평균의 분포가 점점 정규분포에 가까워진다는 의미이다.
3.3 결합 확률분포, 공분산(Covariance)과 상관계수(Correlation)
* 확률변수가 두 개 이상 있는 경우에는 각각의 확률변수에 대한 확률분포 이외에도 확률분포 쌍이 가지는 복합적인 확률분포를 살펴보아야 한다.
두 확률변수 값의 쌍이 어떤 확률분포를 가지는지 안다면 둘 중 하나의 확률분포의 값을 알고 있을 때 다른 확률분포가 어떻게 되는지도 알 수 있다.
|
정의. |
결합 확률함수, 결합 확률분포 |
(1)
와
가 이산확률변수이면
와
의 결합 확률함수(joint probability function)는 다음과 같다.
![]()
![]()
(2)
와
의 가능한 모든 값에 대하여
의 값을 나타낸 것을 결합 확률분포(joint probability distribution)라 한다. 이를 표로 나타내면 다음과 같다.
|
|
|
|
|
|
|
합 |
|
|
|
|
|
|
|
|
|
관한
주변 확률 분포 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
합 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
(3)
,
의 결합분포가 주어져 있을 때 주변확률분포(marginal probability distribution)는 다음과 같이 정의된다.
![]()
![]()
즉, 주변분포란 결합 확률분포에서 하나의 확률변수에 대해서만 고려한 확률분포를 뜻한다.
|
정리. |
결합 확률분포 |
(1) 모든
에 대하여
![]()
(2) 모든
에 대하여
의 합은
이다. 즉, ![]()
(3) 모든
에 대하여 ![]()
* 여러 개의 연속확률변수에 대하여는 다음과 같은 결합밀도함수를 이용하여 결합 확률분포를 나타낸다. (여기서 중적분의 지식이 필요하다.)
|
정의. |
결합밀도함수(joint density function) |
연속확률변수
와
의 결합밀도함수(joint density function)
는 다음과 같이 정의된다.
(1) 모든
에 대하여
이다.
(2) 모든
에 대하여
이다.
(3) 모든
에 대하여
이다.
(4)
가
평면상의 임의의 영역
에 들어갈 확률은
![]()
로 주어진다.
(5)
와
의 주변확률밀도함수(marginal probability density function)는 각각 다음과 같이 정의된다.
, ![]()
* 여러 확률변수 사이의 상관관계를 숫자로 나타낸 것이 공분산과 상관계수이다.
* 확률변수
가 갖는 분포를 이해하기 위해 사용하는 것이 첫 번째로 평균이고, 두 번째로 분산이다. 평균을 이용하여 분포의 중간부분을 알아내고, 분산으로써 분포가 얼마나 퍼져있는지 알아낸다.
▪ 그렇다면 확률변수가 2개일 때 이 확률분포들이 어떤 모양으로 되어있는지를 알고 싶으면, 가장 먼저
의 평균, 다음이
의 평균을 생각하면 된다. 그 다음으로 얼마나 퍼져있는지 알기위해 분산 특히 각 확률변수들이 어떻게 퍼져있는지를 보여주는 개념이 공분산(Covariance)이다.
▪ 공분산은
의 편차와
의 편차를 곱한 것의 평균이다. 그런데 공분산에도
와
의 단위의 크기에 영향을 받는다는 문제점이 있다. 이것을 보완하기 위해 상관계수(Correlation)를 사용한다. 상관계수라는 개념은 확률변수의 절대 크기에 영향을 받지 않도록 표준화 시킨 것이고, 분산의 크기만큼 나누었다고 생각하면 된다.
|
정의. |
공분산, 상관계수 |
(1) 확률변수
와
의 공분산은 다음과 같이 정의된다.
![]()
(2) 확률변수
와
사이의 상관계수는 다음과 같이 정의된다.
▶ 공분산 행렬(Covariance Matrix)
행렬을 이용하면 두 변수가 서로 어떤 관계를 가지는지를 쉽게 표현할 수 있다. 특히, 각 데이터의 분산과 공분산을 이용해 만드는 공분산 행렬이 이에 해당한다.
개의 확률변수
,
,
를 하나의 벡터로 나타낸 것을
라 하자. 벡터
의 공분산 행렬(covariance matrix)은
성분이
일 때는
의
번째와
번째 확률변수의 공분산이고,
일 때는
번째 확률변수의 분산인
행렬을 말하는 것으로
를 사용하여 나타낸다. 쉽게 말하면, 정사각행렬의 값을 각 변수의 분산(주대각선)과 공분산으로 채운 것이 바로 공분산 행렬이다.


공분산행렬에서 고유벡터와 고윳값을 찾는 것은 데이터의 주성분(principal component)을 찾는 것과 동일하다. 왜냐하면 고유 벡터는 행렬이 어떤 방향으로 힘을 가하는지를 표현하는데, 이것은 데이터가 어떤 방향으로의 분산이 가장 큰지를 구하는 것과 같기 때문이다. 고윳값(Eigenvalues)은 각 고유벡터에 해당하는 상관계수이다. 우리가 다루는 행렬이 공분산 행렬일 경우 고윳값은 각 축에 대한 공분산 값이 된다. 그리고 고윳값이 큰 순서대로 고유벡터를 정렬하면, 결과적으로 중요한 순서대로 주성분을 구하는 것이 된다.
|
정의. |
독립사건, 종속사건 |
두 개의 사건
가
또는
이고 ![]()
를 만족할 때 통계적 독립(Statistically Independent)이라 하고,
와
를 독립사건이라 한다.
|
정리. |
공분산, 상관계수 |
(1)
,
가 서로 독립이면
이므로 공분산은
이다.
(2)
,
가 서로 독립이면
이므로 상관계수는
이다. ■
comment.
통계에 매우 약한데, 이번 강의에서는 특히 지수분포, 표본평균의 확률분포, 공분산에 대해서 이해하기가 매우 힘들었습니다. 공분산행렬은 데이터 주성분 분석과 연결되어 매우 중요해 보입니다. 이에 대해서 좀 더 공부해야겠습니다.
3개의 댓글
나종진(2017****17)8월 19일 오후 5:16
깔끔한 정리 감사합니다.
박은아(2016****73)8월 20일 오후 2:09
결합밀도함수와 공분산에 대해 정리 감사합니다! 개념 이해 과정에서 많은 도움이 되었습니다.
김호연(2020****32)8월 22일 오후 8:51
오오 정리 감사합니다
2. 질문
[Final OK by SGLee]
[Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,
작성자 : 채희준(2016****00)작성일 : 7월 19일 오후 4:58
[Discuss] How to find least square solution? 해가 존재하지 않는 연립방정식의 optimal solution [최소제곱해, least square solution] 는 어떻게 구하나?]
때로는 최소제곱법을 이용하여 구한 근사 직선이 오차가 너무 커지는 경우도 있다. 예를 들면, 그림 14-2-2 (a), (b) 의 경우는 최적곡선이 직선이 아니다. 실제로(a), (b) 의 경우에 데이터의 점에 가장 근사한 곡선은 각각 2차식인
![]()
이고 3차식인
![]()
이다. 일반적으로 데이터의 점
에 가장 근사한
차의 다항식
(7)
을 구하고자 할 때는 다음과 같이 한다.
(a)
(b)
그림 14-2-2 데이터 점들을 이었을 때 직선이 나오지 않는 경우
우선, 식 (7)에 주어진 데이터의 점을 대입하여 미지수가
인 연립방정식
(8)
를 얻는다. 만일
의 값 중 서로 다른 것이
개 있다면,
이므로 정규 시스템
는 유일한 해
를 갖는다. 이 때 이 계수를 갖는
차 다항식이 바로 가장 근사한 곡선의 방정식이다.
위의 내용 중에서 마지막 부분,
만일
의 값 중 서로 다른 것이
개 있다면,
이므로
가 잘 이해가 되지 않습니다... 어떻게
가 되는 건가요?
***
선형대수학에서 방데르몽드 행렬(-行列, 영어: Vandermonde matrix)은 각 행이 초항이 1인 등비수열로 구성된 행렬이다. 프랑스의 수학자 알렉상드르 테오필 방데르몽드의 이름에서 따왔다. 다항식 보간법, 최소 자승 근사법 등에서 나타난다.
방데르몽드 행렬은 다음과 같은 형태를 가진다.

간단히 표현하면 모든
와
에 대하여 다음과 같이 쓸 수 있다.
![]()
일부에서는 이 행렬의 전치행렬을 방데르몽드 행렬이라고 부르기도 한다.
방데르몽드 행렬의 행렬식은 다음과 같이 간단히 정리할 수 있다.
.
이 행렬식을 방데르몽드 행렬식 또는 방데르몽드 다항식(영어: Vandermonde determinant, Vandermonde polynomial)이라고 한다.
https://ko.wikipedia.org/wiki/%EB%B0%A9%EB%8D%B0%EB%A5%B4%EB%AA%BD%EB%93%9C_%ED%96%89%EB%A0%AC
증명 https://steemit.com/kr-math/@beoped/vandermonde-determinant

답:
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로
데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다.
따라서 A^T A 의 행렬식도 영이 아닙니다.
* 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다.
[3-4] ![]()
가 다음과 같을 때 연립방정식
의 최소제곱해를 찾아라.
3.
, ![]()
Ans
이므로 ![]()
4.
, ![]()
Ans

A=matrix([[1, 3, 5, 2, -2], [-2, 1, -2, 1, 0], [-1, -3, 0, 1, 0], [-3, 0, 1, 0, 0], [0, 1, 2, -2, 1]])
print A
print
b=matrix(5, 1, [1, 0, 1, 0, 0])
print b
print
AT=A.transpose()
AtA=AT*A
print AtA
print
Atb=AT*b
print Atb
print
AtA.solve_right(Atb)
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
# normal equation로 계산한 것과 비교
AtA = A.transpose()*A
Atb = A.transpose()*b
AtA.solve_right(Atb)
따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
박정호(2014****10)7월 19일 오후 5:35
A의 column들이 일차 독립일 경우 A^TA가 역행렬을 갖습니다. 현재 A의 열이 k+1개가 있으므로 x_1, x_2, ..., x_n 중 서로 다른 값이 k+1개만 되면 column끼리의 일차 결합이 불가능해서 full column rank를 가진다는 설명인 것 같습니다.
이상구(LEE SANGGU)7월 19일 오후 5:53
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로 데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다. 따라서 A^T A 의 행렬식도 영이 아닙니다. * 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다. 따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
김진웅(2015****73)7월 19일 오후 6:16
'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다'는 것은 n 은 적어도 k+1개 이상이고, '서로 다른' 조건에 의하여 (1)'A는 full column rank를 갖는다'는 것입니다. '|A^tA|≠0'이라는 것은 'A^tA가 가역'이라는 것입니다. 'A^tA가 가역'이라는 것은 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (A의 가역을 보이기 위해서 'Ax=0일 때 x=0'을 보이면 됩니다.) 따라서, 'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다면 |A^tA|≠0이다'라는 것은 (1)'A는 full column rank를 갖는다'일 때 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (1)을 이용하여 (2)가 옳음을 보이면 됩니다. (2)의 A^tAx=0부터 시작합니다. x^tA^tAx=0 (x^t를 양변에 곱했습니다.) (Ax)^tAx=0 (Ax)·(Ax)=0 (Ax는 nx1 벡터입니다. 벡터끼리의 내적입니다.) ||Ax||^2=0 Ax=0 입니다. (1)에 의해, 즉 'Ax=0이면 x=0'(full column rank이면 왼쪽 식을 만족합니다)에 의해 x=0입니다. 따라서 (1)일 때 (2)'A^tAx=0 일 때, x=0'가 옳음을 보였습니다.
[Final OK by SGLee]
Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구
작성자 : 채희준(2016****00)작성일 : 8월 3일 오후 10:18
[Final OK by SGLee]
질문 by 채희준
답변 by 김진웅, 이상구
Finalized by 채희준
Q:
수반행렬을 이용한 가역행렬의 역행렬 구하기를 해보는 중에 error 가 발생했습니다.
C = random_matrix(QQ, 10, 10)
print'C='
printC
ifC.is_invertible()==True:
dC = C.det() # 행렬식 구하기
adjC = C.adjugate() # 수반행렬 구하기
print("inverse of C = (1/dC)*adjC =")
print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기
else:
print'C is not invertible'
C=
[ -1 0 -1 0 -1 0 2 1 1/2 -2]
[ 0 1 1 1 0 -1 2 0 -2 -1]
[ 2 2 1 1/2 1 0 0 -1 0 1]
[-1/2 0 0 0 1 0 -1 0 0 0]
[ 0 2 -1 -1 2 0 -2 1/2 -2 1]
[ 0 -1/2 0 0 0 2 0 0 2 0]
[ 0 2 0 2 -1/2 2 -1 -1 0 -2]
[ -2 0 0 1 -1 0 -2 1 0 2]
[ 0 0 -1/2 1 -2 1 -1 1 1 1]
[ 0 0 0 1 1 -1 1/2 -1 0 0]
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-1-a60cf26a2116> in <module>()
5if C.is_invertible()==True:
6 dC = C.det() # 행렬식 구하기
----> 7 adjC = C.adjugate() # 수반행렬 구하기
8 print("inverse of C = (1/dC)*adjC =")
9 print((Integer(1)/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기
AttributeError: 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' object has no attribute 'adjugate'
교재 part1 예제에 나온 코드를 활용한 것인데 왜 이런 error가 뜨는 지 모르겠습니다.
sage를 이용한 실습을 늦게 시작해 1주차 내용을 4주차에 와서 질문하게 됐습니다. 죄송합니다... 혹시 해결방법을 아시는 분은 도와주시면 감사하겠습니다.
A:
김진웅(2015****73)8월 4일 오전 1:16
여기에서 해 보세요 http://matrix.skku.ac.kr/KOFAC/ 실행 되는 것 확인했습니다. print는 괄호 쳐 주세요.
이상구(LEE SANGGU)8월 4일 오전 9:24
김진웅 군이 맞습니다. print는 괄호 쳐 주세요. <--- 명령어가 일부 update 되었습니다. 아래와 같이 하시면 됩니다. C = random_matrix(RDF, 10, 10) print ('C=') print (C) print if C.is_invertible()==True: dC = C.det() # 행렬식 구하기 adjC = C.adjugate() # 수반행렬 구하기 print("inverse of C = (1/dC)*adjC =") print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기 else: print ('C is not invertible')
comment:
여기서 실습을 했었는데, 여기는 업데이트 전 명령어를 사용하고 있었군요.
http://matrix.skku.ac.kr/KOFAC/ 에서 같은 코드로 실행해보니 제대로 나오는 것을 확인했습니다.
답변 해주셔서 감사합니다!!
Share
C=
[ 0 2 0 1 2 0 0 1 -1 2]
[ 1/2 -1 -2 1/2 1 1 -1 -1 0 -1]
[ 0 -1/2 0 1 -1 1 1 -1/2 0 0]
[ 2 1 1 -1 -2 0 -1 1 1 1]
[ -1 1 0 1/2 0 1/2 -1 1 0 0]
[ 0 -1 -1/2 -1 0 2 -1 -2 1 -2]
[ 0 1 1 -1 0 -1 -2 0 -1/2 1]
[ 1 1 1 2 -1 0 2 0 1 -1]
[ -2 0 0 1 1 0 2 -1 -2 0]
[ 2 0 1 0 -2 0 0 1 -2 -2]
inverse of C = (1/dC)*adjC =
[ 21319/103933 7790/103933 4112/103933 -548/103933 -35008/103933 3198/103933 794/103933 5168/103933 -18714/103933 11765/103933]
[ -15012/103933 45528/103933 -83930/103933 95100/103933 33524/103933 3374/103933 -14892/103933 27162/103933 88674/103933 -14627/103933]
[ 39992/103933 -81076/103933 74932/103933 -100978/103933 -29712/103933 30170/103933 39340/103933 -2074/103933 -86850/103933 20578/103933]
[ 7343/103933 6476/103933 62336/103933 -54410/103933 4732/103933 -17034/103933 37110/103933 18492/103933 -42668/103933 3243/103933]
[ 41337/103933 -34144/103933 5672/103933 -62226/103933 -27260/103933 20992/103933 -118/103933 -3386/103933 -50887/103933 7938/103933]
[ 34693/103933 -28284/103933 40252/103933 -9004/103933 5910/103933 34338/103933 -20334/103933 -19778/103933 -19202/103933 9717/103933]
[ -1097/103933 -5978/103933 -33148/103933 33535/103933 -12200/103933 1922/103933 -41382/103933 1611/103933 34187/103933 -4759/103933]
[ 14216/103933 -32812/103933 3600/103933 -30406/103933 17880/103933 -6906/103933 -34084/103933 -19740/103933 -42266/103933 15153/103933]
[ -5184/103933 -11196/103933 -5056/103933 -9032/103933 2604/103933 4156/103933 -6638/103933 13866/103933 -24710/103933 -18510/103933]
[ 12270/103933 -3814/103933 42762/103933 5018/103933 -16268/103933 -10318/103933 10178/103933 -16219/103933 -7675/103933 -11764/103933]
[Final OK by SGLee]
Finalized by 정원철. Q by 채희준 A by 김범준, 이상구교수님, 정원철, 김호연 [sage 명령어 질문]
작성자 : 정원철(2017****79)작성일 : 8월 4일 오후 6:44
QR분해를 통해 최소제곱해를 구하는 것을 sage로 하고 있었습니다.
저는 아래와 같이 inverse 명령어를 생각했는데,
print("최소제곱해, R^-1*Q^T*b=")
print(R.inverse()*Q.transpose()*b)
교재에서는 inverse 대신에 solve_right() 명령어를 쓰고 있었습니다.
print(R.solve_right(Q.transpose()*b))
solve_right() 명령어는 어떤 계산을 해주는 건가요??
명령어에 대해서 궁금할 때, sage에서 명령어 설명을 보려면 어떻게 해야 하나요?
김범준(2017****99)8월 4일 오후 3:12
solve_right 명령어가 '해'를 곧바로 구하여 주는 명령어로 알고있습니다. 단 solve_right()명령어가 곧바로 해를 구하여주기때문에 생략되는 과정들을 표현하기 위해 여러 명령어를 함께 써주는 것입니다. 예시로 교재에 있는 코드중에 solve_right() 명령어를 제외한(단, 구할 해가 있는 식은 포함)다른 코드를 지워도 연산에 문제가 없는 것을 확인할 수 있을것입니다.
이상구(LEE SANGGU)8월 4일 오후 5:11
1. A 의 inverse 즉 역행렬이 존재하지 않는 Ax=b 는 inverse 명령어로는 풀 수가 없답니다. 2. 더구나 A 가 정사각행렬이 아니면 inverse 를 생각조차 할 수 없답니다^^ 3. 또 f(x) = 0 에서 f(x) 가 고차 다항식이면 답을 어떻게 구하나요? 인수분해도 안되고 근의 공식도 없는데 ... 그리고 f(x) 가 복잡한 합성함수 이면 ... 도함수를 구하기도 어렵지만 f'(x) = 0 의 근을 어떻게 구할 수 있나요? 이 근 (임계점)을 못 구하면 ... 극대, 극소 어떤 것도 얘기 할 수가 없으므로 ... 언제 가장 손해를 볼지 또 이익이 날 지를 전혀 예측을 할 수 없는데 ... 결론: 우리는 이 강좌 Math4AI 에서 이전에 배운 수학 지식에 보태서 ... 이전에 할 수 없었던 것들을 할 수 있는 일반적인 수학적 방법을 배우는 중 이랍니다. 그래야 단순한 기계에 불과한 컴퓨터가 ... 우리가 (주는 알고리즘에 따라) 시키는 대로 ... 알아서 (우리가 제공한 조건 하에서는 항상 존재하는) 최적해를 찾아서 ... 우리의 의사 결정을 돕는 유용한 AI 로 기능을 하게 할 수 있는 것 이랍니다. 이해한 학생이 있으면 ... 누구라도 나서서 (제목에 모두의 이름 넣어) Finalize 시켜 주세요^^ 그리고 (위의 두 명 포함 세 명 모두) 중간고사 PBL 에 포함시켜서 제출하시면 됩니다^^
정원철(2017****79)8월 4일 오후 6:19
AX = B를 풀 때, A.solve_right(B)는 A를 기준으로 오른쪽으로 연산하여 B를 구한다는 말입니다. solve_right(B, check=True) Try to find a solution X to the equation AX=B. If self is a matrix A, then this function returns a vector or matrix X such that AX=B. If B is a vector then X is a vector and if B is a matrix, then X is a matrix. Over inexact rings, the output of this function may not be an exact solution. For example, over the real or complex double field, this method computes a least-squares solution if the system is not square. Note In Sage one can also write A \ B for A.solve_right(B), that is, Sage implements “the MATLAB/Octave backslash operator”. INPUT: B – a matrix or vector check – boolean (default: True); verify the answer if the system is non-square or rank-deficient, and if its entries lie in an exact ring. Meaningless over inexact rings, or when the system is square and of full rank. OUTPUT: If the system is square and has full rank, the unique solution is returned, and no check is done on the answer. Over inexact rings, you should expect this answer to be inexact. Moreover, due to the numerical issues involved, an error may be thrown in this case – specifically if the system is singular but if SageMath fails to notice that. If the system is not square or does not have full rank, then a solution is attempted via other means. For example, over RDF or CDF a least-squares solution is returned, as with MATLAB’s “backslash” operator. For inexact rings, the check parameter is ignored because an approximate solution will be returned in any case. Over exact rings, on the other hand, setting the check parameter results in an additional test to determine whether or not the answer actually solves the system exactly. If B is a vector, the result is returned as a vector, as well, and as a matrix, otherwise. 반대로 XA = B 상황에서는 solve_left() 함수를 쓸 수 있겠죠. sagemath의 메서드는 아래 사이트에서 Quick_search 기능을 통해 검색하실 수 있습니다. https://doc.sagemath.org/html/en/reference/matrices/sage/matrix/matrix2.html?highlight=solve_right
김호연(2020****32)8월 4일 오후 6:20
solve_right()는 해를 구하는 과정을 생략하고, 방정식의 해를 구하는 명령어로 알고 있습니다.
3. 답변
[Final OK by SGLee]
[Finalized by 채희준, 권서영 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구작성자 : 채희준(2016****00)작성일 : 7월 18일 오후 7:58
질문 by 이동현
답변 by 김진웅, 나종진, 임동선, 이재화, 이상구
Finalized by 채희준
Q. : llXll 으로 표현되는 노름의 값이 X*X로 표현되는 내적의 값과 동일하게 x1 x2 ..... xn 의 값을 제곱한 것으로 표현되는것 같은데 왜 내적이 노름의 제곱 (llXll)2 으로 표현되는지 이해가 안됩니다. 그리고 노름의 개념이 함수에서 길이를 표현하는 개념인것 같은데 내적은 어떤 개념으로 표현될 수 있는지 궁금합니다.
A .
김진웅(2015****73)7월 17일 오전 11:44
Norm의 정의 ||x|| = sqrt(x1^2 + ... +xn^2) 내적의 정의 x.y = x1y1 + .. +xnyn x.x = x1x1 + ... + xnxn = (sqrt(x1x1 + ... + xnxn))^2 = (||x||)^2
나종진(2017****17)7월 17일 오후 12:15
노름은 길이를 표현하는 개념이지만 내적은 어떤 개념인지 교재에 나오지 않아서 저도 내적을 어떤 개념으로 이해해야될지 고민이었습니다. 저는 내적을 각도 개념으로 이해했습니다. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
여기에 코시-슈바르츠 부등식 아래 정의를 보게되면 x·y=||x||*||y||*cosΘ 라고 나와있어 저는 각도의 개념으로 이해했습니다. 도움이 되셨으면 좋겠습니다.
임동선(2017****79)7월 17일 오후 12:55
엄밀하게 말하면 대칭성, 선형성, 정부호를 만족하는 벡터공간을 내적공간이라고 합니다.
그 중에 가장 대표적인 것이 R^n 에서 위와 같이 정의된 것 입니다. 또한 주어진 내적 공간에 대해서 노름을 정의를 할 수 있습니다. 위와 같이 노름을 정의하면 잘 정의된 노름이고, 위의 경우는 두 값이 같습니다.
이재화7월 17일 오후 5:17
1. 직관적으로 노름은 벡터의 길이, 내적은 두 벡터 사이에 이루는 각을 정의하는 개념이라고 생각하면 됩니다.
2. 노름과 내적은 주어진 데이터가 얼마나 유사한지를 비교하는데 사용되는데 각각 사용하는 척도가 다릅니다.
3. 두 데이터 사이의 거리로 유사성을 비교할 때 노름이 사용되고, 두 데이터 사이의 패턴(방향)만 관심있을 때에는 두 벡터 사이의 각으로 유사성(코사인 유사도)을 비교합니다. 이때 내적이 사용됩니다. [참고] http://matrix.skku.ac.kr/math4ai-intro/W3/
4. 내적을 활용한 코사인 유사도는 자연어 처리에도 사용된다고 합니다. [참고] https://wikidocs.net/24603
이상구(LEE SANGGU)7월 17일 오후 11:27
실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다.
추가 답변 및 정리: http://matrix.skku.ac.kr/math4ai/ 에서 인용
|
정의. |
|
의 벡터
에 대하여
![]()
을
의 노름(norm, length, magnitude)이라 한다.
|
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터
,
에 대하여 실수
![]()
을
와
의 내적(Euclidean inner product, dot product)이라 하고
로 나타낸다. 즉
![]()
![]()
=
=![]()
이 두 정의를 비교하면,
▪ ![]()
![]()
노름의 제곱은 내적과 같음을 확인할 수 있습니다.
그리고 노름은 벡터의 길이 또는 크기를 나타낸다면,
내적은 두 벡터 사이에 이루는 각 또는 두 벡터 사이의 관계를 나타낸다고 생각하면 될 것 같습니다.
※참고자료
1. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
의 벡터
,
에 대하여
![]()
, ![]()
인
를
와
가 이루는 각(angle, 사잇각)이라 한다.
http://matrix.skku.ac.kr/math4ai-intro/W3/
주어진 데이터를 분류하기 위해서는 각 데이터마다 우리가 다룰 수 있는 (계산할 수 있는) 형태로 표현할 수 있고, 각 범주와 얼마나 가까운지 (혹은 유사한지) 계산하여 최종 판단해야 한다.
이러한 척도를 데이터의 유사도(similarity)라고 한다.
그렇다면 서로 다른 두 데이터가 얼마나 유사한지 어떻게 평가할 수 있을까?
가장 쉽게 생각해볼 수 있는 것은 두 데이터 사이의 거리를 계산하는 것이다.
는 원점에서 점
에 이르는 거리와 같다. 따라서 두 벡터
,
에 대하여
는 두 점
와
사이의 거리(distance)가 되며, 다음이 성립한다.
![]()
위 정의는 3차원은 물론 고차원 데이터에 대해서도 동일한 형태로 확장된다.
그러나 데이터 분석가가 단지 데이터의 패턴(방향)에만 관심이 있는 경우, (거리)척도는 적합하지 않다.
예를 들어, 아래와 같이 좌표평면 상에 벡터로 표현된 두 데이터
와
는 패턴(방향)은 유사하지만
거리는 매우 큰 값을 갖게 되어, (거리)척도로는 “두 데이터가 관계가 없다”고 판단하게 되기 때문이다.

단지 데이터의 패턴(방향)에만 관심이 있는 경우에는 유사도를 어떻게 측정해야 할까? 이번에 우리는 데이터의 패턴(방향)에만 관심이 있으므로,
두 데이터(벡터)가 이루는 사잇각
로 유사도를 측정할 수 있을 것이다. 예를 들어,
가 작으면 데이터의 유사도가 높고,
가 크면 데이터의 유사도가 낮다고 판단할 수 있다.
그러나 사잇각은 벡터의 내적(inner product)으로부터 정의되므로,
를 직접 계산하기 보다는 벡터의 내적을 이용하여
의 코사인 값으로 유사도를 측정한다. 이를 코사인 유사도(cosine similarity)라고 한다.
장환승(2016****69)7월 18일 오후 10:53
내적이라는 개념은 알고 있었는데, 자연어 처리 또는 데이터의 패턴 개념에 있어 내적이라는 것이 어떻게 활용되는지 보니까 신기하네요. 코사인 유사도 라는 개념이 내적과 글을 통해 확 와닿습니다. 감사합니다.
권서영(2020****27)7월 19일 오전 1:29
Final Comment: 제가 교수님 강의를 공부하면서 미묘하게 헷갈리던 부분이 무엇인지 확신할 수 없어 고민중이었는데, 학우님께서 노름과 내적의 개념에 대해 질문한 글을 읽고 저 또한 개념정리가 미약하다는 것을 깨달을 수 있었습니다. 많은 학우분들이 내적은 '각'의 개념이라 정리해 주셔서 개념 정리가 되고, 왜 각이며 내적이 어떤 분석 (데이터의 패턴 혹은 방향)에 사용되는지 정리해주신 답변들을 읽어보며 내적과 노름의 개념과 응용을 정리할 수 있었습니다. 사실 내적이 왜 ||x||로 바 두 개를 사용하는 것일까? 라는 일차원적인 의문을 가지고 있었으나 (잘못된 생각이지만) 질문이 유치하게 보여 묻지 못했습니다. 하지만 교수님이 "실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다."라고 서술해주셔서 납득을 할 수 있었습니다. 먼저 강의 내용을 다 이해하고 정리하고 다른 분들 질문과 Finalized된 글을 읽어 볼 것이 아니라 (교재를 읽은 후 ... 다른 학생들이 토론한 내용을) 미리 읽으면서 (Re-Finalize 하거나, 추가로 질문하거나, Final 코멘트를 달면서) 자신의 이해를 더욱 높일 수 있고 추가적인 지식도 얻을 수 있음을 깨달았습니다. 좋은 질문과 답변 공유해 주셔서 감사합니다.
HW질문] Re-Finalized by 채희준, 질문 by 권서영, 답변 by 김진웅, Finalized by 한수현
작성자 : 채희준(2016****00)작성일 : 7월 19일 오전 4:28
질문 by 권서영
답변 by 김진웅
Finalized by 한수현
Re-Finalized by 채희준
Q:
다름이 아니라 정사영의 정의 (아래 사진파일 첨부) 에서 x*(y-p) = 0 이라 서술이 되어 있는데 그렇다면 w가 0이 되는 것인가요? 두 벡터가 직교하면 내적이 0이 된다 서술이 되어 있던데, 그 개념이 연결되어 있는 것인가요? 만약 그렇다면, 혹시 설명해 주실 수 있으실까요? 감사합니다 ㅜㅜㅜ
A:
김진웅(2015****73)7월 19일 오전 1:20
원벡터 y에서 정사영 벡터 p를 뺀 것이 벡터성분 w입니다. (w=y-p) 원벡터가 정사영하는 공간에 속해있지 않는 한, 벡터성분 w는 0이 되지 않습니다. x와 y-p 그러니까 x와 w는 서로 직교하므로, x·(y-p)=0 그러니까 x·w=0인 것입니다.
Finalized: 한수현(2019****61)작성일 : 7월 19일 오전 3:22
먼저 이미지에서 점 S를 점 P에서 벡터 OQ에 내린 수선의 발로 정의 했기 때문에 w(=SP)는 x에 직교입니다. (x┴w)
그러므로 x·w=0입니다.
(이미지 출저: 네이버 지식백과)
위 이미지는 벡터의 뺄셈을 그림으로 표현한 것인데,
이를 이용하여 w를 y와 p로 표현하면 w=y-p입니다.
그래서 x·w=x·(y-p)=0입니다.
추가 답변:
앞에 두 분께서 잘 설명해주시고 Finalized 하셔서 댓글로 남기고 싶었는데, 댓글로는 한계가 있어서 부득이하게 re-Finalized를 했습니다.
제 생각에는 ·를 스칼라의 곱으로도 자주 사용하기 때문에 질문자 분께서 곱셈과 내적을 헷갈리시는 듯 합니다. · 는 벡터에서는 내적(inner product)으로만 사용합니다. * 또는 x 와는 구분이 필요합니다.
|
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터
,
에 대하여 실수
![]()
을
와
의 내적(Euclidean inner product, dot product)이라 하고
로 나타낸다. 즉
![]()
![]()
=
=![]()
▪ ![]()
![]()
또한, 내적은 다음과 같이 나타낼 수 있습니다.
의 벡터
,
에 대하여
![]()
, ![]()
인
를
와
가 이루는 각(angle, 사잇각)이라 한다.
따라서, 두 벡터가 직교한다는 것은 theta가 90º임을 의미하고 cos(theta)는 0이 되므로
직교하는 두 벡터의 내적은 0이 되는 것입니다.
이상구(LEE SANGGU)7월 19일 오전 5:40
채희준 군, 아침 일찍 좋은 답을 주는 모습을 보니 ... A를 받을 자격을 이미 갖추었습니다. 그렇게 스스로 공부하여 깨우치고, 그 것을 다른 학생들에게 도움을 주면서 공유 한다면 ... 그런 자세로 꾸준히 이번 7주 학기를 진행 한다면 미리 얘기 했듯이 A는 담당교수가 보장 한다고 생각하셔도 됩니다.^^ 축하합니다. 다른 학생들도 마찬가지 입니다^ All have the same chance. Keep your work. Congratulation.
[Final OK by TA]
Finalized by 채희준, [3주차 주요질의 (1)] Q by 이승재, A by 이상구
작성자 : 임동선(2017****79)작성일 : 8월 1일 오후 2:57
질문 by 이승재
답변 by 이상구
Finalized by 채희준
Q: [3주차] 주요 질의 사항 (1)
01 벡터 함수에 관하여; 벡터가 방향을 가지는 물리량이라고 이해하고 있습니다. 이를 함수에 적용시켜, 벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합이라고 봐도 무방한지 질의 드립니다. 이와 관련하여, 벡터 함수에 대한 기본적인 이해를 위한 설명 해주셨으면 합니다.
A:
이상구(LEE SANGGU)7월 31일 오전 4:47
일반적인 벡터에 대한 정의는,
벡터공간 (예, R^n 또는 벡터공간 M_n 또는 V ) 안의 원소 를 벡터라고 합니다.
크기 방향 등의 얘기는 물리학 에서 하고 ... 1. 수학에서 벡터는 위의 일반적인 정의만 생각하시면 됩니다. 정의(Definitions) http://matrix.skku.ac.kr/sglee/linear/ocu/linear-1.htm 정의 1. (벡터공간) V는 집합이고, V에는 벡터합(vector addition)(또는 벡터 덧셈)이라고 부르는 연산 즉, V의 두 원소 u, v에 V의 원소 u+v를 대응시키는 연산과 스칼라에 의한 곱(multiplication by scalars)이라고 부르는 연산 즉, V의 원소 u와 수(이를 보통 스칼라(scalar)라고 부름) a에 V의 원소 au를 대응시키는 연산이 정의되어 있다고 하자. 이 두 가지 연산이 다음 8가지 조건을 만족할 때 V를 벡터공간(vector space)이라 하고, V의 원소를 벡터라고 한다. (i) V의 모든 원소 u, v에 대하여 u + v = v + u. (ii) V의 모든 원소 u, v, w에 대하여 (u + v) + w = u + (v + w). (iii) V의 모든 원소 u에 대하여 u + O = u = O + u 를 만족하는 O가 V안에 존재한다. (iv) V의 각 원소 u에 대하여 V의 원소 u'이 존재하여 u + u' = O = u' + u 가 성립한다. (v) 모든 스칼라 a, b와 V의 모든 원소 u에 대하여 (a + b)u = au + bu. (vi) 모든 스칼라 a와 V의 모든 원소 u, v에 대하여 a(u + v) = au + av. (vii) 모든 스칼라 a, b와 V의 모든 원소 u에 대하여 (ab)u = a(bu). (viii) V의 모든 원소 u에 대하여 1u = u. 참고 정의 1의 조건 (iii)에서 O를 V의 영벡터(zero vector)라고 한다. 또 조건 (iv)에서 u'을 u의 덧셈에 관한 역원이라고 하며, 보통 기호 -u로 나타낸다. 조건 (i), 조건 (ii)를 각각 벡터 덧셈의 교환법칙(commutative law), 벡터 덧셈의 결합법칙(associative law)이라고 한다. 특히 (ii)에 의하여 벡터공간안의 세 벡터 u, v, w의 합을 괄호 없이 u + v + w로 나타내기도 한다.
이상구(LEE SANGGU)7월 31일 오전 4:48
2. 행렬도 벡터의 예이고, 연속함수도 벡터의 예이고, 미분가능한 함수도 벡터의 예입니다.
이상구(LEE SANGGU)7월 31일 오전 4:49
얘기한 "벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합이라고 봐도 무방한지 질의 드립니다." 는 일반적으로 맞지 않는 말 입니다. 수학에서는 정의 에 있는 그대로 이해 하시는 것이 맞습니다.
이상구(LEE SANGGU)7월 31일 오전 4:55
정의 1. (벡터공간 과 벡터) V는 집합이고, V에는 벡터합(vector addition)(또는 벡터 덧셈)이라고 부르는 연산 즉, V의 두 원소 u, v에 V의 원소 u+v를 대응시키는 연산과 스칼라에 의한 곱(multiplication by scalars)이라고 부르는 연산 즉, V의 원소 u와 수(이를 보통 스칼라(scalar)라고 부름) a에 V의 원소 au를 대응시키는 연산이 정의되어 있다고 하자. 이 두 가지 연산이 (위의) 8가지 조건을 만족할 때 V를 벡터공간(vector space)이라 하고, V의 원소를 벡터라고 한다. 우리는 지금 우리 선형대수학 부분에서는 R^(n) 상의 선형변환에만 관심을 집중합니다. 이유는 그 선형변환 즉 함수는 바로 행렬 로 표현되어, 대각화나 SVD 거쳐 컴퓨터 와 AI 가 쉽게 다룰수 있기 때문 입니다. 벡터공간 상의 다른 함수 들에 대한 연구는 함수 해석학에서 별도로 합니다.
정리:
'벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합'은 일반적으로 맞지 않는 말입니다.
일반적으로 벡터공간 (예, R^n 또는 벡터공간 M_n 또는 V ) 안의 원소 를 벡터라고 합니다.
http://matrix.skku.ac.kr/LA-K/Ch-9
|
[벡터공간] |
||
|
|
임의의 집합 A. SM. 과 다음의 8개의 연산법칙이 성립할 때, 집합
A1. A2. A3.모든 A4. SM1. SM2. SM3. SM4. 위의 조건 A3를 만족시키는 |
|
|
|
||
따라서, 이를 만족하는 행렬, 연속함수, 미분가능한 함수 모두 벡터의 예입니다. 이와 같은 벡터들에서 방향을 정의한다는 것은 어렵습니다.
우리는 지금 우리 선형대수학 부분에서는 R^(n) 상의 선형변환에만 관심을 집중합니다. 이유는 그 선형변환, 즉 함수는 바로 행렬 로 표현되어, 대각화나 SVD 거쳐 컴퓨터 와 AI 가 쉽게 다룰수 있기 때문 입니다.
comment:
이승재 학우님의 질문과 교수님께서 해주신 설명을 통해 벡터공간과 벡터의 수학적 정의에 대해서 복습할 수 있었습니다.
그리고 R^(n) 상의 선형변환을 행렬로 표현해 컴퓨터와 AI가 쉽게 다룰 수 있도록 한다는 것이 중요한 것 같습니다.
벡터 공간과 벡터에 대해서 더 궁금하시다면
교수님이 올려주신 사이트 http://matrix.skku.ac.kr/sglee/linear/ocu/linear-1.htm 또는
선형대수학 교재(예제도 함께 있습니다.) http://matrix.skku.ac.kr/LA-K/Ch-9/를 참고하시면 좋을 것 같습니다.
[Final OK by TA]
Finalized by 채희준, [3주차 주요질의 (2)] Q by 이승재, A by 이상구, 댓글 by 한수현, 정원철, 천가영
작성자 : 임동선(2017****79)작성일 : 8월 1일 오후 2:58
질문 by 이승재
답변 by 이상구
댓글 by 한수현, 정원철, 천가영
Finalized by 채희준
Q: [3주차] 주요 질의 사항 (1)
02 ‘근사’란 무엇인지 설명 부탁드립니다. 어설피 이해한 것을 써보자면, 도함수를 구하는 과정과 유사하다고 이해했습니다. 이런 저의 이해에 오류 지적이나 첨언 해주시길 부탁드립니다.
A:
이상구(LEE SANGGU)7월 31일 오전 9:14
[과학백과사전] https://www.scienceall.com/%EA%B7%BC%EC%82%ACapproximation/ 근사(approximation) 8월 06, 2010 는 제곱하면 2가되는 수로 정의되지만, 그 참값을 소수로 표시하기는 어렵다.
우선 1< <2는 바로 알 수 있다.
다음에 1.42=1.96<2<2.25=1.5이므로 1.4< <1.5.
이 와 같이 해서 =1.41421356…으로 차츰 참값에 가까운 수치를 구해 가는 것을 근사라 한다.
근사에 의해 구한 수치가 근사값, 근사값에서 참값을 뺀차가 오차이다.
예를 틀면 의 근사값으로서 1.4142를 취했을 때 오차는 1.4142 -1.41421356…=- 0.00001356….
한수현(2019****61)7월 31일 오전 9:47
근사를 단순히 특정 수에 가까운 수라고 생각하고 있었는데 정확한 개념을 알게 되었네요. 좋은 지식 얻어갑니다!
정원철(2017****79)7월 31일 오후 3:19
미분이 특정점 근방의 성질(좌/우극한)을 표현하기 위한 과정이라고 생각하면 근사가 도함수를 구하는 과정과 유사하다는게 어느정도 맞는 말인거 같습니다. 경사하강법을 할 때도 최적의 극값을 알기 위해 기울기를 낮은 쪽으로 계속 반복해서 움직이는 과정 자체가 근사라고 생각합니다.
이승재(2019****65)7월 31일 오후 8:44
근사에 대한 이해를 높이는데 답변 이 도움 많이 되었습니다. 감사합니다 :)
천가영(2020****17)8월 1일 오전 1:27
근사의 의미를 신경쓰지 않고 있었는데, 이렇게 자세히 알게 되니 생각보다 미적분의 개념을 이해하는데 도움이 된다고 느꼈습니다. 감사합니다!
정리:
https://www.scienceall.com/%EA%B7%BC%EC%82%ACapproximation/
• [과학백과사전]
근사(approximation)
8월 06, 2010
는 제곱하면 2가되는 수로 정의되지만, 그 참값을 소수로 표시하기는 어렵다.
우선 1<
<2는 바로 알 수 있다.
다음에 1.42=1.96<2<2.25=1.5이므로 1.4<
<1.5.
이 와 같이 해서
=1.41421356…으로 차츰 참값에 가까운 수치를 구해 가는 것을 근사라 한다.
근사에 의해 구한 수치가 근사값, 근사값에서 참값을 뺀차가 오차이다.
예를 틀면
의 근사값으로서 1.4142를 취했을 때 오차는 1.4142 -1.41421356…=- 0.00001356….
comment:
근사에 대해서 중요하게 생각해보지 않았었는데, 이승재 학우님의 질문을 Finalize하면서 근사에 대해서 제대로 배워갈 수 있었습니다.
공부를 하고 문제를 푸는데에 있어서 근사를 굉장히 자주 사용하고 있었습니다.
아래는 '근사'에 관한 글 링크입니다. 관심이 있으신 분들은 참고하시면 좋을 듯 합니다.
https://terms.naver.com/entry.nhn?docId=3338497&cid=47324&categoryId=47324
수학백과 근사
근사는 어떤 것과 똑같지는 않지만 비슷한 것을 말한다. 근사는 수에 대하여 많이 다루지만 식이나 도형 등에 대하여도 적용할 수 있다. 수에 대한 근사는 반올림, 올림, 내림 등을 이용한 어림셈이 가장 흔히 쓰이는 방법이다.
근사를 이용하여 구한 값을 근삿값, 근사를 이용하여 구한 식을 근사식이라고 한다. 근사는 복잡한 것을 간단하게 하거나 구하기 어렵거나 불가능한 것을 쉽게 하기 위하여 사용한다.
목차
1. 1.오차와 오차한계
1. 1.1.참값의 범위
1. 2.실수의 근사
1. 2.2.유리근사
1. 2.3.선형근사
1. 3.함수의 근사
1. 4.기호
1. 5.같이 읽기
1. 6.참고 문헌
[네이버 지식백과] 근사 (수학백과, 2015.5)
[Final OK by SGLee]
Refianlized by 임성규 Finalized by 채희준, [2주차] [3-1강, 3-2강 주요질의] Q by 임성규, A by 박정호, sanggulee
작성자 : 이상구(LEE SANGGU)작성일 : 8월 2일 오후 2:52
질문 by 임성규
답변 by 박정호
Finalized by 채희준
Q: 주요 질의: page123 에서 A를 대각화하는 행렬 P를 구하는 과정에 대한 설명이 나옵니다.
---------------------------------------------------
A 를 대각화하는 행렬 P를 구하는 과정
1. A의 n개의 일차독립인 고유벡터를 구한다
2. n개의 고유벡터를 열벡터로 갖는 행렬 P를 만든다.
3. 이 P가 A를 대각화하는 행렬이고 P^-1AP는 A의 대응하는 고윳값을 순서대로 주 대각선 성분으로 갖는 대각선행렬 D이다.
---------------------------------------------------
첫 단계에서 n개의 일차독립인 고유벡터를 구하라고 나옵니다.
A가 대각화가능할 필요충분조건이 n차행렬 A 가 'n개의 일차독립인 고유벡터를 갖는다' 인데,
코드로는 쉽게 고유벡터와 고유값을 구하는 것을 확인하였으나 실제로 고유벡터를 어떻게 구할 수 있는지 궁금합니다.
A:
박정호(2014****10)8월 1일 오후 5:03
det(A-람다I)=0 을 만족하는 람다를 찾고 Ax=람다x를 만족하는 n개의 일차독립 고유벡터들을 찾으시면 돼요. 예를 들어 람다=1이면 Ax=x 만족하는 x 를 찾아야 하는데 (A-I)x=0과 같으니까
A-I의 null space의 basis를 찾으시면 그것이 람다 1에 해당하는 고유벡터가 됩니다.
이상구(LEE SANGGU)8월 1일 오후 5:08
박정호씨의 답이 명쾌합니다. Very clear.
정리:
http://matrix.skku.ac.kr/LA-K/Ch-4/LA-Lab-kor-Ch-4.html
고유값 구하기
이고,
또한
이므로 동차연립방정식
은
아닌 해를 가져야 한다. 따라서 특성방정식(characteristic equation)
이 성립해야 한다.
>>>
을 풀어서
를 구합니다.
일차독립 고유벡터 구하기
가 여러 개가 나왔다면 각
에 대하여
을 만족하는 x 중 일차독립인 것을 구합니다. 즉,
I-A 의 영공간(null space)의 기저(basis)를 찾는 것입니다.
※참고
http://matrix.skku.ac.kr/LA-K/Ch-7/
|
|
[해공간, 영공간] |
||
|
|
|
|
|
|
|
|||
comment:
임성규 학우님의 질문과 박정호 학우님의 답변을 정리해 Finalize 하면서 고유값, 고유벡터, 대각화 부분을 다시 정리해 볼 수 있었습니다.
아래 링크는 고유값과 고유벡터의 계산 그리고 이를 통해 대각화 하는 것까지에 관한 내용을 자세히 다루고 있습니다.
관심 있으신 분들은 참고하시면 좋을 것 같습니다.
https://darkpgmr.tistory.com/105
5. 고유값, 고유벡터의 계산
comment by SANGGU LEE:
1. 고윳값 람다 에 대응하는 일차독립 고유벡터들을 구하기
답: det(A-람다I)=0 을 만족하는 람다를 찾고 Ax=람다x 를 만족하는 (몇개 일지 모를) 일차독립인 고유벡터들의 집합을 찾으시면 됩니다. 예를 들어 람다=k이면 A x=k x 만족하는 영아닌 벡터들 x 를 찾아야 하는데 이는
(A-kI)x=0 를 만족하는 영아닌 벡터들 x 들과 같으니까
A - k I의 null space의 a basis를 찾으시면 그것이 람다 k 에 해당하는 모든 일차독립인 고유벡터들을 포함하는 해공간의 a basis 가 됩니다.
2. 즉. . . 답은, A- k I 의 영 공간(null space)의 a 기저(basis)를 찾는 것입니다.
Bx = 0 의 영 공간(null space)의 기저(basis) : 이것을 찾아주는 Sage 명령어가 무엇인지 책에서 보신 기억 있으신가요? http://matrix.skku.ac.kr/2018-album/LA-Sec-7-2-lab.html 보시고 공유해 주세요^^
comment by 임성규 to sanggulee:
상세한 답변 감사합니다!
# 아래는 주어진 행렬의 영공간(동차연립방정식의 해공간)의 기저와 차원을 구하는 코드입니다.
A = matrix(QQ,[[1,1,0,2],[-2,-2,1,-5],[1,1,-1,3],[4,4,-1,9]])
W = A.right_kernel() # 영공간 생성
print "A = "
print A
print
print "기저: "
print W.basis()
print
print "dim(W) = ", W.dimension()
print
print A.right_nullity() # built-in 명령어 이용
.basis() 라는 sage 명령어로 null space의 basis를 구할 수 있음을 다시 복습하였습니다. 감사합니다.
comment by 임성규 to 박정호, 채희준:
고유값에 따른 null space 의 basis를 하나하나 구해야 하는 것이었군요. 명확한 답변 감사합니다!
[Final OK by SGLee] Finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]
작성자 : 정원철(2017****79)작성일 : 8월 5일 오전 11:49
-이차형식(quadratic form)
- R^2 상의 이차형식
- R^n 상의 이차형식
-주축정리(principal axis theorem)
-양의 정부호 음의 정부호 부정부호
를 복습하던 중에 수업을 들을 당시에는 이해를 했었는데 다시 보니 수식의 뜻이 명확히 이해가 되지 않아 고민 끝에 질문을 남깁니다.
15강 (미적분학 6 함수의 극대, 극소)을 듣는중 궁금한 점이 생겨 올립니다.
어떠한 임계점이 극값도 극솟값도 되지 않는 경우에 곡면이 안장과 같은 모양을 한 안장점이라고 하는것을 확인하였습니다. 시각적인 이해를 통해 설명해주셨는데 수학적으로는 어떠한 임계점이 안장점이 되는지 아니면 극값을 갖는지 미리 확인 할 수 있는 요소가 있나요? 그리고 임계점이 극값, 극솟값 혹은 안장점을 가지며 그외의 형태도 가질 수 있다고 하셨는데 그외의 형태는 어떤것인지 궁금합니다.
1. 질의
아래 그림에서 노란 표시가 되어있는 부분에서 시그마표현식이 다시 보다보니 이해가 잘 가지 않습니다.
그리고 2. A = B (대칭행렬) + C (반대칭행렬) 로 나누어 썼을 때 , 항상 이차형식 값이 항상 q_[A} (x) = q_[B} (x) 인 이유에 대하여 조금 더 설명 부탁드립니다.


2. 실습을 통한 복습 <----- 생략
<추가 내용>
교수님이 꼭 확인하라고 언급하신 자료[http://matrix.skku.ac.kr/2014-Album/Quadratic-form/]를 불러와 같이 Finalize 하였습니다.SKKU Matrix Theory Project by 정태일, 이정아 under Prof. SGLee http://matrix.skku.ac.kr/2014-Album/Quadratic-form/
Quadratic Form (이차 형식):
Application(Hessian matrix)
Basic(기본):
0. Calculus (이차형식에 필요한 미적분)
1. Conic Section(이차곡선)
2. Diagonalization(Eliminate Cross Product)(대각화)
3. Inertia of Quadratic Form (이차형식의 관성)
Application(활용):
4. Hessian matrix(함수의 극값을 찾는 방법)
5. Special case of Hessian Matrix (특별한 경우에서의 극값을 찾는 방법)
6. Bordered Hessian Matrix (제한 조건 하에 극값을 찾는 방법)
http://www.youtube.com/watch?v=CNZOEPGKzcA 2013.12.02
위 동영상은 우파루파(도롱뇽의 일종)가 오염된 환경에서 어떻게 헤엄쳐 나가는 지에 대한 연구에 헤시안 행렬이 쓰인다는 것을 보여주는 영상입니다. 그리고 위 영상 속 내용을 기반으로 좀 더 쉽게 이해갈 수 있도록 sage를 이용해 보았습니다.
The Axolotl (우파루파)finds himself at the origin, surrounded by a cloud of toxic waste with density
![]()
Which way should he swim?





Comment: 교수님의 답변을 통해서 대칭행렬과 반대칭행렬의 합에 대해서, 진웅님의 설명을 통해서 이차형식의 식에 대해서 제대로 이해할 수 있었습니다. 뿐만 아니라 재밌는 실습예제를 접할 수 있었고, 마지막 문제에서 약간의 에러가 발생하였지만 교수님께서 피드백 주신 대로 하니까 잘 돌아가서 보람이 느껴졌습니다.
정원철(2017****79)8월 5일 오후 2:25
감사합니다 교수님 ^^덕분에 잘해결됐고 글도 수정했습니다 !!
-------------
이차형식에 대한 활용(Hessian matrix)에 들어가기 전에 Basic을 우선적으로 선행할 것을 권장합니다. 그리고 다음은 Hessian matrix가 실제 문제에서 어떻게 쓰이는지를 보여주는 대표적인 예 입니다.
이차형식 이 그런 것을 공부하는 절이고,
http://matrix.skku.ac.kr/2014-Album/Quadratic-form/
Quadratic Form (이차 형식)에서 보듯이
https://bskyvision.com/205
이차형식에 대응하는 n 차 행렬의 고윳값의 부호가 바로 n 차원 공간안의 대응하는 곡면에서의 임계점에서의 극대, 극소, 안장점 등 에 대한 준거를 주는 것 입니다.
정원철(2017****79)8월 4일 오후 10:10
함수를 해시안 행렬로 변환하여 고유값을 구해보면 알 수 있습니다.예를 들어 이차함수의 경우, 아래와 같이 판단할 수 있습니다.
(1) 고유값이 둘다 양수 -> 극소점 (2) 고유값이 둘다 음수 -> 극대점 (3) 고유값이 하나 음수, 하나 양수 -> 안장점
채희준(2016****00)8월 4일 오후 11:57
임계점은 극대점, 극소점 또는 이 둘도 아닌 경우에 안장점이라 합니다.
n 변수 함수의 경우 헤시안 행렬의 선행 주 소행렬식으로도 판단할 수 있습니다.
임계점에서, 헤시안 행렬의
(1) 고유값이 모두 양수 = 선행 주 소행렬식이 모두 양수 -> 극소점
(2) 고유값이 모두 음수 = 선행 주 소행렬식이 음수, 양수 를 반복 -> 극대점
(3) 고유값이 음수, 양수 모두 있을 경우 = 선행 주 소행렬식이 위 두 경우에 속하지 않는 경우 -> 안장점
수식을 쓰지 못하고 설명하려니 어렵네요.
교재 part I에 '8. 이차형식'에서 '정부호&부정부호' 관련 부분
교재 part Ⅱ에 '2.4. 함수의 극대극소'에서 '정리: 극대, 극소, 안장점', '정리: 극소, 극대 판정법'
을 같이 보시면 이해하는 데에 도움이 될 것 같습니다.
Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅, 채희준, 정원철
작성자 : 나종진(2017****17)작성일 : 8월 5일 오전 00:32 조회수 : 28
교재 p. 181에 예제 13번을 풀다가 의문이 생겨서 질문을 올립니다.
제가 삼각함수에 대해서는 고등학교때 배운 sin,cos,tan의 30,45,60도 일 때가 전부입니다.
그래서 이번 수업에서 sin,cos가 나올 때마다 긴장하고 집중하면서 공부하고 있습니다.
일단 문제는

여기서 풀이 첫번째 줄에서 2x+z / 3 sin y / x+2z / 3 cos y가 되는 것은 이해가 되었습니다.

그리고 f 의 임계점 a=(0,n pi,0)인 것도 이해가 되었습니다.
일단 첫번 째 질문은 i)에서 임계점 a=(0,2k pi,0)로 두는 건지 궁금합니다.
크게 상관없어보이지만 2k를 두어 왜 짝수모양으로 두는지 궁금합니다.
두번 째 질문은 f의 헤시안행렬을 구할 때 y^2부분(2,2부분?)에서 왜 3이 나오는지 궁금합니다. 3cos (2kpi)= -3 아닙니까?
이렇게 계산이 되니 Δ1=2, Δ2=-6 이 되어 값이 다르게 나옵니다.
제가 삼각함수를 잘 몰라서 그런지 답이 다르게 나옵니다.
혹시 제가 계산 실수가 있는지 확인 부탁드립니다.
Fianl
A1. n pi 를 홀수와 짝수로 나누는 이유는 둘의 값이 다르기 때문이다.
홀수일 때는 안장점이 되고, 짝수일 때는 극소값이 된다.
A2. 3cos(2k pi)=3 이다. cos pi=-1, cos2pi=1이다.
comment
삼각함수에 대해 잘 알지 못해서 어려웠었다.
많은 학우분께서 도움을 주셔서 쉽게 해결되었다.
감사합니다.
정원철(2017****79)8월 5일 오전 9:19
진웅님과 희준님이 설명하신대로 입니다.sin과 cos의 그래프를 한번 생각해보시면 와닿으실 것 같습니다.sin은 π값이 정수가 될 때 0이 되서 상관 없지만 기본적인 cosx는 2π일 때는 1, 2π+1일 떄는 -1을 가져 극대, 극소가 번갈아가며 나옵니다.sin(kπ) = 0cos(2kπ) = 1, cos(2kπ+1) = -1
Q&A에서 활동하면서 흥미로웠고 도움이 되었던 글은 다음과 같습니다.
16’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
: 고유벡터가 다른 차원을 가진 경우를 보아서 질문을 올린 글이었는데, 교수님께서 대수적 중복도와 기하적 중복도가 있다고 하셨고, 더 구체적으로는 조르단 표준형이 있다는 것을 알려주셔서 궁금증이 해결되고 지식이 확장되었습니다.
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘
: 교수님께서 방데르몽드 행렬이라는 개념이 있음을 답변하셔서 그러한 개념이 정립되어 있음을 알게 되었습니다.
26’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
35’[Final] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python) 댓글 by 이상구 교수님, 김범준, 김진웅‘
: 전재현 동료가 우리가 그간 배웠던 이론을 실제로 적용한 글입니다. 이런 분야에서 이렇게 사용될 수 있다는 것을 알게 되었습니다.
5‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’
: RREF로 역행렬을 구하는 과정을 설명한 글입니다. 답변을 작성하면서 그 과정을 정연하게 정리하게 되어 좋았습니다.
33’[Final OK by SGLee] [3주차] 요약 및 질문’
: 뉴턴방법의 주의점을 설명한 글입니다. 답변을 작성하면서 뉴턴방법을 쓸 때 주의할 4가지 경우를 정리하여 좋았습니다.
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’
11’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’
19’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘
21’[해결] SAGE 질문 SyntaxError‘
22‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘
31’Finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘
: sage 코드에 관한 질문에 답변을 단 글입니다. 답변을 달기 위해 sage reference를 뒤적거리며 그 원리를 깨우쳤습니다. 덕분에 sage code를 이해하고 reference 찾는 기술이 향상되었습니다.
14’[HW 요약] 1주차 요약‘
25’[HW 요약] 2주차 요약‘
33’[요약] 3주차 요약‘
42’[요약] 4주차 요약‘
13‘[HW 실습] 1주차 실습’
23‘[HW 실습] 2주차 실습’
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘
45’[실습] 4주차 실습‘
18’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
29’3주차 다변수함수의 극대극소판정법 정리‘
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘
41’4주차 Gradient Descent Algorithm 추가 정리‘
: 제가 요약·실습·정리하며 쓴 글입니다. 이렇게 정리하는 과정을 거쳐 머릿속에 있던 그동안의 개념과 지식이 논리정연하게 정돈되었습니다.
54’6주차 PCA 정리‘ 정리
61’7주차 오차역전파법 정리‘
: 교재와 다른 자료들을 참고하여 정리하면서 PCA와 BP를 확실히 이해할 수 있어서 매우 뜻깊은 시간이었습니다.
57’열린문제 3 구하는 법 질문‘ answer
58’[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 < --- 답 <---보충), A by 이상구, 이재화‘
: 박지수 학우의 질문에 답변하면서 데이터행렬의 공분산행렬이
를 가지지 않음에 의문이 생겨 질문한 것입니다. 이렇게 다른 동료의 질문에 답변하면서 자신의 지식이 맞는지 확인하는 정말 좋은 경험이었습니다.
63’[프로젝트] Introductory Mathematics for Artificial Intelligence 2nd Week 김진웅 임성규‘
: 프로젝트를 진행하면서 어떻게 해야 번역을 매끄럽게 할지 고민을 많이 했습니다. 애매하고 장황한 문장에 많은 시간을 소모하긴 했지만 행렬을 번역하면서 프로젝트했던 것이 기억에 남습니다.
[Act17] (요약7 & 실습7 & 질의4 & 댓글5) [3주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재
[3주차] 강의 내용 복습 요약 (1)
01 함수의 극한, 연속성, 미분가능, 최댓값과 최솟값에 대해 간략히 배움
02 뉴턴 방법에 대해 간략히 배움
03 부정적분과 정적분에 대해 간략히 배움
04 내적과 외적, 사잇각에 대해 간략히 배움
05 편도함수와 연쇄법칙에 대해 간략히 배움
[3주차] 강의 내용 실습 (1)
강의 내용에 관한 실습 내용입니다.
{자체 예제 311.} 점 (8,2044)에서 곡선 에 대한 접선의 방정식을 구하시오.
[Sage 코드 및 답안]


{실습 312.} f(x) = -cos(2x)+2 (범위는 -5~5) 뉴턴 방법(3회)을 이용한 도함수 도출에 대해 실습하시오.
[Sage 코드 및 답안]

우선 1번의 접선이 그어지게 되고 1번의 접선이 x축과 만나는 근을 x로 가지는 f(x)의 좌표를 구해 2번의 접선을 긋게 된다. 이 행위를 반복하다 보면, Xn – X(n-1)의 범위가 점차 축소되면서, 도함수를 구할 수 있다.

{자체 예제 313.} 벡터 a = <-4, 0, 1, 6, 0.6, -1/2, 3> b = <-1, 3, 4, -2, 1/4, -0.2, 1>의 내적, 외적, 사잇각을 각각 구하시오.
[Sage 코드 및 답안]

{자체 예제 314.} 의 x, y에 관한 편도함수를 각각 구하시오.
[Sage 코드 및 답안]

{자체 예제 315.} 일 때, 를 구하시오.
[Sage 코드 및 답안]

[3주차] 주요 질의 사항 (1)
01 벡터 함수에 관하여; 벡터가 방향을 가지는 물리량이라고 이해하고 있습니다. 이를 함수에 적용시켜, 벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합이라고 봐도 무방한지 질의 드립니다. 이와 관련하여, 벡터 함수에 대한 기본적인 이해를 위한 설명 해주셨으면 합니다.
(댓글 답변 내용)



--------------------------------------------
[Final OK by SGLee] Q and Finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분(1) 내용정리 및 질의
작성자 : 김정한(2017****99)작성일 : 8월 7일 오후 2:31
조회수 : 26
[Final OK by SGLee] Q and Finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분(1) 내용정리 및 질의
1.벡터와 공간 기하

2.편도함수와 그래디언트
*편도함수란?

아래의 그림을 예시로 생각해보면 점 P에서의 곡선 APB의 접선의 기울기는 이 점에서의 x에 관한 z의 변화율이고, 점 P에서의 곡선 CPD의 접선의 기울기는 이 점에서의 y에 관한 z의 변화율이다.

3.연쇄 법칙


*정의 [방향도함수,그래디언트,헤시안]
: u=(u1,u2)를 단위벡터(크기가 1인 벡터)라 하자. 그러면 점 (a,b)에서 u방향으로의 f의 방향도함수는 아래와 같이 정의 된다.



4.극대, 극소, 안장점
*기본적인 극대, 극소 [최대, 최소]의 의미
:(a,b) 근방의 모든 (x,y)에 대하여 f(a,b)>=f(x,y)이 성립하면, f(x,y)는 (a,b)에서 극대가 되고, f(a,b)를 극댓값이라 한다.
마찬가지로 (a,b) 근방의 모든 (x,y)에 대하여 f(a,b)<=f(x,y)이 성립하면, f(x,y)는 (a,b)에서 극소가 되고, f(a,b)를 극솟값이라 한다.
이 때 f(x,y)의 정의역의 모든 (x,y)에 대하여 f(a,b)>=f(x,y)[or f(a,b)<=f(x,y)]이 성립하면 f(x,y)는 (a,b)에서 최대[최소]가 되고, f(a,b)를 최댓값[최솟값]이라 한다.
* Fermat의 임계점 정리
:f가 (a,b)에서 극대 또는 극소가 되고, f의 편도함수가 존재하면
fx(a,b)=0 fy(a,b)=0이 성립한다. ->∇f(a,b)=0

질의 1.

이 정리가 이해가 되지 않습니다. 왜 fxy와 fyx가 존재하고 연속이면 둘의 값이 같은 것인가요?
2. 정확히 방향도함수가 의미하는 것이 무엇인지 모르겠습니다. 이미 존재하는 스칼라장에서 어느 특정한 포인트에서의 기울기를 그래디언트라고 하고 임의로 단위벡터 u를 선정해 이 둘을 내적하면 방향도함수를 구할 수 있는데, 이러한 계산이 이미 설정되어있는 스칼라장과 각각의 점들의 그래디언트에서 제가 원하는 방향으로의 벡터를 설정하여 f가 어느 특정 방향에 따라 빠르게 증가하고 감소하는지를 보이기 위함이라고 말할 수 있을까요? (그렇다면 방향도함수는 제가 설정한 방향[벡터]를 통해서는 f가 얼마나 변하는지 즉 변화율을 나타내는 것인가요?) 제 이해가 맞는지 모르겠습니다.
정원철(2017****79)8월 7일 오후 3:58
은아님 설명이 맞는것 같습니다.저도 2, 에 대해서 정한님과 비슷하게 이해하고 있으나, 추가적인 의문이 있습니다.Q. 정의에서는 방향도함수를 단위벡터에서 정의된다고만 하는데, 단위벡터가 크기는 무시하고 방향 개념만을 강하게 담고 있어서 그런 것 같습니다.그렇다면 단위벡터가 아닌 임의의 벡터에 대해서도 방향도함수가 정의될 수 있는건가요 ??
[Act18] (요약8 &실습8 &질의5 &댓글6) [3주차] 강의 내용 복습 요약 & 실습 & 주요질의 (2) _ 2019311465 이승재
[3주차] 강의 내용 복습 요약 (2)
01 방향도 함수와 그래디언트, 헤시안에 대해 간략히 배움
02 함수의 극대 극소, 최대 최소에 대해 간략히 배움
03 임계점, 임계점 정리에 대해 간략히 배움
04 안장점에 대해 간략히 배움
05 극대/극소 판정법에 대해 간략히 배움
[3주차] 강의 내용 실습 (2)
강의 내용에 관한 실습 내용입니다.
{자체 예제 321.} 의 임계점을 모두 구하시오.
[Sage 코드 및 답안]

[3주차] 주요 질의 사항 (2)
02 ‘근사’란 무엇인지 설명 부탁드립니다. 어설피 이해한 것을 써보자면, 도함수를 구하는 과정과 유사하다고 이해했습니다. 이런 저의 이해에 오류 지적이나 첨언 해주시길 부탁드립니다.


[Act19] (댓글7) Finalized by 채희준, [3주차 주요질의 (1)] Q by 이승재, A by 이상구






[Act20] (댓글8) [Final OK by TA] Finalized by 채희준, [3주차 주요질의 (2)] Q by 이승재, A by 이상구, 댓글 by 한수현, 정원철, 천가영



















[6][Final OK by SGLee] Q and Finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분(1) 내용정리 및 질의
[Final OK by SGLee] Q and Finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분(1) 내용정리 및 질의
1.벡터와 공간 기하
....
[4] [3주차] 일변수함수와 미적분 내용정리 및 실습




점점 x=-pi/2에 근사해가 가까워지는 양상을 볼 수 있었다.
*최댓값과 최솟값의 정리
:f(x)가 폐구간 [a,b]에서 연속이면 이 구간에서 f(x)가 최댓값을 취하는 점 및 최솟값을 취하는 점이 존재한다.

[3]적분
: 어떤 구간에서 정의된 함수 f(x)에 대하여 이 구간의 모든 x에 관하여 F'(x)=f(x)를 만족하는 함수 F(x)가 존재할 때 F(x)를 f(x)의 원시함수 또는 부정적분이라고 한다.
f(x)가 주어졌을 때 그 부정적분 F(x)를 구하는 것을 f(x)를 적분한다고 한다.

*평균값의 정리[적분]

*리만합과 적분

즉 일정한 간격이 작아질수록(n->infinite로 갈수록) 리만합은 그 구간에서 적분값과 유사해진다.
이러한 양상을 좀 더 명확히 보이기 위해 실습을 해보았다.
[실습]
f(x)=x^2-5x+11를 두고 [0,6]을 적분하면 48이라는 적분값이 나온다.
이 떄 n=5 , n=10, n=15일 때 리만합의 값을 구해보았다.



점점 리만합이 (n이 커질수록) 적분값과 유사해지는 양상을 볼 수 있었다.
Final OK by SGLee [Finalized by 박진형] 실습 및 질문 '<적분 관련하여 개발한 도구들> 작성자 : 이상구(LEE SANGGU) ' by 박진형, 김정한, 이상구(LEE SANGGU) 교수님
작성자 : 박진형(2018****59)작성일 : 8월 9일 오후 12:01
조회수 : 24
Final OK by SGLee [Finalized by 박진형] 실습 및 질문 '<적분 관련하여 개발한 도구들> 작성자 : 이상구(LEE SANGGU) ' by 박진형, 김정한, 이상구(LEE SANGGU) 교수님
적분 도구 실습 (<적분 관련하여 개발한 도구들> by 이상구 교수님)
조회수 : 11
[1번째 코드 실습]
코드:
@interact
def_(a=((1,10,0.1)),x_range=range_slider(-10,10,1,(-4,4),label='XRange'),y_range=range_slider(-10,10,1,(-5,5),label='YRange')):
f(x)=3*x^3-a*(x-1/2)-5
F=integral(f(x),x)
xm,xma=x_range
ym,yma=y_range
print(F)
P=plot(f,(x,xm,xma),ymin=ym,ymax=yma,fill=true)
show(P)

[2번째 코드 실습]
코드:
@interact
def_(a=((1,10,0.1)),x_range=range_slider(-10,10,1,(-5,5),label='XRange'),y_range=range_slider(-10,10,1,(-5,5),label='YRange')):
f(x)=arctan(x)
F=integral(f(x),x)
xm,xma=x_range
ym,yma=y_range
print(F)
P=plot(f,(x,-4,4),xmin=xm,xmax=xma,ymin=ym,ymax=yma,fill=true)
show(P)

[3번째 코드 실습]
코드 :
html("<i> <b> Numerical Integration Methods : 수치적 적분 시각화 <p></p> </b>" )
importscipy
importnumpy
fromscipy.special.orthogonalimportp_roots,t_roots,u_roots
fromscipy.integrateimportquad,trapz,simps
fromsage.ext.fast_evalimportfast_float
fromnumpyimportlinspace
show_weight_graph=False
# 'Hermite':{'w':e**(-x**2),'xmin':-numpy.inf,'xmax':numpy.inf,'func':h_roots},
# 'Laguerre':{'w':e**(-x),'xmin':0,'xmax':numpy.inf,'func':l_roots},
methods = {'Legendre': {'w': 1, 'xmin': -1, 'xmax': 1, 'func': p_roots},
'Chebyshev':{'w':1/sqrt(1-x**2),'xmin':-1,'xmax':1,'func':t_roots},
'Chebyshev2':{'w':sqrt(1-x**2),'xmin':-1,'xmax':1,'func':u_roots},
'Trapezoid':{'w':1,'xmin':-1,'xmax':1,
'func':lambdan:(linspace(-1r,1,n),numpy.array([1.0r]+[2.0r]*(n-2)+[1.0r])*1.0r/n)},
'Simpson':{'w':1,'xmin':-1,'xmax':1,
'func':lambdan:(linspace(-1r,1,n),
numpy.array([1.0r]+[4.0r,2.0r]*int((n-3.0r)/2.0r)+[4.0r,1.0r])*2.0r/(3.0r*n))}}
var("x")
defbox(center,height,area,**kwds):
width2=1.0*area/height/2.0
returnpolygon([(center-width2,0),
(center+width2,0),(center+width2,height),(center-width2,height)],**kwds)
@interact
defweights(n=slider(1,30,1,default=10),f=input_box(default=3*x+cos(10*x),type=SR),
show_method=["Legendre","Chebyshev","Chebyshev2","Trapezoid","Simpson"]):
ff=fast_float(f,'x')
method=methods[show_method]
xcoords,w=(method['func'])(int(n))
xmin=method['xmin']
xmax=method['xmax']
plot_min=max(xmin,-10)
plot_max=min(xmax,10)
scaled_func=f*method['w']
scaled_ff=fast_float(scaled_func,'x')
coords = zip(xcoords,w)
max_weight=max(w)
coords_scaled=zip(xcoords,w/max_weight)
f_graph = plot(scaled_func,plot_min,plot_max)
boxes=sum(box(x,ff(x),w*ff(x),rgbcolor=(0.5,0.5,0.5),alpha=0.3)forx,wincoords)
stems=sum(line([(x,0),(x,scaled_ff(x))],rgbcolor=(1-y,1-y,1-y),
thickness=2,markersize=6,alpha=y)forx,yincoords_scaled)
points=sum([point([(x,0),
(x,scaled_ff(x))],rgbcolor='black',pointsize=30)forx,_incoords])
graph=stems+points+f_graph+boxes
ifshow_weight_graph:
graph+=line([(x,y)forx,yincoords_scaled],rgbcolor='green',alpha=0.4)
show(graph,xmin=plot_min,xmax=plot_max,aspect_ratio="auto")
approximation = sum([w*ff(x) for x,w in coords])
integral,integral_error=scipy.integrate.quad(scaled_ff,xmin,xmax)
x_val=linspace(min(xcoords),max(xcoords),n)
y_val=map(scaled_ff,x_val)
trapezoid=integral-trapz(y_val,x_val)
simpson=integral-simps(y_val,x_val)
html("$$\sum_{i=1}^{i=%s}w_i\left(%s\\right)=%s\\approx%s=\int_{-1}^{1}%s\,dx$$"%(n,
latex(f),approximation,integral,latex(scaled_func)))
error_data=[trapezoid,simpson,integral-approximation,integral_error]
print"Trapezoid:%s,Simpson:%s,\nMethod:%s,Real:%s"%tuple(error_data)
show(bar_chart(error_data,width=1),ymin=min(error_data),ymax=max(error_data))
[4번째 코드 실습]
코드:
html("<i> <b> Interactive Fourier Series: Fourier Series 시각화 <p></p> </b>" )
html("<i> <b>PostedbyWalkingRandomlyon14Jul2012<p></p></b>" )
defftermSquare(n):
return(1/n*sin(n*x*pi/3))
def ftermSawtooth(n):
return(1/n*sin(n*x*pi/3))
def ftermParabola(n):
return((-1)^n/n^2*cos(n*x))
def fseriesSquare(n):
return(4/pi*sum(ftermSquare(i)foriinrange(1,2*n,2)))
def fseriesSawtooth(n):
return(1/2-1/pi*sum(ftermSawtooth(i)foriinrange(1,n)))
def fseriesParabola(n):
return(pi^2/3+4*sum(ftermParabola(i)foriinrange(1,n)))
@interact
defplotFourier(n=slider(1,30,1,10,'Numberofterms')
,plotpoints=('Valueofplot_points',[100,500,1000]),Function=['SawTooth','SquareWave','PeriodicParabola']):
ifFunction=='SawTooth':
show(plot(fseriesSawtooth(n),x,-6,6,plot_points=plotpoints))
ifFunction=='SquareWave':
show(plot(fseriesSquare(n),x,-6,6,plot_points=plotpoints))
ifFunction=='PeriodicParabola':
show(plot(fseriesParabola(n),x,-6,6,plot_points=plotpoints))



여러 함수의 정적분 값을 계산해낼 수 있는 도구입니다. 매우 활용도가 높은 도구라고 생각되었습니다.



구분구적법의 등분수 n을 점차 늘려감에 따라 이차함수의 l정적분 값 - 구분구적법 값l, 즉 오차가 줄어듦을 알 수 있었습니다.
n을 10으로 했을 떄 error 는 4.86이었고 n을 30으로 하니 error는 0.54였고 n을 50으로 늘리니 error는 0.1944였다.
n이 커질수록 오차는 작아지는 것을 그래프를 직접 보면서 구분구적법을 공부한다면 이해가 매우 쉽고 빠를 것이라고 생각하였고

그렇기에 중,고등학교 학생들에게 매우 유용할 도구라고 생각되었습니다.



위에서 보면 동일한 함수를 구분구적법 하는데 end point rule 만을 변경하면서 진행해보았습니다.
endpoint 가 midpoint, left, right, upper, lower 일 때로 나뉘는데, 이 모든 경우에서 각각의 l정적분 값 - 구분구적법 값l, 즉 오차가 달랐습니다.
위의 설정된 함수의 경우에는 error 가 midpoint rule 을 사용할 때 가장 작았고 upper point rule 을 사용할 때 error 가 가장 컸습니다.

이는 일반적이기보다는 각각의 함수에 따라 error 가 가장 작은 end point rule 이 있을 것입니다.




[Final OK by SGLee] [Finalized by 손원식] AI 을 위한 기초수학 17강 <미분적분학> [중적분 (double integral, multiple integral)] 개념 복습 및 정리
작성자 : 손원식(2019****98)작성일 : 8월 8일 오전 1:20
조회수 : 20
자료의 출처 : http://matrix.skku.ac.kr/math4ai/part2/
2.6 중적분 (double integral, multiple integral)
정의. 이중적분
직사각형 영역 에서 의 이중적분은 다음과 같이 정의된다.
![]()
![]()

[(중적분) 구분구적법을 2축에 적용하는 방법, 긴 직육면체나무막대들의 부피를 구해 더하는 방식]
▶ 같은 방법으로 3차원 영역 위에서
의 3중적분(triple integral)도 정의할 수 있다.
![]()
(3차원 평면 위의 작은 조각 부피에 높이를 곱하여 부피를 구하여 그것 모두를 더하는 방식)
정리. Fubini의 정리 (연속 2변수함수의 2중적분 경우, 적분순서를 바꾸어도 이중적분값은 같다)
가 직사각형 영역
에서 연속이면 다음이 성립한다.
![]()
정리. 연속함수의 2중적분의 경우, 적분영역이 직사각형이 아닌 경우!!
(1) 가 영역
에서 연속이면 다음이 성립한다.
(2) 가 영역
에서 연속이면 다음이 성립한다.
![]()



[일반적인 영역에서의 중적분 예: 위의 사면체 부피 구할 때]
** 일변수 함수의 적분에서 치환적분(변수변환)은 다음과 같이 주어진다. **
![]()
여기서
는 전단사이고 연속인 도함수를 갖는다. 이를 다음과 같이 쓸 수 있다.
이제 변수변환을 이중적분으로 확장한다. 이변수 함수
가 적분가능하다고 하고, 이중적분
을 새로운 변수 u, v에 관하여 나타내보자.
함수 ![]()
가 연속인 편도함수를 갖고,
가 uv-평면의 영역 S를 xy-평면의 영역 R로 변환시킨다고 하자. 아래 그림과 같이 uv-평면에서
을 넓이로 갖는 직사각형 영역 S와 xy-평면에서 변환된 이미지 R을 고려해보자.

[변수 변환]
그러면 xy-평면에서 R의 넓이는 두 벡터
,
로 주어지는 평행사변형으로 근사될 수 있다. 편도함수의 정의를 사용하면
![]()
![]()
임을 알 수 있고, 두 벡터 a와 b로 주어지는 평행사변형의 넓이(면적)는 외적(cross product)의 크기 (절대값)
이므로 R의 넓이의 근사값은 다음과 같다.
일 때,
.
또한

이 성립하므로 다음 정리를 얻을 수 있다. 이때
을 ![]()
의 야코비안(Jacobian)이라 하고
으로 나타낸다.
정리. 이중적분의 변수변환
전단사함수
,
가 연속인 편도함수를 갖고,
이라 하자. 그러면 연속함수
에 대하여 다음이 성립한다.
![]()
[극좌표(Polar Coordinates)에서의 2중적분]
극좌표에서의 이중적분은 변수변환의 특수한 예이다. 극좌표
and r>=0
에서의 야코비안은
으로 주어지고, 이중적분은 다음과 같이 쓸 수 있다.

여기서 a, b,
, 는 적분영역 R과 변환 x=rcos
, y=rsin
에 따라 정해진다.
_________________________________
학습한 내용 정리)
이중적분 : 평면도형 위에서 정의된 함수의 적분을 이중적분이라고 하는데, 그 정의는 일변수함수의 정적분의 정의와 크게 다르지 않다.
일변수함수의 정적분의 값이 넓이를 나타낸다면, 이중적분의 값은 부피를 나타낸다.
일변수 함수의 정적분은 직사각형들의 넓이의 합들의 극한인데, 이중적분에서는 직사각형들의 밑변 대신에 직육면체의 밑면으로 바꾸어 구한다.
따라서 이에 대한 시그마 식(직육면체들의 합)을 세우고, 이 식의 극한값은 함수 z=f(x,y)가 나타내는 곡면 사이의 부피에 가까워지며 우리가 원하는 값을 구할 수 있게 된다.
여기서 푸비니 정리란, f가 연속함수인 경우에!! 이중적분과 반복적분의 값이 같다는 이론이다.
중적분 : 다변수함수(多變數函數)의 적분으로 중복적분이라고도 한다. 예컨대 xy 평면 위의 면분(面分) E 위에서 정의된 함수 f(x,y)의 E에 걸친 2중적분(2변수에 관한 중적분)은 변수 x또는 y에 관하여 먼저 적분하고 그 후에 y또는 x에 관하여 적분하는 것을 말한다.
미적분학에서, 중적분(重積分, 영어: multiple integral)은 정적분을 다변수 함수에까지 확장한 것이다. 이변수 함수의 경우를 이중 적분(二重積分, 영어: double integral)이라고 하며, 양의 함숫값의 함수의 이중 적분은 함수의 그래프 곡면과 평면 사이의 부피라고 이해할 수 있다. 삼변수 함수의 경우를 삼중 적분(三重積分, 영어: triple integral)이라고 하며, 양의 함숫값의 함수의 삼중 적분 역시 (4차원 공간 속의) 초곡면과 좌표 초평면 사이의 초부피라고 생각할 수 있다.
중적분은 정적분을 여러 번 반복하여 계산할 수 있으며, 이를 푸비니 정리라고 한다. 복잡한 중적분의 계산에는 변수 변환을 통해 적분 집합이나 함수를 단순화하는 기법이 필요하며, 이를 치환 적분이라고 한다.
일변수 함수의 리만 적분 · 리만-스틸티어스 적분 · 르베그 적분 · 르베그-스틸티어스 적분에 대하여 각각 그에 대응하는 중적분이 존재한다. 임의의 측도(또는 유한 가법 측도)에 의한 적분이 주어졌을 때, 이에 대응하는 중적분은 곱측도에 의한 적분이다.
성질
리만 적분 가능 함수는 유계 함수일 필요가 없다. 예를 들어, 정의역이 조르당 영집합인 함수는 항상 리만 적분 가능 함수이다. 그러나, 양의 조르당 측도의 집합들로 임의로 세밀하게 분할될 수 있는 정의역 위의 리만 적분 가능 함수는 항상 유계 함수이다. 특히, 조르당 가측 열린집합 또는 그 폐포 위의 리만 적분 가능 함수는 항상 유계 함수이다.
리만 중적분은 일변수 함수의 리만 적분과 같은 성질들을 갖췄다. 예를 들어, 리만 중적분은 선형성 · 적분 집합에 대한 가법성 · 비엄격 부등식의 보존 · 곱의 적분 가능성 보존 등을 만족시킨다.
자료의 출처 : https://ko.wikipedia.org/wiki/%EC%A4%91%EC%A0%81%EB%B6%84
_____________________________________________
Comment : 1학년 2학기때 미분적분학2를 수강했었다. 그 때 공부했던 중적분 파트의 내용이 부분 부분 기억이 나서 이번 강의를 들으면서 도움이 되었다.
14-1 Double Integrals over Rectangular Region 으로 시작해서 좌표공간에서의 정적분의 기본적인 정의와 계산 그리고 Iterated Integral (반복적분)과 Fubini's Theorem을 배우게 된다.
14-2 Double Integral over a General Regions 여기서는 x와 y의 변수의 정의역이 일반적인 실수가 아닌 함수의 형태로 이루어져있을 때,
Z=f(x,y)의 정적분을 구하는 경우이다.
14-3 Double Integrals in Polar Coordinates 데카르트 좌표계를 극좌표계로 치환하여서 정적분을 구하는 형태를 배우는 단원이다.
14-5 Surface Area 도형의 부피가 아닌 표면적을 구하는 방식을 공부하는 단원이다.
14-6 Triple Integral 삼중적분의 형태를 알고, 계산식을 공부한다.
14-7 Triple Integral in Cylindrical Coordinates & Spherical Coordinates 원기둥 좌표계 또는 구좌표계로 치환하여 정적분하는 형태를 공부한다.
** 14-9 ** Change of Variable in Multiple Integrals
여기서 그 중요한 Jacobian transformatio을 배우게 된다.
더 나아가 나중에는 벡터장에서의 벡터로 이루어진 함수의 적분 계산식을 공부한다.
미적분 2를 선수강한 상태에서 이 수업을 듣게 되어서, 이해하는데 크게 어려움이 없었고 학습하는데 효율적이었다.
4주차 까지의 강의를 모두 듣고, 스스로 학습하고, 학우들과 이를 공유하고, 서로의 생각을 나누면서 많은 것들을 배우게 되었다.
처음에는 문의게시판에 글을 쓰는 형식조차 몰라서 많이 혼란스워했지만, 강의를 듣고 들은 내용을 요약하며, 내 방식으로 재서술해보며, 모르는 부분은 질문하고, 한 주차마다 나의 감상평을 올리면서 나날이 발전할 수 있었다.
타 강의와는 다르게 학생들 서로가 Q&A를 활발하게 하고 교수님과 소통이 자유롭게 이루어질 수 있는 것이 이 강의에 매력을 느낄 수 있는 가장 큰 이유이자 장점인 것같다. 남은 기간동안 더욱 열심히 할 것이다.
이상구(LEE SANGGU)8월 8일 오전 1:25
Good. You got it. 본 강좌의 의도를 이해 했습니다^^
김호연(2020****32)8월 23일 오후 12:15
탁월한 정리에 따봉!
COMMENT
Funini’s theorem, JACOBIAN 을 복습하고 중적분의 개념과 성질을 자세하게 알 수 있었습니다.
중적분은 정적분을 다변수 함수까지 확장한 것이다. 중적분은 정적분을 여러번 시행하여 계산 가능 - FUBINI'S THEOREM
복잡한 중적분 계산에는 변수변환이 필요하고 이 적분은 치환적분이라 한다.
*Gradient Descent Algorithm 정리
4주차 Gradient Descent Algorithm 추가 정리
작성자 : 김진웅(2015****73)작성일 : 8월 4일 오후 3:57
조회수 : 32
º 다음은 교재 예제
에서
exact line search(steepest-descent method)를 수행하여
어떻게
를 유도해 내었는지를 정리합니다.
조건은
와
입니다.
에서
와
를 찾아야 합니다.
예제에서는 exact line search를 하면서 steepest-descent method를 사용하였습니다.
이고 이 함수에서는
입니다.
(일변수함수와 비교하면 이해 되실 겁니다.
)
이제
를 구하기 위해서,
를 에 대하여 전개합니다. (exact line search는 를 최소화하는
를 찾습니다.)

*은 A가 symmetric이므로 성립합니다.
이제
를 에 대하여 미분합니다.
![]()
인 가
를 최소화합니다.
(A가 positive definite이기 때문에 최소화입니다.)
즉,

네, 맞습니다.
는
입니다.
정리하면, steepest descent method에서 A가 positive definite symmetric인
simple quadratic function의
는
입니다.
º 정리하면서 Gradient Descent Algorithm에서 exact line search를 어떻게 하는지 예제를 통해 알게 되었습니다.
큰 도움을 받은 자료입니다.
https://ocw.mit.edu/courses/sloan-school-of-management/15-084j-nonlinear-programming-spring-2004/lecture-notes/lec5_steep_desce.pdf
5. Newton's Method 정리 및 실습
Ref: https://canvas.skku.edu/courses/10183/external_tools/4
https://zhuanlan.zhihu.com/p/37588590

Newton’s method can be used not only to solve the problem of the extreme value of a function, but also to solve the root of the equation. The two are essentially a problem, because the idea of solving the extreme value of a function is to find the point where the derivative is 0. According to the wiki Explain that, geometrically speaking, Newton’s method uses a quadric surface to fit the local surface at your current location, while the gradient descent method uses a plane to fit the current local surface. Normally, the quadric surface The fitting of is better than the plane, so the descent path selected by Newton's method will be more in line with the true optimal descent path.

6. 채희준 Part Ⅱ 다변수 미적분학과 최적화 정리 - 3 (16강 ~ 17강)
Ref: https://canvas.skku.edu/courses/10183/external_tools/4
http://matrix.skku.ac.kr/math4ai/part2/
https://zhuanlan.zhihu.com/p/37524275
8. 주축정리
대칭행렬의 고유값을 통해, 그래프의 개형을 쉽게 알아내는 정리. 이후 극대 극소 안장점 파악에 큰 도움을 준다.
고유값이 전부 양이라면, a 음이라면, b의 형태를 띈다. 
서로 다른 부호인 경우(0이 아닌)에는 a, 둘 중 하나가 0인 경우는 b
9. Fermat의 임계점 정리 + 극대 극소
어떤 함수 f가 점(a,b)에서 극대 또는 극소가 되고 편도함수가 존재하면 위 식이 성립한다. (그래디언트 값이 0) 이러한 임계점의 경우, 전부 극대 극소가 되는 것은 아니다. 안장점 같은 형태가 있는데 이게 또 나중에 배울 그래디언트 경사하강법에서도 다룬다. 다 이어지는 내용인 것이다.
바로 위에서 우리는 그래프의 형태를 고유값 계산을 통해 알아낼 수 있다고 했는데, 위에서 고유값이 전부 양이나 음인 경우에는 극대나 극소이지만 만약 0이 있거나 혹은 부호가 다르다면 안장점이 되는 것이다.
10. 극대 극소 판정법
점
의 근방에서 2변수 함수
가 연속인 2계 편도함수를 갖고,
라 하자.
(1)
이고,
이면,
는 극솟값 이다.
(2)
이고,
이면,
는 극댓값 이다.
(3)
이면,
는 극댓값도 극솟값도 아니다. 점
는
의 안장점 이다.
이는 위에서 알아본 이차형식의 양의 정부호, 음의 정부호, 부정부호 개념과 일치한다. (고유값 계산을 통한 부호 판별)
헤시안 행렬을 이용해 다변수함수에서 고유값 부호 판별을 할 수 있다.
11. Gradient Descent Algorithm (경사 – 기울기 하강법)
비용을 최소화 시키는 해값을 구하는 알고리즘의 일종으로, 스키 슬로프를 가장 빨리 내려오는 방법을 찾듯이 기울기가 낮은 쪽으로 계속 이동시켜 극값을 찾아가는 것이다.
위에서 말한 fermat 의 임계정 정리를 통해, 어디 있는지 모르는 해이지만 적어도 그래디언트 값이 0이라는 것을 우리는 알 수 있다. 이를 이용해 최적해를 찾아간다.
두 가지 방법이 있는데 비용을 많이 들지만, 정확한 값을 찾을 확률이 높은 exact line search, 함숫값이 감소하는 방향을 보장해준다면 점차 정확한 값에 다가가는 inexact line search 가 있다.
http://matrix.skku.ac.kr/math4ai/part2/
경사하강법 코드 예시이다.
# initializing # https://sagecell.sagemath.org/
A = diagonal_matrix(RR, [20, 10, 2, 1])
b = vector(RR, [1, 1, 1, 1]) # objective function
x0 = vector(RR, [0, 0, 0, 0]) # initial guess
g0 = -b # initial gradient
r = [] # 그래프를 그리기 위한 용도
# main iteration
for i in range(0, 200):
gn = g0.norm()
r.append((i, gn))
if gn < 10^(-8):
print("Stationary point! Algorithm terminated!")
break
w = A*g0
a = g0.inner_product(g0)/(g0.inner_product(w)) # step-size
x1 = x0-a*g0
g1 = A*x1-b
x0 = x1;g0 = g1
show(line2d(r) + point(r, color = 'red')) # gradient 의 norm을 그래프로 그림

코드에 대한 설명을 덧붙이자면, 반복문을 통해 200번 반복하는 것을 알 수 있고 중간에 탈출하기 위한 조건은 오차가 10^(-8) 보다 작아야한다. 처음 시작 벡터는 (0,0,0,0) 으로 설정했고 목적벡터는 (1,1,1,1)이다. g0 는 목적 벡터, a는 learning-rate인데 여기서는 g0의 내적을 g0와 w의 내적으로 나눴다. 그 후 연산을 반복하며 g0의 값을 x0를 이용해 바꿔주고 x0 또한 바꿔나간다. 이런 식으로 반복하여 오차를 줄여나가고 있다.
12. 다중적분 및 Fubini의 정리
이 파트에서는 다변수 함수의 경우, 다중적분을 어떻게 하는지에 대해 배웠다. 코드를 통해서 바로 계산하는 법 또한.
fubini 정리를 통해 이중적분의 경우 순서를 바꿔도 값이 같다는 것을 알았다. 3차원 공간에서 어떤 축으로 먼저 계산하던지 전체 부피값은 같다는 것과 똑같다라는 생각을 하니까 쉽게 이해됐다.
When using gradient descent, tuning is required. What needs to be tuned?
The step size selection of the algorithm. The value of the step size depends on the data sample. You can take more values, from large to small, run the algorithm separately to see the iterative effect, if the loss function is getting smaller, the value is valid, otherwise the step size must be increased. If the step size is too large, the iteration will be too fast, and it may even miss the optimal solution. If the step size is too small, the iteration speed is too slow, and the algorithm cannot end for a long time. Therefore, the step size of the algorithm needs to be run several times to get a better value.
The initial value selection of algorithm parameters. The initial value is different, the minimum value obtained may also be different, so the gradient descent only obtains the local minimum; of course, if the loss function is convex, it must be the optimal solution. Due to the risk of a local optimal solution, it is necessary to run the algorithm multiple times with different initial values, the minimum value of the key loss function, and the initial value that minimizes the loss function is selected.
Normalized. Since the value range of different features of the sample is different, it may lead to slow iteration. In order to reduce the influence of feature value, the feature data can be normalized.
![]()

7. 4주차 내용 질문 by 이동현 답변by 박진형 박은아 이상구 교수님, 감사합니다 이해가 되었습니다.
Ref: https://canvas.skku.edu/courses/10183/external_tools/4
https://zhuanlan.zhihu.com/p/37524275
Batch gradient descent in Python
![]()
내용이 미약하지만 조금이라도 도움이 되시길 바라겠습니다.
hw-5주차 분산의 성질에 관한질문
작성자:김범준(2017****99)작성일:8월 18일 오후 1:22
조회수:5
아래에 천가영학우분의 질문 으로 인해 저 또한 궁금한 점이 생겨서 질문드립니다.
,
,
라는 분산의 성질은확률밀도함수(이산확률이 아닌경우)인 경우에만 성립하는 것인지 아니면 이산확률에서도 성립하는 것 인지 궁금합니다.
보통 이러한 정리를 통해 구할때는 연속함수형태에서 y=ax+b의 형태에서만 구해보았기 때문에, 또한 교과서에서 이산확률의 경우에 이를 계산하는 문제가 없어 질문드립니다.
이상구(LEE SANGGU)8월 18일 오후 1:58
위의 공식은 이산확률분포와 연속확륭분포 모두에 똑 같이 적용됩니다.교재에서 보았듯이이산의 경우는 Sum 으로 연속의 경우는 적분 integral 으로 계산 하는 것만 다르지 ... 식은 모두에 성립됩니다. 됩니다.
Final OK by SGLee Finalized by 김범준 HW-5주차(자료공유) 기댓값과 상트페테르부르크의 역설by 김범준. 추가내용by 전재현학우님, 정권채학우님. 댓글by 이상구교수님, 나종진학우님,한수현학우님, 박정호학우님
작성자:김범준(2017****99)작성일:8월 17일 오후 4:47
조회수:23
Final OK by SGLee Finalized by 김범준 HW-5주차(자료공유) 기댓값과 상트페테르부르크의 역설by 김범준. 추가내용by 전재현학우님, 정권채학우님. 댓글by 이상구교수님, 나종진학우님,한수현학우님, 박정호학우님
HW-5주차(자료공유) 기댓값과 상트페테르부르크의 역설
작성자:김범준(2017****99)작성일:8월 13일 오후 6:44
기댓값의 의미:확률변수의기댓값(expectation)은확률적 사건에 대한 평균값으로, 사건이 벌어졌을 때의 얻은 값과 그 사건이 일어날 확률을 곱한 것을 전체 사건에 대해 합한 값이다. 이것은 어떤 확률적 사건에 대한평균의 의미
상트페테르부르크의 역설이란?
• 동전을 던져 뒷면이 나오면 계속 던지고, n번째 처음 앞면이 나오면 게임이 종료되고 2n-1원의 상금을 지급, 도박의 참가비는 10,000원 이라고 가정한다.
이러한 게임을 기댓값(E)을 구해보면,
따라서 기댓값은 무한대가 됨. 하지만 이러한 게임을 실제로 해 보려는 사람을 찾는다면 거의 없다. -이 역설은 베르누이(베르누이에 대한 설명)가 제시하고 그 이후 이역설의 해결을 모색하는 과정에서 수학의 확률개념 발전 및 경제학에서 효용이론 발전등에 기여하였다.
왜 그런가?
-기댓값이라는 개념과 현실 직관과의 차이(우리가 현실에서 선택을 설명할 때 기댓값보다 다른(EX)효용이론함수)수단에 의해서 설명이 더 용이함.)
- 확률의 문제. 우리가 한판 게임하는데 만원을 쓰는데 만원이상 얻을확률은 1/2^14 확률로 만원 이상(16,384)을 얻을수 있다. 이는 매우 적은확률이다.
comment: 통계학에 여러 개념은 현실 분석을 용이하게 해 주지만 그 과정에서 모순이나 왜곡이 존재할 수 있다. 하나의 방법론을 맹신하기보다 여러 방법론과 개념을 폭 넓게 이해하고 인지해야하는 중요성이 여기에 있는 것 같다.
출처:http://matrix.skku.ac.kr/math4ai/part3/
https://en.wikipedia.org/wiki/St._Petersburg_paradox
https://statkclee.github.io/r-algorithm/r-petersburg-paradox.html
전재현(2015****91)8월 13일 오후 8:05
흥미롭게 읽어서 조금 더 찾아본 내용을 공유합니다.기재하신대로 위 역설을 해결해가는 과정은 경제학의 효용이론이나 전망이론, 행동경제학 등 다양한 경제학 이론에 영향을 주었습니다.예시로 베르누이는 해당 과정에서 10,000원이 20,000원으로 불어나 얻는 효용과 100억이 200억이 되어서 얻는 효용은 다르다는 관점에서 출발하여 금액에 따른 효용이 로그함수로 나타날 수 있다고 주장하였고, 이는 금액에 따른 만족이 단순히 금액에 정비례하지는 않는다는 경제학의 효용이론을 탄생시키는데 기여하게 됩니다.불확실성을 지닐때 기대값이 반드시 합리적인 예측 수단이 될 수 없다는 내용을 담은 이 역설은 현대 경제학에 와서는 얻게되는 수익 자체인 기대효용이 아니라 그 수익에 대한 주관적인 가치가 의사 결정을 내리는 기준이 된다는 발상으로 이어지게 되었습니다.찾아볼수록 생각보다 더 의미 깊은 역설이었네요. 재미있는 정보를 공유해주셔서 감사합니다 :)
https://namu.wiki/w/%EC%83%81%ED%8A%B8%ED%8E%98%ED%85%8C%EB%A5%B4%EB%B6%80%EB%A5%B4%ED%81%AC%EC%9D%98%20%EC%97%AD%EC%84%A4https://m.blog.naver.com/PostView.nhn?blogId=ydok007&logNo=220983490827&proxyReferer=https:%2F%2Fwww.google.com%2F
정권채(2008****19)8월 14일 오후 11:36
이와 비슷하지만 다른 기댓값에 대한 내용으로 카지노 전략 중 double up betting이 있습니다.판돈을 무한히 늘릴 수 있다면 딸 확률 1/2인 도박에서 돈을 계속 딸 수 있다는 말이죠.1회베팅 1만원 패배2회베팅 2만원 패배3회베팅 4만원 패배4회베팅 8만원 패배5회베팅 16만원 패배6회베팅 32만원 패배...?회베팅 -----> 승리 (원금+ α) 언젠가는 회수해서 이긴다는 이론입니다.하지만 기대값적인 측면에서 보면가령 첫판 딸 확률 or 첫판 잃고 둘째판에 딸 확률=P1=3/4 >>> 첫번재판,두번째판 모두잃을 확률=P2=1/4 이지만 P1=첫판에 이기거나 혹은 첫판 잃고 둘째판에 이기고 갖고가는 돈=>100원P2=첫판 두번째판도 잃어 손실되는 돈=>300원이기 때문에100*(3/4)+(-300)*(1/4)=0 즉 역시 기대값은 0 가 됩니다.이건 세번째판 네번째판 마찬가지로 계산을 하여보면 기대값은 항상 0 원이 나옵니다.
Final OK by SGLee Finalized by 김범준. 신뢰구간의의미 by 이상현 학우님 댓글 및 추가의견by 이상구교수님, 정원철 학우님. 박은아 학우님
작성자:김범준(2017****99)작성일:8월 20일 오후 7:30
조회수:35
Final OK by SGLee Finalized by 김범준. 신뢰구간의의미 by 이상현 학우님 댓글 및 추가의견by 이상구교수님, 정원철 학우님. 박은아 학우님
신뢰구간을 추정방법중 구간추정을 이용합니다.
구간 추정이란 모수A가 a~b사이의 구간에 있을 확률을 추정하는것 입니다
모수가 신뢰구간 내에 없을 확률을 k이라고 할때
신뢰구간 내에 있을 확률은 1-k가 됩니다.
P(a<=표준정규분포<=b)=1-k로 나타낼시 1-k가 95일때와 99일때
표준정규분포표에 의해
P(-1.96<=z<=1.96)=0.95 / P(-2.58<=z<=2.58)=0.99 가 성립합니다.

표준정규분포인 z는 어떠한 확률변수를 표준화 했었음을 이용해
평균-1.96*(표준편차/(표본의크기)^(1/2))<=...으로 흔히 알고있는 공식을 유도할 수 있습니다.
저희가 흔히 아는 95와99의 신뢰도는 모수가 신뢰구간내에 있을 확률이 95% 99%임을 의미한다는 것을 알 수 있습니다.
모수가 신뢰구간내에 있을 확률이 높기 위해서는 신뢰구간이 넓어야 한다는 것은 쉽게 알 수 있습니다.
그렇기에 95%보다 높은 99%가 신뢰구간이 넓어야 하고 이 때문에 1.96보다 높은 2.58을 사용합니다.

이상구(LEE SANGGU)8월 19일 오전 7:21
ㅇㅋ
정원철(2017****79)8월 19일 오후 5:51
자세한 정리 감사합니다 !추가로, 저는 공부를 하면서 가설검증을 할 때 신뢰구간과 p-value (유의수준)의 관계를 아는 것이 중요하다고 생각했습니다.예를 들어, 어떠한 귀무가설 < H0: 나는 A를 받을 것이다 > 과 대립가설 <H1: 나는 A를 못 받을 것이다.>이 있다고 했을 때,신뢰구간 k 범위 내에 H0의 값이 존재한다면 = p-value가 1-k 보다 크 다면 -> '95%의 유의수준으로 귀무가설 H0를 참으로 받아들일 수 있다.(나는 A를 받을 수있다.)'라는 말이 됩니다.즉, k가 95%라고 했을 때, H0의 값이 P(-1.96<=z<=1.96) 내에 존재하거나 (예를 들어 0.5) , p-value가 0.05 보다 크다면 위와 같은 관계가 성립되고,반대로 범위 밖에 있거나 p-value가 0.05보다 작으면 '95%의 유의수준으로 귀무가설 H0를 기각하고 대립가설 H1을 참으로 받아들이겠다(나는 A를 못 받는다)' 라는 말이 됩니다.정리하자면, 신뢰구간과 p-value는 항상 같은 결론을 이끌어냅니다.
박은아(2016****73)8월 20일 오후 2:20
이상현 학우님과 정원철 학우님의 글을 읽고 신뢰구간에 대해 자세히 공부하다가 다음과 같은 퀴즈 사이트를 발견하여 링크를 공유합니다!https://ko.khanacademy.org/math/statistics-probability/confidence-intervals-one-sample/introduction-to-confidence-intervals/a/interpreting-confidence-levels-and-confidence-intervals(퀴즈 예시)신뢰도가95%에서99%로 증가하는 것이 신뢰구간에 어떤 영향을 미치나요?정답을 한 개 고르세요:표본 데이터를 보지 않고서 말할 수 없습니다.신뢰도가 증가하면 신뢰구간이 더 넓어지면서 오차범위가 증가합니다.신뢰도가 증가하면 신뢰구간이 더 좁아지면서 오차범위가 감소합니다. 풀이신뢰도를 높인다는 것은 각 구간에서 모수의 실제 값을 포착하기 쉽다는 뜻입니다. 더 높이기 위해서, 큰 오차범위와 함꼐 넓은 구간을 사용합니다.정답:신뢰도가 증가하면 신뢰구간이 더 넓어지면서 오차범위가 증가합니다.신뢰도, 신뢰구간, 유의수준에 대한 개념을 견고히 할 수 있었습니다.
comment: 신뢰구간이라는 개념을 고등학교때 배울때 문제를 풀어내는 정도(즉, 이해를 제대로 하지 못한 채 문제만 풀 수 있는 수준)였는데 이번 수업에서 다시 배우며 학우님들의 자세한 설명 및 정리를 보니, 보다 명확한 이해가 가능한 것 같습니다. 감사합니다.
[Final OK by SGLee] . Finalize & 추가적 이야기 by 김범준. [5주차] 포아송분포 베팅 (토트넘 vs 에버튼)by 정원철. 댓글 by. 이상구 교수님, 안성진 학우님, 최희준 학우님, 천가영 학우님, 나종진 학우님, 임성규 학우님, 박은아 학우님, 정권채 학우님, 박정호 학우님, 장환승 학우님
작성자:김범준(2017****99)작성일:8월 21일 오후 6:51
조회수:47
[5주차] 포아송분포 베팅 (토트넘 vs 에버튼)
작성자:정원철(2017****79)작성일:8월 19일 오후 5:30
조회수:30
전에 정권채님의 포아송분포를 활용하여 호날두의 득점을 예측하는 글을 보고 흥미를 느껴 다른 예시를 가져와 보았습니다.
이번글에서는 2015/2016년 EPL 기록을 통해 손흥민 선수가 뛰고 있는 토트넘 vs 에버튼의 경기 결과를 예측 해봅니다.
먼저,원리는 각 팀의 공격력/ 수비력을 척도로 하여 포아송분포를 활용해 득점을 예측한 뒤, 두 팀간의 비교를 통해 우열을 가리는 것이며,
여기서 예를 든 EPL의 경우, 한 시즌 당 38경기로, 포아송분포(이산)를 나타내기에 적절한 표본을 가지고 있다는 점을 전제로 합니다.
포아송분포로 확률을 구하기 전에, 각 팀이 해당 시합에서 득점할 것으로 예상되는 평균 골 수를 계산해야 합니다.
이는 각 팀의 "공격력"과 "방어력"을 산출하고 비교하여 계산할 수 있습니다.
공격력 계산
지난 시즌 득점한 총 골 수를 출전한 경기 수로 나누어 계산합니다.
시즌 중 홈 경기에서 득점한 총골/경기 수(시즌)
시즌 중 원정 경기에서 득점한 총 골/경기 수(시즌)
영국 Premier League 2015/2016 시즌에서 홈 경기는 567/380, 원정 경기는 459/380이며 경기당 평균 골 수는 홈 경기가 1.492,
원정 경기 1.207을 기록했습니다.
홈 경기에서 득점한 평균 골 수: 1.492
원정 경기에서 득점한 평균 골 수: 1.207
각 팀의 홈 및 원정 경기당 득점한 평균 골 수를 알아야 합니다.
->특정 팀의 공격력 평균과 리그 평균 공격력 비율이 그 팀의 "공격력"이 됩니다.
방어력 계산
홈 팀이 득점한 골은 원정 팀의 실점 골과 동일하므로 위 수치를 반대로 하면 됩니다
홈 경기에서 실점한 평균 골 수: 1.207
원정 경기에서 실점한 평균 골 수: 1.492
->이번에도 역시 특정팀의 방어력 평균과 리그 평균 방어력 비율이 팀의"방어력"을 나타냅니다.
토트넘의 골 예측
토트넘의 공격력 계산:
1단계:홈 팀이 지난 시즌 홈 경기에서 득점한 골 개수를 취합(토트넘: 35)하여 홈 게임 수로 나누면(35/19) 1.842가 나옵니다.
2단계:이 값을 게임당 득점한 시즌 평균 홈 경기 골(1.842/1.492)로 나누어 "공격력"을 산출하면1.235이 됩니다.
(35/19) / (567/380) = 1.235
에버튼의 방어력 계산:
1단계:지난 시즌 원정 팀이 원정 경기에서 실점한 골 수를 취합(에버튼: 25)하여 원정 경기 수로 나누면(25/19) 1.315이 나옵니다.
2단계:이 값을 경기당 원정 팀이 실점한 시즌 평균 골 수(1.315/1.492)로 나누어 "방어력"을 산출하면 0.881이 됩니다.
(25/19) / (567/380) = 0.881
이제 다음 공식을 이용해서 토트넘의골 득점 확률을 계산할 수 있습니다
(토트넘의 공격력x 에버튼의 방어력 x EPL의 평균 홈 경기 골 수).
1.235 x 0.881 x 1.492 =1.623
에버튼의 골 예측
에버튼의 골 득점 수를 계산하려면 단순하게 위 공식을 사용하되 평균 홈 경기 골 수를 평균 원정 경기 골 수로 대체합니다.
에버튼의 공격력:
(24/19) / (459/380) = 1.046
토트넘의 방어력:
(15/19) / (459/380) = 0.653
토트넘의 골 득점 확률을 계산했던 것과 같이 에버튼의골 득점 확률도 계산할 수 있습니다
(에버튼의 공격력 x 토트넘의 방어력 x EPL의 평균 원정 경기 골 수).
1.046 x 0.653 x 1.207 =0.824
->정리해보자면, 토트넘은 1.623, 에버튼은 0.824의 골확률을 갖습니다. 이 수치를 아래 포아송 공식에 넣으면 총 100%의 확률을 각 팀의 다양한 득점 결과 범위로 분산되도록 할 수 있습니다.
푸아송 분포 공식:
P(x; μ) = (e-μ) (μx) / x!
이 글에서는 계산이 다소 번거롭다는 점을 감안해푸아송 분포 계산기등의 온라인 도구를 사용하여 계산 했습니다.

결과 분석
위 테이블을 바탕으로 결과를 살펴본다면, 토트넘과 에버튼의 득점 확률이 수학적으로 독립이기 때문에 각 팀의 가장 높은 확률을 가지는 결과를 도출할 시,단일 확률로는 토트넘은 1골(0.3202), 에버튼은 0골(0.4386), 즉 14.04%(0.3202*0.4386)의 확률로 토트넘이 에버튼에 1:0으로 승리할 확률이 가장 높습니다.
물론0-0 부터 5-5 까지의 무승부를 모두 고려하여 계산한 무승부 확률은 24.72% (0.1973*0.4386 + 0.3202*0.3614 + 0.2599*0.1489 + 0.1406*0.0409 + 0.0507*0.0084 + 0.0185*0.0014)로 제일 높긴합니다만,배당은 아무래도 낮겠죠 ..
결론
다음 2020-2021시즌의 토트넘 vs 에버튼의 경기에 만약 돈을 걸어야하는 피치못할 사정이 생긴다면 무승부에 거는게 가장 이상적입니다.
하지만 토토를 즐기시는 분이라면 머리는 확률을 생각하지만 가슴 속에서는 배당을 외치고 있기 때문에 계산을 해보면,
토트넘 1-0 승 배당 : 7.12 배(1/0.1404)
무승부 : 4.05 배(1/0.2472)
저라면 토트넘에 걸겠습니다.
이상구(LEE SANGGU)8월 19일 오후 6:07 이 데이터에 근거한다면 ... 나도 토트넘에 betting 하고, 한 골 먼저 넣으라고 열심히 응원하겠네요^^
정원철(2017****79)8월 19일 오후 6:34 역시 인생 한방이죠 ,, 탁월한 선택이십니다 ^^
안성진(2015****36)8월 19일 오후 7:33 재미있는 글이네요~ 잘 읽었습니다
채희준(2016****00)8월 19일 오후 7:40 흥미로운 내용이네요! 좋은 글 공유해줘서 감사합니다.
천가영(2020****17)8월 19일 오후 8:16 재미있게 읽었습니다. 좋은 글 감사합니다!
나종진(2017****17)8월 19일 오후 9:18 재밌는 글입니다. 감사합니다.
임성규(2015****08)8월 19일 오후 9:34 1:0 으로 한 골이라면 그 골은 손흥민이 넣겠네요!잘 읽었습니다 ㅎㅎ
박은아(2016****73)8월 20일 오후 2:44 포아송분포에 대한 재미있는 예시네요! 잘읽었습니다 ㅎㅎ
정권채(2008****19)8월 20일 오후 3:09 전 개인의 기록에 집중했었는데 팀 기록으로 하니 흥미롭네요.
박정호(2014****10)8월 20일 오후 9:56 흥미로운 글이네요. 잘 읽었습니다.
장환승(2016****69)8월 20일 오후 11:58 재밌네요 ㅋㅋㅋ 잘 읽었습니다
comment: 재미있는 분석 잘 보았습니다. 만약 린가드(맨유)와 손흥민(토트넘)이 트레이드 된다면 맨유와 토트넘의 20-21 시즌의 베팅을 어떻게 하는 것이 좋을지 아시는 분은 re-Final 을 통해 자료공유 해주시면 감사하겠습니다. ^^
추가 이야기: 스포츠에 통계학을 도입한다는 발상은 예전부터 있어 왔습니다.
특히 개개인의 능력을 기록을 통해 분리해내기 쉬운 야구에서는 '세이버 매트릭스'라는 이름으로 오래전 부터 연구되어 왔습니다. 밑의
이야기를 읽어 보시면 아시겠지만 통계학과 수학 그리고 데이터 수집등과 같은것은 우리 일상의 여러분야와 밀접히 관련되어 있습니다.
이는 인공지능의 발전을 통해 더 세상을 편리하게 바라볼 수 있게 도와줄 것이라 생각합니다.
야구 데이터 분석 #4 세이버메트릭스의 오늘과 내일 출처:
다년간 쌓인 통계 자료를 이용해 야구 기록을 분석하는 ‘세이버메트릭스’.
지난 편에서는 세이버메트릭스의 어원과 세이버메트릭스를 유행시킨 주인공들을 만나 보았는데요, 이번에는 인터넷을 통해 세이버 메트릭스가 널리 알려지게 된 과정을 소개하겠습니다.
![]()

메이저리그 여러 구단이 이미 1980년 무렵부터 데이터 분석 전문가들을 고용하여 구단 운영에 활용하고 있었고, 빌 제임스와 같은 사람들의 노력으로 보다 많은 팬들이 세이버메트릭스에 관심을 가지게 되었습니다만, 아직은 개별적인 흥미와 연구의 차원에 머무르고 있었습니다.
세이버메트릭스가 오늘날과 같이 널리 퍼지게 된 것에는 인터넷의 역할이 결정적이었지요.
지금처럼 월드 와이드 웹(WWW)이 대중화 되기 이전에, 게시판과 유사한 형태로 유즈넷(USENET)이라는 인터넷 시스템이 있었습니다.
1994년에유즈넷 뉴스그룹 RSBB(rec.sport.baseball)가 탄생합니다.
이 뉴스그룹에 당시 주류 야구 저널리즘에 불만이 많던 젊은 야구 분석가들이 대거 모이면서, RSBB는 세이버메트릭스 반란군 본부(!)의 역할을 하게 됩니다.
사람들은 매일같이 여기에 모여 주류 야구 언론을 비판하고, 당시 메이저리그 구단들의 전근대적인 운영을 지적하곤 했습니다.
토론토 블루제이스를 거쳐 ESPN에 합류한 키쓰 로(Keith Law)를 비롯하여 대체수준(Replacement Level) 개념을 발명하고 클리블랜드 인디언스에 고용된 키쓰 울너(Keith Woolner), 투수가 인플레이 타구의 운명에 별로 영향을 주지 못한다는 DIPS 이론의 보로스 맥크라켄(Voros McCracken), 마이너리그 유망주 전문가인 존 시켈스(John Sickels), ZiPS 예측 시스템을 고안한 댄 짐보스키(Dan Szymborski) 등의 유명 인사들이 모두 RSBB에서 왕성하게 활동하던 사람들입니다.
이 뉴스그룹은 아직도 살아 있답니다.
(https://groups.google.com/forum/#!forum/rec.sport.baseball)
RSBB에서 활동하던 개리 허카베이(Gary Huckabay)는 뜻이 맞는 사람들과 함께 1996년베이스볼 프로스펙터스 Baseball Prospectus(www.baseballprospectus.com)를 만들어서, 이제 웹사이트를 통해 주류 야구 저널리즘에 대해 독설을 퍼붓기 시작합니다.
역시 RSBB의 핵심 멤버이자 수학 교수였던 션 포먼(Sean Forman)은 2000년 야구 스탯을 제공하는베이스볼 레퍼런스 Baseball-Reference(http://www.baseball-reference.com/)를 만들었는데요. 베이스볼 레퍼런스는 야구 데이터에 목마른 팬들에게 지금까지도 방대한 스탯을 무료로 제공해 주고 있지요.

더 많은 데이터를!
한편, 션 포먼은 짐 퍼타도(Jim Furtado)와 함께 2001년베이스볼 프라이머 Baseball Primer(http://web.archive.org/web/20010405111444/http://www.baseballprimer.com/articles/about.shtml) 사이트를 설립하기도 했는데요, 이후베이스볼 씽크 팩토리 Baseball Think Factory(http://www.baseballthinkfactory.org/) 로 이름을 바꿉니다.
이 사이트는 유즈넷이 쇠퇴하면서 자연스럽게 침체되어 가던 RSBB 뉴스그룹을 대신하여 2000년대 초반 세이버메트릭스 대표 커뮤니티의 역할을 했습니다.
ZiPS의 댄 짐보스키, MGR이라는 필명으로 더 유명한 UZR의 미첼 리트먼(Mitchel Lichtman), 현재 세계에서 가장 영향력 있는 세이버메트리션인 탐 탱고(Tom Tango) 등이 모두 이곳에서 활동했답니다.

머니볼:불공정한 게임을 승리로 이끄는 과학
한편, 2003년에는 마이클 루이스(Michael Lewis)가 빌리 빈 단장과 오클랜드 구단의 성공 스토리를 담은 책 <머니볼 Moneyball>을 출간하였는데요. 이 책이 큰 반향을 불러일으키면서 야구계 내에서나 팬들 사이에서 세이버메트릭스에 대한 흥미와 관심이 더욱 고조되었습니다.
이러한 분위기 속에서 마침 2004년에더 하드볼 타임즈 The Hardball Times(http://www.hardballtimes.com/)가, 2005년에는팬그래프 Fangraphs(http://www.fangraphs.com/)가 각각 탄생합니다.
부분 유료 사이트인 베이스볼 프로스펙터스와는 달리 더 하드볼 타임즈와 팬그래프는 완전 무료였기에, 세이버메트릭스의 대중적인 확산에 결정적인 공헌을 하게 되었지요.

무료 사이트 오픈했다고!
현재는 메이저리그의 모든 구단이 데이터 분석 전문 인력을 고용하고 있습니다. 많게는 데이터 분석 전문 인력이 20명 가까이 되는 구단들(다저스, 탬파베이)도 있을 만큼 많은 데이터 분석 전문가들이 구단에서 일을 하고 있지요.
또한, 야구 데이터에 대한 팬들의 이해도와 요구 수준이 높아지면서 미디어에서도 활발히 세이버메트릭스를 활용하기 시작했습니다.
2000년대 중반 이후에는 인터넷에서 활발히 활동하던 세이버메트릭스 논객(?) 들이 결국 메이저리그 구단에 취업하거나 메인스트림 저널리즘에 합류하는 일도 잦아졌습니다.

구단 내 분석 인력은 확대일로에…
Source:https://fivethirtyeight.com/features/statheads-are-the-best-free-agent-bargains-in-baseball/(2016)
국내 프로야구에도 잘 알려지지는 않았지만 초창기부터 세이버메트릭스를 활용하려는 노력이 있어 왔습니다.
80년대 일부 구단에서는 빌 제임스의 연구 방법들을 적용하여 시즌 예측이나 선수 연봉 산정에 활용하기도 했고요.
야구 기록에 관심 있는 분들이 한국야구기록연구회(SKBR)와 같은 단체를 만들어 활발한 상호 교류와 연구를 했답니다.
인터넷이 없던 시절에 어떻게 이런 연구가 가능했는지 정말 놀랍기만 합니다!!

한국야구기록연구회 자료
사진: Patrick Bourgo (NC다이노스 데이터팀 외국인 코디네이터)
오늘날 메이저리그는 물론이고 국내의 중계 방송이나 야구 기사에서도 WAR과 같은 세이버메트릭스 지표를 흔히 접할 수 있습니다.
인터넷 커뮤니티에서 세이버메트릭스 이야기를 하시는 팬들도 무척 많아졌습니다.
세이버메트릭스가 대중화된 만큼, 한편으로는 오해도 많이 받고 있는 것 같고요, 심지어 잘못된 정보가 유통되는 경우도 있는 것 같습니다.
세이버메트릭스는 모든 질문에 답을 주지는 못합니다. 또한 세이버메트릭스가 항상 옳은 것도 아닙니다.
다만 야구를 객관적이고 합리적으로 이해하고자 하는 노력으로서, 궁극적인 답을 향해 계속 접근해 가는 과정이라고 할 수 있겠습니다.

답을 찾아서…
어쩌면 지금 우리가 널리 사용하는 WAR과 같은 계산 방식들이 몇 년 뒤에는 모두 폐기되고 새로운 스탯들이 나올지도 모릅니다.
새로운 방식이 더욱 합리적이라면, 내가 틀렸음을 인정하고 새로운 방식을 받아들일 수 있어야 합니다.
객관적, 합리적인 근거를 가지고 이야기하는 한, 누구나 자기 주장을 펼칠 수 있고, 동시에 상대방의 의견에 경청할 수 있는 것이지요.
이러한 열린 마음가짐이야말로 세이버메트릭스를 즐기기 위한 필수 조건이라고 하겠습니다.
마지막으로 한 가지. 야구를 숫자로 바라보는 것이 “비인간적”이거나 “부적절”하다고 생각하시는 분들께 드리고 싶은 말씀은, 세이버메트릭스는 오히려 야구를 더 재미있게 즐길 수 있는 방법이라는 것입니다.
[Act 27] (댓글 11) [Final OK by SGLee] Finalized by 채희준, [몬티 홀 문제] 문제 by 장환승, A by 이상구, 댓글 by 박정호







--------------------------------------------------------------------------------
[5주차] 이산확률분포 관계 정리
작성자 : 정원철(2017****79)작성일 : 8월 27일 오후 2:21
조회수 : 19
이항분포에 대한 개념을 아래의 7가지 이항분포들 간의 관계를 통해서 보다 유기적으로 파악할 수 있습니다.
(베르누이분포, 이항분포, 기하분포, 음이항분포, 포아송분포, 초기하분포, 다항분포)
먼저 베르누이분포는 시행횟수가 1회이고, 시행의 결과가 성공/실패 둘 뿐인 분포입니다. 분포함수는 아래와 같습니다. 기호로는 B(1,p)로 나타냅니다.

베르누이분포에서 시행횟수를 n회로 늘리면 이항분포가 됩니다. 기호로는 B(n,p)로 나타냅니다.

이항분포에서 시행의 결과로 발생하는 사건의 종류를 늘리면 다항분포가 됩니다. 기호로는 M(n,p1,p2,...)로 나타냅니다.

이항분포에서 시행횟수를 무한대로 보내고, 사건 발생확률을 0으로 보내면 푸아송분포가 됩니다. 기호로는 Pois(λ) 로 나타냅니다.

이항분포에서 복원추출을 비복원추출로 바꾸면 초기하분포가 됩니다. 반대로 초기하분포에서 시행횟수 M을 무한대로 보내면 이항분포에 가까워져 갑니다. Hyp(M,n,k)로 나타냅니다.

.
음이항분포는 r번의 실패가 나오기까지 발생한 성공이 x번일 확률분포입니다. 기호로는 NB(r,p)라고 나타냅니다.

음이항분포는 푸아송분포와 관계를 갖습니다. 음이항분포에서 r이 무한대로 가고, p가 1에 가까워 가면 음이항분포는 푸아송분포에 가까워져 갑니다. 이때 λ 는 n(1-p) 입니다.

음이항분포에서 r이 1이면 기하분포가 됩니다.

출처 <https://hsm-edu.tistory.com/937?category=773067>
comment
항상 확률분포의 pdf를 외우는게 힘들었었는데, 위와 같이 관계를 이해하고 나니까 머리속에서 로드맵이 그려져 기억에 잘 남는 것 같다.
박진형(2018****59)8월 27일 오후 2:42
이산확률분포들의 관계를 한눈에 정리하기 좋은 것 같습니다 감사합니다
김정한(2017****99)8월 27일 오후 5:20
로드맵으로 정리하니 확실히 개념파악이 쉽네요 좋은 자료 잘보고갑니다
[Act 29] (댓글 13) [5주차]Finalized by 정권채; 포아송분포 예시








...
현재는 메이저리그의 모든 구단이 데이터 분석 전문 인력을 고용하고 있습니다. 많게는 데이터 분석 전문 인력이 20명 가까이 되는 구단들(다저스, 탬파베이)도 있을 만큼 많은 데이터 분석 전문가들이 구단에서 일을 하고 있지요.
또한, 야구 데이터에 대한 팬들의 이해도와 요구 수준이 높아지면서 미디어에서도 활발히 세이버메트릭스를 활용하기 시작했습니다.
2000년대 중반 이후에는 인터넷에서 활발히 활동하던 세이버메트릭스 논객(?) 들이 결국 메이저리그 구단에 취업하거나 메인스트림 저널리즘에 합류하는 일도 잦아졌습니다.
구단 내 분석 인력은 확대일로에...
구단 내 분석 인력은 확대일로에…. Source: https://fivethirtyeight.com/features/statheads-are-the-best-free-agent-bargains-in-baseball/ (2016)
국내 프로야구에도 잘 알려지지는 않았지만 초창기부터 세이버메트릭스를 활용하려는 노력이 있어 왔습니다.
80년대 일부 구단에서는 빌 제임스의 연구 방법들을 적용하여 시즌 예측이나 선수 연봉 산정에 활용하기도 했고요.
야구 기록에 관심 있는 분들이 한국야구기록연구회(SKBR)와 같은 단체를 만들어 활발한 상호 교류와 연구를 했답니다.
인터넷이 없던 시절에 어떻게 이런 연구가 가능했는지 정말 놀랍기만 합니다!!
한국야구기록연구회 자료
한국야구기록연구회 자료
사진: Patrick Bourgo (NC다이노스 데이터팀 외국인 코디네이터)
오늘날 메이저리그는 물론이고 국내의 중계 방송이나 야구 기사에서도 WAR과 같은 세이버메트릭스 지표를 흔히 접할 수 있습니다.
인터넷 커뮤니티에서 세이버메트릭스 이야기를 하시는 팬들도 무척 많아졌습니다.
세이버메트릭스가 대중화된 만큼, 한편으로는 오해도 많이 받고 있는 것 같고요, 심지어 잘못된 정보가 유통되는 경우도 있는 것 같습니다.
세이버메트릭스는 모든 질문에 답을 주지는 못합니다. 또한 세이버메트릭스가 항상 옳은 것도 아닙니다.
다만 야구를 객관적이고 합리적으로 이해하고자 하는 노력으로서, 궁극적인 답을 향해 계속 접근해 가는 과정이라고 할 수 있겠습니다.
어쩌면 지금 우리가 널리 사용하는 WAR과 같은 계산 방식들이 몇 년 뒤에는 모두 폐기되고 새로운 스탯들이 나올지도 모릅니다.
새로운 방식이 더욱 합리적이라면, 내가 틀렸음을 인정하고 새로운 방식을 받아들일 수 있어야 합니다.
객관적, 합리적인 근거를 가지고 이야기하는 한, 누구나 자기 주장을 펼칠 수 있고, 동시에 상대방의 의견에 경청할 수 있는 것이지요.
이러한 열린 마음가짐이야말로 세이버메트릭스를 즐기기 위한 필수 조건이라고 하겠습니다.
마지막으로 한 가지. 야구를 숫자로 바라보는 것이 “비인간적”이거나 “부적절”하다고 생각하시는 분들께 드리고 싶은 말씀은, 세이버메트릭스는 오히려 야구를 더 재미있게 즐길 수 있는 방법이라는 것입니다.
<댓글>
이승재(2019****65)8월 21일 오후 7:17
실생활 속에서 사용되는 여러 통계적 사고에 대해 흥미있게 읽어 보았습니다. 좋은 자료 공유 감사합니다 :)
나종진(2017****17)8월 21일 오후 7:33
글처럼 스포츠를 객관적, 합리적으로 보면 좋겠지만 마음은 그렇지않고 좋아하는 선수를 응원하게되네요. 좋은 글 감사합니다.
고경원(2013****45)8월 21일 오후 9:11
야구를 즐기는 방법은 여러 가지가 있죠. 팬은 믿음의 야구를 할 수도 있고, 스탯으로 야구를 볼 수도 있고요.
그런데 감독이 믿음의 야구를 하고 있으면 팬들이 골을 낼 때가 많아 보이더라고요. 잘 읽었습니다.
김호연(2020****32)8월 22일 오후 8:26
스포츠를 수학적으로 접근할 수 있다니..!! 감사합니다 ~
김정한(2017****99)8월 29일 오전 3:47
스포츠에 흥미가 있는 저로썬 이해가 더 잘되게 해주는 게시글이었습니다 자료 공유 감사드려요~
[Act 34] (요약 13 & 실습 13) [6주차] 강의 내용 복습 요약 & 실습 (1) _ 2019311465 이승재
[6주차] 강의 내용 복습 요약 (1)
01 균등분포, 균등분포의 누적 분포 함수에 대해 간략히 배움
02 정규분포, 정규분포 곡선의 성질, 표준 정규분포에 대해 간략히 배움
03 중심극한정리 (CLT)에 대해 간략히 배움
04 결합 확률함수, 결합 확률분포, 결합밀도함수에 대해 간략히 배움
05 공분산, 상관계수, 독립사건, 종속사건에 대해 간략히 배움
06 기초적인 통계적 개념들 (표본공간, 사건, 표본점 등)에 대해 간략히 배움
07 Gamma 분포, Beta 분포, 카이제곱분포, t분포, F분포에 대해 간략히 배움
[6주차] 강의 내용 실습 (1)
강의 내용에 관한 실습 내용입니다.
{자체 예제 611.} 어떤 회사에서 제조되는 제품의 수명은 정규분포를 따른다고 한다. 제조되는 제품들의 수명에 대한 평균은 1,000(시간)이고 표준편차는 30(시간)이라 할 때, 임의로 선택한 전구 1개의 수명시간이 988시간에서 1,012시간 사이일 확률을 구하시오.
[R 코드 및 답안]

{자체 예제 612.} 확률변수 X가 n= 350, p = 0.65의 이항분포를 따른다고 할 때, X가 120 이상 200 미만일 확률은 얼마인지 구하시오.
[R 코드 및 답안]

{자체 예제 613.} 한 온라인 쇼핑몰의 고객 상담센터에서, 평균적으로 10분에 고객의 전화가 2.7회가 온다고 할 때, “다음 전화가 걸려올 때까지 걸린 시간이 10분 이상일 확률”을 구하시오.
[R 코드 및 답안]
기본 풀이) 위 고객 상담센터는 1분당 전화가 0.27회 가 걸리므로, 전화가 한번 걸린 후, 다음 전화가 오기까지의 걸린 시간의 확률은 λ = 0.27인 지수분포 G (1, 1/0.27)을 따릅니다. 따라서, 문제의 답을 R코드를 이용하면 다음과 같습니다.

{자체 예제 614.} 한 회사의 제품A의 무게는 평균 0.75 Kg이고, 그 표준편차는 0.50 Kg이라고 한다. 130개의 제품A를 임의로 선택할 경우, 이들의 평균 무게가 0.70 Kg에서 0.82 Kg 사이 일 확률은 얼마인지 구하시오.
[R 코드 및 답안]

[6주차] Comment (1)
통계학의 경우, 기본적으로 선 지식이 일정 부분 있기 때문에 비교적 쉽게 쉽게 넘어간 느낌을 많이 받았습니다. 마지막 챕터인 빅데이터와 인공지능 파트를 잘 마무리해서 이번 과목을 잘 매듭지도록 하겠습니다.
[Act 35] (정리 5 & 댓글 16) [Final OK by SGLee] Finalized by 이승재 Q by 장환승 A by 김진웅 Comment by SGLee, 이승재 " 6주차 강의 내용 질문 “

강의 내용 도중 문제 풀이 상, 정규분포 계산을 할 때 저 코드가 어떻게 나왔는지 궁금합니다.
Answer. 김진웅
pbinom은 이항분포 구간확률을 (좌측 끝에서부터, 첫번째 파라미터 값까지) 보여줍니다.
82이상 102미만을 물어보고 있으므로, pbinom(101) - pbinom(81)을 하면 82부터 101까지의 이산분포 확률을 보여줍니다.
mu는 이 이산분포 확률변수의 평균을, sigma는 표준편차를 나타냅니다.
pnorm은 정규분포 구간확률을 (좌측 끝에서부터, 첫번째 파라미터 값까지) 보여줍니다.
이항분포는 정규분포에 근사하므로, 이를 설명해주는 코드입니다.
정규분포는 연속확률분포로 이항분포의 이산확률분포와는 다르므로, "평균값(81.5, 101.5)을 취해 끝값(82, 101)을 포함"시켜 준 것으로 보입니다.
pnorm(101.5) - pnorm(81.5)를 해보면 매우 근사함을 알 수 있습니다.
Comment. SG Lee
김진웅(2015) 군 clear!! 훌륭합니다^^^
Comment. 이승재
코드에 대한 자세한 해석을 해주신 것에 감사드립니다. 코드에 대한 자세한 이해와, 왜 이러한 코드가 쓰였는 지에 대해 이해하게 되었습니다.
<댓글>
김호연(2020****32)8월 22일 오후 8:17
좋은 내용을 알려 주셔서 감사합니다~
위와 같은 다양한 실습들을 진행해보았고 위에 나와있지 않더라도 그 외의 다른 다양한 실습 또한 진행해보았습니다.
직접 그래프의 변화를 관찰하면서 공부를 하면 그 이해가 훨씬 쉬울 것이라고 또 한번 느꼈습니다.

마지막 실습으로 하나 질문을 드리자면 위에서 a 가 의미하는 것이 무엇인지 알 수 있을까요?
코드를 봐도 이해가 되지 않습니다.
그래프에서도 a를 변화시키면서 관찰해보았지만 아무런 변화가 일어나지 않았습니다.
혹시 제가 놓치거나 빠트린 무언가가 있는것인가 하여 질문드립니다.
이상구(LEE SANGGU)8월 9일 오후 12:40
http://matrix.skku.ac.kr/cal-lab/sage-grapher-integral.html http://matrix.skku.ac.kr/cal-lab/sage-grapher-integral1.html http://matrix.skku.ac.kr/cal-lab/sage-grapher-integral2.html http://matrix.skku.ac.kr/cal-lab/Lee-Integral-1.html http://matrix.skku.ac.kr/cal-lab/Lee-Integral-2.html http://matrix.skku.ac.kr/cal-lab/cal-Numerical-IntegrationMethods.html http://matrix.skku.ac.kr/cal-lab/cal-InteractiveFourierSeries.html 함수에 계수 a 를 주고, 위의 슬라이더를 구간을 주어 만들어 주면, 그 구간안에서 a 값이 변하면서 함수가 변해야 됩니다. a 를 변화시키면서 아무런 변화가 일어나지 않았다면 , 함수에 계수 a 가 없는 경우나, 화면에 함수가 보이는 구간 외에서 변화가 일어난 경우 중 하나 일 것입니다.
이상구(LEE SANGGU)8월 9일 오후 12:42
보고서에 위의 내용 꼭 포함시켜서 제출하세요^^ Good job^^
이상구(LEE SANGGU)8월 9일 오후 12:43
여러분들이 고등학교에서 미적분을 가르치면 기존의 선생님들 보다 (학생들이 쉽게 이해하게, 수포자 없게) 훨씬 잘 가르칠 것 같습니다. ^^^
박진형(2018****59)8월 9일 오후 12:53
아아 제가 실행한 함수는 arctan(x) 여서 a에 따른 값 변화가 안 나왔던 것 같습니다. 교수님 말씀대로 함수에 a 를 추가하여 생성 및 실행하니 a 값에 따른 변화가 그래프에서도 잘 나타납니다! 감사합니다!
Final OK by TA [Final] 활성화함수 Finalized by 박은아 이상현 나종진 이상구교수님 정원철
작성자 : 박은아(2016****73)작성일 : 8월 24일 오후 3:25
조회수 : 18
Final OK by TA [Final] 활성화함수 Finalized by 박은아 이상현 나종진 이상구교수님 정원철
sigmoid 함수의 미분과 Heaviside function과 의 차이
작성자 : 이상현(2020****98)작성일 : 8월 24일 오전 4:54
조회수 : 30
KakaoTalk_20200824_044811482.jpg
sigmoid 함수를 미분시 (1-f(x))f(x)가 나오는 것을 확인했습니다.
입력에 따라 0또는 1을 출력하는 함수를 활성화 함수라고 합니다.
두 함수 모두 활성화 함수라는 점은 같지만, sigmoid 함수는 0~1 사이의 실수를 출력하고 Heaviside function는 0또는 1만 출력하는 점에서 차이가 있습니다.
이러한 특징은 신경망 학습에서 큰 차이를 보이게 됩니다.
인공 신경망은 역전파라는 과정을 통해 인공 신경망에 경사하강법을 수행합니다.
경사하강법은 이번 도전학기에서 배웠듯이 접선의 기울기를 사용합니다.
접선의 기울기를 이용하게 되면 입력에 따라 출력이 연속적으로 변하는 곡선인 sigmoid 함수와 달리
Heaviside function는 모든 구간에서 기울기가 0이기에 학습이 제대로 되지 않는 차이점이 있습니다.
https://medium.com/@omicro03/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC-nlp-10%EC%9D%BC%EC%B0%A8-%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D-%ED%9B%91%EC%96%B4%EB%B3%B4%EA%B8%B0-9a4c3b31901e
나종진(2017****17)8월 24일 오전 10:21
좋은 글 감사합니다. 링크를 통해 sigmoid 외에 다른 활성화함수가 있음을 알게 되었습니다. 감사합니다.
박은아(2016****73)8월 24일 오전 11:49
sigmoid는 0에서 1 사이의 실수, Heaviside는 0또는 1만 출력한다는 것과 heaviside에서는 접선의 기울기를 이용하기 어렵다는 것을 알아갑니다. 활성화 함수에 대한 글 감사합니다.
이상구(LEE SANGGU)8월 24일 오후 12:14
sigmoid 함수가 가장 중요한 활성화 함수 이지만, 현재 제일 많이 사용하는 활성화 함수는 (4) ReLU 함수 입니다. ^^ def relu(x): return np.maximum(0, x) y = relu(x) plt.plot(x, y) plt.plot([0, 0], [5.0, 0.0], ':') plt.title('Relu Function') plt.show() 은닉층에서 활성화 함수로 가장 많이 사용되는 활성화 함수이다. 하지만 입력값이 0보다 작을 경우, 미분값이 0이 되는 단점이 존재하는데 이를 보완한 Leaky ReLU와 같은 ReLU의 변형 함수들이 등장하기 시작했다. 하지만 그럼에도 여전히 은닉층에서 가장 많이 사용되는 활성화 함수이다.
정원철(2017****79)8월 24일 오후 1:25
정리하신거 감사히 잘읽었습니다 !! sigmoid의 o과 1사이에서만 squashing 하는 속성은 오차역전파법을 쓰는 과정에서 gradient를 구할때 체인룰에 의해 계속 곱해지기 때문에 결국 gradient가 0에 수렴할 수 밖에 없게 됩니다. 이를 Vanishing gradient problem이라고 하는데.. 이 성질 때문에 실제로는 sigmoid함수는 activation 함수의 이론으로만 배울 뿐, 실제 프로젝트에서 아에 사용이 안됩니다. 이를 보완하고자 다양한 함수가 생겨났지만, 0보다 작을 때는 0이 되고 0이상에서는 x값을 갖는 ReLU를 주로 사용합니다. hidden layer에서는 ReLU를 사용하고 output layer 쪽에서 미분을 쉽게 하기위해 간혹 sigmoid gate를 사용하긴 하지만, 실제로 프로젝트 진행해보니 ReLU 기준 약 70% 가량 accuracy가 낮았습니다..
(위의 링크에서 참조)
(4) 렐루 함수 (ReLU function)


은닉층에서 활성화 함수로 가장 많이 사용되는 활성화 함수이다. 하지만 입력값이 0보다 작을 경우, 미분값이 0이 되는 단점이 존재하는데 이를 보완한 Leaky ReLU와 같은 ReLU의 변형 함수들이 등장하기 시작했다. 하지만 그럼에도 여전히 은닉층에서 가장 많이 사용되는 활성화 함수이다.
정리 & Comment
Sigmoid Function, Heaviside Function, ReLU와 같이 여러 가지 활성화 함수를 다방면으로 살펴보았습니다.
특히, sigmoid 함수는 실제로 활용되기 어렵고 ReLU가 은닉층에서 가장 많이 사용되는 활성화함수라는 것을 알게되었습니다.
이전
다음
4개의 댓글
이상구(LEE SANGGU)8월 24일 오후 3:30
GOOD^^
김호연(2020****32)8월 25일 오전 8:42
멋지군요.
김효경(2016****71)8월 27일 오전 2:16
현재 가장 많이 사용되는 것은 ReLU 함수이군요. re-Finalize 해 주셔서 감사합니다
김다은(2018****13)8월 27일 오전 3:03
감사해요
손원식(2019****98)8월 27일 오전 7:53
학우님이 Activation function의 다양한 함수들을 제시하고, 각각의 함수들에 대한 장/단점들을 알려주셔서 SIGMOID뿐만이 아닌 추가적인 활성화 함수에 대한 지식을 얻게 되었습니다. 감사합니다!
[Final OK by SGLee] Finalized by 김범준 [HW-5주차(자료공유)] 평균의 함정 사례by김범준 comment 및 추가의견 by 나종진학우님, 박정호학우님, 김진웅학우님, 이상구교수님
작성자 : 김범준(2017****99)작성일 : 8월 13일 오후 4:17
조회수 : 34
[Final OK by SGLee] Finalized by 김범준 [HW-5주차(자료공유)] 평균의 함정 사례by김범준 comment 및 추가의견 by 나종진학우님, 박정호학우님, 김진웅학우님, 이상구교수님
다른학우분들께서 하신 이번주차 강의요약이 제가 더 첨가할 만한 내용이 없어보여 저는 통계학과 관련한 이야기를 위주로 타 학우분들의 수학적 이해를 높이고자 합니다.
1. 노스캐롤라이나 대학교와 마이클조던
노스캐롤라이나 대학교에서 1985년 졸업생들의 과별로 평균초봉을 계산한적이 있었다. 이때 경영이나 법학 공학등 고소득을 받을것이라고 예측되는 다른학과들 보다 평균소득이 높은 학과 가 있었다. 지리학과가 예상을 벗어나 가장 높은 평균초봉을 기록하였는데 그 이유는 마이클조던이 지리학과의 졸업생이었기 때문이다.
한 쪽으로 표본의 꼬리가 길때 평균과 중의값의 관계는 흔히 아래와 같이 나타난다. 즉 마이클 조던의 소득이 중의값보다 평균을 지나치게 올려놓은 셈이다.

이미지 출처: https://m.blog.naver.com/PostView.nhn?blogId=jiehyunkim&logNo=206196711&proxyReferer=https:%2F%2Fwww.google.com%2F
2. 정몽준과 국회의원 평균재산

이미지 출처: https://pabii.co.kr/52339/
국회의원 정수를 300명이라 가정하면, 정몽준 전 의원 혼자서 국회의원 평균재산을 약 68억원이나 올린 셈이다. 국회 공직자윤리위원회의 자료에 따르면 19대 국회의원 299명의 평균재산은 95억6천만원인데, 2조원이 넘는 재산을 지닌 정몽준 의원을 포함한 500억원 이상의 국회의원 4명을 제외하면 평균재산이 18억3천만원으로 줄어든다.
출처: https://analyticsstory.com/82 [Analytics Story]
또한 이 외에도 대한민국 상장기업 1,059곳 전체의 시가총액의 평균은 1조 천억원 규모이다. 여기서 삼성전자와 현대자동차 단 두 곳의 시가총액을 제외하면 평균은 8,700억원 규모로 약 21%가 하락하게 됩니다. 이렇듯 이상치(outlier)가 존재하는 경우 평균은 대표성을 띄기 어렵다.
실제로 이러한 문제 때문에 사회과학에서의 소득조사의 경우 중의값을 통해 왜곡을 최소화 하거나, 이상치를 제외한 평균을 사용하기도 한다.
8월 13일 오후 5:14
좋은 정보 감사합니다.
8월 13일 오후 5:41
감사합니다
8월 13일 오후 5:54
outlier가 실생활에서 어떻게 나타나는지, outlier에 의해 평균값의 대표성이 얼마나 왜곡되는지 그 예시를 잘 보았습니다. 공유 감사합니다.
그리고 이상구교수님께서 흥미로운 이야기를 추가해주셔서 아래에 옮깁니다.
8월 13일 오후 6:19
마이클 조던도 수학도였다 https://m.blog.naver.com/PostView.nhn?blogId=oryounga&logNo=120043466384&proxyReferer=https:%2F%2Fwww.google.com%2F 2007. 10. 15. 11:59 [황선욱 교수의 재미있는 수학에세이] 어느 학문 분야를 공부하든 이후에 자신의 전공과 다른 일을 하게 되는 경우가 흔히 있게 마련이다. 수학도 예외가 아니다. ‘이상한 나라의 앨리스’를 쓴 루이스 캐럴은 옥스퍼드대학의 수학 교수였다. 그는 본명 ‘Charles Lutwidge Dodgson’을 라틴어로 고쳐 쓴 ‘Carolus Lodovicus’를 다시 영어로 바꿔서 ‘Lewis Carroll’이라고 필명을 지었다. 또 구소련 체제를 비판한 ‘수용소 군도’로 노벨문학상을 수상한 솔제니친은 구소련의 로스토프대학에서 수학과 물리학을 전공했다. 가수 가펑클·영화감독 버호벤등 유명인 수두룩 1960~70년대를 풍미했던 듀엣 ‘사이먼과 가펑클’의 멤버인 가펑클은 가수 활동을 하면서도 1967년에 미국 컬럼비아대학에서 수학 석사학위를 받았다. 두 사람은 1953년 초등학생 때 ‘이상한 나라의 앨리스’ 연극에 함께 참여하면서 알게 되었다. 1960년대에 미국에서 활약했던 작곡가이자 풍자 작가인 톰 레러(Tom Lehrer)는 18살 때인 1947년에 하버드대학을 최우등으로 졸업하고 이듬해에 석사학위를 받은 뒤 하버드와 MIT에서 수학을 가르쳤다. 후에 하버드대학 수학과 박사과정에 입학했으나 음악을 하기 위해 학업을 중단했다, 나중에 박사과정에 재입학했으나 학위를 받지는 못했다. 그 뒤 미국 캘리포니아대학(산타크루스)에서 교양 수학과 공연 음악을 가르쳤다. 영화 ‘토탈 리콜’, ‘로보캅’ 등을 감독한 폴 버호벤은 네덜란드의 라이든대학에서 수학 박사학위를 받았지만, 영화 일에 전념하기 위해 수학과 관련한 일을 하지 않았다. 정치인 중에서 살펴보면, 알베르토 후지모리 전 페루 대통령이 미국 위스콘신대학(밀워키)에서 수학으로 석사학위를 받았으며, 싱가포르의 리센룽(李顯龍) 수상은 영국 케임브리지대학 수학과를 우등으로 졸업했다. 프랑스의 유명한 수학상을 여러 차례 수상한 수학 박사인 팽르베(Painleve, Paul)는 1906년부터 두 차례 프랑스 수상을 지냈다. 그는 1908년 라이트 형제가 조종한 비행기의 첫 탑승객 중 한 사람이었다. 뉴욕 시장을 지냈던 딘킨스(Dinkins D. N.)는 하워드대학에서 수학을 전공했다. 우크라이나 태생의 볼셰비키 혁명가인 트로츠키는 오데사대학에서 수학을 전공했다. 아일랜드 공화국의 대통령을 두 차례 지냈던 발레라(de Valera)는 공화국이 독립하기 전에는 수학 교수를 했었다. 미국 국방장관을 지냈던 페리는 펜실베이니아 주립대학에서 수학 박사 학위를 받았으며, 지금은 스탠퍼드대학의 교수로 있다. 케냐의 부통령을 지낸 조지 사이토티(Saitoti G.)는 영국의 워윅대학에서 수학 박사 학위를 받았다. 아키노 전 필리핀 대통령도 수학을 부전공으로 이수했다. 수학 고유‘창의력의 힘’뒷받침최고 위치 우뚝 운동선수 중에서 대표적인 인물은 농구 황제 마이클 조던이다. 미국 북캐롤라이나대학 수학과에 입학해 3학년 때 전과했다. 또 샌안토니오 스퍼스의 농구선수 데이비드 로빈슨은 미국 해군사관학교에서 수학을 전공했다. 한편 1977년 윔블던 테니스 여자 단식 챔피언인 버지니아 웨이드는 영국 서섹스대학에서 수학과 물리학을 전공했다. 1960년대 미식축구의 스타 쿼터백이었던 프랭크 라이언은 프로 선수 생활을 하면서 미국 라이스대학에서 수학 박사 학위를 받았다. 이들은 모두 수학을 통해 창의력을 기르고 인생의 다양한 길을 열었던 셈이다. 황선욱(숭실대학교 수학과 교수, shwang@ssu.ac.kr)
comment: 교수님께서 해주신 이야기를 읽으면서 수학과 관련한 일을 하지 않더라도 수학공부를 하는 사람들에 대해 알 수 있었다. 이는 수학이 다양한 모습을 가지고 있기 때문인데 단순히 숫자를 다루는 기술에서 부터 시작하여 사고력 추리력 논증력과 연관 된 넓은 범위로 까지 확장이 가능하기 때문일 것이다.
8월 13일 오후 5:14
좋은 정보 감사합니다.
8월 13일 오후 5:41
감사합니다
8월 13일 오후 5:54
outlier가 실생활에서 어떻게 나타나는지, outlier에 의해 평균값의 대표성이 얼마나 왜곡되는지 그 예시를 잘 보았습니다. 공유 감사합니다.
...
8월 14일 오전 1:56
흥미롭네요! 감사합니다.
8월 23일 오전 11:18
흥미로운 정보에 감사드립니다.
comment
oulier 에 의해 평균값의 왜곡으로 잘못된 분석결과를 초래할 수 있음을 다시 한 번 상기할 수 있었습니다.
또한 oulier 에 대해 좀 더 공부해 보고자 하였습니다.
oulier 는 두 가지 종류로 나뉘고
이는 univariate 와 multivariate 로 나뉘어집니다.
univariate oulier 는 하나의 변수 분포에서 나타나는 oulier 이고 multivariate oulier 는 n개의 dimensional space 에서 나타나는 outlier 입니다.
다음은 이와 관련된 예입니다.

출처 https://ourcstory.tistory.com/142
[Final OK by SGLee] 베이즈 정리 질문(이상현) 문제 오류 추정 및 문제 재설정 및 풀이 with 이상구(LEE SANGGU) 교수님, 정권채, 나종진 BY 박진형
작성자 : 박진형(2018****59)작성일 : 8월 15일 오후 5:14
조회수 : 35
베이즈 정리 질문
작성자 : 이상현(2020****98)작성일 : 8월 15일 오전 7:36
조회수 : 19
https://datascienceschool.net/view-notebook/f77e7d3f59b8437181dff01a88520f09/
P(A)=2/100
P(A l B)=98/100
P(A^c l B^c)=95/100 이라고 하고
P(B l A)를 구하고자 할때
P(A l B)P(A) = P(B l A)P(B)를 이용하려고 합니다.
......
P(B) = P(A) P(A l B) +
(1-P(A)) (1-P(A^c l B^c))
= 2/100*98/100 + 98/100*5/100
=686/10000 이 나왔습니다.
그렇다면
P(A l B)P(A) = P(B l A)P(B) 는 98/100*2/100
= P(B l A)*686/10000 이 되고
P(B l A)는 343/100으로 1보다 커져버립니다.
어디에 오류가 있었나요?
maxresdefault.jpg
이상구(LEE SANGGU)8월 15일 오전 9:31
다시 잘 읽으면서 오타 부터 고치시고, 질문 부분 만 한 줄 Q. . . . . 로 쓰세요
이상구(LEE SANGGU)8월 15일 오전 9:34
마지막 6 줄 오타 있으니 rewrite . . 하세요.
정권채(2008****19)8월 15일 오전 11:20
공식이 잘못된것 같은데요.. P(A l B)P(B)=P(B I A)P(A)인 것 같은데.. P(A I B) = P(A와B의 교집합)/P(B)입니다.
제가 주어진 문제를 풀어보려고 했는데, 잘 안 풀려서 아예 정확하게 풀어보고자 위의 벤다이어그램을 이용하여 다음과 같이 풀어보았습니다.
U : 전체 집합, n = 100
A-B = a
A n B = b
B - A = c
U - (A U B) = d
이 때 이상현 씨가 만드신 문제는 다음과 같습니다.
QUESTION
P(A)=2/100 ........1
P(AlB)=98/100 .........2
P(A^clB^c)=95/100 .........3
일 때 P(B l A) 를 구하라
sol
1을 풀어보면 a +b = 2 이고 c + d = 98 이다.
2를 풀어보면 P(A l B) = P(A n B) / P(B) 이다. 이를 다시 풀어보면 b / b+c = 98/100 이다.
3을 풀어보면 P(A^c l B^c) = P(A^c n B^c) / P(B^c) = P(A U B)^c / P(B^c) 이다. 이를 다시 풀어보면 d / a+d = 95/100 이다.
위의 연립방정식을 풀어보면
b = 49c
d = 19a 이 나오고 b, d 를 a+b =2 와 c +d = 98 에 대입하면 다음과 같은 식 2개가 나온다.
a + 49c = 2
19a + c = 98
이를 풀어보면 c = -0/65, a= 5.16 이 나온다.
c 는 마이너스가 나올 수 없으므로 이 문제의 초기설정에 오류가 있지 않을까라는 생각을 하게 됩니다.
그래서 QUESTION을 다음과 같이 수정해보았습니다.
P(A) = 40/100
P(A l B) = 28/100
P(B l A^c) = 75/100
일 때 P(B l A) 를 구하라
SOL
베이즈 정리를 이용하면
P(B) = P(A n B) + P(A^c n B) = P(B)*P(A l B) + P(A^c)*P(B l A^c) = P(B)* 28/100 + 60/100 * 75/100
위를 정리하면 다음과 같다
72/100 * P(B) = 60/100 * 75/100
P(B) = 62.5/100
P(A l B) = P(A n B) / P(B) = 28/100
P(A n B) = 28/100 * P(B) = 28/100 * 62.5/100 = 17.5/100
따라서 P(B l A) = P(A n B) / P(A) = 17.5/100 * 100/40= 43.75/100
ANSWER : 0.4375
이상구(LEE SANGGU)8월 15일 오후 8:42
Good job^^
김호연(2020****32)8월 23일 오전 11:09
Good try~
Final OK by SGLee Finalized by 김범준 HW-5주차(자료공유) 기댓값과 상트페테르부르크의 역설by 김범준. 추가내용by 전재현학우님, 정권채학우님. 댓글by 이상구교수님, 나종진학우님,한수현학우님, 박정호학우님
작성자 : 김범준(2017****99)작성일 : 8월 17일 오후 4:47
조회수 : 17
Final OK by SGLee Finalized by 김범준 HW-5주차(자료공유) 기댓값과 상트페테르부르크의 역설by 김범준. 추가내용by 전재현학우님, 정권채학우님. 댓글by 이상구교수님, 나종진학우님,한수현학우님, 박정호학우님
HW-5주차(자료공유) 기댓값과 상트페테르부르크의 역설
작성자 : 김범준(2017****99)작성일 : 8월 13일 오후 6:44
조회수 : 27
기댓값의 의미: 확률변수의 기댓값(expectation)은 확률적 사건에 대한 평균값으로, 사건이 벌어졌을 때의 얻은 값과 그 사건이 일어날 확률을 곱한 것을 전체 사건에 대해 합한 값이다. 이것은 어떤 확률적 사건에 대한 평균의 의미
상트페테르부르크의 역설이란?
동전을 던져 뒷면이 나오면 계속 던지고, n번째 처음 앞면이 나오면 게임이 종료되고 2n-1원의 상금을 지급, 도박의 참가비는 10,000원 이라고 가정한다.
이러한 게임을 기댓값(E)을 구해보면,
![]()
따라서 기댓값은 무한대가 됨. 하지만 이러한 게임을 실제로 해 보려는 사람을 찾는다면 거의 없다. -이 역설은 베르누이(베르누이에 대한 설명)가 제시하고 그 이후 이 역설의 해결을 모색하는 과정에서 수학의 확률개념 발전 및 경제학에서 효용이론 발전등에 기여하였다.
왜 그런가?
- 기댓값이라는 개념과 현실 직관과의 차이(우리가 현실에서 선택을 설명할 때 기댓값보다 다른(EX)효용이론함수)수단에 의해서 설명이 더 용이함.)
- 확률의 문제. 우리가 한판 게임하는데 만원을 쓰는데 만원이상 얻을확률은 1/2^14 확률로 만원 이상(16,384)을 얻을수 있다. 이는 매우 적은확률이다.
comment: 통계학에 여러 개념은 현실 분석을 용이하게 해 주지만 그 과정에서 모순이나 왜곡이 존재할 수 있다. 하나의 방법론을 맹신하기보다 여러 방법론과 개념을 폭 넓게 이해하고 인지해야하는 중요성이 여기에 있는 것 같다.
출처: http://matrix.skku.ac.kr/math4ai/part3/
https://en.wikipedia.org/wiki/St._Petersburg_paradox
https://statkclee.github.io/r-algorithm/r-petersburg-paradox.html
전재현(2015****91)8월 13일 오후 8:05
흥미롭게 읽어서 조금 더 찾아본 내용을 공유합니다. 기재하신대로 위 역설을 해결해가는 과정은 경제학의 효용이론이나 전망이론, 행동경제학 등 다양한 경제학 이론에 영향을 주었습니다. 예시로 베르누이는 해당 과정에서 10,000원이 20,000원으로 불어나 얻는 효용과 100억이 200억이 되어서 얻는 효용은 다르다는 관점에서 출발하여 금액에 따른 효용이 로그함수로 나타날 수 있다고 주장하였고, 이는 금액에 따른 만족이 단순히 금액에 정비례하지는 않는다는 경제학의 효용이론을 탄생시키는데 기여하게 됩니다. 불확실성을 지닐때 기대값이 반드시 합리적인 예측 수단이 될 수 없다는 내용을 담은 이 역설은 현대 경제학에 와서는 얻게되는 수익 자체인 기대효용이 아니라 그 수익에 대한 주관적인 가치가 의사 결정을 내리는 기준이 된다는 발상으로 이어지게 되었습니다. 찾아볼수록 생각보다 더 의미 깊은 역설이었네요. 재미있는 정보를 공유해주셔서 감사합니다 :) https://namu.wiki/w/%EC%83%81%ED%8A%B8%ED%8E%98%ED%85%8C%EB%A5%B4%EB%B6%80%EB%A5%B4%ED%81%AC%EC%9D%98%20%EC%97%AD%EC%84%A4 https://m.blog.naver.com/PostView.nhn?blogId=ydok007&logNo=220983490827&proxyReferer=https:%2F%2Fwww.google.com%2F
정권채(2008****19)8월 14일 오후 11:36
이와 비슷하지만 다른 기댓값에 대한 내용으로 카지노 전략 중 double up betting이 있습니다. 판돈을 무한히 늘릴 수 있다면 딸 확률 1/2인 도박에서 돈을 계속 딸 수 있다는 말이죠. 1회베팅 1만원 패배 2회베팅 2만원 패배 3회베팅 4만원 패배 4회베팅 8만원 패배 5회베팅 16만원 패배 6회베팅 32만원 패배 ... ?회베팅 -----> 승리 (원금+ α) 언젠가는 회수해서 이긴다는 이론입니다. 하지만 기대값적인 측면에서 보면 가령 첫판 딸 확률 or 첫판 잃고 둘째판에 딸 확률=P1=3/4 >>> 첫번재판,두번째판 모두 잃을 확률=P2=1/4 이지만 P1=첫판에 이기거나 혹은 첫판 잃고 둘째판에 이기고 갖고가는 돈=>100원 P2=첫판 두번째판도 잃어 손실되는 돈=>300원이기 때문에 100*(3/4)+(-300)*(1/4)=0 즉 역시 기대값은 0 가 됩니다. 이건 세번째판 네번째판 마찬가지로 계산을 하여보면 기대값은 항상 0 원이 나옵니다. https://m.blog.naver.com/PostView.nhn?blogId=baedical&logNo=10157208985&proxyReferer=https:%2F%2Fwww.google.com%2F
김호연(2020****32)8월 23일 오전 11:01
좋은 글 잘 읽고 갑니다~
[Final OK by SGLee] 이상현 박은아 나종진 중심극한 정리의 장단점
작성자 : 이상현(2020****98)작성일 : 8월 20일 오전 3:35
조회수 : 29
참고 : https://drhongdatanote.tistory.com/57
6주차 강의에서 배웠듯이 중심극한정리는 통계학 역사상 가장 중요한 발견이라고 합니다.
중심극한정리에 대해 다시 설명 해보자면
어떠한 확률변수의 표본들이 매우 많고 이 표본들의 기댓값의 확률분포가 정규분포에 근사하게 된다는 것입니다.
이를 이용해 알 수 없는 모집단에서 추출한 표본들의 확률분포를 정규분포임을 알 수 있기에
고등학교 시절에 배웠던 표준화와 정규분포표를 이용해 확률을 추정 할 수 있습니다.
이렇게 정규분포임을 이용해 쉽게 추정 할 수 있는 장점이 있지만, 어디까지나 표본의 수가 많을때만 성립합니다.
이 때문에 실생활에서 너무 많은것을 정규분포로 단정 짓는 경우가 있습니다. 이것이 단점입니다.
https://economypharm.tistory.com/1
이런 실수로 큰 피해를 본 사례중 대표적으로 2008년 경제위기가 있습니다.
박은아(2016****73)8월 20일 오후 2:39
중심극한정리의 장단점에 대한 글 잘 읽었습니다! 감사합니다. 작성해주신 내용에서 중심극한정리의 용도와 주의할 점에 대해 덧붙이겠습니다. <중심극한정리의 용도> 1. 적은 수의 샘플로 모집단의 평균을 알아낼 수 있다. 2. 적은 수의 샘플로 모집단의 분산을 알아낼 수 있다. 3. 모든 데이터를 정규분포로 만들 수 있다. <주의할 점> 복원추출을 반복시행 하는 것이 원칙이다. 평균들의 평균이 모집단의 평균에 수렴하는 것이므로 보정이 필요하다. 참고: https://en.m.wikipedia.org/wiki/Central_limit_theorem In general, the more a measurement is like the sum of independent variables with equal influence on the result, the more normality it exhibits. This justifies the common use of this distribution to stand in for the effects of unobserved variables in models like the linear model.
나종진(2017****17)8월 21일 오후 1:42
항상 장점이 있으면 단점도 있는 법이지요. 좋은 글 잘 읽었습니다. 감사합니다.
김호연(2020****32)8월 22일 오후 8:49
감사합니당~
손원식(2019****98)8월 27일 오전 00:06
이 글을 통해서 통계 추정 오류의 한 사례를 직접적으로 알게 되면서, 우리가 이런 과거를 되풀이 하지 않기 위해서는 미래에 학문을 실생활에 응용할 때 무엇보다도 진지하고 심각성을 가진채로 임해야한다는 점을 깨달았습니다.
[Final OK by SGLee]
Finalized by 한수현, Q by 한수현(공분산, 상관계수 실습 + 질문), A by 채희준, 이상구
작성자 : 한수현(2019****61)작성일 : 8월 23일 오후 5:14
먼저 이 예제에 대한 실습입니다.
var('x, y')
f(x, y) = x+y# 결합밀도함수
f_X(x) = integral(f(x, y), y, 0, 1) # X의 주변밀도함수
f_Y(y) = integral(f(x, y), x, 0, 1) # Y의 주변밀도함수
EX = integral(x*f_X(x), x, 0, 1) # E[X]
EY = integral(y*f_Y(y), y, 0, 1) # E[Y]
EXY = integral(integral(x*y*f(x, y), x, 0, 1), y, 0, 1) # E[XY]
Cov = EXY-EX*EY# Cov[X, Y]
print("Cov[X, Y] =", Cov)
VX = integral(x^2*f_X(x), x, 0, 1) -EX^2# V[X]
VY = integral(y^2*f_Y(y), y, 0, 1) -EY^2# V[Y]
Corr = Cov/(sqrt(VX)*sqrt(VY)) # Corr[X, Y]
print("Corr[X, Y] =", Corr)
Language:
('Cov[X, Y] =', -1/144)
('Corr[X, Y] =', -1/11)
이렇게 공분산과 상관계수를 구할 수 있습니다.
var('x, y')
f(x, y) = 2*x# 결합밀도함수
f_X(x) = integral(f(x, y), y, 0, 1) # X의 주변밀도함수
f_Y(y) = integral(f(x, y), x, 0, 1) # Y의 주변밀도함수
EX = integral(x*f_X(x), x, 0, 1) # E[X]
EY = integral(y*f_Y(y), y, 0, 1) # E[Y]
EXY = integral(integral(x*y*f(x, y), x, 0, 1), y, 0, 1) # E[XY]
Cov = EXY-EX*EY# Cov[X, Y]
print("Cov[X, Y] =", Cov)
VX = integral(x^2*f_X(x), x, 0, 1) -EX^2# V[X]
VY = integral(y^2*f_Y(y), y, 0, 1) -EY^2# V[Y]
Corr = Cov/(sqrt(VX)*sqrt(VY)) # Corr[X, Y]
print("Corr[X, Y] =", Corr)
Language:
('Cov[X, Y] =', 0)
('Corr[X, Y] =', 0)
위는 f(x, y) = 2x 로 바꾸어 실행한 것인데, 여기 결과에서는 공분산과 상관계수가 0으로 나옵니다. 여기서 질문이 생겼습니다. 공분산과 상관계수에 관한 설명인데요.
위의 명제의 역인 '공분산이 0이면, X, Y는 서로 독립이다.', '상관계수가 0이면, X, Y는 서로 독립이다.'도 성립하는지가 궁금합니다.
채희준(2016****00)8월 23일 오후 3:41
'공분산이 0이면, X, Y는 서로 독립이다'는 성립하지 않습니다. 아래는 다른 게시글에서 교수님께서 공유해주셨던 사이트입니다. https://m.blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221025662499&proxyReferer=https:%2F%2Fwww.google.com%2F 공분산이 0이라고 해서 항상 독립이 되진 않는다. 이유는 공분산은 선형 관계에 대한 의존성을 말하고, 공분산이 0이 되면 두 변수의 선형 관계가 없다는 것을 의미하지, 모든 관계가 없다는 것을 의미하진 않기 때문이다. 독립이라는 조건은 두 변수의 모든 관계가 없다는 것을 의미하므로, 그냥 독립이라는 개념이 보다 상위 개념이 된다. 즉, y = x^2 이라는 관계가 있고, 그래프로 표현하면 아래와 같다고 한다면, 여기서 y와 x는 서로 선형이 아니기 때문에 cov(x,y) = 0이 된다. 하지만, 그렇다고 이 두 변수가 독립이라고는 할 수 없다. 이유는 x가 0에서부터 증가하면 y가 증가하고, x가 0에서부터 감소하면 y가 또 증가하는 이러한 관계를 가지기 때문이다.
한수현(2019****61)8월 23일 오후 3:44
오오 감사합니다. 상관계수가 0이면 X, Y는 서로 독립인 건 맞는 건가요?
이상구(LEE SANGGU)8월 23일 오후 4:06
공분산이 0이라고 해서 항상 독립이 되진 않는다. 이유는 공분산은 선형 관계에 대한 의존성을 말하고, 공분산이 0이 되면 두 변수의 선형 관계가 없다는 것을 의미하지, 모든 관계가 없다는 것을 의미하진 않기 때문이다. 독립이라는 조건은 두 변수의 모든 관계가 없다는 것을 의미하므로, 그냥 독립이라는 개념이 보다 상위 개념이 된다. 즉, y = x^2 이라는 관계가 있고, 그래프로 표현하면 아래와 같다고 한다면, 여기서 y와 x는 서로 선형이 아니기 때문에 cov(x,y) = 0이 된다. 하지만, 그렇다고 이 두 변수가 독립이라고는 할 수 없다. 라는 답을 보시지 않고 다시 질문 한 것이지요?
한수현(2019****61)8월 23일 오후 4:15
앗 뒷내용을 제가 다르게 이해해서 상관계수에 관한 언급이 없는 줄 알았네요. 감사합니다.
독립과 공분산, 상관계수의 관계에 대한 질문이었는데요. 독립의 의미와 공분산, 상관계수가 의미하는 바를 제대로 이해하지 못 해 하게 된 질문이었습니다.
채희준님의 설명과 첨부해주신 링크의 글을 읽고 이해했습니다. 감사합니다.
[Final OK by SGLee] 임성기 채희준 나종진 [오늘 OH, 목요일 오후 5시-6시20분] OH 에서 논의된 내용 아래에 (약속대로) 정원철 군과 안성진 군이 먼저 답글로 추가 하세요^^ 다른 학생은 이어서 한 줄 씩 주요 내용 보태시면 됩니다. 월 20일 오후 7:04 조회수 : 40
[오늘 OH, 목요일 오후 5시-6시20분] OH 에서 논의된 내용 아래에 (약속대로) 정원철 군과 안성진 군이 먼저 답글로 추가 하세요^^ 다른 학생은 이어서 한 줄 씩 주요 내용 보태시면 됩니다.
[동료학생들의 의견을 반영하여], 이번주 OH 는 금요일이 아니라 오늘 목요일 오후 5시에 가졌습니다.
[Matrixtopia] 인공지능을 위한 기초수학, 8월 20일 목요일 WebEx OH
https://youtu.be/-85TR1kM0VU
1. 오늘 OH 에서는 다음 주에 공개 할 기말고사 120점 문제에 대하여 의견을 나누려고 합니다. 물론 프로젝트 와 makeup 및 Final PBL 80 점에 대하여도 문의 하세요^^
2. 다음 주에 기말 고사 입니다^^ 내일이나 오늘, 우리는 ... 모든 학생이 얼굴보고 얘기하는 출석 점수 반영할 다음 OH 언제 하면 좋을 까요?
3. 내일 10시반, 오늘 오후 5시 또는 내일 적당한 시간?
여기 답글로 의견 주세요.
천가영(2020****17)8월 20일 오전 9:47
저는 오늘 오후 5시나 내일 오후에 하면 좋을 것 같다고 생각합니다.
박지수(2016****86)8월 20일 오후 12:16
오늘 오후 5시에 하면 좋을 것 같습니다.
이상구(LEE SANGGU)8월 20일 오후 12:41
오늘 오후 5시 ... 나는 나쁘지 않습니다. 그럼 1순위는 오늘 오후 5시 입니다.
이상구(LEE SANGGU)8월 20일 오후 12:43
아래 우리 다음 주 기말고사 문제를 여러분이 원하는 문제로 (더욱 현실성 있게) 개선해 보세요^^
[Notice] Final Exam ( T/ F ) Final Exam (온라인 기말고사) 120점, Due: 다음주 금요일 8월 28일 오전 11시
<---아래와 같이 문제를 만들고 있는데 ... 여러분들이 문제를 좀 더 멋지게 고쳐 주세요^^ 다음 주 월요일에 120점 기말고사 시험 문제를 공개 하려고 합니다^^ 이제 한 주일 남았습니다^^ 행운을 빌어요^^ From your Math4AI Prof.
3. Meeting Room address (미팅 주소)
미팅방 574-862-*** 주소 입력 또는
https://skku-ict.webex.com/meet/sglee
또는 031-290-*** 로 전화 하세요^^
특히 면담 요청 받은 학생들은 필히 참석하여 꼭 조언 받으세요^^
모두 남은 10일 잘 마무리 하여 기말고사와 Final PBL 보고서 잘 제출하시면 ...
중간고사 성적 Makeup 해 줄테니
인사캠 학생들 은 특히 이제 통계와 인공지능 부분에만 집중하셔서
좋은 성적 받고 이번 도전학기 잘 마치도록 하세요^^
[Final OK by SGLee]
Finalized by 채희준, [몬티 홀 문제] 문제 by 장환승, A by 이상구, 댓글 by 박정호
작성자 : 채희준(2016****00)작성일 : 8월 13일 오전 12:14
문제 by 장환승
답변 by 이상구
댓글 by 박정호
Finalized by 채희준
문제:
개인적으로 고등학교 때부터 제일 좋아했던 파트가 기하와 확률이라 재밌는 문제들을 몇가지 알고 있는데, 마침 이렇게 확률을 배우고 있고 포럼의 장인 문의게시판이 있기에 하나씩 소개 드려 보고자 합니다.
몬티홀의 역설
Suppose you’re on a game show, and you’re given the choice of three doors. Behind one door is a car, behind the others, goats. You pick a door, say #1, and the host, who knows what’s behind the doors, opens another door, say #3, which has a goat. He says to you, "Do you want to pick door #2?" Is it to your advantage to switch your choice of doors?
당신이 한 게임 쇼에 참여하여 세 문들 중 하나를 고를 기회를 가졌다고 생각해봐라. 한 문 뒤에는 자동차가 있으며, 다른 두 문 뒤에는 염소가 있다. 당신은 1번 문을 고르고, 문 뒤에 무엇이 있는지 아는 사회자는 염소가 있는 3번 문을 연다. 그는 당신에게 "2번 문을 고르고 싶습니까?"라고 묻는다. 당신의 선택을 바꾸는 것은 이득이 되는가?
이 문제에 대한 정답은 추후에 댓글로 달아 놓겠습니다.
A:
이상구(LEE SANGGU)8월 12일 오후 5:39
http://matrix.skku.ac.kr/2020-Math4AI-PBL/ 보시면 지난 달에 학생들이 토론한 내용이 잇습니다. 참고하여 Finalize시키세요^^
9. 조건부 확률과 몬티홀 문제
몬티홀 문제란, 3개의 문 중 단 하나에만 선물이 있고 나머지 둘은 꽝인 상태에서 선물을 맞추는 문제이다. 다만 처음 선택했을 때, 진행자가 선택되지 않은 두 문 중 꽝 하나를 공개한 후 선택을 바꿀 것인지 아닌지를 묻는다. 이러한 규칙 하에, 과연 선택을 바꾸는 것과 바꾸지 않는 것 중 무엇이 더 이득인지 구하는 문제이다.
그 답은 ‘바꾸는 것이 이득’이다. 만약 선택을 유지한다면 선물에 당첨될 확률이 처음의 확률인 1/3이 되겠지만, 만약 선택을 바꾸었을 때 선물을 받을 확률은 (2/3) * (1/(3-2)) = 2/3이다. 따라서 선택을 바꾸는 것이 확률적으로 이득이다. 만약 문이 n개이며 선물이 있는 문은 여전히 1개라고 하자. 이때의 선물에 당첨된 확률을 구해보자. 선택을 안 바꾼다면 1/n이고, 선택을 바꾼다면 (n-1)/n * (1/n-2) = (n-1) / (n*(n-2))가 된다. 즉, 선택을 바꾸었을 때 선물을 받을 확률이 안 바꾸었을 때보다 1/(n*(n-2)) 만큼 크다. 이 풀이는 조건부 확률을 이용한 것이다. 사실 이 문제를 처음 들었을 때는 별 차이가 있나 싶었지만, 확률을 배운 후에는 정말 큰 차이가 있음을 알았다.
Q : [Discussion] 베이즈 정리, 조건부 확률과 몬티 홀 문제 A : 몬티홀 문제란 세 개의 문들 중에 하나를 선택하여 문 뒤에 있는 선물을 가질 수 있는 게임쇼에 참가했다. 한 문 뒤에는 자동차가 있고, 나머지 두 문 뒤에는 염소가 있다. 이때 어떤 사람이 예를 들어 1번문을 선택했을 때, 게임쇼 진행자는 3번문을 열어 문 뒤에 염소가 있음을 보여주면서 1번 대신 2번을 선택하겠냐고 물었다. 참가자가 자동차를 가지려할 때 원래 선택했던 번호를 바꾸는 것이 유리할까? 라는 내용이다. 1. 경우의 수를 하나하나 따져보면, 처음의 선택을 바꾸는 것이 유리하다. 2. 조건부 확률이나 베이즈 정리를 적용했을 때도 선택을 바꾸는 것이 유리하다. 2. 문의 개수를 훨씬(100만개까지) 늘려보면, 직관적으로 생각했을 때도 처음의 선택을 바꾸는 것이 유리함을 알 수 있다. 3. ‘선택하지 않은 문들 중 염소가 있는 문 하나를 공개해주겠다. 처음 선택을 바꿀 것인가?’ 대신 ‘선택을 바꾼다면 처음에 선택하지 않은 두 문 뒤에 있는 모든 물건들을 주겠다. 처음 선택을 바꿀 것인가?’라고 생각한다면, 즉 선택지를 조금 다르게 해석하면 확률 계산도 할 필요 없이 문을 두개 고른다는 생각에 쉽게 선택을 바꿀 수 있다. 느낀 점 : 몬티 홀 문제는 정말 유명하다. 그에 대한 해설도 당연히 잘 알려져 있다. 하지만 조건부확률과 베이즈 정리에 대해 처음 수업에서 배웠을 때 나는 이 문제를 떠올리지 못했다. 질문자님의 새로 배운 내용과 알고 있는 지식을 연결하는 능력이 뛰어나다고 느꼈다.
박정호(2014****10)8월 12일 오후 6:50
상세한 설명 감사합니다
정리:
정답: 바꾸는 것이 이득이다.
|
자동차가 1번 뒤에 있을 때 |
자동차가 2번 뒤에 있을 때 |
자동차가 3번 뒤에 있을 때 |
|
|
참가자가 1번 문을 선택했을 때 |
|||
|
참가자가 1번 문을 선택했고 자동차가 1번 문 뒤에 있을 때 |
참가자가 1번 문을 선택했고 자동차가 2번 문 뒤에 있을 때 |
참가자가 1번 문을 선택했고 자동차가 3번 문 뒤에 있을 때 |
|
|
사회자는 두 문 모두 열 수 있다. |
사회자는 3번 문을 열 수밖에 없다. |
사회자는 2번 문을 열 수밖에 없다. |
|
|
참가자가 1번 문을 선택하고 사회자가 2번 문을 열었을 때 |
참가자가 1번 문을 선택하고 사회자가 3번 문을 열었을 때 |
참가자가 1번 문을 선택하였고 자동차가 2번 문 뒤에 있기에 사회자는 3번 문을 열 수밖에 없다 |
참가자가 1번 문을 선택하였고 자동차가 3번 문 뒤에 있기에 사회자는 2번 문을 열 수밖에 없다 |
|
선택을 바꿔서 꽝 1/6 |
선택을 바꿔서 꽝 1/6 |
선택을 바꿔서 당첨 1/3 |
선택을 바꿔서 당첨 1/3 |
|
선택을 바꿔서 꽝 1/3 |
선택을 바꿔서 당첨 2/3 |
||
출처: https://ko.wikipedia.org/wiki/%EB%AA%AC%ED%8B%B0_%ED%99%80_%EB%AC%B8%EC%A0%9C
만약 문이 n 개 이면,
선택을 바꾸지 않아서 당첨이 될 확률 : ![]()
선택을 바꿔서 당첨이 될 확률 : ![]()
1. 처음에 염소를 뽑을 확률 : (n-1)/n
2. 사회자가 염소가 있는 문 1개 개방
3. 남은 문 중에서 차를 뽑을 확률 : 1/(n-2)
따라서, 선택을 바꾸는 것이 바꾸지 않는 것보다 당첨될 확률이 (n-1)/(n-2) 배 만큼 크다.
comment:
들어본 적이 있는 문제였는데, 답은 기억에 없어 해설을 보지 않고 풀어봤습니다.
처음에는 단순히 1/2확률이라고 생각했다가, 선택을 바꾸지 않고 당첨될 확률은 처음부터 차를 뽑았을 확률이므로 1/3, 선택을 바꾸고 당첨될 확률은 처음에 염소를 뽑아야 하므로 2/3확률 이기에 바꾸는 게 이득이라 생각했습니다.
그리고 1학기 수강생들의 PBL 보고서에서 n개의 문으로 확장시킨 문제를 풀면서 조건부 확률을 적용해 볼 수 있었습니다.
재밌는 문제를 공유해 준 장환승 학우님에게 감사합니다. 풀이를 생각해보면서 조건부 확률과 베이즈 정리에 대해 더 자세히 이해할 수 있었습니다.
※참고
이 문제를 베이즈 정리를 이용해 푸는 방법이 궁금하신 분들은 아래 사이트 참고하시면 좋을 것 같습니다.
https://freshrimpsushi.tistory.com/697
바꿔서 당첨될 확률
이상구(LEE SANGGU)8월 13일 오후 10:55
OK~~
이승재(2019****65)8월 14일 오후 8:34
몬티홀 문제에 대해 통계학적으로 접근하여 명확한 해답을 구하는 과정을 기술해주셔서 감사합니다. 덕분에 몬티홀 문제란 무엇이고, 어떤 수학적인 지식이 활용되었는가에 대한 답을 얻을 수 있었습니다. :)
김호연(2020****32)8월 23일 오전 11:23
꽤 흥미로운 이야기군요.
8월 12일 오후 6:50
상세한 설명 감사합니다
8월 13일 오후 10:56
Good^^
8월 23일 오전 11:59
흥미로운 이야기를 들려주셔서 감사합니다.
comment
몬티홀의 역설은 아주 오래 전에 본 기억이 있는데, 이것이 조건부확률과 베이즈 정리를 이용하여 계산을 할 수 있는 것은 몰랐습니다.
교수님의 글을 한 번 읽고 관련 내용에 대해 더 자세하게 읽어보았습니다.

출처 https://ko.wikipedia.org/wiki/%EB%AA%AC%ED%8B%B0_%ED%99%80_%EB%AC%B8%EC%A0%9C
작성자 : 이상현(2020****98)작성일 : 8월 13일 오후 8:21
조회수 : 40
표본분산은 n을 나누는 모분산과 다르게 n-1을 나누는 이유가 뭔가요?
확률밀도함수의 모든 구간에서의 정적분의 값이 1이 아닌 경우도 있나요?
이전
다음
개의 댓글
8월 13일 오후 8:47
1. 표본분산을 n이 아닌 n-1로 나누는 이유는 n-1로 나누었을 때의 기대값이 모분산과 더 가깝기 때문입니다. https://blog.naver.com/ptm0228/221984817258 위의 글에 증명이 있습니다. 2. 확률밀도함수는 확률변수의 분포를 나타내는 함수로, 세 가지 조건을 만족해야 합니다. 그중 하나가 모든 구간의 정적분 값이 1이라는 것이기 때문에 아닌 경우는 없다고 생각합니다. http://matrix.skku.ac.kr/math4ai/part3/
8월 13일 오후 9:14
천가영 씨, 훌륭합니다^^ 표본분산을 n이 아닌 n-1로 나누는 이유는 n-1로 나누었을 때의 기대값이 모분산과 더 가깝기 때문입니다. 가 답 입니다.
8월 14일 오전 1:54
천가영 학우분의 댓글에 증명을 보니 되게 어렵네요. 저도 뜬금없이 n이 아닌 n-1로 나누는 이유가 궁금했어도 찾아보지를 않았네요. 좋은 정보 감사합니다.
8월 14일 오전 2:08
저도 궁금했던 부분인데 증명 글 올려주셔서 감사합니다. 그 증명을 완전히 이해하기에는 제가 아직 공부가 부족한 것 같네요. 더 학습을 하고나서 다시 읽어봐야겠습니다. 감사합니다.
8월 14일 오전 10:45
예전에 그냥 표본분산을 n-1로 나누는 이유는 불편추정치를 만들기 위함 정도로 간단하게 넘어갔었는데, 그걸 증명하는 방식이 있었네요.
8월 14일 오후 8:37
저도 이에 대해 유사한 의문을 가지고 있었는데, 답변해주시고, 또 질의 해주셔서 감사드립니다. 덕분에 표본 분산에 대한 이해와 확률 밀도 함수에 대한 이해를 심화 시킬 수 있었습니다.
8월 14일 오후 10:18
자유도의 개념으로 봐도 됩니다. 예를 들어 x+y+z=3이라고 할때 x와 y의 값을 알면 z의 값의 정해지는 것이니까 종속변수가 되는 것이죠. 그러므로 독립변수는 n-1이 됩니다.
8월 15일 오후 9:20
와 생각도 못해봤던 개념이네요. 감사합니다.
comment
표본분산을 n-1 로 나누는 이유는 그래야 기댓갑이 모분산과 더 가깝기 때문이라는 것
특히 이에 대한 증명 내용을 천가영 학우분이 올려주신 블로그에서 자세히 볼 수 있었고 정확하게 이해할 수 있었습니다.
이상구(LEE SANGGU)8월 27일 오전 9:20
아주 이상적으로 5주차 동료들의 학습 내용을 모으고 학습한 후, 본인이 학습한 내용을 추가한 후 ... Final comment 를 추가한 이상적인 모델 입니다. 5장 내용 에서 평가한다면 A 입니다. 모든 chpater 를 이렇게 정리하고 보고서 서 제출하고 발표 한다면 ... 우리 강좌 학기 성적은 당연히 A 입니다.
손원식(2019****98)8월 27일 오전 9:58
제 글이 도움이 되셨다니 진심으로 감사합니다!! 그리고 제가 작성한 글 comment에 오타가 있었네요 ㅠㅠ 수정하도록 하겠습니다.
정원철(2017****79)8월 27일 오후 3:56
잘 정리된 글과 함께 다른 분들의 반응까지 한번에 볼 수 있어서 굉장히 만족스럽습니다. 감사합니다 !
관련 과정을 순서대로 설명해주시며 나타내주신 점 정말 감사하게 생각합니다.
[5주차] 이항분포 실습
작성자 : 한수현(2019****61)작성일 : 8월 23일 오후 4:13 조회수 : 17

▶ Published Data (공개된 자료)
1
n =5 ;p =0.2
2
print(dbinom(5, size =n, prob =p)) # 5명 모두 감염될 확률
3
e.x =n *p # 기대값
4
print(e.x)
5
var.x =n *p *(1 -p) # 분산
6
print(var.x)
7
sd.x =sqrt(var.x) # 표준편차
8
sd.x
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
[1] 0.00032
[1] 1
[1] 0.8
[1] 0.8944272
먼저 이항분포 에제에 대한 실습입니다.
문제 내용을 보고 어떤 자료 하나가 떠올라 그걸 토대로 제가 문제를 만들어 실습 해보기로 했습니다.

위의 네 가지 경우에서 비감염자가 감염자 5명을 만났을 때 감염 되지 않을 확률과 기댓값, 분산, 표준편차, 감염 될 확률을 구해보겠습니다.
1. 감염자와 비감염자 모두 마스크를 쓰지 않았을 때
▶ Published Data (공개된 자료)
1
n =5 ;p =0.1
2
print(dbinom(5, size =n, prob =p)) # 비감염자가 감염되지 않을 확률
3
e.x =n *p # 기대값
4
print(e.x)
5
var.x =n *p *(1 -p) # 분산
6
print(var.x)
7
sd.x =sqrt(var.x) # 표준편차
8
sd.x
9
print(1 -dbinom(5, size =n, prob =p)) # 비감염자가 감염될 확률
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
[1] 1e-05
[1] 0.5
[1] 0.45
[1] 0.6708204
[1] 0.99999
2. 감염자는 마스크를 쓰지 않고, 비감염자는 마스크를 썼을 때
▶ Published Data (공개된 자료)
1
n =5 ;p =0.3
2
print(dbinom(5, size =n, prob =p)) # 비감염자가 감염되지 않을 확률
3
e.x =n *p # 기대값
4
print(e.x)
5
var.x =n *p *(1 -p) # 분산
6
print(var.x)
7
sd.x =sqrt(var.x) # 표준편차
8
sd.x
9
print(1 -dbinom(5, size =n, prob =p)) # 비감염자가 감염될 확률
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
[1] 0.00243
[1] 1.5
[1] 1.05
[1] 1.024695
[1] 0.99757
3. 감염자는 마스크를 쓰고, 비감염자는 쓰지 않았을 때
▶ Published Data (공개된 자료)
1
n =5 ;p =0.95
2
print(dbinom(5, size =n, prob =p)) # 비감염자가 감염되지 않을 확률
3
e.x =n *p # 기대값
4
print(e.x)
5
var.x =n *p *(1 -p) # 분산
6
print(var.x)
7
sd.x =sqrt(var.x) # 표준편차
8
sd.x
9
print(1 -dbinom(5, size =n, prob =p)) # 비감염자가 감염될 확률
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
[1] 0.7737809
[1] 4.75
[1] 0.2375
[1] 0.4873397
[1] 0.2262191
4. 감염자와 비감염자 모두 마스크를 썼을 때
▶ Published Data (공개된 자료)
1
n =5 ;p =0.985
2
print(dbinom(5, size =n, prob =p)) # 비감염자가 감염되지 않을 확률
3
e.x =n *p # 기대값
4
print(e.x)
5
var.x =n *p *(1 -p) # 분산
6
print(var.x)
7
sd.x =sqrt(var.x) # 표준편차
8
sd.x
9
print(1 -dbinom(5, size =n, prob =p)) # 비감염자가 감염될 확률
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
[1] 0.9272165
[1] 4.925
[1] 0.073875
[1] 0.2717996
[1] 0.0727835
비감염자인 사람들이 아무리 마스크를 잘 써도 감염자인 사람들이 안 쓰면 별로 의미가 없다는 것을 알았습니다.
이것의 결론은 모두 마스크를 잘 쓰자가 될 것 같습니다.
-----
박진형(2018****59)8월 23일 오후 4:33
현재 이슈인 토픽에 대해 문제를 만들어 직접 코딩을 하여 흥미롭게 다가왔습니다.코딩을 통해 실제 숫자를 보니 마스크를 잘 써야 한다는 경각심을 불러일으키네요.좋은 실습 내용 감사합니다!
고경원(2013****45)8월 23일 오후 4:51
그렇다면 마스크는 자신을 감염원으로부터 보호하는 도구이기도 하지만, 동시에 자각하지 못한 무증상 감염자가 타인을 보호하기 위한 도구가 될 수도 있겠군요.
이상구(LEE SANGGU)8월 23일 오후 6:53
Good^^^합리적인 결론입니다.비감염자인 사람들이 아무리 마스크를 잘 써도 감염자인 사람들이 안 쓰면 별로 의미가 없다, 따라서 모두 마스크를 잘 쓰자!!
임성규(2015****08)8월 23일 오후 9:28
배운 내용과 함께 다같이 힘든 시기에 함께 마스크를 끼는 것에 참여해야 한다는 경각심을 다시 일으켜주는 알찬 내용 이었습니다. 잘읽었습니다^^
박은아(2016****73)8월 24일 오전 11:41
현재 상황과 함께 배운 내용을 활용하는 것이 흥미롭네요! 마스크 착용의 중요성을 다시 일깨워주는 실습 잘 읽었습니다. 감사합니다.
김호연(2020****32)8월 25일 오전 8:52
굉장히 대단한 시도입니다.
[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 <--- 답 <---보충), A by 이상구, 이재화
작성자 : 한수현(2019****61)작성일 : 8월 23일 오후 4:31
조회수 : 13
[Final OK by SGLee] Finalized by 한수현, Q by 김진웅 ([질문] 데이터행렬의 공분산행렬 <--- 답 <---보충), A by 이상구, 이재화
- 게시글

- 답변 및 댓글

- comment
저도 표본분산을 계산할 때 n-1을 이용해야한다고 알고 있었는데, 상황에 따라 식을 변형할 수 있다는 걸 알았습니다.
-----
김호연(2020****32)8월 25일 오전 8:54
저도 많이 알았습니다. 감사합니다.
Final OK by SGLee 한수현 주변밀도함수 실습
작성자 : 한수현(2019****61)작성일 : 8월 23일 오후 5:09
조회수 : 18

먼저 교재의 예제에 대한 실습입니다.
▶ Published Data (공개된 자료)
1
var('x, y')
2
f(x, y) = x +y
3
print("f_X(x) =", integral(f(x, y), y, 0, 1)) # X의 주변밀도함수
4
print("f_Y(y) =", integral(f(x, y), x, 0, 1)) # Y의 주변밀도함수
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
('f_X(x) =', x + 1/2)
('f_Y(y) =', y + 1/2)
따라서 위의 예제에서 X의 주변밀도함수는 f_X(x) = x + 1/2이고, Y의 주변밀도함수는 f_Y(y) = y + 1/2입니다.
이를 통해 결합밀도함수에서 주변밀도함수를 구하는 법을 알았습니다.
-----
이상구(LEE SANGGU)8월 23일 오후 6:50
Good^^ 축하합니다~~
김호연(2020****32)8월 25일 오전 8:54
오오 축하드려요~
[Final OK by SGLee] Finalized by 한수현, Q by 한수현(공분산, 상관계수 실습 + 질문), A by 채희준, 이상구
작성자 : 한수현(2019****61)작성일 : 8월 23일 오후 5:14
조회수 : 18
공분산, 상관계수 실습 + 질문
작성자 : 한수현(2019****61)작성일 : 8월 23일 오후 3:21
조회수 : 10

먼저 이 예제에 대한 실습입니다.
▶ Published Data (공개된 자료)
1
var('x, y')
2
f(x, y) = x +y # 결합밀도함수
3
f_X(x) = integral(f(x, y), y, 0, 1) # X의 주변밀도함수
4
f_Y(y) = integral(f(x, y), x, 0, 1) # Y의 주변밀도함수
5
EX = integral(x *f_X(x), x, 0, 1) # E[X]
6
EY = integral(y *f_Y(y), y, 0, 1) # E[Y]
7
EXY = integral(integral(x *y *f(x, y), x, 0, 1), y, 0, 1) # E[XY]
8
Cov = EXY -EX *EY # Cov[X, Y]
9
print("Cov[X, Y] =", Cov)
10
VX = integral(x ^2 *f_X(x), x, 0, 1) -EX ^2 # V[X]
11
VY = integral(y ^2 *f_Y(y), y, 0, 1) -EY ^2 # V[Y]
12
Corr = Cov /(sqrt(VX)*sqrt(VY)) # Corr[X, Y]
13
print ("Corr[X, Y] =", Corr )
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
('Cov[X, Y] =', -1/144)
('Corr[X, Y] =', -1/11)
이렇게 공분산과 상관계수를 구할 수 있습니다.
▶ Published Data (공개된 자료)
1
var('x, y')
2
f(x, y) = 2 *x # 결합밀도함수
3
f_X(x) = integral(f(x, y), y, 0, 1) # X의 주변밀도함수
4
f_Y(y) = integral(f(x, y), x, 0, 1) # Y의 주변밀도함수
5
EX = integral(x *f_X(x), x, 0, 1) # E[X]
6
EY = integral(y *f_Y(y), y, 0, 1) # E[Y]
7
EXY = integral(integral(x *y *f(x, y), x, 0, 1), y, 0, 1) # E[XY]
8
Cov = EXY -EX *EY # Cov[X, Y]
9
print("Cov[X, Y] =", Cov)
10
VX = integral(x ^2 *f_X(x), x, 0, 1) -EX ^2 # V[X]
11
VY = integral(y ^2 *f_Y(y), y, 0, 1) -EY ^2 # V[Y]
12
Corr = Cov /(sqrt(VX)*sqrt(VY)) # Corr[X, Y]
13
print("Corr[X, Y] =", Corr)
실행(Evaluate)
Language:
Permalink, Shortened Temporary Link
('Cov[X, Y] =', 0)
('Corr[X, Y] =', 0)
위는 f(x, y) = 2x 로 바꾸어 실행한 것인데, 여기 결과에서는 공분산과 상관계수가 0으로 나옵니다.
여기서 질문이 생겼습니다.

공분산과 상관계수에 관한 설명인데요.
위의 명제의 역인 '공분산이 0이면, X, Y는 서로 독립이다.', '상관계수가 0이면, X, Y는 서로 독립이다.'도 성립하는지가 궁금합니다.
채희준(2016****00)8월 23일 오후 3:41
'공분산이 0이면, X, Y는 서로 독립이다'는 성립하지 않습니다.아래는 다른 게시글에서 교수님께서 공유해주셨던 사이트입니다.https://m.blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221025662499&proxyReferer=https:%2F%2Fwww.google.com%2F공분산이 0이라고 해서 항상 독립이 되진 않는다. 이유는 공분산은 선형 관계에 대한 의존성을 말하고, 공분산이 0이 되면 두 변수의 선형 관계가 없다는 것을 의미하지, 모든 관계가 없다는 것을 의미하진 않기 때문이다. 독립이라는 조건은 두 변수의 모든 관계가 없다는 것을 의미하므로, 그냥 독립이라는 개념이 보다 상위 개념이 된다. 즉, y = x^2 이라는 관계가 있고, 그래프로 표현하면 아래와 같다고 한다면, 여기서 y와 x는 서로 선형이 아니기 때문에 cov(x,y) = 0이 된다.하지만, 그렇다고 이 두 변수가 독립이라고는 할 수 없다. 이유는 x가 0에서부터 증가하면 y가 증가하고, x가 0에서부터 감소하면 y가 또 증가하는 이러한 관계를 가지기 때문이다.
한수현(2019****61)8월 23일 오후 3:44
오오 감사합니다. 상관계수가 0이면 X, Y는 서로 독립인 건 맞는 건가요?
이상구(LEE SANGGU)8월 23일 오후 4:06
공분산이 0이라고 해서 항상 독립이 되진 않는다. 이유는 공분산은 선형 관계에 대한 의존성을 말하고, 공분산이 0이 되면 두 변수의 선형 관계가 없다는 것을 의미하지, 모든 관계가 없다는 것을 의미하진 않기 때문이다. 독립이라는 조건은 두 변수의 모든 관계가 없다는 것을 의미하므로, 그냥 독립이라는 개념이 보다 상위 개념이 된다. 즉, y = x^2 이라는 관계가 있고, 그래프로 표현하면 아래와 같다고 한다면, 여기서 y와 x는 서로 선형이 아니기 때문에 cov(x,y) = 0이 된다.하지만, 그렇다고 이 두 변수가 독립이라고는 할 수 없다.라는 답을 보시지 않고 다시 질문 한 것이지요?
한수현(2019****61)8월 23일 오후 4:15
앗 뒷내용을 제가 다르게 이해해서 상관계수에 관한 언급이 없는 줄 알았네요. 감사합니다.
독립과 공분산, 상관계수의 관계에 대한 질문이었는데요. 독립의 의미와 공분산, 상관계수가 의미하는 바를 제대로 이해하지 못 해 하게 된 질문이었습니다.
채희준님의 설명과 첨부해주신 링크의 글을 읽고 이해 했습니다. 감사합니다.
-----
김호연(2020****32)8월 25일 오전 8:55
저도 이해에 도움이 많이 되었습니다. 감사합니다.
정권채(2008****19)8월 25일 오후 4:24
독립이면 공분산=0이고 상관계수=0이라는 것이 그 역은 성립을 안 하는거군요.. 감사합니다.
Final OK by SGLee Finalized by 김범준. 신뢰구간의의미 by 이상현 학우님 댓글 및 추가의견by 이상구교수님, 정원철 학우님. 박은아 학우님
작성자 : 김범준(2017****99)작성일 : 8월 20일 오후 7:30
조회수 : 33
Final OK by SGLee Finalized by 김범준. 신뢰구간의의미 by 이상현 학우님 댓글 및 추가의견by 이상구교수님, 정원철 학우님. 박은아 학우님
신뢰구간을 추정방법중 구간추정을 이용합니다.
구간 추정이란 모수A가 a~b사이의 구간에 있을 확률을 추정하는것 입니다
모수가 신뢰구간 내에 없을 확률을 k이라고 할때
신뢰구간 내에 있을 확률은 1-k가 됩니다.
P(a<=표준정규분포<=b)=1-k로 나타낼시 1-k가 95일때와 99일때
표준정규분포표에 의해
P(-1.96<=z<=1.96)=0.95 / P(-2.58<=z<=2.58)=0.99 가 성립합니다.
표준정규분포인 z는 어떠한 확률변수를 표준화 했었음을 이용해
평균-1.96*(표준편차/(표본의크기)^(1/2))<=...으로 흔히 알고있는 공식을 유도할 수 있습니다.
저희가 흔히 아는 95와99의 신뢰도는 모수가 신뢰구간내에 있을 확률이 95% 99%임을 의미한다는 것을 알 수 있습니다.
모수가 신뢰구간내에 있을 확률이 높기 위해서는 신뢰구간이 넓어야 한다는 것은 쉽게 알 수 있습니다.
그렇기에 95%보다 높은 99%가 신뢰구간이 넓어야 하고 이 때문에 1.96보다 높은 2.58을 사용합니다.


이상구(LEE SANGGU)8월 19일 오전 7:21
ㅇㅋ
정원철(2017****79)8월 19일 오후 5:51
자세한 정리 감사합니다 ! 추가로, 저는 공부를 하면서 가설검증을 할 때 신뢰구간과 p-value (유의수준)의 관계를 아는 것이 중요하다고 생각했습니다. 예를 들어, 어떠한 귀무가설 < H0: 나는 A를 받을 것이다 > 과 대립가설 <H1: 나는 A를 못 받을 것이다.>이 있다고 했을 때, 신뢰구간 k 범위 내에 H0의 값이 존재한다면 = p-value가 1-k 보다 크 다면 -> '95%의 유의수준으로 귀무가설 H0를 참으로 받아들일 수 있다.(나는 A를 받을 수있다.)'라는 말이 됩니다. 즉, k가 95%라고 했을 때, H0의 값이 P(-1.96<=z<=1.96) 내에 존재하거나 (예를 들어 0.5) , p-value가 0.05 보다 크다면 위와 같은 관계가 성립되고, 반대로 범위 밖에 있거나 p-value가 0.05보다 작으면 '95%의 유의수준으로 귀무가설 H0를 기각하고 대립가설 H1을 참으로 받아들이겠다(나는 A를 못 받는다)' 라는 말이 됩니다. 정리하자면, 신뢰구간과 p-value는 항상 같은 결론을 이끌어냅니다.
박은아(2016****73)8월 20일 오후 2:20
이상현 학우님과 정원철 학우님의 글을 읽고 신뢰구간에 대해 자세히 공부하다가 다음과 같은 퀴즈 사이트를 발견하여 링크를 공유합니다! https://ko.khanacademy.org/math/statistics-probability/confidence-intervals-one-sample/introduction-to-confidence-intervals/a/interpreting-confidence-levels-and-confidence-intervals (퀴즈 예시) 신뢰도가 95%에서 99%로 증가하는 것이 신뢰구간에 어떤 영향을 미치나요? 정답을 한 개 고르세요: 표본 데이터를 보지 않고서 말할 수 없습니다. 신뢰도가 증가하면 신뢰구간이 더 넓어지면서 오차범위가 증가합니다. 신뢰도가 증가하면 신뢰구간이 더 좁아지면서 오차범위가 감소합니다. 풀이 신뢰도를 높인다는 것은 각 구간에서 모수의 실제 값을 포착하기 쉽다는 뜻입니다. 더 높이기 위해서, 큰 오차범위와 함꼐 넓은 구간을 사용합니다. 정답: 신뢰도가 증가하면 신뢰구간이 더 넓어지면서 오차범위가 증가합니다. 신뢰도, 신뢰구간, 유의수준에 대한 개념을 견고히 할 수 있었습니다.
comment: 신뢰구간이라는 개념을 고등학교때 배울때 문제를 풀어내는 정도(즉, 이해를 제대로 하지 못한채 문제만 풀 수 있는 수준)였는데 이번 수업에서 다시 배우며 학우님들의 자세한 설명 및 정리를 보니 보다 명확한 이해가 가능한 것 같습니다. 감사합니다.
이전
다음
2개의 댓글
김호연(2020****32)8월 20일 오후 10:16
좋은 내용 알아갑니다!
이동현(2014****99)8월 24일 오후 10:08
신뢰구간을 이해하는데에 큰 도움이 되었습니다.
COMMENT
신뢰구간의 의미를 이미지와 함께 자세히 설명해주셨습니다. 이 때 comment 중 정원철 학우분의 글이 눈에 띄었습니다.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
정원철(2017****79)8월 19일 오후 5:51
자세한 정리 감사합니다 ! 추가로, 저는 공부를 하면서 가설검증을 할 때 신뢰구간과 p-value (유의수준)의 관계를 아는 것이 중요하다고 생각했습니다. 예를 들어, 어떠한 귀무가설 < H0: 나는 A를 받을 것이다 > 과 대립가설 <H1: 나는 A를 못 받을 것이다.>이 있다고 했을 때, 신뢰구간 k 범위 내에 H0의 값이 존재한다면 = p-value가 1-k 보다 크 다면 -> '95%의 유의수준으로 귀무가설 H0를 참으로 받아들일 수 있다.(나는 A를 받을 수있다.)'라는 말이 됩니다. 즉, k가 95%라고 했을 때, H0의 값이 P(-1.96<=z<=1.96) 내에 존재하거나 (예를 들어 0.5) , p-value가 0.05 보다 크다면 위와 같은 관계가 성립되고, 반대로 범위 밖에 있거나 p-value가 0.05보다 작으면 '95%의 유의수준으로 귀무가설 H0를 기각하고 대립가설 H1을 참으로 받아들이겠다(나는 A를 못 받는다)' 라는 말이 됩니다. 정리하자면, 신뢰구간과 p-value는 항상 같은 결론을 이끌어냅니다.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
신뢰구간과 p-value 의 관계에 대해 설명해주신 점이 인상 깊었습니다.
이어 p-value 에 대해 서칭해보고 공부해보았습니다.
How do you know if a p-value is statistically significant?
The level of statistical significance is often expressed as a p-value between 0 and 1. The smaller the p-value, the stronger the evidence that you should reject the null hypothesis.
However, this does not mean that there is a 95% probability that the research hypothesis is true. The p-value is conditional upon the null hypothesis being true is unrelated to the truth or falsity of the research hypothesis.
A statistically significant result cannot prove that a research hypothesis is correct (as this implies 100% certainty).
Instead, we may state our results “provide support for” or “give evidence for” our research hypothesis (as there is still a slight probability that the results occurred by chance and the null hypothesis was correct – e.g. less than 5%).
출처 McLeod, S. A. (2019, May 20). What a p-value tells you about statistical significance. Simply Psychology. https://www.simplypsychology.org/p-value.html
Final OK by SGLee 6주차 실습 고경원 등
작성자 : 고경원(2013****45)작성일 : 8월 23일 오후 7:08
조회수 : 35





표준 코시분포가 중앙한계정리의 예외라는 게 잘 이해가 안 갔는데 그래프를 보니 표본평균의 분포가 중앙으로 몰리고 정규분포 그래프 형태를 이루지 않는다는 걸로 이해하면서 알 것 같아졌습니다.
이전
다음
8개의 댓글
이상구(LEE SANGGU)8월 23일 오후 7:43
그래프를 보니 ... 이해하면서 알 것 같아졌습니다. <--- Good point^^
이상구(LEE SANGGU)8월 23일 오후 7:45
표준 코시분포가 중앙한계정리의 예외 임을 코드로 보이라는 이 문제가 <-- 지난 학기 Harvard 대 통계학과 석사과정 Takehome Exam 의 과제 문제 였습니다.
임성규(2015****08)8월 23일 오후 7:55
고경원 학우분께서 실습하신 결과로 얻은 그래프를 보고 표준 코시분포가 중앙한계정리의 예외라는 것을 다시금 생각할 수 있었습니다! 이상구교수님 - 얼마나 중요한 개념인지 알았습니다. 감사합니다!
나종진(2017****17)8월 23일 오후 9:37
n 이 1일 때와 256일 때 그래프상으로 큰 차이가 없네요. 그래프로 나타내니 정말 알아보기 쉽네요. 감사합니다.
장환승(2016****69)8월 23일 오후 9:50
이해에 도움이 되었습니다 감사합니다
김호연(2020****32)8월 25일 오전 8:57
좋은 이론을 가르쳐 주셔서 감사합니다!
정권채(2008****19)8월 26일 오후 6:03
표준코시분포가 중앙한계정리의 예외라는 게 이해가 잘 안 갔는데 그래프로 보니 중앙으로 모여있네요.. 감사합니다.
김다은(2018****13)8월 27일 오전 5:21
감사합니다 도움이 되었어요
comment
6주차 관련 실습 내용 중 표준코시분포가 n이 커져도 정규분포를 따르지 않는다는 것, 즉 중심극한정리를 만족하지 않는다는 부분을 두 눈으로 확인해보며 이해할 수 있었습니다.
또한 다음과 같이 이상구 교수님의 comment에서 저명한 대학인 Harvard 대 통계학과 석사과정 문제였음은 위의 실습이 의미있음을 보이는 것 같습니다.
이상구(LEE SANGGU)8월 23일 오후 7:45
표준 코시분포가 중앙한계정리의 예외 임을 코드로 보이라는 이 문제가 <-- 지난 학기 Harvard 대 통계학과 석사과정 Takehome Exam 의 과제 문제 였습니다.
손원식(2019****98)8월 27일 오후 1:44
감사합니다. 글 잘 읽었습니다!!
박상협(2019****22)8월 28일 오전 11:33
감사합니다. 정리하는 데 도움되었습니다!
[13][Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준 [Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준
6주차 내용 정리, 실습 및 질문
작성자 : 장환승(2016****69)작성일 : 8월 23일 오후 11:03
조회수 : 23
출처) http://matrix.skku.ac.kr/math4ai/part4/
주성분 분석(Principal Component Analysis, PCA)은 가장 널리 사용되는 차원 축소 기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 서로 직교하는 새 기저(축)를 찾아, 고차원 공간의 데이터들을 선형 연관성이 없는 저차원 공간으로 변환한다. 이때 계산은 주로 행렬의 고윳값 분해 또는 특이값 분해(SVD)를 사용한다.
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. 예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.
위의 X를 센터링(centering)하여, X bar 를 정의하자. 이를 위해
(1) X의 각 열(하나의 확률변수가 갖는 데이터)의 평균을 구한다. 확률변수 xj의 평균은 xj(bar)로 표기한다.
, ... ,
.
(2) 열(column)별로 데이터에서 (열의) 평균을 뺀다. 이 행렬을 센터링된 행렬 Xbar 라 한다.

제가 생각한 센터링이 필요한 이유 -> 각 열의 평균이 0이 되어서
PC score
▪ X를 센터링(mean-centered)된 n x p의 데이터 행렬이라 하자. 여기서 x은 표본(sample)의 개수이고, p는 확률변수(variable, feature)의 개수이다. 공분산 행렬
는 p X p 대칭행렬이므로, 다음과 같이 직교대각화가 가능하다.
![]()
여기서 A는
의 고윳값
를 크기 순서대로, 주대각선 성분에 배열한 대각선행렬이고, V는 그에 대응하는 정규직교인 고유벡터를 열벡터로 하는 직교행렬이다. 또한
이므로 는 양의 준정부호(positive semidefinite) 행렬이고, 고윳값은 이다. 그리고 고유벡터는 주축(principal axes) 또는 주방향(principal directions)이라고도 부른다.
▪ 주성분(PC) z1,z2 , ... ,zp 를 벡터로 나타내면 다음과 같다.

그리고 각 확률변수 xi에 원 데이터를 대입하면 행렬 Z=XV를 얻는다.

그러면 Z의 i번째 데이터의 좌표는 XV의 i번째 행벡터로 주어지고, j번째 PC score (주성분점수, principal component score)는 XV의 j번째 열벡터로 주어진다.
이제 X의 특이값분해(SVD)가 다음과 같이 주어져 있다고 하자.
![]()
![]()
여기서 U,V는 직교행렬이고, S1는 크기 순서대로 배열된 특이값(singular value) s1>=s2>=.....>=sp>=0을 주대각선 성분으로 하는 pXp대각선행렬이다. 그러면 관계식

으로부터 다음을 얻는다.
(1) X=USV^T라 하면 V의 열벡터가 주축(principal axes)이 된다.
(2) Z=XV=USV^TV=US이므로, US의 열벡터들이 PC score (주성분점수, principal component score)가 된다.
(3) 특이값 si는
의 고윳값
와 관계식
을 만족하며,
는 대응하는 PC의 분산이 된다.
(4) 데이터를 p차원에서 k(<<p) 차원으로 줄이기 위하여, U의 처음 k개의 열벡터(Uk)와 S의 k번째 선행 주 부분행렬(leading principal submatrix)(Sk)을 택하면,UkSk 는 처음 k개의 PC를 포함하는 n X k행렬이 된다.

(5) (4)에서 얻은 Zk에 s1,s2 , ... ,sk 에 대응되는 주축으로 이루어진 행렬 Vk^T을 곱하면, Xk=UkSkVk^T는 처음 k개의 PC로부터 원 데이터를 복원하도록 해주는 rank가 k인 nXp행렬이 된다. [rank reduction]

이는 X의 SVD에서 크기 순서대로 k개의 큰 특이값 s1>=s2>=...>=sk>0과 이에 대응되는 U와 V의 처음 k개의 열벡터를 택하는 것과 같다. 이를 truncated SVD라고 한다. 실제로 Xk는 rank k인 행렬 중에서 X에 가장 가까운 행렬이 된다. 즉 다음이 성립한다.
.
# 데이터 입력
Price <- c(6, 7, 6, 5, 7, 6, 5, 6, 3, 1, 2, 5, 2, 3, 1, 2)
Software <- c(5, 3, 4, 7, 7, 4, 7, 5, 5, 3, 6, 7, 4, 5, 6, 3)
Aesthetics <- c(3, 2, 4, 1, 5, 2, 2, 4, 6, 7, 6, 7, 5, 6, 5, 7)
Brand <- c(4, 2, 5, 3, 5, 3, 1, 4, 7, 5, 7, 6, 6, 5, 5, 7)
data <- data.frame(Price, Software, Aesthetics, Brand)
# 데이터가 잘 입력되었는지 확인한다.
print(data)
# 데이터 행렬을 센터링 하여 mydata 행렬을 얻는다. (본 예제에서는 센터링 한 후에 다시 각 열을 해당 확률변수의 표준편차로 나누었다. 이를 scaling이라 하는데, 필요에 따라 scaling도 진행할 수 있다.)
# 표준화(centering, scaling) 작업
mydata <- scale(data, center = T, scale = T) # 데이터 행렬을 센터링, scaling 한다.
print(mydata)
# mydata 행렬에 PCA를 진행한다. (R의 prcomp 명령어를 이용하였다.)
# PCA 진행. 앞에서 이미 센터링 scaling 하였음. retx는 PC score를 제공할지 여부
mypca <- prcomp(mydata, center = F, scale = F, retx = T)
print(summary(mypca))
# 주성분을 찾을 때 필요한 적재계수는 다음 명령어를 이용하여 확인할 수 있다. 이는 직교행렬 V에 해당한다.
# loadings (V를 의미한다.)
print(mypca$rotation)
# 1~3번째 PC에서의 score는 다음 명령어를 이용하여 확인할 수 있다. 이는 행렬 Z=XV의 1~3번째 열벡터로 이루어진 행렬이다.
# PC1~PC3 score. 1열부터 3열까지
print(mypca$x[,1:3])
# 앞서 PC1, PC2가 원 데이터의 84.8% 정도를 보존한다고 이해할 수 있으므로, 15% 정도의 정보는 잃어버리더라도,
# PC1, PC2만 택하여 2차원 데이터로 차원을 줄 일 수 있다. 이를 활용하여 데이터를 시각화하거나 다른 데이터 분석기법을 적용할 수 있다.
# 예를 들어, 다음과 같이 주어진 데이터를 개의 클러스터로 묶는 알고리즘인 K-means clustering을 진행할 수 있다.
# 그리고 주성분의 고윳값에 대한 선 그림(line plot)인 scree plot을 활용하여 데이터의 차원을 줄일 때, 주성분을 몇 개로 선택할지 결정할 수 있다
# scree plot은 고윳값을 가장 큰 값에서부터 크기 순서대로 정렬하므로, 대개 기울기가 꺾이는 부분의 “elbow point” 왼쪽에 있는 성분까지 선택한다.
# 2차원으로 차원 축소 후(PC1과 PC2만 취하여) k-means clustering 진행
PC1 = mypca$x[,1] # 1열을 PC1라 함
PC2 = mypca$x[,2] # 2열을 PC2라 함
# PC1, PC2를 이용하여 클러스터의 개수(centers)를 4개로 하고
# 임의로 10번 시행(nstart)하여 가장 잘 clustering 하는 것을 찾음
myclust <- kmeans(mypca$x[,1:2], centers = 4, nstart = 10)
# clustering 후 시각화 결과 보여줌
plot(PC1, PC2, xlab = "PC 1", ylab = "PC 2", type="p", col = myclust$cluster)
# scree 그래프 (분산을 나타낸다)
screeplot(mypca, type = "lines", col = 2)
dev.off()
위 코드를 실행한 결과..

클러스터링이 잘 된 것을 알 수 있었다.
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
6개의 댓글
김진웅(2015****73)8월 23일 오후 11:22
1. 주성분이 얼마나 설명력있느냐에 달려 있습니다. 이 설명력은 모든 주성분의 분산 중 해당 주성분의 분산입니다. 오른쪽 그래프에 4개의 주성분과 그 분산(2.5, 1.0, 0.5, 0)이 표시되어 있는데요, 첫번째 주성분은 2.5/(2.5+1.0+0.5+0)=0.625만큼의 설명력이 있고, 두번째 주성분은 1.0/(2.5+1.0+0.5+0)=0.25만큼의 설명력이 있는 것입니다. 두 주성분을 이용하여 0.875만큼의 원데이터를 설명하고 있습니다. 많은 주성분을 사용하면 설명력은 커지겠지만, 차원이 늘어난다는 trade-off가 있습니다. 결론: 생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다. 고르는 사람 맘입니다. 2. PC1, PC2는 각각 첫번째, 두번째 주성분입니다.
장환승(2016****69)8월 24일 오전 00:39
감사합니다. 2번 질문은 x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다는 의미였습니다.
임성규(2015****08)8월 24일 오전 00:45
코드 설명을 자세하게 적어주어 쉽게 읽고 이해했습니다. 글의 정리내용을 다시 읽어보시면 질문에 대한 답변이 있습니다! PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. --> PC1,PC2는 주성분을 의미. 예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다. --> 주성분이 원데이터의 성질을 얼마나 보존하는지 마지노선을 글을 쓰신 분은 90%로 정하였고 조건을 충족하는 PC3까지 주성분 3개를 택하여 차원을 줄였습니다. 즉, 데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
김정한(2017****99)8월 24일 오전 6:06
세세한 내용정리 잘 보았습니다. 김진웅 학우님, 임성규 학우님의 답변 또한 잘 배워갑니다. 제가 이해한 내용이라 부족한 부분도 있겠지만 질문에 추가적인 답변을 해보자면 PCA는 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법 중 하나입니다. 머신러닝을 할 때 훈련 데이터의 변수가 많은 경우가 있습니다. 하지만 모든 변수가 결과에 주요한 영향을 끼치는 것은 아닙니다. 가장 중요한 변수가 있을 것이고, 그다음 중요한 변수가 있을 것이고, 상대적으로 중요치 않은 변수들도 있을 겁니다.(원데이터의 분포의 보존) 이런 변수 중 가장 중요한 주성분 몇 개 만을 선택하는 게 PCA입니다. n개의 변수가 있다고 해봅시다. n개의 변수와 1개의 label을 매핑시키는 그래프를 그리려면 n차원의 그래프가 있어야 합니다. 3차원이 넘어가면 우리의 눈으로는 볼 수 없을 것입니다. 이때 중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다. (->차원 축소를 통해 시각화를 할 수 있고, 시각화를 통해 데이터 패턴을 쉽게 인지할 수 있습니다.)
박은아(2016****73)8월 24일 오전 11:36
장환승학우님의 글과 김진웅, 임성규, 김정한 학우님의 댓글을 통해 PCA에 대해 공부할 수 있었습니다. 특히 주성분의 분산과, 차원 축소 방법으로서 PCA의 의미에 대해 더 잘 이해하였습니다. 감사합니다!
채희준(2016****00)8월 24일 오후 12:47
학우님들의 내용 정리, 질문, 답변을 보면서 PCA에 대한 이해도를 높일 수 있었습니다. 감사합니다.
[정리 & Comment]
장환승 학우님의 질문:
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
(추가) x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다
답변 정리
질문 1 생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다.
데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
질문 2 PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. --> PC1,PC2는 주성분을 의미.
중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다.
Comment
학우님들께서 작성해주신 질문과 답변을 통해 주성분분석(PCA)에 대한 큰 그림을 이해할 수 있었습니다. PCA에 대한 원리, 개념과 더불어 주어진 데이터를 선별하고 분석하며 시각화하는 과정을 파악할 수 있었습니다. 기존에 배웠던 SVD와 연결해서 공부하니 더욱 흥미롭게 느껴졌습니다.
[Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준 작성자 : 박은아(2016****73)작성일 : 8월 24일 오후 3:47
출처) http://matrix.skku.ac.kr/math4ai/part4/
주성분 분석(Principal Component Analysis, PCA)은 가장 널리 사용되는 차원 축소 기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 서로 직교하는 새 기저(축)를 찾아, 고차원 공간의 데이터들을 선형 연관성이 없는 저차원 공간으로 변환한다. 이때 계산은 주로 행렬의 고윳값 분해 또는 특이값 분해(SVD)를 사용한다.
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. 예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.
위의
를 센터링(centering)하여,
를 정의하자. 이를 위해
(1)
의 각 열(하나의 확률변수가 갖는 데이터)의 평균을 구한다. 확률변수
의 평균은
로 표기한다.
, ... ,
.
(2) 열(column)별로 데이터에서 (열의) 평균을 뺀다. 이 행렬을 센터링된 행렬
라 한다.
제가 생각한 센터링이 필요한 이유 -> 각 열의 평균이 0이 되어서
PC score
▪
를 센터링(mean-centered)된
의 데이터 행렬이라 하자. 여기서
은 표본(sample)의 개수이고,
는 확률변수(variable, feature)의 개수이다. 공분산 행렬
는
대칭행렬이므로, 다음과 같이 직교대각화가 가능하다.
여기서
는
의 고윳값
를 크기 순서대로, 주대각선 성분에 배열한 대각선행렬이고,
는 그에 대응하는 정규직교인 고유벡터를 열벡터로 하는 직교행렬이다. 또한
이므로
는 양의 준정부호(positive semidefinite) 행렬이고, 고윳값은
이다. 그리고 고유벡터는 주축(principal axes) 또는 주방향(principal directions)이라고도 부른다.
▪ 주성분(PC)
,
, ... ,
를 벡터로 나타내면 다음과 같다.
![]()
![]()
그리고 각 확률변수
에 원 데이터를 대입하면 행렬
를 얻는다.

그러면
의
번째 데이터의 좌표는
의
번째 행벡터로 주어지고,
번째 PC score (주성분점수, principal component score)는
의
번째 열벡터로 주어진다.
이제
의 특이값분해(SVD)가 다음과 같이 주어져 있다고 하자.
![]()

![]()
![]()
![]()
여기서
,
는 직교행렬이고,
는 크기 순서대로 배열된 특이값(singular value)
을 주대각선 성분으로 하는
대각선행렬
이다. 그러면 관계식
![]()
![]()
![]()
![]()
으로부터 다음을 얻는다.
(1)
라 하면
의 열벡터가 주축(principal axes)이 된다.
(2)
이므로,
의 열벡터들이 PC score (주성분점수, principal component score)가 된다.
(3) 특이값
는
의 고윳값
와 관계식
을 만족하며,
는 대응하는 PC의 분산이 된다.
(4) 데이터를
차원에서
(
) 차원으로 줄이기 위하여,
의 처음
개의 열벡터(
)와
의
번째 선행 주 부분행렬(leading principal submatrix)(
)을 택하면,
는 처음
개의 PC를 포함하는
행렬이 된다.
![]()
![]()
.
(5) (4)에서 얻은
에
,
, ... ,
에 대응되는 주축으로 이루어진 행렬
을 곱하면,
는 처음
개의 PC로부터 원 데이터를 복원하도록 해주는 rank가
인
행렬이 된다. [rank reduction]
![]()
![]()

![]()
.
이는
의 SVD에서 크기 순서대로
개의 큰 특이값
과 이에 대응되는
와
의 처음
개의 열벡터를 택하는 것과 같다. 이를 truncated SVD라고 한다. 실제로
는 rank
인 행렬 중에서
에 가장 가까운 행렬이 된다. 즉 다음이 성립한다.
.
# 데이터 입력
Price <- c(6, 7, 6, 5, 7, 6, 5, 6, 3, 1, 2, 5, 2, 3, 1, 2)
Software <- c(5, 3, 4, 7, 7, 4, 7, 5, 5, 3, 6, 7, 4, 5, 6, 3)
Aesthetics <- c(3, 2, 4, 1, 5, 2, 2, 4, 6, 7, 6, 7, 5, 6, 5, 7)
Brand <- c(4, 2, 5, 3, 5, 3, 1, 4, 7, 5, 7, 6, 6, 5, 5, 7)
data <- data.frame(Price, Software, Aesthetics, Brand)
# 데이터가 잘 입력되었는지 확인한다.
print(data)
# 데이터 행렬을 센터링 하여 mydata 행렬을 얻는다. (본 예제에서는 센터링 한 후에 다시 각 열을 해당 확률변수의 표준편차로 나누었다. 이를 scaling이라 하는데, 필요에 따라 scaling도 진행할 수 있다.)
# 표준화(centering, scaling) 작업
mydata <- scale(data, center = T, scale = T) # 데이터 행렬을 센터링, scaling 한다.
print(mydata)
# mydata 행렬에 PCA를 진행한다. (R의 prcomp 명령어를 이용하였다.)
# PCA 진행. 앞에서 이미 센터링 scaling 하였음. retx는 PC score를 제공할지 여부
mypca <- prcomp(mydata, center = F, scale = F, retx = T)
print(summary(mypca))
# 주성분을 찾을 때 필요한 적재계수는 다음 명령어를 이용하여 확인할 수 있다. 이는 직교행렬 V에 해당한다.
# loadings (V를 의미한다.)
print(mypca$rotation)
# 1~3번째 PC에서의 score는 다음 명령어를 이용하여 확인할 수 있다. 이는 행렬 Z=XV의 1~3번째 열벡터로 이루어진 행렬이다.
# PC1~PC3 score. 1열부터 3열까지
print(mypca$x[,1:3])
# 앞서 PC1, PC2가 원 데이터의 84.8% 정도를 보존한다고 이해할 수 있으므로, 15% 정도의 정보는 잃어버리더라도,
# PC1, PC2만 택하여 2차원 데이터로 차원을 줄 일 수 있다. 이를 활용하여 데이터를 시각화하거나 다른 데이터 분석기법을 적용할 수 있다.
# 예를 들어, 다음과 같이 주어진 데이터를 개의 클러스터로 묶는 알고리즘인 K-means clustering을 진행할 수 있다.
# 그리고 주성분의 고윳값에 대한 선 그림(line plot)인 scree plot을 활용하여 데이터의 차원을 줄일 때, 주성분을 몇 개로 선택할지 결정할 수 있다
# scree plot은 고윳값을 가장 큰 값에서부터 크기 순서대로 정렬하므로, 대개 기울기가 꺾이는 부분의 “elbow point” 왼쪽에 있는 성분까지 선택한다.
# 2차원으로 차원 축소 후(PC1과 PC2만 취하여) k-means clustering 진행
PC1 = mypca$x[,1] # 1열을 PC1라 함
PC2 = mypca$x[,2] # 2열을 PC2라 함
# PC1, PC2를 이용하여 클러스터의 개수(centers)를 4개로 하고
# 임의로 10번 시행(nstart)하여 가장 잘 clustering 하는 것을 찾음
myclust <- kmeans(mypca$x[,1:2], centers = 4, nstart = 10)
# clustering 후 시각화 결과 보여줌
plot(PC1, PC2, xlab = "PC 1", ylab = "PC 2", type="p", col = myclust$cluster)
# scree 그래프 (분산을 나타낸다)
screeplot(mypca, type = "lines", col = 2)
dev.off()
위 코드를 실행한 결과..

클러스터링이 잘 된 것을 알 수 있었다.
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
김진웅(2015****73)8월 23일 오후 11:22
1. 주성분이 얼마나 설명력있느냐에 달려 있습니다. 이 설명력은 모든 주성분의 분산 중 해당 주성분의 분산입니다. 오른쪽 그래프에 4개의 주성분과 그 분산(2.5, 1.0, 0.5, 0)이 표시되어 있는데요, 첫번째 주성분은 2.5/(2.5+1.0+0.5+0)=0.625만큼의 설명력이 있고, 두번째 주성분은 1.0/(2.5+1.0+0.5+0)=0.25만큼의 설명력이 있는 것입니다. 두 주성분을 이용하여 0.875만큼의 원데이터를 설명하고 있습니다. 많은 주성분을 사용하면 설명력은 커지겠지만, 차원이 늘어난다는 trade-off가 있습니다. 결론: 생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다. 고르는 사람 맘입니다. 2. PC1, PC2는 각각 첫번째, 두번째 주성분입니다.
장환승(2016****69)8월 24일 오전 00:39
감사합니다. 2번 질문은 x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다는 의미였습니다.
임성규(2015****08)8월 24일 오전 00:45
코드 설명을 자세하게 적어주어 쉽게 읽고 이해했습니다. 글의 정리내용을 다시 읽어보시면 질문에 대한 답변이 있습니다! PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. --> PC1,PC2는 주성분을 의미. 예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다. --> 주성분이 원데이터의 성질을 얼마나 보존하는지 마지노선을 글을 쓰신 분은 90%로 정하였고 조건을 충족하는 PC3까지 주성분 3개를 택하여 차원을 줄였습니다. 즉, 데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
김정한(2017****99)8월 24일 오전 6:06
세세한 내용정리 잘 보았습니다. 김진웅 학우님, 임성규 학우님의 답변 또한 잘 배워갑니다. 제가 이해한 내용이라 부족한 부분도 있겠지만 질문에 추가적인 답변을 해보자면 PCA는 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법 중 하나입니다. 머신러닝을 할 때 훈련 데이터의 변수가 많은 경우가 있습니다. 하지만 모든 변수가 결과에 주요한 영향을 끼치는 것은 아닙니다. 가장 중요한 변수가 있을 것이고, 그다음 중요한 변수가 있을 것이고, 상대적으로 중요치 않은 변수들도 있을 겁니다.(원데이터의 분포의 보존) 이런 변수 중 가장 중요한 주성분 몇 개 만을 선택하는 게 PCA입니다. n개의 변수가 있다고 해봅시다. n개의 변수와 1개의 label을 매핑시키는 그래프를 그리려면 n차원의 그래프가 있어야 합니다. 3차원이 넘어가면 우리의 눈으로는 볼 수 없을 것입니다. 이때 중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다. (->차원 축소를 통해 시각화를 할 수 있고, 시각화를 통해 데이터 패턴을 쉽게 인지할 수 있습니다.)
박은아(2016****73)8월 24일 오전 11:36
장환승학우님의 글과 김진웅, 임성규, 김정한 학우님의 댓글을 통해 PCA에 대해 공부할 수 있었습니다. 특히 주성분의 분산과, 차원 축소 방법으로서 PCA의 의미에 대해 더 잘 이해하였습니다. 감사합니다!
채희준(2016****00)8월 24일 오후 12:47
학우님들의 내용 정리, 질문, 답변을 보면서 PCA에 대한 이해도를 높일 수 있었습니다. 감사합니다.
[정리 &Comment]
장환승 학우님의 질문:
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
(추가) x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다
답변 정리
질문 1
생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다.
데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
질문 2
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. --> PC1,PC2는 주성분을 의미.
중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다.
Comment
학우님들께서 작성해주신 질문과 답변을 통해 주성분분석(PCA)에 대한 큰 그림을 이해할 수 있었습니다. PCA에 대한 원리, 개념과 더불어 주어진 데이터를 선별하고 분석하며 시각화하는 과정을 파악할 수 있었습니다. 기존에 배웠던 SVD와 연결해서 공부하니 더욱 흥미롭게 느껴졌습니다.
Final OK by SGLee
[Final] 주성분분석(PCA)에서 누락된 데이터가 있을 경우, ALS 활용 Finalized by 박은아 댓글 by 임성규 박정호 김정한 박진형 전재현 김호연 채희준 천가영
작성자 : 박은아(2016****73)작성일 : 8월 24일 오후 11:12
주성분분석(PCA)에 대해 공부하던 중 누락된 데이터가 있는 경우에 대해 자세히 알아보고 싶어서 실습을 진행해보았습니다.
혹시 저와 같은 궁금증을 가지고 계셨던 분이 계시다면 조금이나마 도움이 되었으면 좋겠습니다.
* 행렬 데이터 처리 속도가 상대적으로 빠른 매트랩을 사용하여 실습을 진행했습니다.
(1) MATLAB의 PCA( ) 함수 설명
[coeff,score,latent,tsquared,explained,mu] = pca(X,Name,Value)
X: n*p 데이터 행렬 X, X의 행은 관측값에 대응되고, 열은 변수에 대응
Name, Value: 하나 이상의 Name,Value 쌍 인수로 지정된 특수 데이터형의 계산 및 처리와 관련한 추가 옵션
coeff: X에 대한 p*p 주성분 계수 행렬, coeff의 각 열은 하나의 주성분에 대한 계수를 포함하고 이러한 열들은 성분 분산을 기준으로 내림차순으로 정렬
score: 주성분 점수, 행은 관측값에 대응되고, 열은 성분에 대응
latent: 주성분 분산, X의 공분산 행렬의 고유값
tsquared: X에 포함된 각 관측값에 대한 호텔링(Hotelling)의 T 제곱 통계량
explained: 각 주성분으로 설명된 총 분산의 백분율
mu: X에 포함된 각 변수에 대한 추정된 평균
데이터 행렬 X의 NaN 값에 대해 수행할 동작으로, 'Rows'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.
|
값 |
설명 |
|
'complete' |
디폴트 값. NaN 값을 포함하는 관측값이 계산 전에 제거됩니다. NaN이 있는 행은 score 및 tsquared의 해당 위치에 다시 삽입됩니다. |
|
'pairwise' |
이 옵션은 알고리즘이 'eig'인 경우에만 적용됩니다. 'pairwise'와 함께 알고리즘을 지정하지 않으면 pca가 알고리즘을 'eig'로 설정합니다. 옵션 'Rows','pairwise'와 함께 'svd'를 알고리즘으로 지정하면 pca가 경고 메시지를 반환하고, 알고리즘을 'eig'로 설정한 후 계속합니다. 'Rows','pairwise' 옵션을 지정하면 pca가 X의 열 i 또는 j 내에 NaN 값이 없는 행을 사용하여 공분산 행렬의 (i,j) 요소를 계산합니다. 참고로, 결과로 생성되는 공분산 행렬은 양의 정부호가 아닐 수 있습니다. 이 경우, pca가 종료되고 오류 메시지가 표시됩니다. |
|
'all' |
X에는 결측값이 없어야 합니다. pca는 모든 데이터를 사용하며 NaN 값이 검색되면 종료됩니다. |
(2) 누락된 데이터가 있을 경우의 주성분분석
원본 Data set에 누락된 값이 있을 때 주성분 계수를 구해보면 다음과 같습니다.
|
%% PCA in the Presence of Missing Data |
|
실행 결과) coeff = |
|
coeff = pca(X(:,3:15),'Rows','pairwise') |
|
실행 결과) coeff = |
|
coeff = pca(X(:,3:15),'Rows','all') |
|
실행 결과) 다음 사용 중 오류가 발생함: pca(line 281) |
(3) ALS(교대최소제곱법, Alaternating Least Squares)
NaN 값을 포함하는 행을 아얘 삭제하고 주성분분석을 진행하는 것은 아무래도 효과가 좋지 않다는 생각이 들었습니다.
이에 다른 방안을 찾아보다 ALS를 이용하게 되었습니다.
ALS의 개념은 다음과 같습니다.
1. Latent Factor 행렬을 아주 작은 랜덤 값으로 초기화

2. 둘 중 하나를 상수처럼 고정시켜 Loss Function을 Convex Function로 변환
3. 미분 값을 0으로 만드는 사용자 혹은 아이템의 Latent Factor 행렬을 계산
![]()
4. 이 과정을 반복함으로써 최적값을 찾는다.
*Loss Function: 예측 평점 행렬의 오차가 최대한 작아지도록 구성한 수식


*Convex Function: 볼록함수, Set 내에 포함된 두 점을 이었을 때, 그 선분 내에 모든 점이 해당 Set 내에 포함된다.
(4) ALS 예제 실행
MATLAB 명령 창에 openExample 명령을 입력하면 예제를 실행할 수 있습니다.
openExample('stats/PCAUsingALSforMissingDataExample')
|
load hald |
|
실행 결과) coeff = y = coeff1 = mu1 = t = |
(5) 결과 분석
ALS를 사용하지 않고 PCA를 수행했을 때 성분계수는 coeff입니다.13*4 크기의 행렬 y 는 누락된 데이터 NaN을 30%정도 가지고 있습니다.
이 행렬을 ALS 알고리즘을 사용하여 주성분 분석을 수행하면 성분계수 coeff1를 얻을 수 있습니다.
score1, coeff1, mu1를 이용해 데이터를 재구성하여 행렬 t = score1*coeff1' + repmat(mu1,13,1) 를 얻을 수 있습니다.
|
y = |
t = |
NaN 위치에 데이터가 추가된 것을 확인할 수 있습니다.
참고
https://kr.mathworks.com/help/stats/pca.html?lang=en
https://medium.com/@kim_hjun/convex-optimization-1-convex-function-set-eee8e65252b6
임성규(2015****08)8월 24일 오후 11:33
원 데이터 집합에 누락된 데이터가 있는 경우, ALS(교대최소제곱법)을 적용하면 데이터를 재구성하여 누락된 데이터에 대하여 값을 재구성 할 수 있군요. 심층적인 실습 결과를 올려주셔서 호기심을 가지고 재미있게 읽었습니다. 감사합니다^^
채희준(2016****00)8월 25일 오전 11:27
누락된 데이터가 있을 경우에 대해서는 생각해보지 못했습니다. 이러한 경우에는 어떻게 하는지에 대한 실습내용을 함께 공유해줘서 감사합니다. 덕분에 새로운 내용을 배울 수 있었습니다!
[7주차] PCA를 활용한 라면맛 평가 작성자 : 정원철(2017****79)작성일 : 8월 27일 오후 3:35
PCA를 보다 잘 이해하기 위해 다양한 예제를 찾아보다가 가장 재밌고 코드 정리가 잘되어있는 글을 찾아서 공유드립니다.
각 라면에 대하여 면발, 라면 그릇의 모양(크기), 국물맛에 대한 점수가 있다고 한다면, 3개의 변수(면, 그릇, 국물)를 가지고 PCA 분석
(맛에 대한 종합점수 구하기)을 할 수 있습니다.
• 면, 그릇, 국물이 맛에 끼치는 영향은 어느 정도일까?
면, 그릇, 국물에 대한 표준화 작업을 진행한다. => 평균과 표준편차를 구해서 표준점수를 산출한다.
각 변수에 대한 상관행렬을 구해서 고유치, 고유벡터를 구한다. => 고유치가 크다 = 분산정도(분산 기여율)가 크다 = 점수에 큰 영향을 끼친다
• 면, 그릇, 국물이 끼치는 영향을 수치화 해서 맛에 대한 방정식을 만든다면 어떤 모습일까?
큰 영향을 끼치는 고유치값 2개를 선정한다. => 고유치가 큰 2개를 선정한다 = 해당 하는 고유벡터 2개를 선정한다
주성분점수1 = 각 항목의 표준점수 * 고유벡터_1 = z1*ev1 + z2*ev2 + ...
주성분점수2 = 각 항목의 표준점수 * 고유벡터_2 = z1*ev1 + z2*ev2 + ...
1. Data load
> data <- read.table("110707-ramen-data.txt", header=T)
> data
면 그릇 국물
쇠고기라면 2 4 5
해물라면 1 5 1
얼큰라면 5 3 4
떡라면 2 2 3
짬뽕라면 3 5 5
만두라면 4 3 2
치즈라면 4 4 3
된장라면 1 2 1
볶음라면 3 3 2
김치라면 5 5 3
> mean(data) # 평균
면 그릇 국물
3.0 3.6 2.9
> round(sd(data), 2) # 표준편차
면 그릇 국물
1.49 1.17 1.45
2. 표준화 &상관행렬 구하기
> (data - mean(data))/sd(data) # 평균과 표준편차를 이용한 표준화
면 그릇 국물
쇠고기라면 -0.67082039 0.3407771 1.44913767
해물라면 -2.21505115 1.4491377 -1.34164079
얼큰라면 1.44913767 0.0000000 0.34077710
떡라면 -0.67082039 -1.3631084 0.06900656
짬뽕라면 -0.51116565 1.4491377 1.34164079
만두라면 0.75907212 0.0000000 -1.36310840
치즈라면 0.67082039 0.3407771 0.06900656
된장라면 -2.21505115 -0.6210590 -1.34164079
볶음라면 0.06900656 0.0000000 -1.36310840
김치라면 1.34164079 1.1927199 0.06900656
> cor(data)
면 그릇 국물
면 1.0000000 0.1905002 0.3600411
그릇 0.1905002 1.0000000 0.3004804
국물 0.3600411 0.3004804 1.0000000
> round(cor(data), 2) # 상관행렬
면 그릇 국물
면 1.00 0.19 0.36
그릇 0.19 1.00 0.30
국물 0.36 0.30 1.00
3. Eigenvalue &Eigenvector 구하기
> p1 = prcomp(data, scale=TRUE)
> print(p1)
Standard deviations:
[1] 1.2541347 0.9022241 0.7830312
Rotation:
PC1 PC2 PC3
면 0.5715110 -0.604471 0.5549685
그릇 0.5221161 0.789607 0.3223595
국물 0.6330639 -0.105526 -0.7668731
> summary(p1)
Importance of components:
PC1 PC2 PC3
Standard deviation 1.2541 0.9022 0.7830
Proportion of Variance 0.5243 0.2713 0.2044
Cumulative Proportion 0.5243 0.7956 1.0000
4. 각각에 대한 제1주성분, 제2주성분 점수를 구한다.
> predict(p1)
PC1 PC2 PC3
쇠고기라면 0.7119408 0.5216497 -1.373736133
해물라면 -0.9740499 1.8911205 0.645382316
얼큰라면 0.9804158 -1.2947047 -0.002322692
떡라면 -1.0513965 -0.6781104 -0.864614382
짬뽕라면 1.5401350 0.7888582 -0.726820118
만두라면 -0.2766766 -0.7435735 0.683778524
치즈라면 0.6049920 -0.1436935 0.429217649
된장라면 -2.3084890 -0.1269792 -0.178513165
볶음라면 -0.6600579 -0.3380821 0.311494336
김치라면 1.4331863 0.1235150 1.076133664
> round(predict(p1), 2)
PC1 PC2 PC3
쇠고기라면 0.71 0.52 -1.37
해물라면 -0.97 1.89 0.65
얼큰라면 0.98 -1.29 0.00
떡라면 -1.05 -0.68 -0.86
짬뽕라면 1.54 0.79 -0.73
만두라면 -0.28 -0.74 0.68
치즈라면 0.60 -0.14 0.43
된장라면 -2.31 -0.13 -0.18
볶음라면 -0.66 -0.34 0.31
김치라면 1.43 0.12 1.08
• 쇠고기라면의 주성분점수 PC1:0.71, PC2:0.52를 계산해보자.
1) z1(제1주성분) 점수 = 0.71 = 0.57*(-0.67) + 0.52*(0.34) + 0.63*(1.45) = 0.7084
2) z2(제2주성분) 점수 = 0.52 = -0.60*(-0.67) + 0.79*(0.34) - 0.11*(1.45) = 0.5111
5. 제1주성분 점수와 제2주성분 점수를 토대로 그래프 작성
• 좌표
--------------------------
면 (0.57, -0.60)
그릇 (0.52, 0.79)
국물 (0.63, 00.11)
z1(제1주성분) = 0.57u1 + 0.52u2 + 0.63u3
z2(제2주성분) = -0.60u1 + 0.79u2 - 0.11u3
u1: 면의 표준점수
u2: 그릇의 표준점수
u3: 국물의 표준점수
> png("plot2.png")
> biplot(p1)
> dev.off()
null device
1

6. 결론
1) 라면의 종합평가에서 1위는 짬뽕라면이고, 2위는 김치라면, '라면의 종합평가'에 가장 영향을 끼치고 있는 변수는 '국물'이 된다.
2) 해물라면은 '그릇'의 평가 영향을 많이 받았고, 얼큰라면은 '면'의 평가 영향을 많이 받았다.
채희준(2016****00)8월 27일 오후 5:18
흥미롭네요 ㅎㅎ 좋은 글 올려주셔서 감사합니다!!
5. 실습 [Final OK by SGLee]
[실습] Part I -3 특이값분해(SVD), 의사역행렬 with 파이썬
작성자 : 채희준(2016****00)작성일 : 8월 5일 오후 1:59
※전재현 학우님의
'특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기'
파이썬 코드를 활용해 실습했습니다.
#저는 모델을 y = ax^3 + bx^2 + cx +d 로 해봤습니다.
import numpy as np, matplotlib.pyplot as plt
from numpy.linalg import svd
year = np.arange(2003, 2020, 1)
A = np.array([2002**3, 2002**2, 2002, 1])
for years in year:
add = np.array([years**3, years**2,years,1])
A = np.vstack((A,add))
B = np.array([[4056],[4770],[6552],[7282],[11876],[22687],[24021],[20709],
[24637],[29082],[28540],[30192],[26998],[27180],[34986],[43696],[49781],[61847]])
# 특이값 분해
U, s, Vt = np.linalg.svd(A, full_matrices=True)
#의사역행렬 구하기
re_s = np.reciprocal(s)
S_mat = np.diag(re_s)
for i in range(0,14,1) :
plus = np.array([[0],[0],[0],[0]])
S_mat = np.hstack((S_mat,plus))
Ut = np.transpose(U)
V = np.transpose(Vt)
piA = np.dot(V, np.dot(S_mat,Ut))
X = np.dot(piA, B)
print(X)
piA_t = np.linalg.pinv(A)
X_t = np.dot(piA_t,B)
print(X_t)
x = np.array([[2002],[2003],[2004],[2005],[2006],[2007],[2008],[2009],[2010],
[2011],[2012],[2013],[2014],[2015],[2016],[2017],[2018],[2019],[2020]])
forcast = 2020**3*X[0]+2020**2*X[1] + 2020*X[2] + X[3]
add_b = np.array([forcast])
y = np.vstack((B,add_b))
plt.figure(figsize=(15,5))
plt.plot(x,y,'o', markersize = 10)
plt.ylabel('money')
plt.xlabel('year')
plt.xlim(2001,2021)
plt.ylim(0,80000)
plt.plot(x,X[0]*x*x*x+X[1]*x*x+X[2]*x+X[3])
plt.xticks([2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,
2015,2016,2017,2018,2019,2020])
plt.title('Amount of investment to abroad', loc='center')
print(forcast)
plt.show()
[[ 3.12093785e+01]
[-1.88167547e+05]
[ 3.78167713e+08]
[-2.53340282e+11]]
[[ 3.51993928e-02]
[-1.40171873e+02]
[ 1.39547336e+05]
[ 2.08229222e+02]]
[68690.52740479]
제 모델로 했을 때는 pinv() 함수와는 다른 해가 나왔습니다.
pinv() 함수로 구한 해를 이용해 2020년 전망치와 그래프를 구하면 다음과 같습니다.
[56271.88436551]
comment.
이미 짜여진 코드로 실습을 하는데도 어려움이 많았습니다. 그 의미를 파악하고 제 모델에 맞게 변형을 해가는 과정에서 SVD, 의사역행렬, 파이썬에 대해 많이 배울 수 있었습니다.
그리고 단순히 이론을 공부하는 것에서 끝나는 것이 아니라 실제 데이터와 공부한 것을 활용해 추세선을 그리고 미래를 예측해 볼 수 있다는 것이 신기했고 재미있었습니다.
직접 코딩을 하고 다른 사람도 학습해 볼 수 있도록 그 코드를 공유해준 전재현 학우님. 감사합니다!
이상구(LEE SANGGU)8월 5일 오후 4:53
Good^^
주어진 첨부 형식에 맞추어 내용을 채어서 Due Day 전에 제출하시오. 양과 질을 평가하여 해당성적을 부여합니다. [The First or The Best!]
1. http://matrix.skku.ac.kr/2018-album/SVD.html 에서 실습을 할 수 있어 들어갔는데,
이렇게 되어 있는데 여기서 RDF와 CDF가 뜻하는게 뭔지 알 수 있을까요?

이상구(LEE SANGGU)7월 26일 오후 5:57
( 정수 행렬이라도 실수 또는 복소수 고윳값도 가지므로 ...
이런 경우까지 대비하여 ... 비용이 더 들더라도 ... 필요시 사용하는 ... )
RDF 는 실수(체) R 상에서 연산을 수행하라는 의미이고, CDF가 복소수(체) C 상에서 연산을 수행하라는 의미입니다.
그런데 장 군이 물어본 정수 행렬의 rank 구하는 경우에는 아무것도 없이 하거나 ZZ 또는 QQ 로 하는 것이 더 정확한 답을 더 빠르게 줍니다.
<-- 그 이유를 알고 싶으면 WebEx OH 에 구두로 직접 물어 보세요^^
-> 개인적으로 이 질문을 통해서 세이지 코드에 대해 몰랐던 더 자세한 부분까지 알 수 있었습니다. 사용법이 아직 익숙하지 않은데 저런 세밀한 부분까지 알아가는 좋은 질문이었다고 생각합니다.
[10]Final OK by SGLee Finalized by. 나종진 답변 by. SG LEE, 김정한, 임성규 오차역전파법 질문
안녕하세요. 경영학과 나종진입니다.
오차역전파법을 공부하다 궁금한 점이 생겨서 질문드립니다.
신경망 그림입니다.


input x가 있으면 output y가 나오는 것으로 이해하고 수업을 들었습니다.
그래서 hidden layer가 없는


이 그림으로 이해하고 수업을 들었습니다.
이 그림같은 경우는 수면시간, 운동시간, 칼로리 섭취량에 따라 체중과 혈압이 달라지는 그림으로 이해했습니다.
hidden layer가 없는 그림으로 이해하니 간단하게 이해되었습니다.
그렇게 이해하여 오차역전파법을 이해하던 중


이 그림을 보고 이해가 잘 안되었습니다.
왜 굳이 은닉층을 두어 오차를 적용하는데 두번 계산하는지 궁금합니다.
처음 그림인

이 그림의 경우 오차를 줄이기 위해 3번을 계산해야합니다.
hidden layer의 갯수가 늘수록 오차역전파법을 사용하는 횟수도 많아지게됩니다.
이렇게되면 출력층에서 입력층으로 오차를 줄이는 시간이 길어질 것으로 보입니다.
그러면 시간, 비용이 더 들 것으로 예상되는데 그럼에도 hidden layer를 두는 이유가 궁금합니다.
Q. 왜 hidden layer를 두어 오차역전파법을 여러번 사용하는지 궁금합니다.
FINAL


답변의 내용을 크게 3가지로 정리할 수 있습니다.
A1. 기존인공신경망의 단점이 극복되었다.
A2. 하드웨어 발전으로 계산이 빨라졌다.
A3. Hidden layer가 있음으로 더 정확해진다.
이러한 이유로 은닉층이 존재합니다.
Comment : 공부하던 중 갑자기 궁금해진 내용을 정성껏 설명해주셔서 감사합니다. 역사적으로 신경망, 빅데이터 등 다양한 문제가 어떻게 발전되었는지 알게되는 중요한 정보였습니다. 감사합니다.
작성자 : 김효경(2016****71)작성일 : 8월 27일 오전 00:27
조회수 : 15
Matlab에서 'deep learning toolbox'를 이용하면 직접 신경망을 사용해 볼 수 있다는 것을 이번 방학때 co-op을 진행하면서 알게 되었습니다.
매트랩에서 네트워크를 구현해보며 그 구조를 살펴보고, 수업의 내용들을 구현된 신경망에서 직접 확인해 보며 실습(?)을 진행했습니다.
1. 네트워크 만들기
매트랩을 배포하는 Mathwork 홈페이지에 다양한 종류의 신경망이 소개되어 있었습니다. 그 중 3가지를 우선 구현해 보았습니다.

Feed-Forwardneuralnetwork
노드 간 연결에서 루프가 존재하지 않는 신경망으로, 가장 단순한 형태의 신경망입니다. 입력->출력의 방향으로 한 방향으로만 진행됩니다.

LayerRecurrentNeuralNetwork(RNN)
Feedforward 네트워크와 비슷하지만, 각 계층에 지연이 있는 순환 연결이 있다는 점이 다릅니다.
Feedforward 에서는 학습할 때만 weight factor와 bias를 변경하고, 학습이 끝난 후 사용할 때는 바뀌지 않지만, RNN에서는 새로운 입력이 들어올 때마다 조금씩 수정해갑니다.

NARXNeuralNetwork(NonlinearAutoRegressiveeXogenousmodel, 비선형 자기회귀 네트워크)
2. 네트워크 학습
간단한 feedforward 모델에 12개의 input과 1개의 output을 설정해 학습시켜보았습니다.

신경망 학습은 위 그림의 Algorithms에 나와 있는 방법으로 진행했습니다. 그 중 Levenberg-Marquardt 학습법은 최소제곱법을 이용한 학습입니다.
Progress에 총 학습 시간과 학습 종료 조건이 나와 있습니다. 이 조건은 필요에 따라 변경할 수 있습니다.
이 신경망은 오차를 최소화하는 오차 역전파법을 이용합니다. 아래 그림에서처럼, 오차가 작아질 때까지 학습을 진행합니다.
3. 학습된 네트워크 구조 뜯어보기 (Simulink)
2에서 학습시킨 신경망을 Simulink 블럭으로 불러와 내부 구조를 봤습니다.

Layer 내부입니다. 신경망을 만들 때 레이어에 10개의 뉴런이 들어가도록 만들었는데, 실제로 10개가 모두 구현되어 있는 것을 볼 수 있었습니다.
이전 레이어의 output이 각 뉴런에 전달되고, 이 뉴런을 통해 나온 데이터를 다시 묶어 다음 레이어로 전달합니다.

레이어에서 연산이 끝난 데이터가 다음 레이어로 넘어가거나 output 될 때 사용되는 transfer function을 나타내는 블럭입니다. sigmoid 함수가 아닌 transig 함수가 사용되고 있습니다. 형태는 sigmoid와 비슷하지만, 출력값의 범위가 약간 다른 함수입니다.
Comment:
툴을 통해 직접 신경망을 만들어 보고, 수업시간에 다룬 내용들을 확인해볼 수 있어서 좋았습니다. Co-op 활동에서 신경망을 사용하려고 했을 때, 튜토리얼을 따라가며 간단하게 어떻게 쓰는지만 알고 사용했습니다. 7주차 수업을 들으면서 사용했던 신경망의 구조와 transfer function의 기능, 신경망이 학습하는 과정을 알 수 있어서 좋았습니다. 오늘 실습한 feedforward 이외의 신경망들도 다음에 학습시켜서 feedforward와의 차이점을 확인해보고자 합니다.
신경망에 관심이 있는 학우들은 제가 사용한 매트랩/시뮬링크나 Python 환경 등에서 사용할 수 있는 TensorFlow를 사용해 직접 실습해보면 수업의 내용을 더 잘 이해할 수 있고, 재미도 느낄 수 있을 것이라 생각됩니다.
8월 27일 오전 3:12
직접 신경망을 사용해보셨다니 대단하십니다. 실제 확인해 볼 수 있는 툴을 알려주셔서 감사합니다.
8월 27일 오전 3:17
Matlab 툴을 이용해서 신경망을 만들 수 있다는 것을 처음 알아갑니다! 작성해주신 글을 토대로 한번 실습해보겠습니다. 좋은 글 공유해주셔서 감사합니다!
8월 27일 오전 5:50
Good! 김효경 씨가, 동영상 발표 에 위의 Matlab 내용 설명 해서 제출하기를 . . . 추천합니다^^
8월 27일 오전 6:01
신경망 실습을 직접 하시다니 대단하세요.
8월 27일 오전 8:05
굉장히 멋지십니다. 한 수 배워갑니다.
8월 27일 오전 8:10
매트랩에서 네트워크를 구현해보며 그 구조를 살펴보고 수업의 내용들을 구현된 신경망에서 직접 확인해 보며 실습을 하신게 정말 대단하십니다. 학우님 덕분에 신경망을 사용한 사례를 직접 알게 될 수 있어서 많은 도움이 되었습니다. 감사합니다!!
COMMENT
실제 CO-OP 을 하시며 'Matlab에서 'deep learning toolbox'를 이용하면 직접 신경망을 사용해 볼 수 있다는 것' 을 아시고
관련 내용을 MATLAB 툴에서 직접 진행해 보시며 강의에서 배운 내용들이 실제 적용됨을 보여주신 점 인상 깊었습니다.
작성자 : 박진형(2018****59)작성일 : 8월 27일 오전 7:47
조회수 : 7
activating functiontransfer function

Logistic activation function
In artificial neural networks, the ofanodedefinestheoutputofthatnodegivenaninputorsetofinputs.Astandard integrated circuit can be seen as a digital network of activation functions that can be "ON" (1) or "OFF" (0), depending on input. This is similar to the behavior of the linear perceptron in neural networks. However, only activationfunctionsallowsuchnetworkstocomputenontrivialproblemsusingonlyasmallnumberofnodes,andsuchactivationfunctionsarecalled .[1]
'
출처 : https://en.wikipedia.org/wiki/Activation_function
다음은 인공지능을 위한 기초수학의 교안 내용 중 SIGMOID 함수에 대한 내용입니다.


ACTIVATION FUNCTION 에는 SIGMOID 도 있지만 그 외에도 다양한 활성화 함수가 존재합니다.
아래는 ACTIVATION FUNCTION 의 예를 몇 가지 들어놓은 것이고 각각에 대한 ADVANTAGE, DISADVANTAGE 가 있습니다.
1. SIGMOID

2. Tan H

3. ReLU
4. Leaky ReLU
5. Parametric ReLU

6. Softmax
7. Swish
출처 https://missinglink.ai/guides/neural-network-concepts/7-types-neural-network-activation-functions-right/

SIGMOID 는 위에서 본 것과 마찬가지로 몇 가지의 문제점이 있다.
세 가지 문제점을 들자면 다음과 같다.
1. SATURATED NEURONS KILL THE GRADIENTS
2. SIGMOID OUTPUTS ARE NOT ZERO-CENTERED
3. EXP() IS A BIT COMPUTE EXPENSIVE
위와 같이 SIGMOID 함수는 입력값이 커지면 GRADIENT가 0이 되버리고, OUTPUT이 0을 기준으로 하지 않고 EXP() 은 조금 비싼 편이라는 단점을 가집니다.
이 때 RELU FUNCTION 은 비교적 COST가 CHEAP해 SIGMOID의 단점 3를 보완해줍니다.
그리고 X>0 에서 단점 1을 보완해줍니다.
그렇다고 무작정 SIGMOID 함수 대신 RELU를 쓸 수 있는 것은 아니고 상황에 맞게 사용해야 합니다.
*글을 읽어보던 중 저와 비슷한 내용의 글이 있어 추가합니다.
작성자 : 박은아(2016****73)작성일 : 8월 24일 오후 3:25
조회수 : 18
8월 27일 오전 5:52
Good job^^
8월 27일 오전 6:52
'high-quality classifier 실현에는 high-quality data 가 필요하고, 이를 충족하지 않으면 classifier 구성 방법 중, 단 하나도 만족스러운 classifier를 제공하지 않는다는 점' 잘 알아가겠습니다. 감사합니다.
8월 27일 오전 8:08
Excellent~
* 이번 도전학기의 다른 수업의 기말과제로 sklearn의 breast_cancer data를 가지고 유방암 예측 정확도를 올리는 프로젝트를 진행했던 차에, 제가 직접 구해본 위에서 언급하신 몇가지 Classifier의 성능을 간단한 실행결과와 함께 공유해드리고 싶었습니다.
(1) Random Forest -> 96.49%
먼저 Decision Tree로 성능을 평가했었고, 이를 좀 더 개선시키고 싶은 취지에서 Random Forest 앙상블을 사용했었습니다.
[image1] Random Forest classification

(2) Logistic Regression -> 95.61 (94.28/95.18/96.49)
로지스틱 회귀는 성능을 향상시켜보고자 3가지 Cross Validation(K-fold, StratifiedShuffleSplit, GridSearch)를 사용해봤는데, 결과는 아래와 같았습니다.
[image2] Logistic Regression classification

[image3] Logistic Regression k-fold Cross Validation

[image4] Logistic Regression Stratified Sampling

[image5] Logistic Regression GridSearch Cross Validation

로지스틱 자체의 성능은 나쁘지 않았었는데 이상하게 Cross Validation하니까 성능이 떨어졌었습니다..
(3) MLP -> 90.35 (+layers 94.73)
Deep Neural Network의 가장 기본적인 형태라고 할 수 있는 MultiLayerPerceptron Classifier를 사용했었는데 생각보다 성능이 좋지가 않아서 layer를 1000개로 늘리니 어느정도 개선이
되었던것 같습니다.
[image6] MLP classification 결과

[image7] MLP의 층을 늘린 classification 결과

추가로 다양한 모델들을 실험해서 좀더 성능을 개선시켜보고 정규화까지 진행해보았는데 결과 한번 참고해보시면 좋을 것 같습니다.
이때 흥미로웠던 것은 MLP 같은 경우 정규화(그냥 정규분포로 만들었습니다..)를 거치니 성능이 많게는 8% 가량 상승해서 .. 98%대를 기록하였습니다.
이상입니다.
omment
유가이 올렉산드르님 덕분에 굉장히 좋은 퀄리티의 자료를 보며 정리가 잘되었고, 저의 실습 과제와 맞물려 있어서 서로에게 이득이 되었으면 하는 바람입니다.
COMMENT

'high-quality classifier 실현에는 high-quality data 가 필요하고, 이를 충족하지 않으면 classifier 구성 방법 중, 단 하나도 만족스러운 classifier를 제공하지 않는다는 점'
을 이해하였습니다.
또한 정원철 학우 분의 실습 내용을 통해 CLASSIFIER의 각 모델별 성능을 확인할 수 있었습니다.
CROSS VALIDATION 시 정확도가 내려가는 이유는 감히 예측해보자면 MODEL 이 UNDERFITTING 되지 않았을까 생각해봅니다.
정확히 모르는 내용이므로 답을 아시는 분이 계시면 COMMENT 달아주시면 감사하겠습니다.
참고 사이트 https://nittaku.tistory.com/289
손원식(2019****98)8월 27일 오후 12:40
여러 학우들이 쓴 글들을 명료하게 총 정리해주셔서 감사합니다. 덕분에 제가 많은 정보들을 머릿속에 체계적으로 쉽게 정리하고 이해할 수 있었습니다. 감사합니다!!
박지수(2016****86)8월 27일 오후 1:18
정리 감사합니다 놓치고 지나갔던 글들이 많네요..
Final OK by SGLee Re-Finalized by 박은아 [7주차] 신경망 요약 by 천가영. Finalized by 정원철.
작성자 : 박은아(2016****73)작성일 : 8월 26일 오후 2:23
조회수 : 26
Re-Finalized by 박은아- 오차역전파법 정리를 추가하여
Final OK by SGLee Finalized by 정원철. [7주차] 신경망 요약 by 천가영.
출처 : Math4AI (수업 교재)
신경망
- 신경망(neural network)은 신경계의 기본 단위인 뉴런(신경세포, neuron)을 모델화 한 것

- 하나의 인공 뉴런에서는 다수의 입력 신호 xi를 받아서 하나의 신호를 출력한다. 각 입력신호에는 고유한 가중치가 부여되며 가중치가 클수록 해당 신호가 중요하다고 볼 수 있다.
- 인공뉴런에서 1을 출력할지 0을 출력할지 출력을 결정하는 함수를 활성화 함수(activation function) 라 한다. 대표적인 활성화 함수로 유계이며 미분 가능한 실함수인 sigmoid 함수가 있다.

- 입력과 출력

입력층에서 신호를 받으면, 미리 부여된 가중치와 계산 후 그 총합이 은닉층으로 전파되고, 주어진 활성화 함수에 따라 그 다음 층으로 전해질 신호가 계산된다. 이런 식으로 전파되어 출력층에서 해당하는 결과를 내보낸다.
- 각 계층에 전달된 오차로부터 가중치를 갱신하는 방법
1. 각 계층에 전달된 오차를 계산한다. 출력층 오차 계산 >> 은닉층 오차 계산 (오차 역전파법 활용)

2. 출력층에서 얻은 오차로부터 은닉층과 출력층 사이의 가중치를 갱신한다.
3. 은닉층에 전달된 오차로부터 입력층과 은닉층 사이의 가중치를 갱신한다.

- 신경망은 제대로 예측할 때 까지 많은 데이터를 필요로 하며, 또한 입력층과 출력층 사이에 많은 은닉층을 둘 수도 있다. 이와 같이 은닉층이 여러 개 있는 인공신경망을 심층신경망(deep neural network)이라고 부르며, 심층 신경망을 학습하기 위한 기계학습 기법을 딥러닝(deep learning)이라고 부른다. 은닉층이 여러 개있는 경우에도 마찬가지로 오차 역전파법을 이용하여 그 이전 층에서 전파된 오차로부터 경사하강법을 적용하여 가중치를 갱신할 수 있다.
임성규(2015****08)8월 24일 오후 11:21
신경망의 신호처리 원리를 천가영 학우분이 글과 그림으로 다시 한번 정리해주어 쉽게 읽으며 머릿 속에 정리해볼 수 있었습니다.글 잘 읽었습니다!
김정한(2017****99)8월 25일 오전 00:45
덕분에 가중치를 갱신하는 매커니즘을 명확히 이해할 수 있었습니다. 좋은 요약 감사드립니다.
박은아(2016****73)8월 25일 오전 1:57
7주차 수업 내용 신경망, 은닉층, 오차역전법에 대해 정리해주셔서 감사합니다. 잘 읽엇습니다.
박진형(2018****59)8월 25일 오전 2:20
이미지와 함께 신경망을 잘 설명해주셔서 보기가 편하였습니다.오차역전파법에 대해서도 단계별로 잘 설명해주셔서 이해가 쉬웠습니다. 감사합니다.
김호연(2020****32)8월 25일 오전 8:46
정리해주셔서 감사합니다~
Comment
굉장히 깔끔하게 정리해주셔서 감사합니다. 해당 글을 읽고 신경망의 전반적인 진행과정에 대해서 잘 이해할 수 있었습니다.
제가 이해한 말로 다시 정리를 해보자면,
'input layer에서부터 이미 주어진 가중치를 가지고 hidden layer를 거쳐 output layer까지 학습을 하면서 loss를 만들어 내고,
loss를 오차역전파법을 사용하여 output layer부터 input layer까지 경사하강법(가중치를 최적화하기 위해)을 하며, 이미 주어진 가중치가 아닌 결과를 바탕으로
각각을 최적화할 수 있는 새로운 가중치를 구해내는 과정을 통해 신경망의 성능을 올릴 수 있다.'
감사합니다.
이상구(LEE SANGGU)8월 25일 오후 7:15
오차 역전파법에 대한... 위의 마지막 코멘트 가 조금 더 ... 누가 ... 윤문 해 보실래요?
정원철(2017****79)8월 25일 오후 7:27
제가 잘못 이해했으면 교정부탁드리겠습니다 ..1. 순전파를 통해서 먼저 loss를 만들어낸다.2. 이 loss를 최소화 하기 위해 역전파를 하며 경사하강법을 사용하여 가중치를 업데이트 한다.3. 만족스러운 loss가 될 때까지(성능이 최적화될 때까지..), epoch를 늘리며 반복한다.
박은아(2016****73)8월 26일 오전 2:26
오차역전파법에 대한 정원철 학우님의 설명에 덧붙이겠습니다.1. 순전파(forward propagation)입력 layer로부터 각 layer를 지나치며 weight들을 곱하고, 활성화함수를 지나 마지막 출력 layer에서 loss값을 계산한다.2. 경사하강법 - 함수 f를 loss로 두고 gradient가 가르키는 반대방향(descent)으로 네트워크를 업데이트한다. 업데이트를 위해 순차적으로 거꾸로 돌아간다.(back propagation)참고: https://www.ics.uci.edu/~pjsadows/notes.pdf
이승재(2019****65)8월 26일 오전 2:50
인공신경망에 대한 이해도를 높이는데 큰 도움이 되었습니다. 정리해주신 것과 오차 역전파법에 대한 설명까지 모두 감사드립니다! :)
김호연(2020****32)8월 26일 오전 11:01
정리 감사드립니당~
오차역전파법
- input layer에서부터 이미 주어진 가중치를 가지고 hidden layer를 거쳐 output layer까지 학습을 하면서 loss를 만들어 내고, loss를 오차역전파법을 사용하여 output layer부터 input layer까지 경사하강법(가중치를 최적화하기 위해)을 하며, 이미 주어진 가중치가 아닌 결과를 바탕으로 각각을 최적화할 수 있는 새로운 가중치를 구해내는 과정
오차역전파법 알고리즘
1. 순전파를 통해서 먼저 loss를 만들어낸다.
- 입력 layer로부터 각 layer를 지나치며 weight들을 곱하고, 활성화함수를 지나 마지막 출력 layer에서 loss값을 계산한다
2. 이 loss를 최소화 하기 위해 역전파를 하며 경사하강법을 사용하여 가중치를 업데이트 한다.
- 함수 f를 loss로 두고 gradient가 가르키는 반대방향(descent)으로 네트워크를 업데이트한다. 업데이트를 위해 순차적으로 거꾸로 돌아간다.(back propagation)
3. 만족스러운 loss가 될 때까지(성능이 최적화될 때까지..), epoch를 늘리며 반복한다.
Comment: 학우분들과 함께 공부한 내용에 대해 정리해나가는 경험이 뿌듯했습니다. 소통하며 서로 도와 공부하는 값진 경험이었습니다.
--------------------------------------------------------------------------------
reFinalized by 정원철. Application of neural networks for classification problems.by 유가이 올렉산드르 + 실습 공유
작성자 : 정원철(2017****79)작성일 : 8월 27일 오전 10:51
조회수 : 13
작성자 : 유가이올렉산드르(2018****33)작성일 : 8월 27일 오전 1:11
조회수 : 12
Application of neural networks for classification problems.
Article by 유가이 올렉산드르
I think that solving the classification problem is one of the most important applications of neural networks.
The classification problem is the problem of assigning a sample to one of several pairwise disjoint sets. An example of such tasks can be, for example, the task of determining the creditworthiness of a bank client, medical tasks in which it is necessary to determine, for example, the outcome of a disease, the task of identifying potentially successful and bankrupt companies.
Purpose of classification [3]
As you know from statistics or discrete mathematics, when solving classification problems, it is necessary to classify the available static samples (client information, medical examination data, etc.) into certain classes. Several ways of presenting data are possible. The most common way is that the sample is represented as a vector. The components of this vector can represent various characteristics of the sample that influence the decision about which class a given sample can be assigned to. Thus, the classifier assigns an object to one of the classes in accordance with a certain partition of the N-dimensional space, which is called the input space, and the dimension of this space is the number of vector components.
Also, it is worth considering the complexity of the system. There are usually three main levels of difficulty of system.
● First (easiest). Here the classes can be separated by straight lines (or hyperplanes if the input space has a dimension greater than two). I think, we can also call the initial complexity (first level), the level of linear separability.
● Second. In the second case, the classes cannot be separated by lines (planes), but they can be separated using a more complex division. Let me call the second level as the level of non-linear separability.
● Third. In the third case, the classes overlap and we can only talk about probabilistic separability.
Remark: It is worth noting that when solving real problems, we have a limited number of samples, on the basis of which the classifier is built. At the same time, we cannot carry out such preprocessing of the data in which linear separability of the samples will be achieved.
Using neural networks as a classifier
Neural networks with direct dependence are a universal tool for approximating functions, which allows them to be used in solving classification problems. Usually, neural networks turn out to be the most efficient way of classification, because they actually generate a large number of regression models (which are used in solving classification problems using statistical methods).
However, it should be noted that a number of problems arise in the application of neural networks in practical tasks(real problems). One of the most important problems is that it is not known in advance how much complexity (size) the network may need to implement the mapping accurately enough. This complexity can be prohibitive, requiring complex network architecture. But this limitation is overcome when using multilayer neural networks. In general, we can say that in a network with one hidden layer, the vector corresponding to the input pattern(sample) is transformed by the hidden layer into some new space, which may have a different dimension, and then the hyperplanes corresponding to the neurons of the output layer, that divide it into classes. In this way, the network recognizes not only the characteristics of the original data, but also, loosely speaking, the "characteristic of characteristics" generated by the hidden layer.
♦ Remark (Classifier): A classifier is any algorithm that sorts data into labeled classes, or categories of information. A simple practical example are spam filters that scan incoming “raw” emails and classify them as either “spam” or “not-spam.” Classifiers are a concrete implementation of pattern recognition in many forms of machine learning.
Algorithm for constructing a classifier based on neural networks [1], [2], [3]
(1) Working with data
● Create a database from examples typical for this task.
● Split the entire data set into two sets: training and test (it is possible to split into 3 sets: training, test and confirmation).
(2) Preliminary processing
● Select a system of features typical for this task and transform the data accordingly for feeding it to the input of the neural network (normalization, standardization, etc.). As a result, it is desirable to obtain a linearly separable space for a plurality of samples.
● Select a coding system for the output values (classic coding, etc.)
(3) Neural network design, training and quality assessment
● Select the neural network topology: the number of layers, the number of neurons in the layers, etc.
● Select neuron activation function (for example "sigmoid")
● Choose a neural network learning algorithm
● Assess the quality of the network based on a confirming set or other criterion; optimize the architecture (e.g. reducing weights)
● The next step is to focus on the network option that provides the best generalization ability and evaluate the quality of work on the test set.
(4) Usage and diagnostics
● Find out the degree of influence of various factors on the decision/result (heuristic approach).
● Make sure that the network is delivering the required classification accuracy, that is, that the number of misrecognized examples is low.
● If necessary, go back to the first two steps and change the way the samples are presented or change the database.
● Finally, practically use the network to solve the problem.
Additional material (Types of Classification Algorithms) [4]:



----------------------------------------------------
Comment: In this article, based on material from various sources, I decided to briefly tell you about the use of neural networks in solving a classification problem. To all of the above, I want to add that in order to build a high-quality classifier, you need to have high-quality data. Therefore, it is worth remembering that none of the methods for constructing classifiers, based on neural networks or statistic, will never give a classifier of the required quality, if the available set of samples is not sufficiently complete and representative for the task with which the system will have to work.
References:
[1] FrontlineSolvers., (N/D), “NEURAL NETWORK CLASSIFICATION”, Frontline Systems, Inc.,
URL: https://www.solver.com/xlminer/help/neural-networks-classification-intro
[2] Guoqiang Peter Zhang., (2000), “Neural Networks for Classification: A Survey”, IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS—PART C: APPLICATIONS AND REVIEWS, VOL. 30, NO. 4
[3] Novosibirsk State Technical University(NSTU)., (N/D), “Using neural networks in Data Mining”, NSTU,
URL: https://ami.nstu.ru/~vms/lecture/data_mining/n_set.htm
[4] MissingLink., (N/D)m “Classification with Neural Networks: Is it the Right Choice?”, missinglink,
이상구(LEE SANGGU)8월 27일 오전 5:52
Good job^^
박진형(2018****59)8월 27일 오전 6:52
'high-quality classifier 실현에는 high-quality data 가 필요하고, 이를 충족하지 않으면 classifier 구성 방법 중, 단 하나도 만족스러운 classifier를 제공하지 않는다는 점' 잘 알아가겠습니다. 감사합니다.
김호연(2020****32)8월 27일 오전 8:08
Excellent~
* 이번 도전학기의 다른 수업의 기말과제로 sklearn의 breast_cancer data를 가지고 유방암 예측 정확도를 올리는 프로젝트를 진행했던 차에, 제가 직접 구해본 위에서 언급하신 몇가지 Classifier의 성능을 간단한 실행결과와 함께 공유해드리고 싶었습니다.
(1) Random Forest -> 96.49%
먼저 Decision Tree로 성능을 평가했었고, 이를 좀 더 개선시키고 싶은 취지에서 Random Forest 앙상블을 사용했었습니다.
[image1] Random Forest classification

(2) Logistic Regression -> 95.61 (94.28/95.18/96.49)
로지스틱 회귀는 성능을 향상시켜보고자 3가지 Cross Validation(K-fold, StratifiedShuffleSplit, GridSearch)를 사용해봤는데, 결과는 아래와 같았습니다.
[image2] Logistic Regression classification

[image3] Logistic Regression k-fold Cross Validation

[image4] Logistic Regression Stratified Sampling

[image5] Logistic Regression GridSearch Cross Validation

로지스틱 자체의 성능은 나쁘지 않았었는데 이상하게 Cross Validation하니까 성능이 떨어졌었습니다.. 혹시 원인을 아시는 분 설명 부탁드리겠습니다.
(3) MLP -> 90.35 (+layers 94.73)
Deep Neural Network의 가장 기본적인 형태라고 할 수 있는 MultiLayerPerceptron Classifier를 사용했었는데 생각보다 성능이 좋지가 않아서 layer를 1000개로 늘리니 어느정도 개선이
되었던것 같습니다.
[image6] MLP classification 결과

[image7] MLP의 층을 늘린 classification 결과

추가로 다양한 모델들을 실험해서 좀더 성능을 개선시켜보고 정규화까지 진행해보았는데 결과 한번 참고해보시면 좋을 것 같습니다.

이때 흥미로웠던 것은 MLP 같은 경우 정규화(그냥 정규분포로 만들었습니다..)를 거치니 성능이 많게는 8% 가량 상승해서 .. 98%대를 기록하였습니다.
이상입니다.
Comment
유가이 올렉산드르님 덕분에 굉장히 좋은 퀄리티의 자료를 보며 정리가 잘되었고, 저의 실습 과제와 맞물려 있어서 서로에게 이득이 되었으면 하는 바람입니다.
유가이올렉산드르(2018****33)8월 27일 오후 6:50
Thank you very much for sharing a great practical example of using different classification methods. And also thanks for an illustrative example of the difference in the accuracy of different classifiers under certain conditions.
--------------------------------------------------------------------------------
[Act 36] (댓글 17) Final OK by SGLee Finalized by. 나종진 답변 by. SG LEE, 김정한, 임성규 오차역전파법 질문
<댓글> 이상구(LEE SANGGU)8월 23일 오후 6:46
답: hidden layer 를 이용하는 딥 러닝을 이용하는 이유는 기존 인공신경망 모델의 단점을 극복할 수 있었기 때문입니다.
즉 이 방법을 통하여 우리가 찾는 함수 (행렬) 이 점점 더 정확해 지도록 할 수 있기 때문입니다. 계산에 걸리는 시간은 그동안 컴퓨터 성능이 빨라지면서 큰 문제가 되지 않아 버렸습니다^^
<좀 더 자세한 내용은 아래를 참고 하세요^^>
왜 다시 딥 러닝인가?
https://ko.wikipedia.org/wiki/%EB%94%A5_%EB%9F%AC%EB%8B%9D
딥 러닝이 부활하게 된 이유는 크게 세 가지로 꼽힌다.
첫 번째는 앞서 딥 러닝의 역사에서 언급한 바 있는 기존 인공신경망 모델의 단점이 극복되었다는 점이다. 그러나 과적합 문제만 해결되었다고 해서 느린 학습시간이 줄어드는 것은 아니다.
두 번째 이유로, 여기에는 하드웨어의 발전이라는 또다른 요인이 존재 한다. 특히 강력한 GPU는 딥 러닝에서 복잡한 행렬 연산에 소요되는 시간을 크게 단축시켰다.
마지막으로 언급하지만 가장 중요한 세 번째 이유로 빅 데이터를 들 수 있다. 대량으로 쏟아져 나오는 데이터들, 그리고 그것들을 수집하기 위한 노력 특히 SNS 사용자들에 의해 생산되는 다량의 자료와 태그정보들 모두가 종합되고 분석 되어 학습에 이용될 수 있다.
- 인공신경망의 학습에 사용되는 트레이닝벡터는 이름이 붙어 있는(labeled) 데이터여야 하는데(supervised learning의 경우) 대량의 트레이닝셋 모두에 label을 달아주는 일은 불가능한 일이다. 이런 이유로 초기 학습에 사용되는 일부 데이터에 대해서만 지도학습(supervised learning)을 수행하고 나머지 트레이닝셋에 대해서는 비지도학습(unsupervised learning)을 진행하며, 학습된 결과는 기존 학습의 결과와 앞서 분석된 메타태그 정보들을 종합하여 인식기가 완성 된다.
딥 러닝의 부활 이후 다양한 분야, 특히 자동 음성 인식(ASR, automatic speech recognition)과 컴퓨터비전 분야에서 최고수준의 성능을 보여주고 있으며 이들은 보통 딥 러닝의 새로운 응용들의 지속적인 성능 향상을 위해 만들어진 TIMIT(Texas Instruments와 MIT가 제작한 음성 Database), MNIST(이미지 클러스터링을 위한 hand-written 숫자 이미지 데이터베이스로 National Institute of Standards and Technology가 제작) 등의 데이터베이스를 사용했다.
최근에는 Convolution Neural Networks 기반의 딥 러닝 알고리즘이 뛰어난 성능을 발휘하고 있으며, 컴퓨터비전과 음성인식등의 분야에서 특히 탁월한 성능을 보이고 있다.
김정한(2017****99)8월 23일 오후 7:04
함수의 정확성을 더 높일 수 있기 때문이라고 봅니다. 학우님께서 말씀하셨듯이 은닉층이 많을수록 연결 가중치가 기하급수적으로 늘어나고 학습 데이터도 많이 필요해 계산량이 급증합니다. 계산량이 많으면 결국 학습하는 시간도 더 오래 걸립니다. 이 문제는 실제로 신경망의 개발에 상당히 걸림돌이 됩니다. 만약 어떤 심층 신경망의 학습에 한 달이 걸린다면, 1년에 12번밖에 신경망을 수정할 수 없게 됩니다. 이런 환경에서는 제대로 된 연구를 하기가 거의 불가능합니다. 학습 소요 시간 문제는 GPU 같은 고성능 하드웨어의 등장과 배치 정규화 batch normalization 등 여러 알고리즘 덕분에 상당 부분 개선되었습니다.
참고로 앞의 교수님의 댓글에서 과적합이라는 문제의 해결책은 Dropout 이라는 기법이라고 합니다. 드롭아웃은 신경망 전체를 다 학습시키지 않고 일부 노드만 무작위로 골라 학습시키는 기법입니다. 구현은 별로 복잡하지 않으면서도 효과는 매우 뛰어나다고 합니다. 드롭아웃은 학습하는 중간중간 일정 비율로 노드들을 무작위로 골라 출력을 0으로 만들어 신경망의 출력을 계산합니다.드롭아웃을 적용하면 학습되는 노드와 가중치들이 매번 달라져, 신경망이 과적합에 빠지는 걸 효과적으로 예방할 수 있다고 합니다. 드롭아웃하는 비율은 은닉층의 경우에는 50% 정도이고, 입력 노드에 적용하는 경우에는 26% 정도가 일반적이라고 합니다.
아울러 비용함수에 가중치의 크기에 해당되는 정칙화 항을 추가해 학습시키는 방법도 과적합 개선을 위해 많이 사용됩니다. 신경망의 구조를 최대한 단순하게 만들어 과적합 될 여지를 줄이는 원리입니다. 또한 대량의 학습 데이터 사용도 과적합 방지에 큰 도움이 됩니다. 학습 데이터가 많으면 그만큼 신경망이 특정 데이터에 의해 편향될 여지가 줄어들기 때문입니다.
임성규(2015****08)8월 24일 오전 00:00
나종진 학우분의 질문과 이상구 교수님, 김정한 학우분의 답변 잘 읽었습니다 ㅎㅎ
초기의 신경망은 나종진 학우분이 학습하였던 글 초반의 그림과 같이 입력층과 출력층으로만 구성된 아주 간단한 형태였습니다.
이러한 신경망을 '단층 신경망' 이라고 합니다.
단층 신경망에 은닉층(hidden layer)이 추가된 신경망은 '다층 신경망' 이라고 합니다.
다층 신경망은 입력층 - 은닉층(들) - 출력층 으로 구성됩니다.
다층 신경망 중에서 은닉층이 2개 이상인 신경망을 특별히 '심층 신경망'이라고 부릅니다.
요즈음 사용되는 대부분의 신경망은 심층 신경망입니다.
--------------------------------------------------------------------------------
Finalized by 정원철. 7주차 오차역전파법 정리 by 김진웅 + 아주 직관적인 예시 추가
작성자 : 정원철(2017****79)작성일 : 8월 27일 오후 9:21
조회수 : 27
작성자 : 김진웅(2015****73)작성일 : 8월 27일 오후 5:55
회수 : 8
º 오차함수
가 오차제곱합(Sum of Squared Errors)일 때 오차역전파법을 설명하겠습니다.
(책에서는 활성화함수가 sigmoid일 때만을 설명하고 있으므로, 이를 일반화하려는 것입니다.)
가중치
와 활성화함수
를 갖는 신경망으로 시작합니다.
신경망의
번째 층과 그 다음
번째 층을 나타내었습니다. index는 해당 층에 속함을 의미합니다.
º
번째 층의 출력을 설명합니다.

먼저,
번째 층의 출력
를 얻었습니다.

에 가중치
를 곱하면
를 얻습니다.

에 활성화함수
를 적용하면
번째 층의 출력
를 얻습니다.

º 오차를 역전파하는 것을 설명합니다.

먼저,
번째 층에 역전파된 오차
를 얻습니다.

번째 층의 역전파된 오차를 얻기 위하여,
번째 층의
와 활성화함수
가 필요합니다.

번째 층의 활성화함수
의 도함수
를 구합니다.

번째 층의 역전파된 오차
는 다음과 같습니다.

단,
번째 층이 출력층일 때
는
입니다.

º
번째 층의 가중치를 갱신하는 것을 설명합니다.

번째 층의 가중치
를
로 갱신하기 위해서는,

경사하강법을 적용하게 되고,
를 계산해야 합니다. 오차함수
가 오차제곱합일 때는
입니다.

따라서, 다음과 같이
를 구하여
번째 층의 가중치를 갱신합니다.

º 정리하면서 오차역전파법이 무엇인지 확실히 알게 되었고 신경망이 학습하는 원리를 이해할 수 있게 되었습니다. 오차역전파법은 (1) 이전층에 오차를 역전파하고 (2) 현재층의 가중치를 갱신하는 것입니다. 또, 오차역전파법에서 가중치를 갱신할 때 경사하강법을 사용합니다. 감사합니다.
참고한 자료입니다.
https://dustinstansbury.github.io/theclevermachine/derivation-backpropagation
박지수(2016****86)8월 27일 오후 6:06
참고링크가 찾을 수 없다고 나오네요.. 아무튼 도식화된 그림으로 정리해주셔서 이해에 큰 도움이 되었습니다. 감사합니다.
김진웅(2015****73)8월 27일 오후 6:11
혹시 주소 맨 뒤에 %EF%BB%BF가 붙어있다면 지워주시면 됩니다.
.
+ 예시 추가
먼저 다음과 같은 함수가 있습니다.
f(x,y, z) = (x + y)z
이 함수를 도형으로 표현해본다면 (굉장히 rough한 신경망을 그려본다면) 이렇게 표현할 수 있습니다.
*(x, y, z) = input layer, q = hidden layer, f = output layer

여기서 x = -2, y = 5 , z = -4라는 가중치를 부여합니다.
그렇다면 아래와 같이 자연히 q와 f가 계산되는데, 이를 순전파법이라고 합니다.

이로 인해서 f 값은 -12가 되었고, 다시 rough하게 말하자면 이 함수의 loss가 -12가 되는 셈입니다. (이해를 위해서 그렇다고 가정합니다.)
그렇다면, 이제 역전파를 진행해보겠습니다.
저희가 배웠듯이 역전파의 핵심은 Gradient를 구하는 것입니다. 이를 통해서 가중치를 새롭게 부여하는 것이죠.
위 그림에서 gradient를 구하기 위해서 먼저 다음 관계를 생각해봅시다.

위에서 확인할 수 있듯이, 역전파를 하는 과정에서 직접적으로 gradient를 구할 수 있는 요소는 f -> q, f -> z, q -> x, q -> y이며 위와 같이 값을 각각 구할 수 있습니다.
하지만, f -> x, f -> y로 가는 과정은 잘와닿지 않을 수 있습니다. 이때 필요한게 chain rule입니다.

자 그럼 이제 본격 적으로 역전파를 구해보겠습니다.
1. f -> f로 가는 경우는 그 자신의 gradient니까 1이 됩니다.

2.위의 식에서 구한대로, (f -> z) = q = 3, (f -> q) = z = -4가 됩니다.


.3. 마지막으로, chain rule에 의해 (f -> q -> x) = 1 * -4 = -4 , (f -> q -> y) = 1 * -4 = -4 가 됩니다. 

4. 따라서 결과적으로 x, y, z, q, f는 역전파법에 의해서 각각 -4, -4, 3, -4, 1으로 갱신됩니다.
*그림은 김재광 교수님 인공지능의 응용 수업 교안에서 가져왔습니다.
Comment
김진웅님의 아주 깔끔한 정리에 항상 감사하고 있습니다. 덕분에 보다 명확하게 오차역전파법을 이해할 수 있었고 아무래도 오차역전파법의 개념을 머리로는 잘 이해해도 직관적으로 와닿지 않을 수 있다고 느껴 제가 이해한 그대로 설명을 좀 보태봤습니다.
한수현(2019****61)8월 27일 오후 9:44
확실히 그림을 통한 설명이 더 이해가 쉬운 것 같네요. 감사합니다.
전재현(2015****91)8월 28일 오전 2:07
추가해주신 예시가 확실히 도움이 됐습니다. 전체적인 과정이 잘 나타나있어서 오차역전파법을 직관적으로 이해하기에 좋은 그림 예시네요.
권희성(2019****96)8월 28일 오전 8:32
도식화 해주신 그림과 예시로 이해할 수 있었습니다. 오차역전파법을 실제 이용되는 것들에 대한 조사를 추가적으로 진행해 보고 싶습니다.
김정한(2017****99)8월 28일 오후 12:38
친절한 설명 감사드립니다 오차역전파법에 대해서 더 명확히 이해할 수 있었네요
--------------------------------------------------------------------------------
Re-Finalized by 장환승, 천가영, 한수현, 정원철, 전재현, 마지막 주차 요약 및 질문
작성자 : 천가영(2020****17)작성일 : 8월 28일 오후 1:49
조회수 : 11
Finalized by 한수현, Q by 장환승(마지막 주차 요약 및 질문), A by 천가영, 정원철, 댓글 by 한수현
작성자 : 한수현(2019****61)작성일 : 8월 27일 오후 10:33
조회수 : 14
인공 신경망에서 출력을 결정하는 함수 -> 활성화 함수 ex) sigmoid -> 임계치를 기준으로 활성화 여부를 결정 -> 실제 뉴런에서는 역치값이라고 생각하면 될 듯
인공 신경망에서 가중치란? -> 데이터가 들어왔을 때, 학습을 통해 그 중요도를 정해주는 값 -> 실제 뉴런에서는 가지돌기라고 볼 수 있을 것 같은데, 굳이 비유를 하자면 일상 생활을 할 때, 지나치면서 본 나무나, 사람 얼굴, 사물의 배치와 같은 시각정보는 뇌에서 가중치를 주지 않았기 때문에 저장하지 않지만 외우려고 노력한 공식들, 몰입한 대화 내용 같은 것은 가중치를 둔 정보라 뇌에서 기억을 한다고 생각할 수 있을 것 같습니다. 올바른 비유인지는 모르겠네요 :() 어제 저녁에 먹은 식단은 기억나지만, 한 달전에 먹은 식단은 기억 안 나고.. 등등

인공신경망의 기본 구조.
input layer, hidden layer, output layer

학습을 할 때, 가중치 조정을 위해 output layer 에서 오차 함수를 통해, 은닉층에 정보를 전달한다. 이를 오차 역전파 방법이라고 한다. epoch 가 증가할수록, 가중치는 원하는 값에 가까울 확률이 높음..
오차역전파 방법은 교수님 사이트에 상세히 잘 나왔있으므로 첨부하겠습니다. http://matrix.skku.ac.kr/math4ai/part4/
그리고 학생 프로젝트 소개를 하셨습니다. 제가 가장 인상 깊게 본 프로젝트는
Statistical analysis on features of actual energy consumption of office buildings in the South Korea
였습니다. 다른게 아니라, 데이터 마이닝의 중요성에 대해 먼저 말하고 진행을 하시는데 정말 깊이 공감합니다.
사실 ML을 공부하는 입장에서, 다른 것보다 깨끗한 데이터 얻기와 주어진 데이터를 전처리해야 효율적인 모델을 만들 수 있을까 가 가장 시간이 오래 걸리고 어려운 문제인 것 같습니다.
아직 제 배움이 짧아 그런 것일수도 있지만, 기계 학습에 있어 제일 중요한 것은 모델 선정도 아니고 최적화도 아니고 데이터인 것 같습니다.
프로젝트에서는 시각화까지 재밌게 잘 보았습니다.
질문입니다.
1. 활성화 함수를 쉬운 예제에서는 보통 일차함수로 두는데, 복잡한 문제를 푸는 경우.. 다시 말해, 가장 최적인 활성화 함수는 어떻게 찾나요?
일단 일차함수로 진행해보고, 원하는 퍼포먼스를 가지지 못하면 바꿔 보는건가요?? 다른 활성화 함수 종류에는 뭐가 있나요?
천가영(2020****17)8월 27일 오후 6:53
출처 및 자세한 설명 : https://blog.naver.com/wideeyed/221017173808활성(화)함수란 입력을 받아 활성, 비활성을 결정하는데 사용되는 함수이다.입력 값에 따라 출력 값의 모양이 어떠한가에 따라 선형과 비선형으로 나눌 수 있다.선형함수는 입력의 상수배만큼 변하는 것으로 f(x) = x(항등함수) 또는 f(x) = ax 또는 f(x) = ax + b등 의 1차 함수가 있으며 모두 1개의 직선 모양이다.반대로 비선형은 2개 이상의 직선 또는 곡선의 모양을 가지고 있다. 비선형에는 Sigmoid, ReLU 등이 있다.사용할 활성화 함수를 선택할 때는 풀고자 하는 문제의 종류를 고려해야 한다.- 문제의 결과가 직선을 따르는 경향이 있다면 선형함수를 주로 이용한다.- 2개를 분류하는 문제일 때는 Vanishing Gradient Problem때문에 sigmoid는 잘 사용하지 않고 ReLU와 그 변형된 활성화함수를 주로 이용한다.- 3개 이상을 분류할 때 주로 Softmax와 그 변형된 활성화함수를 주로 이용한다.꼭 그 문제에만 사용해야하는 것은 아니며 목표 정확도와 학습시간 등을 고려하여 선택하고 혼합 사용도 가능하다.- 신경망에서는 활성화 함수로 선형함수가 아닌 비선형함수를 사용해야 한다. 왜냐하면 히든레이어를 여러 개 다층으로 구성하고 활성화함수로 모두 선형함수를 이용하는 경우 단층으로 구성한 것과 정확하게 동일하게 구성할 수 있다. 곧 무의미하다. 따라서 깊게 망을 구성하려면 1개 이상의 비선형함수를 이용하여야 한다.-------요약 : 문제에 따라 여러 활성화함수들 중 그 문제에 가장 적합한 활성화함수를 선택하는 것 같습니다.
한수현(2019****61)8월 27일 오후 8:43
수많은 활성화함수 중에서 가장 적합한 활성화함수를 선택하는 방법은 경험적으로 알 수밖에 없을까요?
정원철(2017****79)8월 27일 오후 9:43
천가영님과 한수현님 말에 동의합니다.저 같은 경우에는 예를 들어 Classification 모델을 검증할 경우, X = 0 or 1과 같이 하나의 기준에 의해서 0인지 1인지 나눠질 수 있는 간단한 문제는 sigmoid를 써도 성능이 양호했던 것 같았는데 분류 기준이 좀더 복잡해져서 여러개가 될 경우에는 sigmoid 성능이 급격히 떨어진다는걸 깨달았습니다. 따라서 딥러닝처럼 굉장히 많은 층들이 존재하는 복잡한 연산을 할 경우에는 sigmoid는 가급적이면 지양하는 방향으로 생각하고 있습니다.sigmoid는 같은 이미지에 대해서 분류를 진행할 떄도 그 개별적인 이미지 하나하나에 집중하기 때문에 결국에 다 다른 확률을 가질 수도? 있어서 일관성과 ..정확도가 떨어진다고 생각하기 때문에, 저는 대신 분류 문제에 있어서 만큼은 Softmax를 주로 사용합니다. softmax에는 정규화를 내포하고 있어서 기준이 다양하더라도 일관성은 유지할 수 있기 때문이죠.여튼, 결론은 그때그때 다르다고 생각하며 경험적으로 다양한 함수를 사용하면서 정확도를 개선시키는 방향으로 찾아가면서 최적의 활성화 함수를 찾는게 답인거 같습니다.
최적의 활성화함수를 찾는 방법과 활성화함수 종류에 대해 새로 알 수 있었습니다.
-------
전재현(2015****91)8월 28일 오전 1:39
해결하려는 문제의 종류에 따라 어느정도 정형화된 틀이 존재하기는 합니다.2개를 분류하는 문제에서는 그라디언트 소실에 대한 문제가 존재하기 때문에 sigmoid를 사용하지 않고 ReLU 계열(ReLu, Leaky ReLu, ELU 등)을 사용하고3개 이상을 분류하는 문제에서는 Softmax를 주로 사용합니다. 속도와 정확도 등을 높이기 위해서 여러 종류를 섞어서 사용하기도 하구요.정원철 학우님이 말씀하신대로 Softmax는 정규화를 내포하고 있고 Softmax를 통해서 k개의 값들이 상대적 중요도를 나타내는 k개의 값으로 변형되며 그 값의 총합이 1이 되게 만들어지기 때문에 딥러닝의 마지막 층에서는 Softmax가 주로 사용되는 것도 예시가 될 수 있습니다.사실 다룰 수 있는 문제가 워낙 많기 때문에 앞서 다른 분들이 말씀하신 것처럼 정답은 없고 '해당 활성화함수가 어떤 특징을 가지고 있어 어떠한 문제에 적용하기 알맞다' 라는 개념을 숙지해두고서 실험해보는 것이 최선일 것 같습니다 :)
-----
Comment : 활성화함수에 대해서 깊게 생각해보지 못했는데, 장환승 학우님의 질문 덕분에 관련 내용을 찾아보면서 새로운 내용을 많이 배울 수 있었습니다. 또한 다른 학우님들의 댓글을 읽으며 이해가 더욱 심화된 것 같습니다.
심층 신경망은 은닉층이 하나인 얕은 신경망이 개발된지 20년 후인 2000년 대 중반부터 고안되었으며 그 결정적인 이유로 교수님의 답변과 같이 컴퓨터 하드웨어의 급진적인 발전이 있어서인 것 같습니다.
은닉층이 존재하고 또 많을 수록 신호처리 과정이 섬세해 지기에 이상구 교수님과 김정한 학우분의 답변과 같이 출력값의 정확도가 더 높아질 것이라 생각합니다.
참조
김호연(2020****32)8월 25일 오전 8:56
제가 생각했던 답안이랑 같네요. 확실히 알았습니다. 감사합니다.^^
이승재(2019****65)8월 26일 오전 2:53
은닉층의 존재 이유에 대해 다시한번 깊게 생각해 볼 수 있었습니다 감사합니다! :)
[Act 37] [Final OK by TA] 4주차 요약 [Re-Finalized by 박진형 with ] 박진형, 안성진, 김범준, 정유민, 고경원, 김다은, 이상현, 김정한, 김호연, 이승재, 김태호, 임성규, 나종진, 이동현, CLASSMATE 분들의 글 4주차 (수정, 보완해주세요!)
-> 학우분 께서 제 글을 정리해 주신 것이기 때문에 생략합니다.
[Act 38] (댓글 18) [Final OK by SGLee] [Final] 주성분분석(PCA) Finalized by 박은아 장환승 김진웅 임성규 김정한 채희준









질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
이전다음
6개의 댓글
김진웅(2015****73)8월 23일 오후 11:22
1. 주성분이 얼마나 설명력있느냐에 달려 있습니다. 이 설명력은 모든 주성분의 분산 중 해당 주성분의 분산입니다.
오른쪽 그래프에 4개의 주성분과 그 분산(2.5, 1.0, 0.5, 0)이 표시되어 있는데요,
첫번째 주성분은 2.5/(2.5+1.0+0.5+0)=0.625만큼의 설명력이 있고,
두번째 주성분은 1.0/(2.5+1.0+0.5+0)=0.25만큼의 설명력이 있는 것입니다.
두 주성분을 이용하여 0.875만큼의 원데이터를 설명하고 있습니다.
많은 주성분을 사용하면 설명력은 커지겠지만, 차원이 늘어난다는 trade-off가 있습니다.
결론: 생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다. 고르는 사람 맘입니다.
2. PC1, PC2는 각각 첫번째, 두번째 주성분입니다.
장환승(2016****69)8월 24일 오전 00:39
감사합니다. 2번 질문은 x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다는 의미였습니다.
임성규(2015****08)8월 24일 오전 00:45
코드 설명을 자세하게 적어주어 쉽게 읽고 이해했습니다.
글의 정리내용을 다시 읽어보시면 질문에 대한 답변이 있습니다!
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다.
--> PC1,PC2는 주성분을 의미.
예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.
--> 주성분이 원데이터의 성질을 얼마나 보존하는지 마지노선을 글을 쓰신 분은 90%로 정하였고 조건을 충족하는 PC3까지 주성분 3개를 택하여 차원을 줄였습니다.
즉, 데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
김정한(2017****99)8월 24일 오전 6:06
세세한 내용정리 잘 보았습니다.
김진웅 학우님, 임성규 학우님의 답변 또한 잘 배워갑니다.
제가 이해한 내용이라 부족한 부분도 있겠지만 질문에 추가적인 답변을 해보자면 PCA는 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법 중 하나입니다. 머신러닝을 할 때 훈련 데이터의 변수가 많은 경우가 있습니다. 하지만 모든 변수가 결과에 주요한 영향을 끼치는 것은 아닙니다. 가장 중요한 변수가 있을 것이고, 그다음 중요한 변수가 있을 것이고, 상대적으로 중요치 않은 변수들도 있을 겁니다.(원데이터의 분포의 보존) 이런 변수 중 가장 중요한 주성분 몇 개 만을 선택하는 게 PCA입니다.
n개의 변수가 있다고 해봅시다. n개의 변수와 1개의 label을 매핑시키는 그래프를 그리려면 n차원의 그래프가 있어야 합니다. 3차원이 넘어가면 우리의 눈으로는 볼 수 없을 것입니다. 이때 중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다.
(->차원 축소를 통해 시각화를 할 수 있고, 시각화를 통해 데이터 패턴을 쉽게 인지할 수 있습니다.)
박은아(2016****73)8월 24일 오전 11:36
장환승학우님의 글과 김진웅, 임성규, 김정한 학우님의 댓글을 통해 PCA에 대해 공부할 수 있었습니다. 특히 주성분의 분산과, 차원 축소 방법으로서 PCA의 의미에 대해 더 잘 이해하였습니다. 감사합니다!
채희준(2016****00)8월 24일 오후 12:47
학우님들의 내용 정리, 질문, 답변을 보면서 PCA에 대한 이해도를 높일 수 있었습니다. 감사합니다.
등록
[정리 & Comment]
장환승 학우님의 질문:
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
(추가) x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다
답변 정리
질문 1
생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다.
데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
질문 2
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. --> PC1,PC2는 주성분을 의미.
중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다.
Comment
학우님들께서 작성해주신 질문과 답변을 통해 주성분분석(PCA)에 대한 큰 그림을 이해할 수 있었습니다. PCA에 대한 원리, 개념과 더불어 주어진 데이터를 선별하고 분석하며 시각화하는 과정을 파악할 수 있었습니다. 기존에 배웠던 SVD와 연결해서 공부하니 더욱 흥미롭게 느껴졌습니다.
<댓글>
이상구(LEE SANGGU)8월 24일 오후 6:02
PCA 가 무엇인지 이해하는 학생들이 점 점 늘어 가는 것을 보니 뿌듯합니다.
김호연(2020****32)8월 25일 오전 8:43
저도 많이 알아갑니다!
이승재(2019****65)8월 26일 오전 2:51
PCA에 대해 이 글을 읽으면서 다시한번 정리할수 있었습니다. 정리된 글 감사합니다!
이상구(LEE SANGGU)8월 26일 오전 4:32
제일 위에 2학년 학생이 해보고 공유한 PCA 실습 부분도 같이 봐 두세요^^
김효경(2016****71)8월 27일 오전 2:45
PCA에 대한 질문과 답변을 읽으면서 개념을 더 잘 이해할 수 있었습니다.
김다은(2018****13)8월 27일 오전 3:05
내용이 어렵지만 도움이 되었습니다
[Act 39] (댓글 19) Final OK by SGLee Finalized by 정원철. [7주차] 신경망 요약 by 천가영.





<댓글>
이상구(LEE SANGGU)8월 25일 오후 7:15
오차 역전파법에 대한
... 위의 마지막 코멘트 가 조금 더 ... 누가 ... 윤문 해 보실래요?
정원철(2017****79)8월 25일 오후 7:27
제가 잘못 이해했으면 교정부탁드리겠습니다 ..
1. 순전파를 통해서 먼저 loss를 만들어낸다.
2. 이 loss를 최소화 하기 위해 역전파를 하며 경사하강법을 사용하여 가중치를 업데이트 한다.
3. 만족스러운 loss가 될 때까지(성능이 최적화될 때까지..), epoch를 늘리며 반복한다.
박은아(2016****73)8월 26일 오전 2:26
오차역전파법에 대한 정원철 학우님의 설명에 덧붙이겠습니다.
1. 순전파(forward propagation)
입력 layer로부터 각 layer를 지나치며 weight들을 곱하고, 활성화함수를 지나 마지막 출력 layer에서 loss값을 계산한다.
2. 경사하강법 - 함수 f를 loss로 두고 gradient가 가르키는 반대방향(descent)으로 네트워크를 업데이트한다. 업데이트를 위해 순차적으로 거꾸로 돌아간다.(back propagation)
참고: https://www.ics.uci.edu/~pjsadows/notes.pdf
이승재(2019****65)8월 26일 오전 2:50
인공신경망에 대한 이해도를 높이는데 큰 도움이 되었습니다. 정리해주신 것과 오차 역전파법에 대한 설명까지 모두 감사드립니다! :)
김호연(2020****32)8월 26일 오전 11:01
정리 감사드립니당~
손원식(2019****98)8월 26일 오후 11:01
개념에 대해서 덧붙이자면,
역전파법이란? 역전파(逆傳播), 오차 역전파법(영어: Backpropagation 백프로퍼게이션[*]) 또는 오류 역전파 알고리즘은 다층 퍼셉트론 학습에 사용되는 통계적 기법을 의미한다.
기계 학습에서 사용되는 학습 구조로 다층 퍼셉트론이 있다. 일반적인 다층 퍼셉트론의 형태는 입력층 - 은닉층 - 은닉층 - ... - 출력층으로 구성되며, 각 층은 서로 교차되는 weight 값으로 연결되어 있다. 출력층에서 제시한 값에 대해, 실제 원하는 값으로 학습하는 방법으로 통계적 방법에 의한 오차역전법을 사용한다.
오차역전법은 동일 입력층에 대해 원하는 값이 출력되도록 개개의 weight를 조정하는 방법으로 사용되며, 속도는 느리지만, 안정적인 결과를 얻을 수 있는 장점이 있어 기계 학습에 널리 사용되고 있다.
자료의 출처 : https://ko.wikipedia.org/wiki/%EC%97%AD%EC%A0%84%ED%8C%8C
이렇다고 합니다. 도움이 되시길 바랍나다 !!
글 잘 읽었습니다!! 감사합니다.
[Act 40] (요약 14 & 실습 14) Final OK by SGLee [6주차] 강의 내용 복습 요약 & 실습 & Comment (2) _ 2019 이승재
Final OK by SGLee 6주차 내용 정리, 실습 및 질문
작성자 : 장환승(2016****69)작성일 : 8월 23일 오후 11:03
조회수 : 44 출처) http://matrix.skku.ac.kr/math4ai/part4/
주성분 분석(Principal Component Analysis, PCA)은 가장 널리 사용되는 차원 축소 기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 서로 직교하는 새 기저(축)를 찾아, 고차원 공간의 데이터들을 선형 연관성이 없는 저차원 공간으로 변환한다. 이때 계산은 주로 행렬의 고윳값 분해 또는 특이값 분해(SVD)를 사용한다.
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다. 예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.
위의
를 센터링(centering)하여,
를 정의하자. 이를 위해
(1)
의 각 열(하나의 확률변수가 갖는 데이터)의 평균을 구한다. 확률변수
의 평균은
로 표기한다.
, ... ,
.
(2) 열(column)별로 데이터에서 (열의) 평균을 뺀다. 이 행렬을 센터링된 행렬
라 한다.
제가 생각한 센터링이 필요한 이유 -> 각 열의 평균이 0이 되어서
PC score
▪
를 센터링(mean-centered)된
의 데이터 행렬이라 하자. 여기서
은 표본(sample)의 개수이고,
는 확률변수(variable, feature)의 개수이다. 공분산 행렬
는
대칭행렬이므로, 다음과 같이 직교대각화가 가능하다.
여기서
는
의 고윳값
를 크기 순서대로, 주대각선 성분에 배열한 대각선행렬이고,
는 그에 대응하는 정규직교인 고유벡터를 열벡터로 하는 직교행렬이다. 또한
이므로
는 양의 준정부호(positive semidefinite) 행렬이고, 고윳값은
이다. 그리고 고유벡터는 주축(principal axes) 또는 주방향(principal directions)이라고도 부른다.
▪ 주성분(PC)
,
, ... ,
를 벡터로 나타내면 다음과 같다.
![]()
![]()
그리고 각 확률변수
에 원 데이터를 대입하면 행렬
를 얻는다.

그러면
의
번째 데이터의 좌표는
의
번째 행벡터로 주어지고,
번째 PC score (주성분점수, principal component score)는
의
번째 열벡터로 주어진다.
이제
의 특이값분해(SVD)가 다음과 같이 주어져 있다고 하자.
![]()

![]()
![]()
![]()
여기서
,
는 직교행렬이고,
는 크기 순서대로 배열된 특이값(singular value)
을 주대각선 성분으로 하는
대각선행렬
이다. 그러면 관계식
![]()
![]()
![]()
![]()
으로부터 다음을 얻는다.
(1)
라 하면
의 열벡터가 주축(principal axes)이 된다.
(2)
이므로,
의 열벡터들이 PC score (주성분점수, principal component score)가 된다.
(3) 특이값
는
의 고윳값
와 관계식
을 만족하며,
는 대응하는 PC의 분산이 된다.
(4) 데이터를
차원에서
(
) 차원으로 줄이기 위하여,
의 처음
개의 열벡터(
)와
의
번째 선행 주 부분행렬(leading principal submatrix)(
)을 택하면,
는 처음
개의 PC를 포함하는
행렬이 된다.
![]()
![]()
.
(5) (4)에서 얻은
에
,
, ... ,
에 대응되는 주축으로 이루어진 행렬
을 곱하면,
는 처음
개의 PC로부터 원 데이터를 복원하도록 해주는 rank가
인
행렬이 된다. [rank reduction]
![]()
![]()

![]()
.
이는
의 SVD에서 크기 순서대로
개의 큰 특이값
과 이에 대응되는
와
의 처음
개의 열벡터를 택하는 것과 같다. 이를 truncated SVD라고 한다. 실제로
는 rank
인 행렬 중에서
에 가장 가까운 행렬이 된다. 즉 다음이 성립한다.
.
# 데이터 입력
Price <- c(6, 7, 6, 5, 7, 6, 5, 6, 3, 1, 2, 5, 2, 3, 1, 2)
Software <- c(5, 3, 4, 7, 7, 4, 7, 5, 5, 3, 6, 7, 4, 5, 6, 3)
Aesthetics <- c(3, 2, 4, 1, 5, 2, 2, 4, 6, 7, 6, 7, 5, 6, 5, 7)
Brand <- c(4, 2, 5, 3, 5, 3, 1, 4, 7, 5, 7, 6, 6, 5, 5, 7)
data <- data.frame(Price, Software, Aesthetics, Brand)
# 데이터가 잘 입력되었는지 확인한다.
print(data)
# 데이터 행렬을 센터링 하여 mydata 행렬을 얻는다. (본 예제에서는 센터링 한 후에 다시 각 열을 해당 확률변수의 표준편차로 나누었다. 이를 scaling이라 하는데, 필요에 따라 scaling도 진행할 수 있다.)
# 표준화(centering, scaling) 작업
mydata <- scale(data, center = T, scale = T) # 데이터 행렬을 센터링, scaling 한다.
print(mydata)
# mydata 행렬에 PCA를 진행한다. (R의 prcomp 명령어를 이용하였다.)
# PCA 진행. 앞에서 이미 센터링 scaling 하였음. retx는 PC score를 제공할지 여부
mypca <- prcomp(mydata, center = F, scale = F, retx = T)
print(summary(mypca))
# 주성분을 찾을 때 필요한 적재계수는 다음 명령어를 이용하여 확인할 수 있다. 이는 직교행렬 V에 해당한다.
# loadings (V를 의미한다.)
print(mypca$rotation)
# 1~3번째 PC에서의 score는 다음 명령어를 이용하여 확인할 수 있다. 이는 행렬 Z=XV의 1~3번째 열벡터로 이루어진 행렬이다.
# PC1~PC3 score. 1열부터 3열까지
print(mypca$x[,1:3])
# 앞서 PC1, PC2가 원 데이터의 84.8% 정도를 보존한다고 이해할 수 있으므로, 15% 정도의 정보는 잃어버리더라도,
# PC1, PC2만 택하여 2차원 데이터로 차원을 줄 일 수 있다. 이를 활용하여 데이터를 시각화하거나 다른 데이터 분석기법을 적용할 수 있다.
# 예를 들어, 다음과 같이 주어진 데이터를 개의 클러스터로 묶는 알고리즘인 K-means clustering을 진행할 수 있다.
# 그리고 주성분의 고윳값에 대한 선 그림(line plot)인 scree plot을 활용하여 데이터의 차원을 줄일 때, 주성분을 몇 개로 선택할지 결정할 수 있다
# scree plot은 고윳값을 가장 큰 값에서부터 크기 순서대로 정렬하므로, 대개 기울기가 꺾이는 부분의 “elbow point” 왼쪽에 있는 성분까지 선택한다.
# 2차원으로 차원 축소 후(PC1과 PC2만 취하여) k-means clustering 진행
PC1 = mypca$x[,1] # 1열을 PC1라 함
PC2 = mypca$x[,2] # 2열을 PC2라 함
# PC1, PC2를 이용하여 클러스터의 개수(centers)를 4개로 하고
# 임의로 10번 시행(nstart)하여 가장 잘 clustering 하는 것을 찾음
myclust <- kmeans(mypca$x[,1:2], centers = 4, nstart = 10)
# clustering 후 시각화 결과 보여줌
plot(PC1, PC2, xlab = "PC 1", ylab = "PC 2", type="p", col = myclust$cluster)
# scree 그래프 (분산을 나타낸다)
screeplot(mypca, type = "lines", col = 2)
dev.off()
위 코드를 실행한 결과..

클러스터링이 잘 된 것을 알 수 있었다.
질문 1 . PCA 방법을 취하면, 세 축으로 선형변환된 새로운 주성분이 나온다고 알고 있는데, 생성되는 주성분의 갯수가 3개로 정해진 것인지 아니면 원데이터의 차원에 따라(혹은 복잡도에 따라) 달라지는 것인지 궁금합니다.
질문2. 실습 예제에서 나온 클러스터링 이미지에서 x축과 y축이 각각 PC1, PC2인게 무슨 의미인지 궁금합니다.
김진웅(2015****73)8월 23일 오후 11:22
1. 주성분이 얼마나 설명력있느냐에 달려 있습니다. 이 설명력은 모든 주성분의 분산 중 해당 주성분의 분산입니다.오른쪽 그래프에 4개의 주성분과 그 분산(2.5, 1.0, 0.5, 0)이 표시되어 있는데요,첫번째 주성분은 2.5/(2.5+1.0+0.5+0)=0.625만큼의 설명력이 있고,두번째 주성분은 1.0/(2.5+1.0+0.5+0)=0.25만큼의 설명력이 있는 것입니다.두 주성분을 이용하여 0.875만큼의 원데이터를 설명하고 있습니다.많은 주성분을 사용하면 설명력은 커지겠지만, 차원이 늘어난다는 trade-off가 있습니다.결론: 생성되는 주성분의 개수가 3개로 정해진 것도 아니고, 원데이터의 차원에 따라 달라지는 것도 아니고, 주성분이 원데이터를 얼마나 잘 따르는지(얼마나 설명력 있는지)에 달려 있습니다. 고르는 사람 맘입니다.2. PC1, PC2는 각각 첫번째, 두번째 주성분입니다.
장환승(2016****69)8월 24일 오전 00:39
감사합니다. 2번 질문은 x축을 PC1, y축을 PC2 라고 설정한 이유가 무엇인지 궁금하다는 의미였습니다.
임성규(2015****08)8월 24일 오전 00:45
코드 설명을 자세하게 적어주어 쉽게 읽고 이해했습니다.글의 정리내용을 다시 읽어보시면 질문에 대한 답변이 있습니다!PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(principal component, PC)들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터의 분포를 가장 많이 보존하고, 두 번째 주성분 PC2가 그 다음으로 원 데이터의 분포를 많이 보존한다.--> PC1,PC2는 주성분을 의미.예를 들어, PC1, PC2, PC3가 원 데이터의 분포(성질)의 약 90%를 보존한다면, 10% 정도의 정보는 잃어버리더라도, 합리적인 분석에 큰 무리가 없으므로, PC1, PC2, PC3만 택하여 3차원 데이터로 차원을 줄일 수 있다. 이 경우 계산과 시각화가 용이하여 데이터를 쉽게 분석할 수 있다.--> 주성분이 원데이터의 성질을 얼마나 보존하는지 마지노선을 글을 쓰신 분은 90%로 정하였고 조건을 충족하는 PC3까지 주성분 3개를 택하여 차원을 줄였습니다.즉, 데이터를 분석하는 분의 선택에 따라, 분석하는 자료의 성질, 분석 목적에 따라 적절한 기준을 택하여 정하시면 될 것 같습니다.(차원을 어느정도로 줄일지, 혹은 원데이터의 성질을 몇퍼센트까지 보존하는 주성분을 고를지 등등..)
김정한(2017****99)8월 24일 오전 6:06
세세한 내용정리 잘 보았습니다. 김진웅 학우님, 임성규 학우님의 답변 또한 잘 배워갑니다. 제가 이해한 내용이라 부족한 부분도 있겠지만 질문에 추가적인 답변을 해보자면 PCA는 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법 중 하나입니다. 머신러닝을 할 때 훈련 데이터의 변수가 많은 경우가 있습니다. 하지만 모든 변수가 결과에 주요한 영향을 끼치는 것은 아닙니다. 가장 중요한 변수가 있을 것이고, 그다음 중요한 변수가 있을 것이고, 상대적으로 중요치 않은 변수들도 있을 겁니다. (원 데이터의 분포 보존) 이런 변수 중 가장 중요한 주성분 몇 개만을 선택하는 게 PCA입니다. n개의 변수가 있다고 해봅시다. n개의 변수와 1개의 label을 매핑시키는 그래프를 그리려면 n 차원의 그래프가 있어야 합니다. 3차원이 넘어가면 우리의 눈으로는 볼 수 없을 것입니다. 이때 중요한 2개의 주성분만 선택해서 그래프를 그린다고 합시다. 그러면 2차원의 그래프가 될 것입니다. 'n개의 변수 중 2개의 주성분만 뽑아서 분석하겠다, 즉, n차원을 2차원으로 축소시키겠다.'라는 의미로 PCA를 이해하였습니다. (->차원 축소를 통해 시각화할 수 있고, 시각화를 통해 데이터 패턴을 쉽게 인지할 수 있습니다.)
박은아(2016****73)8월 24일 오전 11:36
장환승학우님의 글과 김진웅, 임성규, 김정한 학우님의 댓글을 통해 PCA에 대해 공부할 수 있었습니다. 특히 주성분의 분산과, 차원 축소 방법으로서 PCA의 의미에 대해 더 잘 이해하였습니다. 감사합니다!
채희준(2016****00)8월 24일 오후 12:47
학우님들의 내용 정리, 질문, 답변을 보면서 PCA에 대한 이해도를 높일 수 있었습니다. 감사합니다.
박*호(2014****10)8월 24일 오후 3:35 학우님들의 글을 보면서 pca를 더 잘 이해가 되었습니다. 양질의 글 감사합니다
김호연(2020****32)8월 25일 오전 8:59 좋은 글 잘 읽었습니다. 감사합니다~
[6주차] 강의 내용 복습 요약 (2)
01 주성분 분석 (PCA)에 대해 간략히 배움
[6주차] 강의 내용 실습 (2)
강의 내용에 관한 실습 내용입니다.
{교재 수록 예제} 교재 329쪽부터 나와있는 예제입니다.
[01단계_데이터 입력과정] 주어진 데이터를 컴퓨터가 기억하게끔 입력시킵니다. 입력시킨 데이터가 오류 없이 입력되었는지 확인하는 과정 또한 포함합니다.

[02단계_Centering, Scaling] 01단계에서 입력한 데이터 행렬을 토대로, 센터링 행렬을 구합니다. 이때 들어가는 추가 코드는 다음과 같습니다.
![]()
결과는 아래와 같이 출력 됩니다. 결과를 해석하면 다음과 같습니다.
노란색 부분_센터링된 데이터 행렬 (센터링 행렬) 입니다.
보라색 부분_ 확률 변수로 지정된 4가지 항목들 각각의 평균값을 나타냅니다.
파란색 부분_ 확률 변수로 지정된 4가지 항목들 각각의 표준편차를 나타냅니다.
* Scaling 이란, 보라색 부분과 파란색 부분을 도출해내는 것(평균값과 표준편차를 구하는 것)을 의미합니다.

[03단계_PCA] 02단계에서 얻은 센터링 행렬을 가지고 PCA를 진행합니다. 본 단계를 진행하기 위해 추가되는 코드는 다음과 같습니다.
* 여기서, center = F, scale = F 인 이유는 앞서 02단계에서 Centering 과 Scaling 과정을 이미 거쳤기 때문에, 생략하는 것으로 이해할 수 있습니다.

결과는 다음과 같이 출력됩니다. 이를 해석하면, 다음과 같습니다.
노란색 부분_ 각 PC의 표준편차를 나타냅니다. 이를 통해 우리는 공분산 행렬의 고유값, 분산을 구할 수 있습니다. (값의 제곱)
보라색 부분_ 각 PC가 보존하는 데이터 비율을 의미합니다.
파란색 부분_ 위 보존 데이터율 값들의 누적 값을 의미합니다. 예를 들어, 우리가 PC1만을 이용하기로 했다면, 원 데이터의 약 61%정도를 보존하는 것으로, PC1과 PC2를 같이 이용할 경우, 원 데이터의 약 85%정도를 보존한다고 볼 수 있습니다.

[04단계_적재계수 확인] 주성분을 찾을 떄 필요한 적재계수는 다음의 코드(캡쳐본의 노란색 부분)를 입력하여 확인 가능합니다. 그 결과는 다음과 같습니다. 여기서 결과가 의미하는 바는 직교 행렬 V라고 이해될 수 있습니다.

[05단계_PC score 출력] PC score를 구하여 출력하는 과정입니다. 다음의 코드(캡쳐본의 노란색 부분)이 추가로 필요로 합니다. 결과는 다음과 같이 출력됩니다.

결과로 제시되는 것은 1열부터 4열까지의 PC score 입니다. 만약, 특정 부분의 값을 구하고자 한다면, 코드의 수정을 통해 얻을 수 있습니다. 예시로, mydata의 2행과 mypca$rotation의 3열을 곱한 값을 구하고자 한다면, mypca$x[2,3]이라고 코드를 수정하면 됩니다. 결과는 다음과 같이 출력됩니다.

[06단계_데이터 시각화 과정] PCA 과정을 통해 우리는 원 데이터의 100%를 보존하지는 못하더라도, 데이터의 차원을 줄일 수 있습니다. 이를 이용해, 우리는 데이터를 시각화 하거나, 다른 데이터 분석 기법을 적용시킬 수 있습니다. 하나의 예시로, 교재에서는 주어진 데이터를 k개의 클러스터로 묶는 알고리즘 ‘K-means clustering’을 진행시킬 수 있습니다. 또, 주성분의 고윳값에 대한 선 그림인 scree plot을 활용하여, 데이터의 차원을 줄일 때, 주성분 몇 개를 취할지 결정할 수 있습니다. (이때, scree plot은 고윳값이 가장 큰 값부터 크기순서대로 정렬을 시켜주기 때문에, 대개 기울기가 꺾이는 부분의 왼쪽에 있는 성분까지 선택합니다.)
‘K-means clustering’과 ‘scree plot’을 도출하기 위해서는 다음의 코드가 추가로 필요합니다.

결과는 다음과 같이 출력됩니다. 여기서, K-means clustering의 결과는 좌측에, scree plot의 결과는 우측에 위치하고 있습니다.

[6주차] Comment
PCA와 PC score를 구하는 과정을 이해하기에 매우 힘들었습니다. 그래서, 여러 학우분들의 정리와 교재 예제를 실제로 따라가 보면서 학습을 진행했고, 그 결과 이해도를 끌어올렸던 것 같습니다.
<댓글>
이상구(LEE SANGGU)8월 26일 오전 4:08
2학년 이승재 군, 우리 강좌의 Final Goal 에
the First 로 도착 했습니다. 축하합니다.
1. 다른 학생들이 PCA 질문 하면 답해주고,
2. PBL 보고서 잘 만들어 제출하고,
3. 그 중 본인 보고서 중 PCA 부분 깨우친 과정을 강조하여 설명하는 동영상을 토요일 오전 11시 까지 제출 하세요.
4. 프로젝트 로 인정하여 가산점 주려고 합니다.
축하드립니다 ~~
김호연(2020****32)8월 26일 오전 11:01
요약이 보기 좋군요.
[Act 41] REFINALIZE CLASSMATE 분들의 글 5주차 with 손원식, 김범준, 나종진, 박정호, 김진웅, 장환승, 이상현, 천가영, 한수현, 고경원, 이승재, 정권채
-> 학우분 께서 제 글을 정리해 주신 거이기 때문에 생략합니다.
[Act 42] REFINALIZE CLASSMATE 분들의 글 6주차 WITH 나종진, 김진웅, 김범준, 고경원, 김호연, 김효경, 이승재, 채희준, 김다은, 이상현, 정원철, 박은아, 임성규, 장환승, 정권채
-> 학우분 께서 제 글을 정리해 주신 거이기 때문에 생략합니다.
[Act 43] REFINALIZE CLASSMATE 분들의 글 7주차 WITH 손원식, 박은아, 천가영, 정원철, 김효경, 김정한, 임성규, 김호연, 이승재, 정권채, 나종진, 김다은, 이상현, 박정호, 유가이올렉산드르,
-> 학우분 께서 제 글을 정리해 주신 거이기 때문에 생략합니다.
[Act 44] (기타 2) [수강후기] 2019311465 이승재
선 지식이 전무한 상태에서 시작했던 이번 수업은 초반에 저에게 힘들게 다가왔었습니다.
질문과 타 학우님들의 질의 응답에 대한 댓글을 적극적으로 달기 시작하면서, 수학에 대한 접근이 조금이나마 수월해진것 같았습니다.
7주가 다 지나고 본 수업을 돌아보았을때, 분명 제 수학적 사고나 코딩 분야에서의 지식은 늘었다고 자부할 수 있을정도로 열심히 달려온듯 합니다.
인공지능의 중요성과 그 영향력이 커져가는 이시대에, 인공지능을 위한 기초수학이라는 과목의 수강 기회를 잘 잡았다고 생각하고 있습니다.
모든 학우분들 수고 많으셨습니다. 알찬 방학기간을 만들어 가서 영광이였습니다. :)
[Final OK by SGLee] [hw-7주차] AI는 어떻게 발전하여 왔는가?
작성자:김범준(2017****99)작성일:8월 26일 오후 10:06
조회수:29
딥러닝(Deep Learning)은 음성을 인식하고, 이미지나 패턴을 확인하고,다음 상황을 예측하는 일과 같이 인간이 하는 작업을 수행하도록 컴퓨터를 교육하는 일종의 기계 학습(머신 러닝)이다.사전에 정의 된 수식을 통해 실행되도록 데이터를 구성하는 대신,1. 주어진 데이터에 초기 파라미터(parameter)를 설정해주고, 2. 여러 겹의 처리 계층을 사용하여 패턴을 인식하면서, 컴퓨터가 스스로 학습하도록 훈련(train)하는 것이다.이러한 노력들은 오늘날 우리가 일상에서 접하고 있는 자동화와 형식 추론 기술의 기틀을 다지는 역할을 하였으며, 이러한 기술에는 사람의 능력을 보완하고 확장할 수 있는 의사 결정 지원 시스템과 스마트 검색 시스템이 포함된다. Amazon과 Netflix가 머신러닝을 이용한 추천 시스템의 개념을 대중화한 것과 같이, 앞으로 산업 전반적인 분야에서 인공지능(AI)이 활용될 것으로 사료된다.
인공신경망은 예전부터 존재하였다. 하지만 당시 하드웨어가 이를 따라가지 못하고, 당시에 고안된 개념으로는 선형문제의 해결에는 용이하였으나, 여러가지 한계점을 안고있었다.(이는 AI겨울 이라는 시기를 맞이하게 된 이유이기도 하다.)
AI겨울과 미래:https://kau-deeperent.tistory.com/77
딥러닝 vs 딥클로닝(출처:
https://steemit.com/kr-newbie/@jenna.pulse9/machine-learning-vs)
딥 클로닝 vs 딥러닝, 근본적인 차이점엔 뭐가 있을까?

텍스트를 읽은 후 자연 언어를 처리하고 지식으로 전환될 때, 딥 클로닝 네트워크 (그림 왼쪽)는 서로 다른 목적과 다양한 뉴런 기능을 가진 계층으로 구성됩니다. 이와는 대조적으로, 딥러닝 (그림 오른쪽)은 주시된 학습 모드에서 산출물의 오류를 최소화하기 위해 설계된 뉴런의 동질 구조입니다. 딥러닝의 변동성에도 불구하고 어떠한 언어적 역할에도 뉴런 활동이 지정되지 않습니다.
왼쪽 그림의 딥 글로닝에서 KR은 지식의 텍스트만 사용하는 원샷 프로세스를 처리할 수 있지만, 딥러닝에선 딥 클로닝에서 필요로 하는 것보다 훨씬 긴 코퍼스(Corpus) 방법 트레이닝 사이클을 필요로합니다.
> 그림을 통해 보면 쉽게 이해할 수 있는 부분이지만, 딥러닝은 상하계층의 모든 요소와 상호 연결되어 있지만 딥 클로닝은 특정요소와 연결되어 있다. 이는 딥 러닝은 학습에 있어서 더 긴시간이 요구됨을 의미한다.
'딥'이라는 의미가 여러계층을 쌓는것을 의미한다. 딥러닝 외에도Deep RNN 같은 용어도 있다.

이미지 출처:https://news.joins.com/article/23283566
COMMENT: 앞으로도 AI는 많은 부분에서 도전을 받게 될 것이다. 규칙이 정해져있는 게임 등과 같은 분야에서는 두각을 나타내고 있지만 자연어 처리와 같은부분에서는 아직도 미진한 것이 사실이다. 이를 극복하기 위해 고안된 딥러닝 같은 기술들이 어떻게 발전할지 궁금하다.
[Final OK by SGLee] Finalized by 김범준, 정원철 Q.[HW-4주차-질문] 델타의 표기by 김범준
작성자 : 김범준(2017****99)작성일 : 8월 4일 오후 6:15
• Final OK by SGLee] Finalized by 김범준, 정원철 Q.[HW-4주차-질문] 델타의 표기by 김범준 Technical and Mathematical symbols
출처: https://ko.wikipedia.org/wiki/%CE%94
|
문자 |
∆ |
∇ |
≜ |
⍋ |
⍍ |
⍙ |
||||||
|
유니코드 이름 |
increment |
nabla |
delta equal to |
apl functional symbol delta stile |
apl functional symbol quad delta |
apl functional symbol delta underbar |
||||||
|
인코딩 |
10진 |
16진 |
10진 |
16진 |
10진 |
16진 |
10진 |
16진 |
10진 |
16진 |
10진 |
16진 |
|
8710 |
U+2206 |
8711 |
U+2207 |
8796 |
U+225C |
9035 |
U+234B |
9037 |
U+234D |
9049 |
U+2359 |
|
|
226 136 134 |
E2 88 86 |
226 136 135 |
E2 88 87 |
226 137 156 |
E2 89 9C |
226 141 139 |
E2 8D 8B |
226 141 141 |
E2 8D 8D |
226 141 153 |
E2 8D 99 |
|
|
∆ |
∆ |
∇ |
∇ |
≜ |
≜ |
⍋ |
⍋ |
⍍ |
⍍ |
⍙ |
⍙ |
|
|
|
∇ |
|
|
|
|
|
||||||
이 중 책에서는 첫번째와 두번째가 많이 쓰이는 것으로 보입니다. 이 두 표기상의 차이가 존재하나요? 만약 차이가 있다면 왜 그런것인가요?
정원철(2017****79)8월 4일 오후 6:28
크게 보면 의미의 차이는 없지만, Δ는 흔히 delta라고 말하고 주로 미적분에서 전체에 대한 작은 포션의 변화를 표현하기 위해 사용합니다.반면에 ∇는 del이라고 하며, 주로 벡터의 gradient 변화를 나타낼 때 쓰인다고 합니다.아래를 참고하세요.https://www.quora.com/What-is-the-difference-between-delta-and-del
참고링크 내용
• Delta is a greek letter: uppercase Δ, lowercase δ
• Delta is generally used in calculus for denoting the small part/unit of a whole.
• Delta is the fourth letter of the Greek alphabet (Δ, δ) and corresponds to English alphabet d and as a number, it indicates 4.
• Delta is read as del sometimes.
• The inverted Greek delta: ∇ is nabla.
• Nabla is generally used in vectors for the gradient.
comment: 수학적기호를 잘 몰라 이해가 어려울 수도 있다 생각합니다. 기호에 대해 파악하여 이해도를 높일수 있는 계기가 되었습니다.
Ch 5장. [Project 제안서] Your possible Team Project 제목, 동기, 방법론, 참고문헌 [아이디어와 Draft] (10점)
Team Project Proposal
Basic Math for AI
Prof : Sang-Gu LEE
Due day : 2020. 08. 29
I-campus HW box (과제함)
제목: 신경망을 활용한 다음 달 매출 예측
동기: 자영업자는 매출이 고정적이지 않기 때문에 미래에 대한 준비가 필요하다. 특히 최근 코로나로 인해 더욱 더 불안정한 삶을 살고 있기에, 원할한 미래 대비를 위해 미래를 예측할 수 있는 알고리즘은 필수적이다. 자영업자들의 의사결정에 도움이 되는 매출 예측 모델을 개발하고자 한다.
방법론: 우선 계절에 따른 영향력을 관측할 수 있도록 최소 1년치의 매출 데이터가 필요할 것이다. 또한, 코로나의 영향력을 판별하기 위해서는 올해 상반기의 데이터 또한 필수적이다. 우선 t-1 월 매출로 t 시점의 매출을 예측하는 신경망을 구축한 뒤, 코로나에 따른 영향력을 반영하기 위해 bias를 추가하는 방향으로 생각하고 있다.
Team Members (Tentative, Leader-not yet):
Name / e-mail (이름과 이-메일):
■ 주제
“포트폴리오 가중치 Optimization으로 레이달리오 따라잡기”
■ 동기
: 수년 전부터 다양한 트레이딩 알고리즘을 만들고 있으나, 여러 가지 변수 때문에 수익률의 volatility가 통 잡히질 않습니다. 그렇기 때문에 자연히 자산배분의 가중치 문제에 대해 관심을 가지게 되었고, 이를 통해서 수익률을 개선시키고 싶습니다.
■ 실행방안
1) 세계적인 투자자인 레이달리오의 4계절 포트폴리오 수익률 자료 크롤링
[4계절 포트폴리오]
주식 30%, 중기국채 15%, 장기국채 40%, 원자재, 금 각각 7.5%
A. 30% 주식 – 미국 주가지수 ETF 등 주식
B. 중기 미국 국채(7-10년채) 15%, 장기 미국 국채 40%(20-25년채)
C. 각각 7.5%를 원자재, 금에 투자
*https://m.blog.naver.com/ybilee/221357038659
2) y =
+
x1 +
x2 +
x3 +
x4 +
x5
y : 4계절 포트폴리오의 수익률
x1 : 주식
x2 : 중기국채
x3: 장기국채
x4: 원자재
x5: 금
3) 경사하강법 혹은 더 효율적인 Optimizer를 이용하여 각각의
값 구하기
-> 100% 기준으로
값 보정
4) 파이썬을 활용하여 실제로 일정 기간(예를 들어 5년?) 동안의 데이터를 backtesting하고 4계절 포트폴리오와 수익률 비교
-----------------------------------------
Team Project (Tentative, just idea now): 저는 미래에 법학을 공부하고 싶습니다. 그래서 제가 공부하고 싶은분야에서 수학을 어떻게 이용할 수 있을까를 고민하였습니다. 아직 4주차 밖에 되지 않아 제가 인공지능에 필요한 수학적 기초를 다 갖추지는 못 하였지만, 다음과 같은 계획을 가지고 있습니다.
필요개념: 최소제곱법, 상관계수
1. 각 시대에 법률(함무라비 법전부터 시작하여 현대의 법의 일반원칙까지)을 흔히 법의 2요소 하고 말하는 법적안정성, 정의 라는 두가 지측면에서 우열순으로 점수를 매깁니다.(객관적 지표로 점수를 부여할 수 없기에 상대적 우위에 따른 점수화)
2. 그리고 그 점수를 통해 총 3개의 변수로 3차원 공간에 나타냅니다.(시간, 정의, 법적 안정성)
3. 그리고 이를 기반으로 최소제곱법을 통해 근사해를 나타내고 이를 반영합니다.
4. 이 중 많약 곡선이 자연스러운 선형이 아닌 경우 (ex) 어느 지점을 기준으로 역방향 ) 그 지점에 있었던 국제적 사건을 기록합니다.
5. 그에따라 일정 변곡점(?) 사이를 하나의 분기로 취급하여 분기별로 상관계수를 측정합니다.
얻을 수 있는 것: 사실 이러한 류의 연구는 많이 있어 왔습니다. 하지만 학부생의 수준으로 이를 접근하여 문과 학부생의 경우에도 수학적 기초가 중요함을 보여줄 수 있다고 생각합니다.
마지막 수업까지는 이 프로젝트를 완성하고 싶었지만 단순 수학적 개념뿐만 아니라 이 주제에 관한 연구자료들을 찾고 정리하고 하는 시간이 많이 걸려 완성하지 못하였습니다. 언제가 될지는 모르겠지만 이러한 계획을 나중에 반드시 해 보도록 하겠습니다.
Name (이름) : 박*아
<주제> 미분방정식을 활용한 효소반응 시뮬레이션
<목적> 효소 반응에 주로 참여하는Substrate, Enzyme, Product, Inhibitor 네가지 물질의 관계를 방정식으로 나타내어 효소 반응 시뮬레이션을 시도한다.
<주제 선정 이유> 본 과목에서 배운 내용을 원전공인 생명과학에 적용시킬 수 있는 주제를 생각해보았다. 수학적으로 표현 가능한 생명활동 중 효소의 반응에 대해 기술하는 Michaelis–Menten equation이 생각났다. 이미 주어진 실험적 데이터를 이용해 원하는 물질 생산에 걸리는 시간 등을 시뮬레이션해볼 수 있을 것이다.
Team Project (Tentative, just idea now): 다양한 Gradient Descent Algorithms 체험하기
[Ruder, Sebastian. “An overview of gradient descent optimization algorithms”]
위 논문에서 설명하고 있는 여러 가지 gradient descent optimization algorithm(Momentum, Nesterov accelerated gradient, Adagrad, Adadelta, RMSprop, Adam, AdaMax, Nadam, AMSGrad)을 이해하고 직접 코드로 실습하여 실제 인공지능에 이용되는 알고리즘을 학습한다.
Name
fianlized by 정원철. [2주차] SVD를 활용한 이상구 교수님 사진 압축. 댓글 by 나종진, 이상구교수님, 장환승, 김호연, 김정환, 김다은, 박진형
작성자 : 정원철(2017****79)작성일 : 8월 8일 오후 9:50
조회수 : 36
2주차를 공부하면서 가장 많은 시간을 쏟은 개념은 SVD인데, 이미 문의게시판에 관련한 다양한 정리, 실습, 활용 예제들이 많아서 머신러닝에서 실재로 어떻게 사용되는지를 추가로 더 보여드리고 싶어서 올립니다.
* 이상구 교수님 사진을 쓰는 것에 대해 부분적으로 허락을 받았습니다.
* 사진의 출처
<http://www.kmooc.kr/courses/course-v1:SKKUk+SKKU_2017_01+2019_T1/about>
이미지 압축의 핵심 원리는 이미지는 분해가 될 수 있는 픽셀(ex. 32*32*3)을 담고 있는 메트릭스로 구성되며, SVD는 픽셀 분해를 아주 편리하고 효율적으로 해줍니다.
아래 결과를 가볍게 확인해봅시다.모듈 setting
In [2]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import time
from PIL import Image
2) 이미지 파일을 불러와서 흑백 이미지로 변환하였습니다.
In [19]:
img = Image.open('C:\\Users\\user\\Desktop\\professor_SGLEE.png')
img
Out[19]:

In [20]:
imggray = img.convert('LA')
plt.figure(figsize=(9, 6))
plt.imshow(imggray);

In [21]:
imgmat = np.array(list(imggray.getdata(band=0)), float)
imgmat.shape = (imggray.size[1], imggray.size[0])
imgmat = np.matrix(imgmat)
plt.figure(figsize=(9,6))
plt.imshow(imgmat, cmap='gray');

3) SVD를 계산하여 U, sigma, V 를 구하였습니다.

In [22]:
U, sigma, V = np.linalg.svd(imgmat)
4) 이미지를 압축해 보았습니다.
In [23]:
reconstimg = np.matrix(U[:, :1]) * np.diag(sigma[:1]) * np.matrix(V[:1, :])
plt.imshow(reconstimg, cmap='gray');

In [24]:
for i in range(2, 4):
reconstimg = np.matrix(U[:, :i]) * np.diag(sigma[:i]) * np.matrix(V[:i, :])
plt.imshow(reconstimg, cmap='gray')
title = "n = %s" % i
plt.title(title)
plt.show()


In [25]:
for i in range(5, 51, 5):
reconstimg = np.matrix(U[:, :i]) * np.diag(sigma[:i]) * np.matrix(V[:i, :])
plt.imshow(reconstimg, cmap='gray')
title = "n = %s" % i
plt.title(title)
plt.show()










나종진(2017****17)8월 8일 오후 9:56
정말 대단하세요. 그러면 n 이 엄청 커지면 다시 원본 사진과 비슷한 용량이 되는건가요?
이상구(LEE SANGGU)8월 8일 오후 10:06
정원철씨, 흥미 있는 시도입니다. 개인 사진은 privacy 고려하여 우리 QnA 계시판 에서만 사용 한다면, OK 입니다. 다른 홈 페이지에 공개 되지 않도록 만 주의해 주세요^^ 그래서 나는 전에 성대 로고를 가지고 해 보았는데 ... 아무튼 도전 정신과 차별화 노력에 가점 줍니다. ~~ Good job.
장환승(2016****69)8월 9일 오전 00:02
재밌게 잘 보았습니다! 대단하네요
김호연(2020****32)8월 9일 오전 1:38
와우....
김정한(2017****99)8월 9일 오전 1:42
svd에 대한 흥미로운 실습 잘 보았습니다~
김다은(2018****13)8월 9일 오전 3:30
SVD를 이렇게 적용하시다니...대단하시네요~
박진형(2018****59)8월 9일 오후 1:11
svd 의 예로 이미지 압축이 있다는 것은 알았는데 이렇게 직접 코딩까지 하시는게 정말 대단하시고 인상적입니다
정유민(2019****80)8월 9일 오후 7:13
SVD를 공부하면서 너무 어렵고 복잡해서 그만 둘까 생각했지만, 이렇게 직접 코딩을 하시는 모습을 보니 더 공부하려는 의지가 생기는 것 같습니다~ 정말 대단하십니다
Team Members (Tentative, Leader-not yet): 이승재
Team Project (Tentative, just idea now): 최소 비용 문제를 푸는데 이용되는 경사하강법 알고리즘이 실생활에서 쓰이는 예시 탐구
Name / e-mail (이름과 이-메일): 이승재
Ch 6장. ◆ Final comment after your report ◆ (10점)
(PBL보고서/Project 를 마치고 ...)
Mid Term : 이번 보고서를 계기로 많은 것을 깨달았다. 배웠던 부분에서 부족한 부분이 어느 곳이었는지도 확인할 수 있었고 내가 어려워하는 부분이 어딘지도 알 수 있었다. 선형대수학 뒷부분을 모두 이해했고 계산할 수 있을 것이라고 생각했는데 생각보다 부족한 부분이 있었다. 또한 미분적분학은 뉴턴 method 부분이 아직까지 개념이 완전히 잡히지 않은듯한 느낌이 들었다. 그래서 보고서를 쓰며 계속 교재를 읽고 강의도 다시 한 번 보며 이해를 하려고 노력했고 그만큼 학습이 잘 되었던 것 같다. 또한 얼마나 내가 학습을 했는지도 이번 기회에 점검해볼 수 있는 좋은 기회였다. 선형대수학은 고등학교 이후로 들어본 적이 없어서 자신이 없었는데 교수님 강의와 교재 덕분에 수월하게 진행했다. 점검을 통해 내가 선형대수학을 많이 공부했구나라는 것을 느꼈고 희열도 느꼈다. 비록 이와 같이 중간도 많이 노력했지만 기말 때는 중간보다 훨씬 좋은 결과물을 낼 것이라고 다짐한다. PBL이 다시 개념을 되짚어주는 기능도 있지만 부족한 부분을 확인하고 채워주는 기능도 있어서 좋은 과제인 것 같다는 생각을 하게 되었다. 또한 프로젝트를 설계하면서 내 전공과 연관지어 생각하게 되어 좀 더 전문성을 키워가는 것 같다는 느낌을 받았다. 코딩과 관련된 프로젝트를 이번 기회에 해보고 싶다. 코딩은 파이썬과 c언어 정도 해보았고 어느 정도 수준있는 코드까지는 짤 수 있다. 그러므로 좀 더 범위를 넓혀 매틀랩까지 도전해보고 싶다. 신호 처리에 관한 개념을 스스로 찾아 학습하고 그보다 더 중요한 코딩을 계속해서 실습한다면 더욱더 세부적이고 명확한 주제를 기말 때 발견할지도 모르겠다. 넓은 의미에서는 매틀랩의 학습이 주요 목적이므로 프로젝트를 이와 같이 짰지만 더 좋은 그리고 이러한 주제에 크게 벗어나지 않는 주제가 떠오른다면 약간의 수정과 더불어 프로젝트를 원활하게 진행하고 싶다. PBL과 프로젝트 이야기를 하였으니 QnA communication 활동을 이야기해보고자 한다. 무엇보다도 제일 유익했던 활동이라고 생각이 든다. 비록 초반에는 많이 활동하지 못하고 방법에 익숙치 않아 다른 학우들이 쓰는 게시글에 힌트를 얻어 조금씩 작성하였지만 조금씩 게시글을 작성하는데에 있어 발전해나가는 모습이 보였다. 게시글을 작성하는 시간도 줄었고 물론 내용은 좀 더 풍부해졌으며 쓰면서도 배워나가는 듯한 느낌을 받았다. 학우분들도 똑똑하신 분들이 많아서 내가 배워야겠다고 생각하는 장점들이 정말 많았다. 실습을 독창적으로 계획하여 보여주신 학우분도 계시고, 개념 정리를 정말 잘하는 학우 분도 계시고, 정말 배우고자하는 점들이 너무 많았다. 그에 자극을 받아 나도 열심히 하기 시작한 것 같다. 이번 중간 PBL과 QnA들을 계기로 기말 때까지 정말 많은 Finalizing을 하고 학우들에게 도움이 되는 게시글들을 작성하며 댓글도 써가면서 communication하도록 노력해야겠다. 이상으로 midterm PBL comment를 마친다.
Final Term: 7주가 벌써 지나갔다. 처음에 수강하면서 이루고자 했던 방향성과는 다소 차이가 있다. 하지만 그것이 스스로가 틀린 것을 의미하는 것은 아니라고 생각한다. 처음에는 수학적인 도구들을 배워서 스스로에게 체화시키고자 하는 방향이었다. 하지만 단순히 배움의 개념이 아닌 배움의 방식을 배우게 되었다. 주체적인 배움의 중요성을 깨닫게 되었다. 그전까지는 무언가를 배우면 문제를 풀기에 급급했다. 그리고 그 답이 맞는지 틀린지가 중요하였다. 하지만 이번 강의를 통해서 배우게 된 점은 주체적으로 배우자는 것이다. 아는 내용과 모르는 내용을 구분하고 아는 내용의 경우 다른 사람들의 관점을 통해서 복습하고 채워간다. 모르는 내용은 차근차근 쌓아가서 기초 토대를 잘 쌓는데 핵심을 두어야한다. 이렇게 배움의 첫단계를 지나고 스스로 이러한 지식이 어디에 쓰이고 어떠한 방식에 쓰이는지 생각해보아야한다. 이러한 점이 이번 수업을 들으면서 나에게 가장 크게 생긴 변화이다. 단순히 배우는 것을 넘어 응용할 줄 알고 다른 학우들과 토의하며 부족한 부분을 채우며 스스로 배우는 것을 즐기게 되는 것이다. 이렇게 배운 수학적 도구들은 크게 세 파트였다. 선형대수학과 미분적분학, 그리고 확률과 통계였다. 미분적분학과 확률과 통계는 아는 내용이 다수였고 선형대수학은 모르는 내용이 다수였다. 하지만 주체적인 학습을 하고 난 후 기본기가 잘 잡혔다는 느낌을 갖게 되었다. 무엇보다 이런 배움을 통해 이러한 수학적 도구들이 인공지능 part에서 어떤 식으로 응용이 되는지 간단하게라도 배우게 되었다. 즉 배움이 주체가 아닌 배움의 목적이 주체가 되었다. 주체적인 학습의 바탕에는 역시 학우들과의 QnA에 대한 이야기가 빠질 수 없다고 생각한다. 다양한 과에서 온 학생들과 문의게시판에서 토의를 하고 모르는 내용은 알려주며 서로 내용을 보충해나가는 모습이 굉장히 인상깊었다. 상대적으로 이러한 과목에 익숙한 학우들도 있고 부족한 학우들도 있지만 서로 이끌어주어가며 성장해나가는 모습이 보기 좋았다. 다양한 분야에서 뛰어난 학우분들이 많아서 스스로 자극을 받아 더 열심히 하게 된 경우도 있고 어려움을 느끼는 학우에게 친절히 답변을 해주고자하는 경우도 있었다. 이런 토론이 주요한 수업은 많이 들어보지 않았지만 이번 수업이 다른 수업보다도 단연코 배운점은 가장 많았다고 자부할 수 있다.게다가 잘하느냐 못하느냐가 아닌 강의를 통해 성장했느냐가 강의의 목표로 보신 교수님께도 많은 것을 배우고 가는 것 같다. 덕분에 내가 지금까지 해 온 공부 방식이 맞는 것인지 진지하게 생각해볼 수 있는 계기가 되었고 좀 더 주체적인 인간이 될 수 있었다고 생각한다. 앞으로 어떤 학습을 하고 어떤 일을 하던 좀 더 자신감 있게 할 수 있을 것이라고 생각이 든다. 끝으로 교수님의 교육 방향성에 맞게 학습을 하였는지는 정확히는 모르겠지만 아마 이러한 점을 바라시고 본인을 이끌어 주신게 아닌가 예상을 해보면서 이런 좋은 강의를 해주시고 수고해주신 교수님께 감사를 드린다.
1st Month (흑색글씨): 4주간의 활동을 되돌아보면서 제가 이 수업을 처음듣기 시작한 순간보다는 수학적 개념에 대한 이해가 늘었다고 생각합니다. 하지만 타학우들에 비해 아직은 미진합니다. 남은 3주동안 더욱 열심히 하여, 학기초에 다짐했던 성적을 꼭 받을 수 있는 충실도를 보여드리겠다고 다시 한번 마음을 잡는 계기가 되었습니다. 남은 3주간 수업을 더 열심히 듣고 다른 학우분들과의 의사소통에 정진해나가 제 수학적 능력을 한층 신장시키도록 하겠습니다. 감사합니다.
Final 2nd Month (보라색글씨): 총 7주간의 시간동안 많은 것을 배웠습니다. 하지만 아직 깊은 이해에 이르지는 못 하였습니다. 하지만 7주간 배운내용을 되돌아 보며 뿌듯함과 수학적인 맥락은 이해하였구나 라는 생각이 듭니다. 7주동안 감사했습니다.
Because online courses are being conducted in the first half of this year, and offline courses are almost impossible to carry out, it brings some inconvenience to everyone's learning. However, through the 7-week study in this summer vacation, I think this cooperative teaching method is very interesting. Students can ask questions and answer each other's questions by posting. This method can not only record the process clearly, but also facilitate storage and organization. There is no doubt that through this course, my mathematics ability has been improved and I have a more understanding of the mathematical knowledge applied in the field of artificial intelligence. Therefore, I am very grateful to the classmates, professors and teaching assistants who seriously asked and answered questions. I hope to continue to have such learning opportunities in the future.
박*형 Mid Term (파란글씨):
1st week : 인공지능에 흥미를 가지고 처음으로 인공지능 관련 강의를 듣게 되었다. 처음에는 많은 수의 강의와 해야할 것들이 많아 당황스러웠다. 심지어 선형대수학은 처음 접해보는 것이라 두려움이 앞섰다. 그렇게 두려워하다 결국 강의를 들었는데 확실히 처음 보는 내용들이라 공부하는데 시간이 좀 결렸다. 잘 이해가 되지도 않았고 뭐가 뭔지 틀이 잡히지가 않았다. 그래도 교수님께서 뭘 해야하는지 하나하나 친절하게 설명해주셔서 최대한 하라는 대로라도 해볼라고 노력했다.첨가 행렬, 행 사다리꼴, gauss 소거법, gauss-jordan 소거법 등은 모두 한 번은 들어본 단어들이었는데 자세한 내용은 모르고 있었다. 강의 교안 내용을 천천히 읽어보고 강의를 듣고 교안에 있는 문제를 풀어보니 다행히 이해가 가기 시작했었다. 최소제곱해와 QR분해 파트는 너무 어려워서 이해가 안 갔지만 교안에 있는 URL로 들어가 관련 내용들을 천천히 읽어보기도 하고 코딩도 해보니 슬슬 이해가 가기 시작해 안도가 되었다.
2nd week : 둘째주도 강의 내용은 선형대수학이었다. 선형변환, 고유값, 고유벡터, 대각화, SVD 특이값 분해 등에 대해 배웠는데, 다른 내용들은 그나마 이해가 되었는데, SVD 특이값 분해 내용은 정말 이해하기가 힘들었다. 이 부분은 개인적으로 너무 어려워서 GOOGLE/NAVER 에 서칭을 해보며 이해를 하였다. 최근 정OO 학우가 올려주신 SVD를 활용한 이미지 압축은 매우 신기하여 관련 코딩을 해보고자 하였다. 하지만 서칭을 해 보아도 이해할 수 없는 난이도의 코드가 나와 일단은 포기하고 말았다. 차후 시간이 된다면 이 부분에 대해 정OO 학우에게 질문을 하여 어떠한 코드를 사용하여 설계하였는지 질문해보고 싶다.
3rd week : 3주차부터는 미적분학 내용이 나왔다. 아무래도 미적분학 내용은 자주 다뤄보았기에 친밀하게 다가왔다. 또 지난 2주동안 한 것이 있기에 강의의 시스템도 얼추 파악되고 적응이 된 것 같았다. 기억에 남는 것은 f의 이차근사식 중 임계점의 극대, 극소 관련 내용에 대해 이해가 잘 안 가서 고민 고민 하다가 게시판에 질문을 남겼는데, 답변을 듣고 이해하니 정말 별거 아닌 내용이었기에 조금 충격이었다.
4th week : 4주차 내용도 대부분 아는 내용이었기에 이에 대해서는 개념보다는 코딩을 주로 해보고 게시판에 올라오는 관련 질문에 답해주려고 하였다. 그 결과 경사하강법에 대한 질문 2개에 대해 답해주었는데, 질문에 답변을 하면서 오히려 내가 얻어가는 것이 많았던 것 같다. 답변을 하며 경사하강법에 대해 얕게만 알고 있었던 나 자신에 대해 한번 더 성찰하는 기회가 되었다. 특히 뉴턴법의 초기 추정치 설정에 대하여서도 그때는 그냥 그런가보다 하고 넘어갔던것이었는데 다시 생각해보니 정말 고민되는 문제였다. 추정치는 이를 구하고자 하는 자가 적절한 값을 대입해야한다고 하는데 이를 잘못 선택하면 근사값으로 수렴하지 않는 경우가 생긴다. 그렇게 답변을 하기 위해 근사값으로 수렴하지 않는 경우를 공부하게 되었고 추정치 설정에 대한 연구에 대해서도 서칭해 보는 기회가 되었다. 이렇게 질문, 응답을 하며 질문자 뿐만이 아니라 답변자 또한 많은 공부가 되고 도움이 된다는 것을 느꼈고 이러한 질의응답 시스템이 지금처럼 계속 활발하게 이루어지기를 바라는 마음이 생겼다.
5th week : 5주차에는 확통 관련 내용을 학습하였는데, 대부분 아는 내용이어서 복습 하는 느낌으로 공부할 수 있었고, 다른 학우 분들의 질문에 답해주려고 노력했다. 그 결과, 한 학우분의 베이즈 정리에 관련된 문제에 대한 질문에 대해서 답을 해드릴 수 있었다. 오개념을 잡아드리고 문제의 잘못된 점을 알려드리고 새롭게 수정된 문제를 보여드리면서 풀이과정 또한 보여드리며 이해를 시켜드리려고 노력하였다. 다른 한 학우 분은 분산의 성질이 이산 확률분포에서도 성립하는지에 대해 질문하셔서 이에 대해 증명하는 과정을 수기로 적어 사진을 찍어 공유하여 궁금증을 해결해드렸다. 이렇게 문제해결에 도움을 주는 과정을 통해 오히려 나 자신이 공부를 하고 심화 학습을 할 수 있는 기회였다. 이번주차 OH에서는 교수님께서 물론 우리나라도 훌륭하지만 서양이 우리나라를 뛰어넘을 수 있던 것을 예로 드시면서 우리나라는 자료가 있다면 이를 공부하고 혼자 재정리하는 식으로 공부를 하는데 서양에서는 자료가 있다면 이를 공부하고 이해했다는 것을 체크만 하고 뼈에 살을 붙이는 식으로 심화 학습 자료를 추가하거나 잘못된 점을 수정하여 공유하는 방식으로 한다고 하셨다. 이것에 영감을 얻고 교수님께서 말씀해주신 방식으로 공부를 하기 시작했다. 이전주차까지는 혼자 강의를 들으며 공부하고 재정리하여 문의게시판에 게시하였는데, 이번에는 강의를 들으며 이해하고 다른 학우 분이 잘 정리한 글에 심화 학습을 한 부분을 추가하는 식으로 했다. 확실히 이 방법이 공부하는 시간을 줄여줘서 심화 학습까지 할 수 있는 시간을 벌어주었다. 결과적으로 해당 공부 방법이 매우 유용하다는 것을 깨닫고 이후로도 해당 방법으로 공부를 해나갈 것이다.
6th week : 6주차를 한 단어로 정리하자면 PCA 일 것이다. 공분산, 상관계수를 시작으로 주성분 분석에 대해 제대로 배웠는데, 사실 처음에는 잘 이해가 가지 않았다. 하지만 문의게시판에서 정O철 학우 분이 정리해주신 PCA 주성분 분석 로드맵을 통해 그 어려움이 풀렸다. PCA를 이해하고 나니 생각만큼 어려운 것이 아니었다. 그리고 다시 한 번 문의게시판의 소중함을 느낄 수 있는 기회였다.
7th week : 마지막 7주차에는 인공 신경망에 대해 학습하고 오차역전파법에 대해 배울 수 있었다. 오차 역전파법을 통해 오차를 줄여나가는 방법에서 경사하강법이 쓰이는 것을 보고 앞서 배운 내용들이 이런 식으로 인공지능에 활용이 된다는 것을 알 수 있었다. 또한 ACTIVATION FUNCTION에 대해서도 공부를 했다. 교안에는 SIGMOID 만 나와 있었는데 그 외의 다양한 활성화 함수가 있음을 알 수 있었고 각 함수의 장점과 단점 또한 알 수 있었다. 또한 다른 학우분들이 ACTIVATION FUNCTION에 대해 학습하시고 공유하신 내용 또한 확인하고 내용을 추가 보완할 수 있었다. 마지막 주차에는 지난 7주차, 각 주차별 관련 글들을 몇 가지 기준을 두고 모아 REFINALIZE 해보았다. 각 주차별 내용 중 각각의 글들을 다시 한 번 자세히 읽어보며 느낀점, 추가로 알게 된 점, 궁금증이 생겨 심화학습을 한 내용을 COMMENT로 추가하여 정리하였다. 이러한 과정을 통해 각 주차별로 내용들을 복습하고 한 단계 발전된 학습을 할 수 있었다. 이 글들을 공유하여 다른 학우 분들도 볼 수 있게 하였고, 이에 대해 ‘자칫 지나친 내용을 볼 수 있었다’, ‘복습에 큰 도움이 되었다’ 등의 COMMENT를 볼 수 있었다. 그리고 이러한 COMMENT를 보면서 뿌듯함 또한 느낄 수 있었다.
PBL 보고서를 작성하며 위와 같이 지난 한달 간 배우고 느끼고 활동한 내용들을 정리해볼 수 있었다. 나의 현재 강의 내용 수용률이 어느 정도인지 파악할 수 있는 기회였다. 이번 PBL 보고서를 쓰며 느낀 것은 난 아직 많이 부족하지만 꽤나 성장했다는 것이다. 문의게시판에 학우 분들이 올려주신 글들은 강의 내용뿐만 아니라 관련된 여러 문제들, 실생활 적용 예시들, 관련 코딩, 심화된 내용들에 관한 것이었고 그러한 글들을 보며 감탄을 하였다. 하지만 마지막 두 주차를 보면 다른 학우분들에 비해 더 이상 내용이 떨어지거나 뒤쳐진다는 느낌은 없었다. 첫 2주차와 마지막 2주차를 비교해보기만 해도 이는 간단히 확인될 수 있었다.
이번 강좌는 다른 강좌들고 다르게 위 7주차 동안 배운 지식들 뿐만 아니라 다른 것도 많이 얻어가는 것 같다. 문의게시판에서의 활동을 위하여 강의를 미루지 않고 듣게 되어 항상 미루기만 하였던 자기주도학습 방면에 있어 성장을 이루었다. 교수님, 학우 분들, 조교님과의 의사소통 능력 향상은 이전과 비교하여 이루 말할 수 없을 정도이다. 특히 교수님과의 전화 상담은 큰 의미가 있었다. 그저 문의 내용이 있어 전화를 드렸었는데, 교수님께서는 문의 내용뿐만이 아니라 그 외의 학습 태도, 방법 등에 대해서도 설명해주시며 학습 방향을 잡아가는데 큰 도움을 주셧다. 특히 가장 기억에 남는 말씀은 ‘시야를 현재에 국한하여 그저 학점만 바라보며 공부를 하지 말고 더 넓은 시야를 가지고 나 자신을 진정으로 성장시키고, 발전시킬 수 있는 사람이 되라’는 말씀이다. 이는 이후로도 나의 학습 방벙의 길잡이로서 역할을 할 것이고, 항상 머리에 새기고 있을 것이다. 지난 7주가 짧다고 하면 짧고 길다고 하면 길수도 있는 기간이었는데, 나에게는 거의 한 학기 혹은 그 이상의 값어치를 가지는 기간이었다. 학습에 도움을 주신 교수님, 조교님, 학우 분들에게 깊은 감사를 보낸다.
Additional comment by 유가이 올렉산드르: After studying this subject "Basic mathematics for AI", I am sure that I have all the necessary knowledge to create a Neural network, that can predict the state of human health based on the data obtained from the PPG sensor.
Ch. 6: Final comment after your report (10점)
1stWeek: Since 2 years ago I already took a subject from Professor Sang-Gu Lee, namely, Discrete Mathematics, which was passed according to the same PBL methodology, and I really liked it, because thanks to this methodology I was able to understand the most of lecture materials. Over the past few months, I have had a huge interest in the field of Artificial Intelligence, and it was during a special summer semester(도전학기) that the subject "Basic Mathematics for Artificial Intelligence" from Professor Lee appeared. Since I really wanted to learn how I can apply mathematics in the field of artificial intelligence, I decided to choose this subject. I am confident that thanks to the PBL methodology, the professor, TA and students, I will be able to study this subject relatively well. In the first week, we learned basic linear algebra concepts such as vector, projection, RREF, Gauss-Jordan elimination and others. This week I started to participate little by little in the QnA and try to answer the questions of other students (since I had already studied Linear Algebra earlier).
2ndWeek: In the second, I consolidated my knowledge on topics such as QR decomposition, Diagonalization, Newton’s Method, SVD, Quadratic Form etc. I also learned about the methods of using SVD in practice and significantly improved my problem solving skills using Sage and Python.
3rdWeek: This week I learned about the basic concepts of the calculus (function, limit, differentiation, integration, etc.). In this week I have paid more attention to summarizing lecture materials, solving calculus problems manually and using Sage and Python for a deeper understanding.
4thWeek(Mid-Term): This week we started exploring calculus topics that have a closer connection with the AI field. The most memorable topic for me this week was Gradient Descent Algorithm. Gradient descent method, with some modification, is widely used for training perceptron and deep neural networks, and is known as error backpropagation method. At first, I did not fully understand the principle of work of this method, but thanks to the active participation of students and the Professor in the QnA, I was able to understand the general concept and method of using this Gradient-Descant algorithm at a fairly good level.
5thWeek: This week we started learning Part 3 related to Statistics. First of all, we learned the basic concepts of statistics using the new programming language P, mainly intended for statistical analysis. Since, I often used the SAS programming language when analyzing data (for example, for conducting regression analysis), the syntax of the R language was not familiar to me. However, thanks to that the professor in the introduction of Part 3 briefly described the basic commands used in R and gave many examples of calculating Mean, Variance, Standard Deviation etc., I was able to master the R language at a basic level and began to try to apply it to solving simple static tasks.
6thWeek: This week we completed Part 3 by examining important statistical topics such as Continuous probability distribution, Joint probability distribution, Central limit theorem, Covariance, Correlation, and more. The professor also gave us a very detailed example of data analysis using the R language, thanks to which I was able to improve my knowledge in the field of statistics and my skills in working with R. We also started Part 4 by studying one of the most important topics in the field of deep neural networks, namely Principal components analysis (PCA). I also completed a PCA-related project provided by the Professor, in which a step-by-step explanation is carried out in parallel with an example of a real use of PCA for data dimension reduction.
7thWeek(Final): This week we have completed our exploration of PCA by looking at some real world examples of its use in detail. We got acquainted with the concepts of artificial intelligence, machine learning, deep learning and studied in detail the structure and properties of Neural networks. I especially remember the different types of activation functions(Sigmoid function, Heaviside function, ReLU function etc.), each with its own advantages and disadvantages. Also, thanks to the professor for providing an example of a student's work, thanks to which I was able to learn more about the real use of Date Mining for analyzing data on energy consumption in buildings from different regions.
My Feeling(소감)
I believe that despite the fact that it was quite short, but very productive 7 weeks. We were able to study a huge 3 subjects, that is, Linear Algebra, Calculus and Statistics, and learned how to apply this knowledge using the programming languages such as Python, Sage and R. Thanks to the active support of the Professor and TA, most of the students during this period were able to actively participate in QnA, sharing knowledge with each other, thus also becoming a solid support for each other on the thorny path of study. Ibelievethatthroughhardworkandmutualassistance,wewereabletofullycomprehendBasicMathematicsandlearnedhowtoapplyitinthefieldofArtificialIntelligence.
Finally, I want to try to paraphrase the words of the professor from the introductory lecture on AI.
“The endless possibilities of a rapidly developing Artificial Intelligence (especially in the field of self-learning) may seem magical to us, but we must always remember that any, even the most incredible magic has its own secret of implementation, which requires a huge amount of effort, time and perseverance to comprehend. And in the case of Artificial Intelligence, mathematics is its main secret.”
Separately, once again, many thanks to the Professor for this wonderful subject “Basic Mathematics for Artificial Intelligence” and for his great and fruitful work.
1st Month (흑색글씨): 교수님의 수업이 처음이라 문의게시판을 활용하는 방식이 처음에는 적응하기 어려웠다. 하지만 수업이 진행됨에 따라 점차 적응하며 매일 문의게시판을 들어가 확인하는 것이 습관이 되었다. ‘Basic Math for AI’를 수강하며 소통하는 즐거움을 주로 느끼고 있다. 또한, 선형대수학 파트에서 이미 알고 있는 개념이라고 생각했는데 막상 질문에 대한 답변을 작성하기가 어려웠던 경험이 있다. 이러한 경험을 통해 무엇을 알고 무엇을 모르는지 깨달으며 정확하게 공부하는 방법을 익히는 방법을 배우고 있다.
Mid Term (파란글씨): 다른 학우분들과 소통하는 Q&A가 본 수업의 핵심이라고 느껴졌다. 무엇을 알고 무엇을 모르는지 깨달으며 정확하게 공부하는 방법을 익히는 방법을 배우고 있다. 문의게시판에 올라오는 다른 학우분들의 질문에 답변하기 위해 인터넷 검색을 많이 활용했다. 검색한 자료의 정확도를 확인하기 위해 꼼꼼히 읽어보고 따져보는 과정에서 추가 공부가 되었다. 다양한 자료를 접해보다 보니 프로젝트를 수행하고 싶다는 생각이 들어 제안서를 작성하였다. 학습 동기가 생기는 것의 힘을 느낄 수 있다. PBL 보고서를 작성하며 자기 성찰하는 시간을 가졌다. 남은 3주간 부족한 부분을 보완하면서 수업에 더욱 활발히 참여할 것을 다짐했다.
Final (빨강 글씨): 7주간의 도전학기 여정 동안 새롭고 다양한 경험을 했다. 그동안의 학습 방법을 깨부수는 수업 방식이었다. 일반적인 정규 학기에 비해 짧은 시간 안에 많은 것을 배웠지만 절대 가볍게 느껴지지 않았다. 충분한 고찰을 할 수 있었고 토론을 통해 시야를 넓힐 수 있었다. 또한 프로그래밍 실력이 많이 발전했다는 느낌을 받았다. 기초 수학이 다져진 상태에서 알고리즘을 더 잘 이해할 수 있기 때문이 아닐까 싶다. 본 강좌에서 기초 수학과 더불어 AI에 사용되는 기초 알고리즘과 원리, 그리고 마지막으로 AI가 20세기부터 현재까지 발전해 온 방향과 딥 러닝의 의미와 개념까지 자세히 배웠다. 이런 내용들을 매주 공부하고 정리하고 공유하며 학습하는 방법을 깨우치고, PBL 보고서를 작성하며 내가 공부했던 것을 총 정리하니 한층 더 성장된 나를 발견했다.
Mid Term (파란글씨): 도전학기 7주 중 4주차입니다. 4주간 많은 내용을 바쁘게 배워갔습니다. 그간 배운 내용을 정리해보는 시간은 내가 공부한 내용을 다시 한번 보는 시간이 되었습니다. 이렇게 보고서를 작성하면서 생각해보니 나 혼자만 학습한 것이 아니라 옆에 동료 학우가 많은 도움을 주었고, 남은 기간에는 도움을 받은 만큼 많은 도움을 줄 수 있도록 노력해야 함을 느꼈습니다. 처음 배워보는 행렬부터 x,y 만 알고 있었던 방정식, 미적분 등 다양한 수학 개념을 알게 되어 매우 기쁩니다. 그리고 지금 개인적으로 공부하는 코딩과 지금 배운 수학 내용을 연합하여 다른 수업의 문제를 쉽게 해결하고 싶습니다. 이를 넘어서 아직은 실생활에 적용할 수 없지만 꼭 적용해볼 수 있도록 하고 싶습니다.
정말 동료 학우가 너무 많은 도움을 주었고, 학우와 의사소통해도 도출되지 않는 결과(답)을 교수님께서 알려주셔서 많은 도움이 되었습니다.
이번 보고서를 작성하면서 많은 정리가 되었습니다. 감사합니다.
Last Month (Final) (빨간글씨): 도전학기를 처음 시작했을 때는 복학하기 전이라서, 처음 듣는 수학수업이라서 많이 긴장되었습니다. 오랜만에 수업을 듣고 과제를 하는 것이라 잘 할 수 있을까 라는 고민도 많이 했습니다. 본 강좌를 듣고 그런 마음이 사라지고 이번 가을학기를 잘 해낼 수 있겠다는 자신감이 생겼습니다. 단순히 강의를 듣고 시험을 보는 수업이 아니라 직접 나서서 참여하고 동료 학우분들과 함께 고민하고, 해결해 나가는 수업이라 더욱 즐겁고 쉽게 수업을 들었던 것 같습니다. 그리고 수학에 관심이 없었던 저에게 재미있는 수학을 배울 수 있게 했고, 요즘 배우는 코딩에 더 흥미를 갖게 만들어 주었습니다. 복학을 앞둔 저에게 정말 도전을 할 수 있었던 학기였고, 할 수 있다는 자신감을 안겨준 수업이었습니다. 이번 도전학기를 도와주신 교수님, 조교님, 그리고 많은 학우분들 감사합니다.
Mid Term (파란글씨): 4주간 정말 열심히 강의를 통해 선형대수학과 미적분학을 공부했습니다. Q&A활동으로 많은 동료분들과 소통을 하였고 답변을 달면서 정리도 되는 좋은 시간이었습니다. 이번 Midterm PBL Report를 작성하면서 배운 것을 다시 한번 그리고 최종적으로 정리할 수 있어서 좋았습니다. 앞으로 확률통계학과 인공지능 파트가 남았습니다. 열심히 배워서 인공지능의 이해에 한층 다가서도록 하겠습니다.
Final Term (빨간글씨): Final PBL까지 모든게 끝나고 마지막으로 Final comment를 작성합니다. 이 보고서 쓰느라 힘들었지만, 끝나니 정말로 보람차네요!! 와아! 이로써 <인공지능을 위한 기초수학>을 완전히 수학하게 되었습니다. SVD로 PCA, GDA로 BP가 핵심이었습니다. 인공지능의 이해 및 개발에 첫 발을 내디디게 되어 좋았습니다. 앞으로 인공지능 시대를 맞아 지금껏 배운 것을 잊지 않고 학습에 정진하겠습니다. 이 강의를 수업해주신 교수님 그리고 함께 Q&A 활동하며 알게된 동료 여러분들, 그 동안 함께해주셔서 감사합니다.
1st (흑색글씨)
첫주차부터 진도가 빠르게 나가 진도에 대한 부담이 상당히 되었습니다. 하루에 10시간을 투자해 가면서 가장 기초적인 것부터 이해하려 노력했고, 그래도 부족한 부분은 질의를 통해 메꾸려 노력 했습니다. 이에 대한 결실이 미미하지만 조금씩 보여지게 되어 뿌듯한 마음이 없잖아 있는 것 같습니다.
2nd (파란글씨)
완전 기초적인 개념 조차 몰라서 해매던 선형대수학 파트를 지나 미적분학 파트로 넘어오니, 약간 수월하게 느껴진 감이 없지 않았습니다. 파트 1을 공부할 당시의 투자한 시간처럼 많은 시간을 투자하지 않았지만, 그래도 적지않은 시간을 투자하면서 이해하려 노력했습니다. 한가지 아쉬운 점이라면, 기호에 대한 익숙치 않음 때문인지 수식을 보면 아직 100% 이해하는데 시간이 꽤 오래 걸립니다. 이 부분은 차차 나아질 것이라고 기대하고 있습니다.
3rd (초록글씨)
통계학 부분을 배울때는 제가 가지고 있던 지식들과 새로 배우게 된 지식들을 결합해 더 많은 내용을 알아갔던 것 같습니다. 선지식이 있다보니, 기본 개념에 대한 질의 보다는 조금 더 심화된 내용에 대한 질의가 QnA 게시판에 올라왔고, 이를 보며 저의 이해도나 통계학에 대한 심화된 내용들을 보고, 배울수 있어서 좋았습니다.
Last (Final) (빨간글씨)
마지막 파트인 인공지능에 대한 부분을 공부할 때, 지금껏 배운 모든 내용이 이해가 되어 있어야 원활히 이해를 하고 넘어갈 수 있는 부분이였기에, 조금 애를 먹었습니다. 하지만, 타 학우분의 게시글 (PCA에 대한 시각적 정리글)을 토대로 개념에 대한 큰 틀에서의 이해, 그리고 교재 예제를 통한 세부적인 이해를 높여 PCA에 대해 완벽하지는 않아도 어느정도 수준까지는 이해하게 되었습니다. 지난 7주간 해왔던 QnA활동들이 중첩되어, 저의 이해도를 끌어올린 것 같아 매우 뿌듯했습니다.
1st Month (흑색글씨): 첫째 주에는 PBL이라는 새로운 방식을 접하게 되어 아주 흥미로웠습니다. 코로나로 인해 온라인 강의로 전환되면서 수업이 어떻게 진행될지 궁금했는데, 문의게시판에 본인이 공부한 것을 다른 학우 분들과 공유하는 PBL 방법은 온라인 학습의 효율성을 극대화 시켜 줄 수 있을 거라 생각이 들었기 때문입니다. 그래서 첫째 주는 열심히 참여를 하게 된 것 같습니다. 허나, 현재 회사일을 병행하고 있기 때문에 첫째 주 이후 부터는 도전학기 수업에 시간을 많이 할애하지 못했습니다. 수업만 듣고 문의게시판에 제가 배운 내용들을 정리할 시간이 없어 아쉬웠습니다.
Mid Term (파란글씨): 교수님께서 make up 할 기회를 주셔서, 중간고사 기간 이후부터 여태까지 정리하지 못한 내용들을 순차적으로 문의게시판에 업로드 하였습니다. 과거 내용들을 읽어보면서 정말 대단한 학우분들이 같이 수업을 듣고 있다는 것을 깨달을 수 있었습니다. 강의 내용과 더불어 문의게시판에 추가 설명 자료들을 함께 학습하니, 기존에 이해하기 어려운 개념들 또한 어느 정도 이해가 되었습니다. 대표적으로 SVD 관련해서 잘 정리된 게시글이 있어서, 해당 게시물을 통해 기존에 이해가 어려웠던 개념을 학습할 수 있었습니다.
3rd Month (초록글씨): 또한 make up을 진행하면서 http://matrix.skku.ac.kr/ 홈페이지가 상당히 학습하기 편하게 구성이 되어있어서 쉽게 기존 내용들을 복습하고 따라잡을 수 있었습니다. 실습 페이지로 아웃링크가 존재했고, 실습 페이지로 넘어가면 브라우저 상에서 코드를 바로 실행시켜 볼 수 있었기 때문에 이론적인 내용들을 손쉽게 실습하면서 학습할 수 있었습니다. 특히 이번 과목에서는 다차원으로 개념을 확장하는 것이 주를 이루었는데, 코딩 실습이 이러한 차원 확장 개념을 쉽게 이해하는데 많이 도움 되었습니다.
Last Month (Final) (빨간글씨): PBL을 마무리 하기 위해서 다시 한번 작성한 글을 읽어보니, 내가 직접 작업한 게시물 들이라 보다 더 애착이 가고 기억 회상이 쉬웠습니다. 정규학기 수업으로 들었으면 더 좋았을 텐데, 최근 시국으로 인해 온라인 플랫폼으로 간접적으로 접할 수 밖에 없어서 아쉬웠습니다. 이번에 배운 내용들을 바탕으로 보다 심화된 인공지능 알고리즘 학습, 더 나아가 새로운 알고리즘 까지 제시를 해보고 싶습니다.
1st Month (흑색글씨) : 처음에는 Q&A 게시판을 활용한 수업을 듣는 것이 저한테 생소하게 다가와서 수업을 따라가는 것이 매우 어려웠습니다. 그리고 어떻게 수업에 참여해야 할지 몰랐습니다. 선형대수학이랑 확률과 통계, 기초 미분적분학은 이미 아는 상태였고, 심화 미분적분학에서 모르는 부분이 많았습니다.
Mid Term (파란글씨) : 선형대수학 시간이었습니다. 아는 부분이라고 너무 자만한 나머지, 처음 배우는 개념이 나오자 매우 당황하였습니다. 하지만 저는 굴하지 않고, 제가 모르는 부분이 있으면 끝까지 알려고 노력하였습니다. 질의응답에 익숙해지기 시작하였습니다. 보고서를 오랜만에 써 보니 약간 생소하게 다가왔지만, 그래도 재미있게 썼습니다.
3rd Month (초록글씨) : 미분적분학 시간이었습니다. 미분적분학에서 제가 모르는 개념이 제일 많이 나와 제일 힘들었지만, 그래도 재미있게 수업을 들었던 것 같습니다. 중적분이 제일 재미있었습니다. 2학기 때에도 미분적분학 2를 수강하는 사람으로서, 좀 더 수월하게 수강할 수 있을 것 같아 안도감이 들었습니다.
Last Month (Final) (빨간글씨) : 확률과 통계, 신경망, 프로젝트 시간이었습니다. 제가 프로젝트 신청 기간을 놓쳐서 아쉽게 프로젝트에 참여하지 못하였지만, 다른 학우님들이 프로젝트를 진행하는 것을 보면서, 프로젝트에서 필요한 역량과, 프로젝트의 전반적인 진행 과정에 관하여 많이 알아가는 시간을 가질 수 있었습니다. 그리고 다른 학우님들과 조교님, 교수님의 글을 제일 열심히 읽었던 시기이기도 합니다. 스스로 찾아서 공부하는 심화 학습이 얼마나 중요한지 깨달았습니다. 보고서를 쓰는 방법에 관하여 더 많이 알아가는 시기이기도 하였습니다.
이번 도전학기에 이상구 교수님의 인공지능을 위한 기초수학 강의를 수강하였다.
사실 처음에는 과목명만 보고 인공지능에 대한 시사/상식 그리고 이와 관련된 기본적인 수학지식을 배우는 줄 알고 큰 어려움이 없을 줄 알았다.
하지만 막상 과목을 수강하게 된 후, 강의를 듣고 과제를 제출하는데 많은 어려움이 있었다.
행렬 -> 미분적분학 -> 통계 까지 학습해야 할 양이 많았고 내용 또한 대체로 수준이 높았다.
만약에 이 수업이 강의와 시험으로만 이루어져있다면, 이 강의를 수강한 학생들 입장에서 정말 난처했을 것이다.
그렇지만, 이 강의가 이루어지는 방식은 앞서 말한 나의 생각을 전환시켜주는데 충분했다.
문의 게시판을 적극적으로 활용하여 학생들이 배운 내용을 스스로 정리하고 복습한 것들을 글로 작성하여 올리며, 이렇게 올라온 글을 다른 학우들이 Comment를 달아서 서로의 지식을 공유할 수 있다는 점에 대해서 정말 획기적이고 대단한 교육 시스템이라고 생각했다.
강의 내용을 이해하기 위해서 비록 많은 양을 공부해야하고 실습도 병행해야하지만, 모르는 부분이 생길 때 주저없이 문의게시판에 Q&A를 할 수 있다는 것이 이러한 부분들을 보완해줘서 전혀 문제가 되지 않았다.
단순히 내가 모르는 부분만 해결하는 것이 아니라 다른 학우들이 작성한 글에서 내가 몰랐던 부분에 대한 새로운 지식을 얻을 수 있다는 점이 매우 좋았다. (Ex. 개념응용한 Project, 실습 등등)
이렇게 과제 제출하는 것(학습한 내용 복습 및 정리, Q&A)에 익숙해질 때쯤 많은 것을 배우고 느끼게 되었다. 처음에는 과제 제목 형식을 쓰는 것 조차 힘겨워했던 내가 시간이 지나서 나중에는 매주 꾸준히 스스로 학습한 강의 내용을 정리하고, 인터넷 검색을 하거나 학우들이 작성한 글들을 참고하여 추가적인 내용을 올리며, Comment를 달아 3개씩 글을 작성하게 되었다.
이 강의를 통해서 내가 배운 점은 단순히 인공지능에 대한 상식과 관련된 수학 지식이 아닌 부단한 노력의 중요성과 성찰의 필요성이다. 강의를 수강하면서 시간이 지날수록 한층 더 발전하는 내 자신을 살펴볼 수 있었다. 글의 형식이 점차 체계적으로 변했고 내용도 풍부해졌다. 또한 글의 마지막에 Comment를 작성함으로써 그 주에 학습한 내용을 복습하며 스스로를 성찰할 수 있었던 시간이었다.
도전학기에 이 과목을 수강하여 후회없이 알차게 방학을 보낸 것 같아서 정말 좋았다.
마지막으로 학생들의 학습의 방향을 올바르게 잡아주시고 도움이 되는 좋은 조언을 많이 해주신 교수님 그리고 작성한 글마다 열심히 Comment를 달아준 학우분들께 진심으로 감사했습니다!!
1st Month (흑색글씨): 매주간 참여하는게 쉽지는 않았다. 지속적으로 들어와서 학습을 한다는게 평소 하던 것과는 다르고 낯설어서. 강의는 재밌고 흥미를 돋궜다. 힘들겠지만 이번 방학동안 제대로 해보자는 마음이 들었다.
Mid Term (파란글씨): 드디어 중간이 지났다. 앞으로 절반 남았는데 좀 더 열심히 하면 끝내 좋은 성취로 남을 것 같다. 난해했던 sage 코드도 보다보니 익숙해졌다. 행렬 파트에서 분해하는게 처음에 개념을 잘못 잡아 어려웠다. 적분파트로 가서는 오히려 행렬보다 쉬웠다. 예전 교수님의 선형대수학 강의 때보다 나은 결과물을 만들어내고 싶다. 코딩을 통한 실습을 진행해보니 그냥 막연하게 푸는것보다 훨씬 도움이 된다는 것을 체감한다. 코딩도 코딩이지만 개인적으로는 서로 학습결과를 나누고 알려주고 물어보는 게시판 기능이 더 효과적이었다. 교수님의 전문적인 답변을 실시간으로 받는다는게 좋았다. 학우들의 열정적이고 멋있는 프로젝트들도 보면서 자극을 받기도했다.
3rd Month (초록글씨): 확률과 통계를 듣고 난 뒤, 개인적으로 행복했습니다. 행렬 파트는 어려운 부분도 많아 이해가 안되어 다시 찾아보고 소통하고 그래왔지만, 이 파트는 평소에도 공부해왔고 관심이 많았던 파트여서 기반지식이 있다 보니 강의도 훨씬 수월하게 들었습니다. 이에 그치지 않고 제가 알고 있는 확률과 통계에 관한 흥미롭고 재밌는 문제들을 학우분들에게 소개해드리고 싶어 글을 썼는데 반응이 좋아서 이 또한, 행복했습니다. 푸아송 분포에 관한 글을 써보고 싶었는데 이를 놓치게 되어 이 부분은 조금 아쉽습니다. 다른 학우의 프로젝트였던, 베팅 시스템에 대해 보았습니다. 유쾌하고 즐거웠습니다. 다만 수학적 모델에 기반해, 베팅을 하는 것이 금전적인 측면에서 올바른가는 금융공학학회를 하면서 끊임 없이 질문을 던졌던 내용이라 이 부분에 대해서도 학우들과 이야기 나눠보고 싶었는데 아쉽게 됐습니다. 돌이켜 보니 아쉬움이 많은 주차였네요.
Last Month (Final) (빨간글씨): 마지막 주차에는 ML에서 기초적인 부분에 수학이 어떻게 활용되는지를 배웠습니다. 활성화함수로 굉장히 많이 쓰이는 sigmoid함수가 그래프가 어떻게 그려지며, 하는 역할에 대해 정확하게 알게 되었고, 신경망에 구성에 있어 한 발자국 다가선 느낌입니다. 전체적인 평으로는 실습에 참여하고 교수님 수업을 듣고 학우들과 게시판에서 토론하고 이러한 일련의 과정들이 제게는 너무 감사하고 유익했습니다. 질 좋은 강의, 멋진 수업 스타일로 풀어나가주셔서 감사드리며 열중하던 학우분들도 감사드립니다. 나 자신이 발전하는걸 느끼는 것 뿐만이 아니라, 다 같이 성장해나간다는 것을 step by step 으로 배운 것 같아 정말 즐거웠던 경험이었습니다. 더불어 컴퓨터로 실습을 함으로써 sage 뿐만이 아니라 R 코드에도 익숙해진 것 같아 행복했습니다.
처음 시작된 도전학기의 첫 수업을 이상구 교수님의 ‘인공지능을 위한 기초수학’으로 시작 할 수 있어서 정말 다행이었고, 교수님께 감사드린다는 말씀을 먼저 드리고 싶습니다. 본 수업을 통해 내용적인 측면에서는 수학을 어려워하는 저에게 선형대수학, 미적분학, 그리고 통계에 대해서 개괄적으로 어떤 내용을 담고 있는 것인지는 설명할 정도의 수학적 실력을 가지게 되었습니다. 뿐만아니라 인공지능의 운영에 대한 기초적인 구조도 이해할 수 있었습니다. 이런 이해를 위한 교재와 도구들은 제가 이전 어떤 수업을 통해서도 경험하지 못했던 도구였습니다. 특히 코딩을 이용한 실습 사이트가 그렇습니다.
이런 내용적인 측면 뿐만 아니라, 코로나19로 인해 대면할 수 없었던 상황에서도 적극적으로 참여해 주시는 학우분들은 저에게 큰 자극제가 되었습니다. 또 마지막에 make up 하면서 혼자 공부하면서 깨닫지 못했던 많은 생각을 할 수 있었습니다.
좋은 수업이었던 것 만큼, 개인적인 아쉬움이 많이 남는 도전학기였습니다. 중간고사 이전까지는 수업을 열심히 따라가고 질의응답도 진행하였습니다. 제가 올리는 게시물은 항상 한 템포 늦은 감이 있지만 뛰어난 학우 분들과 QnA 게시판을 통해 대화를 나누며 많은 것을 배웠습니다. 다만, 선형대수학과 미적분학의 내용이 기존의 고등학교 때까지 배웠던 수학과는 조금 다르고, 그전에도 어려웠었던 개념을 담고 있어서 스스로 개념을 곱씹고 실습하는 데에 오랜 시간이 걸렸습니다. 중간 PBL 보고서를 제출하면서, 5,6,7주차에는 개념을 미리 공부하고 QnA에 더 적극적으로 참여하겠다고 다짐했던 기억이 납니다.
하지만, 중간고사 이후 현장실습-인턴십 활동을 갑작스럽게 시작하게 되면서 공부와 QnA를 할 수 있는 절대적 시간이 모자랐습니다. 비겁한 변명일 수도 있지만, 학습에 투자할 절대적 시간자체가 부족해지면서, 교수님께서 올려주신 강좌를 빠르게 듣고 이해하고 실습하는 데에서 그칠 수밖에 없었습니다. QnA에 제가 먼저 질문을 달고, 문제를 내는 사람이 되지 못했다는 점이 너무 아쉽습니다. 시간이 조금 더 많았더라면, 제가 잠을 줄여서라도 더 많은 시간을 투자할 수 있었더라면, 이미 많이 배워가지만 더 많은 깨달음을 얻을 수 있지 않았을까 하는 아쉬움이 남는 것은 어쩔 수 없는 것 같습니다.
이런 아쉬움과 수업을 통해 그리고 보고서를 make-up하고 발표를 준비하면서 느낀 깨달음들은 잊지 않겠습니다. 먼저 수업을 통해서, 그리고 보고서를 make-up하면서 배운 개념적인 것들은 제가 앞으로 살아가는데 좋은 자양분이 될 것입니다. 또 적극적으로 소통한 대학교 수업을 잊지 못할 것 같습니다. 그리고, 마지막으로 제 스스로의 이유와, 새로운 활동으로 인한 시간 부족으로 인해 남게 된 아쉬움을 잊지 않고, 비슷한 상황이 닥칠 때 조금 더 유연하게 대처해야겠다는 생각도 하게 되었습니다.
개념을 단순히 주입하지 않고, 대화와 소통을 통해서 수학적 개념을 이해할 수 있게 하는 Big Picture를 가진 수업을 열어주셔서 감사합니다, 교수님.
1st Month (흑색글씨): 새로운 아이캠퍼스와 수업의 진행방식에 대해 적응하는 것이 우선이었다. 초반에 쏟아지는 공지에 무엇을 중점적으로 확인해야 하는지 감이 잘 오지 않았고 포맷에 적응하는데 집중했던 것 같다. 무엇보다 한 번도 들어보지 않았던 온라인 수업이 너무나 낯설었다. 코딩도 해보고 손으로 풀어보기도 하고 AI를 배우기 위한 개념들을 가장 열심히 공부했던 주였다. 학과에서 이미 배웠던 내용이기에 받아들이는데 어렵진 않았지만, 전체적으로 흐름을 이해하고 연결고리를 캐치하는데 노력을 기울였던 것 같다.
Mid Term (파란글씨): 수업의 진행방식에 적응하기 시작했고 문의게시판도 활용하며 수업에 좀 더 적극적으로 참여했던 것 같다. PBL 보고서란 것을 처음 써보았다. 처음엔 어떻게 내용을 채워야 할지 막막했는데 예시와 Q&A에서의 답변을 보면서 이해할 수 있었다. 그동안의 수업기여도를 확인하는 부분이 있었는데 생각보다 적은 횟수의 참여도를 보여서 더 열심히 해야겠다는 생각이 들었다.
3rd Month (초록글씨) : 통계학과 복수전공 중이었기에 중간고사 이후의 내용도 수월하게 배울 수 있었다. 특히 PCA 단원이 가장 재밌었고 다변량 분석 수업에서 처음 배울 때는 PC score 부분이 잘 이해가 되지 않았었다. 운 좋게도 강의 영상을 보면서 복습을 하는 기회를 가질 수 있었고 수업 영상과 문의게시판의 여러 예시를 통해서 명확하게 이해하였다.
Final (빨간글씨) : 딥 러닝 기초 부분을 학습하였는데 타 수업에서는 항상 layer 간의 도식표와 행렬로서 계산이 된다 정도로밖에 배우질 못했는데 오차 역전파법이라는 구체적인 솔루션을 배우면서 그동안 궁금했던 부분을 속이 뚫리듯 지식 습득을 할 수 있었다. 교양과목 치고 상당히 자세하고 방대한 양을 다루지만 개인적으로 커리큘럼이 너무나 맘에 들었고 한 번에 여러 과목을 복습하고 공부할 수 있다는 것이 좋았다. 문의게시판을 활용하는 것도 공부하기에 좋은 방안이었던 것 같다. PBL 보고서를 작성하면서 한 번 더 정리할 수 있어서 수업 내용을 잊을 수 없을 것만 같다.
현재까지 이상구 교수님의 수업은 저에게 여러 가지 의미로 다가옵니다.
먼저, 인공지능 공부에 어려움을 겪고 있던 차에 수학적인 베이스를 튼튼하게 다질 수 있는 시기적절한 수업이라고 생각합니다. 특히나 머신러닝을 공부할 때 맥락도 없이 수식이 막 쏟아져 나와서 어려움을 겪었었는데 이번 수업을 들으면서 적어도 선형대수학과 미적분학에서만큼은 생소한 개념, 혹은 예전에 이해를 못하고 넘어갔던 개념에 대해서 혼자서 정말 많이 고민해보고 다양한 공부자료를 찾아보면서 deep dive함으로써 실력을 향상시킬 수 있었습니다. 또한 저와 학우들의 유익한 자료들은 스크랩하여 향후 공부를 하다가 모르는 개념이 나왔을 때 다시 체크할 수 있도록 기초수학 로드맵도 만들게 되었습니다. 또한 협력의 필요성도 깨달았습니다. 공부를 하다가 생소한 개념이 나왔을 때, 이미 그 개념에 대한 정리와 실습, 질문 등 다양한 자료가 올라와 있어서 큰 도움을 받았습니다. 그래서 저도 받은 만큼 조금이라도 돌려드리기 위해 노력하고자 더 열심히 공부하게 되는 것 같습니다. 마지막으로, 평소 학습의 중요성도 뼈저리게 느꼈습니다. 처음 1~2주는 개인적인 사정상, 여유가 없어서 Q&A에 활발히 참여하지 못했기 때문에 그 부분을 make up 하는 것에 대한 부담이 있었습니다. 중복되는 글은 의미가 없다고 판단되어 최대한 유익하면서도 새로운 시각을 공유하고 싶어서 많은 시간을 쓰느라 힘들었는데 결과적으로는 그 과정에서 공부가 많이 되어서 만족하긴 하지만.. 앞으로 남은 기간에는 미루지 말고 성실하게 임해야겠습니다.
[Final]
종강을 앞둔 입장에서 섭섭할 정도로 아쉬움이 남습니다. 제가 최선을 다하지 못했거나 시간을 잘 활용하지 못해서가 아니라 한동안 교수님 수업을 항상 생각하고 있을 만큼 몰입도가 높아서 그런 것 같습니다. 저는 개인적인 연유로 남들보다 늦은 나이에 대학교에 진학을 해서 그런지 여태껏 팀플 수업을 항상 꺼려왔었고 참여를 해본 적도 없었고 문제가 있으면 혼자서 생각하고 찾아보는 과정을 당연시 했었었는데 학우분들과 함께 정리하고, 고민하고, 해결하는 과정이 생각보다 너무 재미있었을 뿐 아니라 저에게 개인적으로 많은 발전을 이끌어 주었습니다. 게다가, 애초에 제가 이 수업을 듣게 된 계기는 앞서 자기소개 글에서도 언급을 했지만, 단순히 주식 매매를 위해서였습니다. 주식 매매 시, 수익률을 우선시 하다가 올해 코로나 장에 많은 손해를 입었고 보다 안전하고 위험을 헷징할 수 있는 방안에 대해서 고민하게 되었고.. 자산 배분의 가중치를 정하는 문제에서 난관에 봉착했었는데 이번 수업에서 ‘경사하강법’에 대해서 많이 강조가 된 만큼 어느정도 답을 스스로 찾을 수 있었습니다. 그 점도 너무 만족스럽습니다. 또한 이번 수업은 제 수학 실력적인 면에서도 많은 발전이 있었는데, 먼저 선형대수학 부분에서 저는 예전에 재대로 이해하지 못했던 개념들에 대해 이번 기회에 직접 손으로, 코드로 하나하나 증명해보자고 결심했었고, 통계는 전부터 많이 배워왔었기 때문에 이번 기회에 여러 가지 분포들의 관계에 대해서 감을 잡거나 실생활에 다양하게 적용시켜 봄으로써 견문을 넓히는게 목적이었었는데 결과적으로 모두 성공적입니다. 게다가, 다른 학우분들이 훌륭하게 정리해주시는 개념 하나하나 개인적으로 스크랩을 해둬서 앞으로 관련 공부를 해나가는 입장에서 언제든 필요시 꺼내볼 수 있게 되었습니다. 이처럼 저에게 유익했고 좋은 기억만 가득한 수업은 처음인 것 같습니다. 앞으로 기회가 된다면 언제라도 교수님 수업을 수강하고 싶습니다. 그러니 항상 건강하시고 앞으로도 좋은 수업 많이 만들어주십시오 ^^
+ 또한 개인적으로 교수님 한번 뵈면서 조언을 구하고 싶은 문제가 있습니다. ... 신뢰 가능하고 퀄리티가 좋은 질문과 답변이 오가는 컨텐츠의 부재를 느끼고 이러한 문제를 해결해보고 싶은 사명감 때문에 ‘지식 컨텐츠 플랫폼’을 구축하는 스타트업을 창업하게 되었습니다. 하지만 의욕과는 별개로 아직 막히는 부분이 많은데, 신기하게도 교수님의 수업에서 그 문제에 대한 답이 조금씩 보이는 것을 느꼈습니다. 좋은 컨텐츠를 만들기 위해서는 좋은 질문을 하는 질문자와 그에 상응해서 좋은 답변을 제시해주는 답변자가 필요한게 당연한 사실인데 과연 그들의 유인은 무엇이며, 어떤 식으로 풀어나가야할지 .. 막막했었습니다. 하지만 이번 수업을 계기로 가능성을 보았고, 교수님의 수업 방식에 대해서 전적으로 공감하게 되었습니다. 따라서 혹시나 여유가 되신다면 꼭 한번 찾아 뵙고 가르침을 구하고 싶습니다.
1st, 2nd, 3rd Week (흑색글씨): 수업에 참여를 확실히 하지 못 했던 것이 매우 아쉬움으로 남습니다. 교수님이 의도하신 자기주도적 학습보다 수업 내용을 익히고 제 일에 너무 집중했던 탓이 아닐까 싶습니다.
Mid Term (파란글씨): 자기주도적 학습 방법을 활용해보니 확실히 다른 학생들과 소통하며, 스스로 실습해보며 하는 공부가 더욱 효과적이고 흥미롭다는 것을 알 수 있었습니다. 이번 주차를 계기로 스스로를 돌아보게 되었고, 앞으로 더 열심히 해야겠다는 생각을 갖게 되었던 것 같습니다.
5th, 6th Week (초록글씨): 확률과 통계 부분에서 새로운 지식을 알 수 있어서 강좌 자체에서 얻은 것은 정말 많았습니다. 하지만 교수님과 전화했을 때, 교수님께서 강의를 단지 수학적 지식만을 얻기 위해서 듣는 것이 아닌 코딩 실습과 공부를 통해 이 강의가 목표하는 바를 달성하라고 하신 것이 제게 방아쇠가 되었습니다. 비록 일은 여전히 바빴지만, 강좌 내용을 이해하기 위해 더 많은 시간을 사용했고, 다른 사람들이 올리는 실습을 보며 성장할 수 있었습니다.
Last Week (Final) (빨간글씨): 인공지능의 여러 학습법 중 기계 학습이라는 것을 알게 되었고, 기계 학습의 여러 종류 중 PCA와 이를 통한 딥 러닝, 인공 신경망의 구축에 대해서 알게 되었습니다. 이 개념들을 이용하여 뉴런을 모델링하면 어떻게 될지 생각하게 되었고, 신경 간의 상호 작용을 어떻게 모델링할지 생각하며 인공지능에 대한 간단한 스케치를 진행하게 되었습니다. 이번 강좌는 자기주도적 학습 방법을 배워갈 수 있던 좋은 강좌였고, 인공지능에 대한 생각과, 코딩과의 밀접한 연관성을 다시 찾을 수 있던 뜻깊은 강좌였던 것 같습니다. 감사합니다.
더불어 이전에 전화에도 말씀 드렸지만 제가 중간고사를 치루어 점수가 50점이어야 하는데 0점(미제출)로 표시가 되어 있었습니다. 교수님께서 수정하신 것 같지만 이후 올라온 공지에 계속 제 이름이 언급되어 말씀드립니다. 그리고 icampus 오류로 인해 5주차의 내용과 7주차의 내용이 수강 처리가 되지 않은 것 같습니다. 이 부분 역시 저번에 전화할 때 말씀 드렸지만 다시 수강하는 식으로는 되지 않는 것 같아 이렇게 보고서에 언급합니다.
항상 좋은 강의 만들어주셔서 정말 감사드리고 이번 여름방학동안 뜻깊은 강좌를 들을 수 있어 정말 좋았던 것 같습니다. 감사합니다.
1st Month (흑색글씨): 처음에는 수학이 있다는 이유로 무턱대도 수강을 신청했었고 생소한 개념들을 보고 많이 어려웠지만 빠르게 답변해주시는 교수님과 정리가 잘 된 수업자료 덕분에 쉽게 이해하고 강의를 따라갈수 있었습니다. 그리고 수학뿐만 아니라 인공지능이 수식을 입력받고 출력하는 방식과 인공지능에서 활용되는 수학이 무엇인지 알게 되었습니다. 1차시 때 배웠던 선형대수학 덕분에 앞으로의 대학 수학에도 큰 관심을 가질 수 있었습니다.
Mid Term (파란글씨):3주동안 본 강의를 들으면서 예전부터 고등학교 수학을 하면서 기대해왔던 대학교 수학을 본격적으로 접하게 되어 매우 기쁘고 3주간 공부해 온것을 Mid Term 과제인 보고서를 작성하며 다시 한번 되새길 수 있어 좋았습니다. 아직 부족한점이 많아 질문의 깊이는 많이 낮지만 마지막 강의까지 많은것을 이해하고 발전하기로 다짐했습니다. 중간고사때 만들어둔 PBL로 5주차~7주차 동안 탐구하고 질문했던것을 쉽게 정리할 수 있었습니다. 강의 초반 3주 동안 문의게시판을 이용했을때 보다 지금 더더욱 많이 문의게시판을 이용하고 있어 PBL에 많은 것을 기재할 수 있었습니다.
3rd Month (초록글씨): sage를 이용하면서 직접 구하는것과 다르게 함수를 직접 정의하는 등 평소에 문제를 풀때에 하지 않았던것을 해야해서 처음에는 다루기 힘들었습니다 sage를 이용해 여러 증명을 해냈고 sage 외에도 제가 원하는 수학 도구를 인터넷에서 여럿 찾아 필요에 따라 자유자재로 쓸 수 있게 되었습니다.
Last Month (Final) (빨간글씨): 저는 고등학교 시절 수학을 손에 꼽을정도로 잘했었고 나름대로 수학에 대한 자부심이 있었습니다. 이번 강의를 듣고 더 많이 수학을 공부한 교수님과 선배님들을 보면서 지금껏은 아무것도 아니었다고 느꼈고 더 수준 높은 수학을 배웠습니다. 공부를 하면서 과거 고등학교 시절에 배웠던 수학이 여러번 보였습니다. 이 덕분에 최근에 제가 꿈꾸는 직업을 가지기 위해 고등학교 수학 문제를 여럿 풀어보기 시작 했습니다. 이 강의를 마치고 대학수학에 큰 관심이 생겨 1학년 2학기에 선형대수학, 대수학, 이산수학, 미분적분학2 를 수강하게 되었습니다. 감사합니다.
Mid Term : 처음 접해보는 수업 방식과 친하지 않던 수학에 여러모로 당황스러웠던 시작이었습니다. 하지만 하나하나 배워가고 또 하나하나 읽고 공유해가면서 늘어가는 지식과 경험에 지금은 한편으로는 뿌듯하기도 합니다. 사실 최근에 빅데이터 관련 인턴십에 합격하게 됐습니다. 면접에서 수업 때 배워온 내용과 SVD, Hessian matrix를 통해 모델을 제작했던 과정들을 얘기하기도 하였는데 덕분에 좋은 결과가 이어지지 않았나 싶습니다. 남은 수업들도 정말 기대가 됩니다. 남은 기간 동안에는 용기있게 보다 더 적극적으로 질문하고 공유하며 많은 지식 얻어가겠습니다. :)
Final : 아쉽게 도전학기가 끝이 났습니다. Mid Term에 적어둔 내용을 다시 읽어보니 수업방식에 어색해하던 때가 또다시 떠오르네요. 종강을 맞이하며 되돌아보면 점점 재밌어지는 강의였다고 생각합니다. 다른 분들과 함께 서로 도와주며 공부해가는 과정이 참 즐거웠고 얼굴 한번 뵙지 못한 분들인데도 알 수 없는 내적 친밀감이 생겨나네요 :) 여러 가지 내용을 도전학기 동안에 공유하고 알려주신 덕분에 본래 강의보다 더 많은 내용을 얻어가는 것 같습니다. 진심으로 감사드리고 또 제가 해왔던 활동들이 여러분들께도 같은 도움이 되었기를 바랍니다. 즐겁게 배워가는 시간이었습니다. 좋은 수업을 만들고 이끌어주신 이상구 교수님께 감사 인사를 드리면서 PBL 보고서를 마칩니다. 감사합니다.
Mid Term (초록글씨):
3년 전에 이러한 방식의 수업을 이상구 교수님의 선형대수학 강의를 통해 처음 접해봤다. 당시에도 수업 방식에 적응하는데 어려움을 겪었던 기억이 난다. 두 번째인 만큼 저번보다는 빠르게 적응을 했다고 생각했는데 도전학기라 그런지 벌써 반이 지나갔다.
part1, 2는 선형대수와 미적분을 다루고 있었다. 이미 배웠던 내용이어서 질문이 올라왔을 때 답변을 많이 하며 다른 학우들에게 도움이 되자고 다짐을 하며 시작했다. 그런데 막상 설명을 하려고 하니 글이 잘 써지지 않았다. 정확하고 이해하기 쉽도록 설명하기 위해 자료들을 찾아보면서 오히려 내가 더 배우게 되었고, 놓치고 지나갔었던 부분들을 다른 학우들의 질문과 답변을 통해 보충할 수 있었다.
3주차가 지나갈 때쯤 단순 수학 이론 복습을 위해 이 수업을 들은 게 아님을 깨달았다. 이때부터 sage와 python을 통한 실습을 시작했다. 모르는 게 많았는데, 다른 학우들이 실습한 것과 코드 공유한 것을 참고하고, 질문을 하면서 수학과 코딩을 연결해볼 수 있었다. 컴퓨터로 코딩을 하면서 공부를 하니 이론에 대한 이해도 늘고 더 재미있게 학습할 수 있었다.
1달 동안 학습을 위해 도움을 주신 교수님과 조교님들께 감사드리며, 앞으로 3주 밖에 남지 않았는데, 남은 기간 동안 교수님과 학우들과 적극적으로 소통하며 서로 더 많은 것들을 배워갈 수 있도록 노력하겠다.
※ Final OK를 받은 것 위주로 정리를 했습니다. 부족한 부분이나 개선해야할 점이 있다면 Final Report에 반영할 수 있도록 피드백 부탁드립니다.
Last Month (Final) (검정글씨):
도전학기, 7주간의 강의라 그런지 너무나도 짧은 느낌이었다. 기간은 짧았지만 정말 많은 것을 배울 수 있는 7주였다. 선형대수, 미적분을 복습하고 확률과 통계, 인공지능의 기본 원리에 대해서 배울 수 있었다. 선형대수학, 미적분학, 확률과 통계는 각각 한 과목씩 들어야 할 만큼 많은 내용을 다루고 있다. 그 중에서 인공지능에 필요한 핵심적인 부분만을 짚어 공부하고 이를 컴퓨터로 실습해 볼 수 있어서 유익한 시간이었다. 그리고 선형대수부터 인공지능까지 마치 스토리처럼 이어지도록 구성이 되어있어 기억하고 이해하기 쉬웠다.
수학만을 배운 것이 아니라 프로그래밍 언어도 다양하게 접해볼 수 있었다. 이전에는 주로 python을 이용한 간단한 계산 정도를 했었는데, 이번 강의를 통해 sage와 R언어를 접해보고 실습실을 이용해 직접 실행해 볼 수 있었다. 또한 강의 특성상 컴퓨터를 잘 다루는 학우들이 몇몇 있었는데, 좀 더 심화된 코딩을 짜보고 공유 해줘서 python에 대해서도 더 잘 알게 되고 내 능력을 넘어선 부분까지 학습해 볼 수 있었다. 그리고 이공계생 뿐만 아니라 문과생들도 있어서 더 다양한, 새로운 관점으로 볼 수 있어 좋았다.
이 강의에서 가장 좋았던 것은 학습을 하며 다른 학우들과 소통을 할 수 있는 공간이 활성화되었다는 것이다. 보통 이러한 공간이 있더라도 제대로 활용이 안 되는 경우가 대부분이다. 그런데 이 강의에서는, 교수님께서 문의게시판 활동을 강조하시고 직접 적극적으로 참여하시면서 소통이 활발히 이루어질 수 있었다. 내용을 정리해 공유하기 위해 혼자 공부할 때보다 더 자세히 살펴보게 되고, 모르는 것이 있다면 바로바로 질문을 할 수 있기에 시간을 절약하고, 답변을 달기 위해 정확한 내용을 찾아보면서 평소보다 학습 능률이 높았음을 느낄 수 있었다. 나 혼자 공부하고 찾아보면서 했다면 정말 많은 시간이 필요했을 텐데, 여러 명이 한두 개씩 찾아 공유하고 보태고 하면서 시간은 줄고 학습량은 늘릴 수 있었다.
5~6주차에 ‘인공지능을 위한 기초수학’의 한 부분인 신경망 부분을 번역하는 프로젝트를 했다. 아직 배우지 않은 부분을 받아서 정확히 이해하는데 시간이 걸렸고, 처음 해보는 번역에, 내용도 어려워서 많이 힘들었다. 글이 교재 같은 느낌이 아니라 구어체여서 더 힘들게 느껴졌는지도 모르겠다. 번역을 하면서, 같은 내용을 반복한다거나 불필요하다고 생각되는 부분들이 있었다. 그러한 부분들을 자연스럽게 바꿨어야 했는데 너무 직역에 가까운 번역을 한 듯 해 아쉬움이 남는다. 그래도 번역의 과정이 어떻게 이뤄지는 지, 어떻게 번역을 하면 좋은 지에 대해서 알 수 있었고 번역을 하면서 평소보다 더욱 집중적으로 공부를 할 수 있었던 정말 좋은 경험이었다. 이러한 기회를 제공해주신 교수님께 정말 감사드린다.
‘인공지능을 위한 기초수학’을 수강하면서, 수학뿐만 아니라, 컴퓨터 언어, 학습 방법, 번역까지 정말 많은 것들을 배워간다. 7주 동안, 많은 도움을 주고 같이 학습하면서 자극을 주었던 학우들에게 고맙고 조교님과 항상 적극적으로 활동하시며 학생들을 위해 애써주신 교수님께 감사드린다.
도전학기 1-2주차 : 이번 강좌의 진행 형식은 대학교에서 들은 과목들 중 가장 신선하고 새로웠습니다. 새로운 형식이었기에 초기에는 진행 형식을 이해하고 저의 학습 스타일에 적용하는데 많은 시행착오가 있었습니다. 시간이 지나면서 점차 강좌의 진행 형식에 적응이 되어갔고, 학습하고 실습한 내용을 정리하여 학우 분들과 지식을 공유하고 다른 사람의 지식 또한 습득하여 상호작용하는 학습의 긍정적인 부분을 많이 느끼기 시작했습니다.
도전학기 1-4주차 Mid Term : 4주간의 기간동안 선형대수학과 미분적분학의 전반적인 개념들을 배우고 실습하면서 차수가 지날 수록 QnA에는 글들이 쌓여갔습니다. 게시하고 공유된 글들이 많아지면서 전에 올렸었던 글들에 대한 기억은 조금씩 희미해져갔습니다. 하지만 강좌의 중반을 달리고 있는 시점에서 PBL보고서를 작성하며 지금까지 게시한 글들을 다시 읽어보고 정리할 수 있었습니다. 보고서를 작성하며 중간 복습을 할 수 있어 좋았습니다.
3rd Month : Mid term 보고서와 지난 4주간 활동들을 교수님으로부터 webmeeting및 개인 메일로 feedback을 받으며 제거 부족한 부분은 무엇이며 잘하고 있는 잘하고 있는 점은 무엇인지 중간 점검을 할수 있었습니다. 지금까지 꾸준히 강의에 출석하고, fianlizing 학습에 참여하면서 앞으로도 꾸준히 참여바란다는 교수님의 말씀을 듣고 더욱 꾸준히 참여하려 노력하였으며 중간점검을 하며 개념정리와 같은 다른 학우분들과 중복되는 학습은 보다 간단하게 정리하고 다른 학우분의 내용을 Finalizing하여 학습하고 좀 더 심층적인 학습에 중점을 두려고 노력하였습니다.
통계파트는 제가 대학교에서는 처음 배운 학문이었지만 학습커리큘럼에 적응이 된 시기에 듣게 되어 학우분 및 교수님과 소통하는 학습의 긍정적 효과와 함께 좀 더 빠르게 지식을 습득할 수 있었습니다.
Last Month (Final) : 드디어 7주간의 인공지능을 위한 기초수학을 배우는 과정들이 끝이 났습니다. 짧으면 짧고 길면 길다고 할 수 있는 기간 동안, 교수님 및 학우 분들, 조교님들과 비록 온라인이었지만 많은 의사소통을 하며 학습한 것이 기억에 오래오래 남을 것 같습니다. 일주일에 한번 뿐이긴 했지만 금요일마다 교수님과 라이브웹미팅을 통해 답변을 주고받고 피트백을 받으며 점검하는 시간을 가졌던 것이 첫 1주차부터 현재 마지막 7주차까지 꾸준히 강좌에 참여할 수 있었던 이유중 하나였던 것 같습니다. 얼마전 마지막 웹미팅을 하며 마지막 보고서 제출과 기말고사에 대한 안내와 함께 도전학기를 마무리하는 말씀을 해주셨는데 그 때서야 학기가 거의 끝났다는 것이 실감이 났습니다. 교수님의 특별한 교육진행 방식은 저에게 정말 새로웠고 많은 도움이 되었습니다. 특히 이번과 같은 온라인 수업에 아주 적합한 수업방식이라는 생각이 들며 현재 코로나로 인해 온라인 수업이 지속되 고있는데 다른 온라인 수업들도 이번 강좌와 같은 교육방식을 채택하여 진행해나가면 좋겠다는 생각이 들었습니다. 7주간 인공지능에 대한 기초적인 수학지식들(선형대수, 통계학, 미적분학) 및 간단한 인공지능에 대한 개념을 배울 수 있었던 알찬 강좌 였습니다. 감사합니다!
[The End]