Name/Major/Year(학년): Ng Zhi Wei/Software/Nam상현/Ko재윤/전자전기/2,3학년
[PBL report Form Download(보고서 양식 다운로드)]
Korean (HWP) : http://matrix.skku.ac.kr/PBL/PBL-Report-Form-Korean.hwp <- Modify this for this semester
English (MS Word) : http://matrix.skku.ac.kr/PBL/PBL-Report-Form-English.docx <-- Modify this form for your semester
We have learned ‘Basic Mathematics(행렬, 도함수, 통계)’
http://matrix.skku.ac.kr/intro-math4ai/W1/
http://matrix.skku.ac.kr/intro-math4ai/W2/
http://matrix.skku.ac.kr/intro-math4ai/W3/
http://matrix.skku.ac.kr/intro-math4ai/W4/
http://matrix.skku.ac.kr/intro-math4ai/W5/
http://matrix.skku.ac.kr/intro-math4ai/W6/
http://matrix.skku.ac.kr/intro-math4ai/W7/
http://matrix.skku.ac.kr/intro-math4ai/W8/
http://matrix.skku.ac.kr/intro-math4ai/W9/
http://matrix.skku.ac.kr/intro-math4ai/W10/
http://matrix.skku.ac.kr/intro-math4ai/W11/
http://matrix.skku.ac.kr/intro-math4ai/W12/
http://matrix.skku.ac.kr/intro-math4ai/W13/
http://matrix.skku.ac.kr/intro-math4ai/W14/
To understand and can talk about the following concepts in 14 weeks(days) in this semester.
1. SVD(Singular Value Decomposition)
2. GDM(Gradient Descent Method)
3. Data and Covariance Matrix
4. PCA(Principal Components Analysis)
5. Rank Reduction and the role of SVD in PCA
6. BP(Back-Propagation) algorithm in ML(Machine Learning) and ANN(Artificial Neural Network)
*Sample Students HW/Report [예시, 이전 학기 학생들의 질문/답변/활동 기록]
Math4AI-Summary : http://matrix.skku.ac.kr/Math4AI-Summary/
2021 Fall PBL report by two Freshmen (English) : http://matrix.skku.ac.kr/2021-Math4AI-Fall-PBL/
2021 Summer PBL report (English) : http://matrix.skku.ac.kr/2021-Final-PBL-E/
2021 Summer PBL report (Korean) :http://matrix.skku.ac.kr/2021-Final-PBL/
2020 Fall PBL report (Korean) : http://matrix.skku.ac.kr/2020-Math4AI-PBL/ Basic Math for AI)
Sample 1 (도전학기 7주차 기말보고서) http://matrix.skku.ac.kr/2020-Math4AI-Final-pbl2/
Sample 2 (도전학기 7주차 기말보고서) http://matrix.skku.ac.kr/2020-math4ai-final-pbl/
Sample 3 (도전학기 4주차 중간보고서) http://matrix.skku.ac.kr/2020-Mid-PBL-2/
Sample 4 (도전학기 4주차 중간보고서) http://matrix.skku.ac.kr/2020-Mid-PBL-1/
English (Linear Algebra) English : http://matrix.skku.ac.kr/2018-album/LA-PBL.htm (선형대수학)
English (Linear Algebra) (Korean PDF file): http://matrix.skku.ac.kr/2015-album/2015-F-LA-Sep-Record.pdf
Calculus 1 PBL report http://matrix.skku.ac.kr/Cal-Book1/Calculus-1/ (미적분학 1)
Calculus 2 PBL report http://matrix.skku.ac.kr/Cal-Book1/Calculus-2/ (미적분학 2)
[ We could practice the our codes in http://matrix.skku.ac.kr/KOFAC/
○ {High School Math Review} Math Lab Review (실습실)
9th grade Math (중3 수학) http://matrix.skku.ac.kr/9th-Grade/
10th grade Math (고1 수학) http://matrix.skku.ac.kr/10th-Grade/
11th grade Math 1 (고2, 수학 1) http://matrix.skku.ac.kr/11th-Grade-1/
9th grade Math 2 (고2, 수학 2) http://matrix.skku.ac.kr/11th-Grade-2/
9th grade Math, Calculus (고3, 미적분) http://matrix.skku.ac.kr/12th-Grade-1/
9th grade Math, Statistics (고3, 확률통계) http://matrix.skku.ac.kr/12th-Grade-2/ ]
(1) State more than 10 Math Definitions and concepts what you learned in the first 14 weeks (days).
http://matrix.skku.ac.kr/intro-math4ai/
1. Polynomial functions: A function f(x) that is a polynomial of x is called a polynomial function. Most well-known polynomial functions are as follows. Linear function, quadratic function, nth order polynomial.
2. Rational functions: Rational functions f(x) are functions of x that are rational P(x)/Q(x) where P(x) and Q(x) are polynomials.
3. Vector and scalar: A quantity which does not depend on direction is called a scalar quantity. Vector quantities have two characteristics, a magnitude and a direction. Scalar quantities have only a magnitude.
4. Rules for Matrix Operations: A + B = B + A, 1A = A, (ab)C = aC + bC, …
5. Classification: Classification is the problem of identifying to which category a new data belongs, based on the given data's characteristics.
6. Gauss-Jordan elimination: Gaussian elimination is an algorithm for solving systems of linear equations. When we solve a system of linear equations using Gaussian elimination, the final form (of the augmented matrix) on the left side of the equation becomes the identity matrix.
7. Least Squares Problem: Least-squares problems fall into two categories: linear or ordinary least squares and nonlinear least squares, depending on whether or not the residuals are linear in all unknowns. The linear least-squares problem occurs in statistical regression analysis; it has a closed-form solution.
8. SVD: The SVD (singular value decomposition) always exists for any sort of rectangular or square matrices. It is the key feature of SVD. The singular value decomposition of m x n matrix A is the matrix factorization in the form of A = U x Sigma x V^T, where U is an m x m orthogonal matrix, V is an n x n orthogonal matrix, and sigma is an m x n rectangular (generalized) diagonal matrix with non-negative real numbers on the main diagonal.
9. Limits of Functions: An optimal solution is a solution in which a function defined in a set has a maximum or minimum value. The problem of finding an optimal solution involves generalized concepts and operations of derivatives. Techniques used to find an approximate solution help when we find an optimal solution.
10. Local Maximum and Minimum: The derivative can be used to determine whether a function increases or decreases based on the sign of slope at a point (or on a given interval). There might be a changing point of the slope (e.g, decreasing to increasing, increasing to decreasing). We call it a critical point, and the derivative of the function will be zero at a critical point. The second derivative can be used to determine whether a given function has a local maximum or minimum value at a critical point. Using the second derivative, we can 'check that a function has the absolute maximum or minimum on a given interval'.
1. Function : The relationship
in which the value of the two variables
and
is uniquely determined
according to the value is called a function ![]()
2. Domain : For a function
, the domain of
is the set
which
all of the input of the function is constrained.
3. Range :
is called the range of
where
is a co-domain of
.
4. Polynomial function : A
function
that is a polynomial
of
is called a polynomial function.
5. Rational function : ational functions
are
functions of
that are rational
where
and
are polynomials.
6. Vector operations :
(1) Scalar multiplication: For a scalar
and a vector
in
,
, [
]
(2) Vector addition: For two vectors
and
in
,
, [
]
7. Transpose of a matrix : The transpose of a matrix is
simply a flipped version of the original matrix. For example,
.
8. Diagonal matrix : A diagonal matrix is a matrix in which the entries outside the main diagonal are all zero.
9. Symmetric matrix : A
symmetric matrix
is a square matrix that is equal
to its transpose.
10. Inverse matrix : An
matrix
is called invertible
(also nonsingular) if there exists an
matrix
such that
. If this is the case,
then the matrix
is uniquely determined by
and is called the
inverse of
, denoted by
.A square matrix that is not
invertible is called singular (noninvertible). In this case, there is no
, such that
.
11. Norm : For a vector
,
the size of
is called a 'norm’ and defined by
(norm, 2-norm).
The distance of
and
can
be written as
.
12. Cosine Similarity : Using the angle (theta,
) of two vectors to measure the similarity
between two data. The angle between two vectors can be defined with an inner product and we can measure the
similarity with the cosine value of
by using an inner
product.

13. Inner product : The inner product between two vectors
and
is defined
as follows:
![]()
Also,
.
So,
and
(
).
This
is called the angle between two vectors.
14. Augmented matrix : Any system of linear equations can be expressed in the form of matrices.
And it is possible to express as :
,
,
, Ax=b.
The matrix
is
called the
coefficient matrix of the given system of linear equations
.
In linear algebra, an augmented matrix is a matrix obtained by appending the
columns of two given matrices, Given the matrices
and
where the augmented matrix ![]()
.
15. Gauss-Jordan Elimination : Gaussian elimination is the
process of simplifying the augmented matrix
as shown above to find the RREF
of
by changing(simplifying or
replacing) the coefficient matrix to RREF(
), diagonal matrix, or identity matrix.
16. Least Square Problem : The least-squares method can be used to find out a straight line that best represents the given data.

17. Projection :
![]()
18. LU decomposition : For a square matrix
,
-decomposition
refers to the factorization of
, with proper row and/or
column orderings or permutations, using a product of two factors. Two factors
are a lower triangular matrix
and an upper triangular
matrix
. In the
mathematical expression,
. If
is decomposed as
, the linear equations
can be written
as
, Then we can solve
and then solve the
equation
for finding
of
.
19. QR decomposition : The
-decomposition is the
factorization of a matrix
into a product
with an orthogonal matrix
and an upper triangular
matrix
.
20. SVD(Singular Value Decomposition) : The singular value
decomposition of
matrix
is the matrix
factorization in the form of
, where
is an
orthogonal matrix,
is an
orthogonal matrix, and
is an
rectangular (generalized) diagonal matrix with
non-negative real numbers on the main diagonal.
![]()
![]()

![]()
21. Limits of Functions : The function has
a limit L at an input p, if f(x) gets closer and closer to L as x moves closer
and closer to p. "As
approaches
,
converges to
"
and denoted by
. This
is
called the limit of
.
We say
diverges if the limit does not exist.
22. Derivative : For a point
in the domain of the
function
, if the following limit
![]()
![]()
exists, then the function
is said to be differentiable
at
. This limit value is
called the
derivative(differential coefficient) of function
at
and is denoted by
.
23. Differentiable : When
is differentiable at
every point
in an interval,
is
called differentiable in that interval.
24. Local maximum and Minimum : A function
has a local maximum (resp. a local minimum)
at
if
satisfies
(resp.
) for all
in a neighborhood of
.
25. Extreme point : A local maximum or local minimum is called an extreme value, and a point at which a function has a local maximum or local minimum.
26. Critical point : A point
where
the is zero or
does not exist.
27. Fermat’s theorem : If
has
an extreme value at
, then
or
does not exist.
(2) State more than 10 things that you know/can/find ... after you studied the first 14 weeks (days).
1. Sketch graphs of polynomial functions
2. Make a composite function
3. Find solutions of equations
4. Perform matrix operation by applying operations on vectors and matrices
5. Check inverse and transpose of a matrix
6. Find inner product and angle of two vectors
7. Find system of linear equations
8. Find SVD of a matrix
9. Find derivative of a differentiable function using while loop
10. Find local maximum, local minimum, absolute maximum, and absolute minimum of a function
1. How to use Sage
Sage를 이용하여 직관적으로 알기 어려운 그래프 모양과 함수의 근을 빠르게 알 수 있고, matrix의 RREF form 계산이나 decomposition 등 matrix에 대한 계산도 빠르게 하는 법을 새롭게 알게 되었습니다. 이를 통해 복잡해 보이는 함수 또는 matrix에 대해서 자신감을 가지게 되었습니다.
2. About similarity
Distance similarity란 데이터 값들 간의 Euclidean distance를 구해, 그 스칼라값으로 similarity를 판단하는 방법입니다. point A(a1, a2), point B(b1, b2)의 Euclidean distance는 공식으로 { (a1-b1)^2 + (a2-b2)^2 }으로 나타낼 수 있습니다.
Cosine
similarity란 데이터 값들 사이의 각도를 구해, 그 값으로 similarity를 판단하는 방법입니다. 두 데이터 벡터 사이의
각도를 구하기 위해 내적의 특성을 이용할 수 있는데,
= (inner product with vector a and b) / |a||b| 로 나타낼
수 있습니다. 두 가지 similarity 방식으로 데이터
간의 유사도를 판단하는 방법들에 대해서 새롭게 알게 되었습니다.
3. About Transpose form and inverse form of matrix
Transpose의 특성 중 (AB)^T = B^T*A^T 라는 특성과, Inverse의 특성 중 (kA)^(-1) = (1/k)*A^(-1), (AB)^(-1) = B^(-1) * A^(-1) 이라는 특성, 그리고 두 가지가 혼합된 (A^T)^(-1) = (A^-1)^T라는 특성 모두 일반 다항식 또는 일반 matrix 연산에서는 볼 수 없는 특성이기에 처음에는 낯설게 느껴졌습니다. 하지만 Discussion을 반복하고, Comment를 남기는 과정에서 위 특성들에 대해 이해하고 암기하게 되었습니다.
4. RREF using Gauss-Jordan Elimination
RREF form에 대해서 pivot point 등의 개념을 이용하여 설명하는 방식으로 이해하고 있었습니다. 강의를 통해 RREF form은 Augmented matrix form에서 Gauss-Jordan elimination을 통해 기존 coefficient matrix 부분을 identity matrix 꼴로 나타날 때까지 행해준다면, RREF form이 된다는 사실에 대하여는 처음 알게 되었습니다.
5. Projection
Projection of x onto a는 ta (where t=(inner product with a and x) / (inner product with a and a) ) 로 표현가능합니다. 그동안은 단순한 기하학적 의미만 알고 있었는데, 식과 같이 이해하다보니, projection이 least-squared problem을 이해시키는데 큰 도움을 주었다고 생각합니다.

6. LU decomposition, QR decomposition
LU decomposition이란 square matrix를 lower triangular matrix와 upper triangular matrix로 decompose 시킨 것입니다.
QR decomposition이란 mxn matrix를 orthogonal matrix와 upper triangular matrix로 decompose 시킨 것입니다.
이 두가지 decomposition에 대하여 처음 알게 되었고, 어떤 함수든지 특정한 form으로 decompose 된다는 것에서 신기함을 느꼈습니다.


7. SVD (Singular Value Decomposition)
SVD 란 mxn matrix를 mxm orthgonal matrix, mxn diagonal matirx, nxn orthogonal matrix로 decompose 한 것을 뜻합니다. 이 decomposition에 대한 개념에 대해서도 처음 알게 되었지만, QnA를 통해 SVD의 데이터 압축이라는 특성에 대해서도 새롭게 알게 되었습니다.

8. Fermat’s Theorem
만약 함수 f(x)가 범위 ( a, b ) 내에서 extreme value를 가지고 있다면, 그 지점에서 f’(c)=0 이거나 f’(c)가 존재하지 않다는 이론입니다. 함수가 local maximum 또는 local minimum을 가진다면 그 지점에서 미분함수의 값이 0이거나 뾰족한 함수일 것이라는 것은 추론이 가능했지만, 이름이 있는 이론이라는 사실은 처음 알게 되었습니다.
9. Gradient Descent Method (GDM)
Gradient
Descent Method (GDM)란 함수의 local minimum을 구하기
위한 방법 중 하나입니다. 함수의 기울기가 tolerance
보다 작아질
때까지 x를
![]() |
-> 



Open Problem 4


Open Problem 5


Open Problem 6


Open Problem 16


Day 7 Open Problem 1


[Final OK by SGLee] open problem 4 solution by 정운섭, 황세진, 응즈웨이 (finding solutions to various equation using sage) and question
응즈웨이(2019####51)12월 19일 오전 6:16
Thank you for your answer for Open Problem 4. Since the graph will have infinite x solutions as the graph move towards negative infinity, I will look for other x values from interval -5 to -10. Thanks!
Open Problem 14 by 안성준
응즈웨이(2019####51)12월 21일 오후 1:57
I understood. Thank you very much! :)
Open Problem 15 by 안성준
응즈웨이(2019####51)12월 21일 오후 1:59
Thank you very much for your contribution! I understood your work. Thanks! :)
ALL Must read This!! [Sample, Re-Finalized OK by SGLee] Open Problem 16 [Re-Finalized by Ng Zhi Wei(응즈웨이), 이규식, 남상현, 이예진, 고윤진, 고재윤, 도경은, 황세윤, 신유정, 박우현, 이예진, 남상현, 도경근, 이규식] (Solutions and Comments) Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.
Open Problem 1 by 남상현
응즈웨이(2019####51)12월 21일 오전 00:22
Hi! Thank you very much and your codes work perfectly fine! :) However, just for sharing, I used a while loop to tackle this problem as I find it more efficient that way. If interested, do take a look at my post at "Day 7 Open Problem 1 by Ng Zhi Wei (using while loop)". Thanks!
[News] The Future of Jobs in the Era of AI (인공지능 시대의 진로와 직업)
응즈웨이(2019####51)12월 21일 오후 12:52
I am curious if is it possible for a Bachelor degree holder to find an AI-related job in Korea? Or do most AI companies in Korea require a Master or PhD degree as a requirement? Thanks!
[Final OK by SGLee] Open Problem 16 Solution by 남상현 (SVD를 동한 데이터 압축의 이해) with 도경근, 고재윤, 황세진, 윤상수, 신유정, 박우현, .남상현, 이규리, 문태의, 이예진
[Final OK by SGLee] Open Problem 16 Solution by 남상현 (SVD를 동한 데이터 압축의 이해) with 도경근, 고재윤, 황세진, 윤상수, 신유정, 박우현, .남상현, 이규리, 문태의, 이예진
도경근 학우님과 고재윤 학우님의 Finalized Open Problem 16을 보고 쉽고 정확하게 SVD와 이를 이요한 데이터 압축에 관해 이해할 수 있었으며, 이에 관련하여 좀 더 깊게 생각해 보게 되었습니다. 데이터 압축에 관하여 좀 더 세부적인 개념과 이해를 돕고자 Open Problem 16을 finalized해보았습니다.
우선 SVD를 응용하여 데이터의 연산량을 줄여 데이터 압축을 할 수 있는데, 이는 truncated SVD로의 변환을 통해 응용할 수 있습니다.
m x n matrix의 SVD의 경우, m이 n보다 작거나 같다면 Σ행렬의 마지막 행에는 singular value의 마지막 값이 들어가게 됩니다.
하지만, m>n이라면 m x n size의 Σ행렬의 아랫부분에는 0으로 구성된 성분이 들어가게 됩니다. 이를 Full SVD라고 합니다.
(Image by : http://matrix.skku.ac.kr/2020-Math4AI-Final-pbl2/ )

singular value의 갯수를 s라고 합시다. 이 때 Σ행렬은 밑에서부터 m-s 개 만큼의 행이 0으로 구성됩니다. 행렬의 곱을 생각해본다면, U와 Σ행렬을 곱할 때 이 부분은 제거하여도 상관 없는 부분, 즉 크기가 0인 빈 데이터가 됩니다. 예시를 들면 다음과 같습니다.

-> 원래 행렬이 5x3 size이며 singular value가 3개이므로 S행렬의 아래 두 행이 0이 되었습니다. 즉, U행렬의 오른쪽 두 열을 지우고 계산하더라도 SVD는 같은 값이 나오게 됩니다. 이렇게 하여 빈 데이터를 지운 SVD를 Thin SVD라고 합니다.

아직까지는 SVD의 값이 일치합니다. 또한 값이 0인 singular value가 존재한다면 이 역시 제거할 수 있습니다. 가령 2번째 singular value의 값이 0이라면, S행렬의 2번째 열과 2번째 행이 모두 0으로 구성되어 있으므로, U행렬의 2번째 열을 제거할 수 있고, V^T행렬의 2번째 행을 제거할 수 있습니다.
이렇게 하여 0인 singular value까지 모두 지운 SVD를 Compact SVD라 하며, 아직까지는 빈 데이터 껍데기만 제거하여 실질적으로 데이터 크기가 압축되진 않았습니다.

그리고, 본격적으로 데이터를 압축하는 방법은 Truncated SVD를 이용한 방법입니다. Singular value를 내림차순으로 나열하여 SVD를 만든다면 오른쪽 아래로 내려갈수록 singular value의 값이 감소하며, 이들은 제거되어도 SVD의 값에 큰 영향을 주지 않습니다. 이렇게 하여 0이 아닌 singular value까지 제거해준 SVD를 Truncated SVD라 부릅니다.

이러한 방법을 데이터 압축에 응용할 수 있으며, singular value를 제거하여 노이즈 역시 감소시킬 수 있습니다.
다음 6x5 행렬을 통해 예시를 만들어 보았습니다.

우선 Full SVD를 구하면 다음과 같습니다.


0인 singular value는 없으므로, S행렬의 마지막 행만 제거하여 Compact SVD를 구해보았습니다.


SVD의 값은 데이터 손실 없이 일치하는 것을 확인할 수 있습니다. 이제 5번째 singular value(1.306)를 제거하여 Truncated SVD를 구해보겠습니다.


다음 truncated SVD를 통해 데이터를 압축할 수 있습니다. 여기서 데이터를 압축함이라 함은, U, S, V^T 행렬을 일렬로 하여 크기를 구했을 때 그 값이 감소했음을 의미합니다.
즉, 위와 같은 경우에선 Full SVD에서의 세 행렬이 각각 6x6, 6x5, 5x5 size로서 36+30+25=91Byte라고 할 수 있습니다.
하지만, Truncated SVD의 크기는 6x4+4x4+4x5=60Byte로서, 66% 정도의 메모리만을 사용하였지만 원래의 데이터와 거의 일치함을 확인할 수 있습니다.
해당 내용을 visualize하여 이미지 파일을 통해 확인해보고 싶었으나, 아직 sage 코딩에 대한 이해도가 부족하여 직접 해보지 못했습니다.
하지만 이는 이상구 교수님의 선형대수학 연구실에서 제공하는 "Matrix Decomposition and Image Processing via MATHEMATICA" 논문을 통해 정확하고 자세히 이해할 수 있었으며, 해당 논문을 통해 학우분들 모두 SVD와 데이터 압축 및 노이즈 캔슬을 쉽게 이해하실 수 있을 거라고 생각합니다.
http://matrix.skku.ac.kr/sglee/03-Note/IP/ImageProcessing.htm
혹시 잘못된 점이나 추가하고 싶으신 점이 있으시다면 지적 부탁드립니다!
Finalized OK by SGLee [Finalized by 도경근, 고재윤 . . . 이예진] Open Problem 16 Solution
저는 도경근 학우님의 open problem 16 solution 글을 보고 굉장히 잘 쓰셨다는 생각이 들었고, 새로운 내용에 대해서 생각해보게 되었습니다. SVD 개념이
어려우신 학우님들의 도경근 학우님께서 작성하신 내용에 대한 이해를 도와드리기 위하여 이 문제에 대해 finalize 하게 되었습니다.
먼저, 선형 변환 (linear transformation)에 대한 개념이 SVD의 이해에 도움이 될 것이라고 생각하여, 선형 변환에 대해 설명드리겠습니다.
선형 변환이란 간단히 말해, 자료의 분포는 동일하게 하되 어떤 변수를 사칙연산을 통해 다른 값으로 변환하는 것을 뜻합니다.
여기서 변수는 vector, 사칙연산은 matrix를 통해 다른 vector값으로변환할 수 있습니다.
http://matrix.skku.ac.kr/2012-Album/13.html 이 링크는 교수님께서 올려주신 자료 중 선형 변환에 해당하는 내용입니다.
이번에는 아래의 2차원 그림에 대해서 살펴보도록 하겠습니다. 검은 원은 선형변환 하기 전의 x vector (x) 와 y vector (y) 의 모습이고, 빨간 원은
coefficient matrix A를 곱한 A*x vector (Ax) 와 A*y vector (Ay)의 모습입니다.

y가 x에 대하여 90도가 되도록 하는 vector라면, 선형 변환 하기 전의 상태에서 y는 x에 대해 모든 direction에서 90도를 유지합니다.
하지만, 선형 변환이 일어난 Ax 와 Ay 사이의 각도는 모든 direction에서 90도라고 보장하지 못합니다.
위 그림을 가지고 SVD의 식을 이해할 수 있습니다.
우리는 강의를 통해 SVD 식을 A=U*∑*V^T로 배웠습니다. 위 그림을 가지고 각각의 연산자에 대해 살펴보도록 하겠습니다.
A를 coefficient matrix
V는 선형 변환 전 서로 직교하던[ x,y] 열벡터
U는 Ax, Ay가 서로 90도를 이루는 direction에서 각각의 단위 열벡터 [u1, u2] ,
∑를 scaling factor 역할을 하는 diagonal matrix라고 두겠습니다.
그렇다면 AV=∑U 라는 식은 션형 변환의 관점에서 생각해보면, 변환 전 직교했던 두 벡터가 변환 후에도 직교할 때의 direction을 찾는 식이 됩니다.
V는 orthogonal matrix 이므로 A=U*∑*V^T 로 나타낼 수 있고, 이는 강의 시간에 배웠던 SVD의 형태가 됩니다.
아래 사진은 도경근 학우님이 작성하셨던 Open Problem 16 solution 입니다.
Open Problem 16 (Solution) by 도경근
|
◩ Open Problem 16 |
Find the SVD for a matrix from the other textbook by using the codes above.
R을 사용하여 martix의 svd값을 찾아보고 분석을 해보았습니다.

특잇값 분해는 데이터 정보를 압축해주는 기능이 있습니다. 여기서 확인할수 있는 점은 특잇값 벡터 d의 첫번째 두번째 세번째 원소값에 비하여 4번째 원소 값이 비교적 작다는 것을 알수 있습니다.따라서원래 데이터의 3/4만큼의 데이터인 처음 3개의 특잇값과 U, V의 1~3열만 사용하여도 원래 데이터에 대한 대표성이 충분하고 정보 손실이 작다고 판단할수 있습니다.
이것이 실제로 그런지 한번 확인 해보기 위해서 처음 3개의 특잇값과 U, V의 1~3열만 사용하여 matrix를 reconstruct 해보았습니다.

보시다시피 원래 데이터와 거의 유사하다는 점을 확인 할 수 있었습니다.
또한 처음 2개의 특잇값과 U, V의 1~2열만 사용하여 matrix를 reconstruct 해보았습니다

이 역시 원래 데이터와 유사하지만 중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습이 눈에 띕니다.
이번 HW에서는 matrix의 svd값을 구해보고 그것이 어떤 의미를 가지고, 어떻게 쓰일수 있을지 고민해보는 시간을 가질수 있어서 유익했습니다. 감사합니다.
6개의 댓글
이상구(LEE SANGGU)12월 16일 오후 10:30
Very good^^ Share your text code, so others can check your output amd improve it.
도경근(2018####55)12월 17일 오후 4:08
m1 <- c(0,0,4,0,0,0,1,0, 0,0,0,2,0,0,5,0, 0,1,0,0,1,1,1, 0,3,1,0,0,0,2,2,1) dim(m1) <- c(4,8) m1 cross_svd <- svd(m1) str(cross_svd) cross_svd$d cross_svd$u cross_svd$v round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) round(cross_svd$u[,c(1,2,3)] %*% diag(cross_svd$d[c(1,2,3)]) %*% t(cross_svd$v[,c(1,2,3)])) round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) text code 입니다
고재윤(2020####97)12월 17일 오후 7:43
학우님의 코딩 방식이 처음보는 방식이어서 처음엔 낯설었는데, text code가 매우 간결하게 써진 것을 보고 놀랐습니다. 제 방식대로 했다면 학우님의 몇 배 길이의 코딩을 했을텐데, 코딩공부도 더 해야겠다는 생각이 들었습니다. 또한, 학우님께서 하신 문제풀이 중 U, V의 1,2,3번째 column으로 다시 A 를 조합하여 원래 A와 비교하는 방식이 매우 흥미로웠습니다. 학우님께서 U,V의 1,2 번째 column만을 이용하여 A를 재조합 하셨을 때 '중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습' 이라고 서술해 주셨는데 마지막 행의 데이터가 왜 가장 중요할 가능성이 높은 데이터인지 여쭈어봐도 될까요? 좋은 problem solution 감사합니다!!
이상구(LEE SANGGU)12월 17일 오후 8:58
12일 차 rank reduction 에서 배울 내용 입니다^^
고재윤(2020####97)12월 17일 오후 10:17
답변 감사합니다 교수님!!
황세진(2015####21)12월 17일 오후 11:22
주어진 데이터를 통해 합리적인 추론을 통해 벡터값이 가장 작은 곳을 제외하고 계산했을 때에 원래 데이터에서 손실이 많이 나지 않는 것을 소프트웨어를 통해 간결하게 확인시켜주셔서 한눈에 이해가 되었습니다! 도움이 많이 되었습니다.
도경근 학우님께서는 중요성이 가장 낮은 U와 V의 column을 제거하고 재조합한 결과, decomposition 하기 전의 matrix와 비슷한 값이 나옴을
보여주시면서 SVD의 특성에 대해 작성해주셨습니다. 이 방식이 왜 성립하는지 알기 위해 SVD의 식을 다시 살펴보도록 하겠습니다.
아래 사진은 SVD 식 A=U*∑*V^T 을 보다 자세히 서술한 식 입니다.

앞서 살펴보았듯이, U*V^T의 성분의 크기는 모두 -1에서 1 사이의 값이기 때문에 ∑가 마치 scaling factor와 같은 역할을 한다고 볼 수 있습니다.
∑는 diagonal matrix이기 때문에 A는 σ1*u1*v1^T +σ2*u2*v2^T*+..... 로 쪼개서 나타낼 수 있습니다.
이 때 k번째 σ 값이 다른 σ 값들에 비해 작은 값이라면, 그 부분은 A라는 데이터를 이루는데에 중요성이 낮다는 것을 뜻함을 알 수 있습니다.
따라서 중요성이 낮은 부분, 즉 σ 값이 상대적으로 작은 column은 A를 이루는데 큰 부분을 차지하지 않을 것이고, 이 부분을 제외하고 A를 계산해도
비슷한 값이 나올 것이라고 생각할 수 있습니다.
이런 SVD의 특성을 이용하면 중요성이 낮은 데이터를 제거함으로써, 압축된 데이터를 표현할 수 있을 것입니다.
반대로, 중요성이 높은 데이터 몇개를 가지고 원래 데이터를 부분복원 하는 것이 가능할 것 같습니다.
7개의 댓글
이상구(LEE SANGGU)12월 18일 오전 5:21
Good job. Great. 다른 학생들도 모두 읽어야 할 여러분 동료의 SVD 설명 내용입니다.
윤상수(2020####53)12월 18일 오전 10:42
선형 변환을 함께 설명해주신 것이 이해에 한결 도움이 되는 것 같습니다. 감사합니다.
신유정(2016####90)12월 18일 오후 2:35
svd 이해에 막혀 있었는데, 이해하는데 큰 도움이 되었습니다. 감사합니다!
박우현(2016####31)12월 18일 오후 2:36
SVD를 이해하는데 도움이 되었습니다 감사합니다
이예진(2017####54)12월 18일 오후 4:01
인터넷으로 뒤져가며 어렴풋하게 이해한 선형변환, SVD 등의 내용을 이렇게 한 문서에 일목요연하게 정리해주셔서 정말 도움이 크게 되었습니다. 감사합니다 !
남상현(2018####17)12월 18일 오후 5:49
시각적 효과와 더불어서 너무 간결하고 쉽게 SVD에 관해 정리해주신 것 같습니다. 감사합니다!
도경근(2018####55)12월 18일 오후 7:17
안녕하세요 학우님. 제가 작성해주신 글을 잘 finalize 해주셔서 감사합니다. 마지막 행의 데이터가 왜 중요하다고 질문을 해주셨는데, 이부분에서는 제가 설명이 부족했던것 같습니다. 제가 하고싶었던 말은 '데이터를 복원했을때 마지막 행이 아예 사라졌다. 이 데이터로 어떤 insight를 뽑아낼건지에 따라서 그 결과에 안좋은 영향이 있을 수 있다' 입니다. SVD 에 대해서 정성스럽게 요약해주시고 추가적인 설명을 해주셔서 감사합니다. 좋은 연말 보내십시오.
9개의 댓글
남상현(2018####17)12월 18일 오후 8:29
M = matrix(RDF,[[1, 2, 1, 4, -2],[2, 4, 4, -6, -8], [1, 2, -2, 4, 6], [-2, -1, 1, 4, 3], [-2, 0 ,0, 1, 1], [2, 5, 4, -3, -1]]) U, S, V = M.SVD() # A = U*S*V' # A's SVD Ut = matrix(RDF, [[U[i][j] for j in range(4)] for i in range(6)]) St = matrix(RDF, [[S[i][j] for j in range(4)] for i in range(4)]) Vt = matrix(RDF, [[V[i][j] for j in range(4)] for i in range(5)]) show("U = ") show(Ut.n(digits=4)) show("S = ") show(St.n(digits=4)) show("V = ") show(Vt.n(digits=4)) show("M = ") show(M) show("USV^T = ") show(Ut*St*Vt.transpose().n(digits=4)) Truncated SVD를 구할 때 사용한 코드입니다!
이상구(LEE SANGGU)12월 18일 오후 8:42
잘 했습니다. 서로 다르게 생각하는 부분이 있어 보입니다. 결론은 마지막행의 데이터가 특별히 중요하지는 않습니다. 분석에서는 큰 특이값들과 그에 대응하는 singular vectors 가 다른 것 보다 영향을 더 준다 정도로 이해하시고. 더 자세한 것은 12-13 th day 에 배울 rank reduction 과 PCA 에서 SVD 의 이용 에서 배울 것 입니다.
남상현(2018####17)12월 18일 오후 8:49
네 감사합니다!
도경근(2018####55)12월 18일 오후 9:45
잘 정리해주셔서 감사합니다 학우님. SVD에 대해 이해하는데 도움이 많이 되었습니다.
고재윤(2020####97)12월 18일 오후 9:49
설명해주신 모든 내용에 대응되는 예시들을 코딩해주시고, 알맞은 그림으로 식을 표현해주시니 제가 작성한 글보다 SVD에 대해서 더 잘 이해할 수 있는 글인 것 같습니다!! 교수님께서 말씀하신 12-13th day에 배우는 내용에 대해서도 나중에 토론할 수 있었으면 좋겠습니다. 좋은 글 감사합니다!!
이규리(2018####45)12월 19일 오전 7:47
SVD를 그저 수학적 개념에서 끝나지 않고 데이터에서는 이를 어떤 식으로 쓸 수 있는지, 어떻게 이해하면 되는지를 자세히 설명해주셔서 이해에 많은 도움이 되었습니다. 감사합니다!
문태의(2016####21)12월 19일 오후 4:29
SVD를 이해하는데 큰 도움이 되었습니다! 감사합니다.
정운섭(2018####88)12월 20일 오전 00:54
이 부분은 몰랐던 부분인데 이렇게 잘 정리해주셔서 SVD에 대해서 더 깊이 이해할 수 있게 되었습니다! 감사합니다!
이예진(2017####54)12월 21일 오후 12:02
덕분에 SVD에 관한 더욱 구체적 이해를 할 수 있었습니다. 감사합니다 !
그리고 (첨부한) PBL 보고서에 <자기평가>, <동료평가> + <자신이 QnA에 업로드한 Question and Answer (Reply)를 모아서> 주어진 첨부 형식에 맞추어 내용을 채워서 Due Day 전에 제출하시오. 양과 질을 평가하여 해당성적을 부여합니다. [The First or The Best!]
그리고 중간고사와 기말고사에 여러분이 학습하고 PBL 보고서에 제출한 내용을 반영합니다.
[HW1] Motivation and Problem 1 (Solution) by 강민지, [자기소개/수강동기/코드실행/학습요약/질문]
작성자 : 강민지(2021####12)작성일 : 12월 13일 오후 8:33
조회수 : 64
첫 번째로 기억에 남는 글은 강민지 학우님께서 작성하신 글입니다. 강민지 학우님께서는 가장 먼저 open problem solution을 작성해주시고, 교수님께 comment 받은 부분을 정리하셔서 수정해주신 학우님이기 때문에 기억에 남았습니다. 학우님 덕분에 1일차에서도 새로운 것들을 배울 수 있었고, 수업 방식을 이해하는데 큰 도움이 되었다고 생각합니다.
Final OK by SGLee [Re-Finalized by 정운섭, 남상현, 고재윤, 이규식 SGLee (problem 6) ] 가역 가능한 matrix 중에서 is_invertible() 의 값이 false 가 나오는 경우에 대하여
작성자 : 정운섭(2018####88)작성일 : 12월 16일 오후 1:49
조회수 : 34
두 번째로 저의 기억에 남고, 의미있는 정보를 얻었다고 생각되는 글은 정운섭 학우님께서 작성하신 글입니다. 정운섭 학우님께서는 random_matrix 명령어에 랜덤한 유리수 값을 집어넣으려는 과정에서 문제를 겪으시고, 질문 글을 올리셨습니다. 질문 글을 통해 오류의 원인을 알아내셨고, 그 오류를 해결하는데 쓰인 명령어 뿐만 아니라 교수님께서 올려주신 강의 자료에 있는 명령어도 정리하여 Finalize 해 주셨습니다. 정운섭 학우님께서 올려주신 질문 글을 읽고, 제가 직접 코딩해본 결과, 저 또한 같은 오류가 나타난다는 것을 알게 되었습니다. 그래서 저는 단순히 ‘random_matrix’ 명령어는 오직 정수값만 다룰 수 있다고 여기며, 결론을 내려고 하였습니다. 하지만 정운섭 학우님께서는 포기하지 않으시고 finalize까지 완성하셨습니다. 저는 이 글을 통해 단순히 명령어들을 알았을 뿐만 아니라 어렵고 잘 모르겠다고 포기하지 말자, QnA 게시판을 통해 더 좋은 학습 효율을 만들고, 더 많은 내용을 알아낼 수 있다 라는 결심을 하게 되었습니다.
Finalized OK by SGLee [HW4] Problem 10 (Solution) by 윤상수, 고재윤,우건주, 이예진, 이규식, 남상현,
작성자 : 윤상수(2020####53)작성일 : 12월 16일 오후 4:49
조회수 : 45
세 번째로 기억에 남는 글은 윤상수 학우님께서 작성하신 open problem 10 solution입니다. 윤상수 학우님께서는 cos similarity를 활용할 수 있는 예시로 BMI 지수를 답으로 제시하셨습니다. 저는 cos similarity에 대해 공부하면서, 현실에서 이 이론을 사용할 수 있을 만한 경우를 찾기 힘들다고 생각하던 도중 이 글을 보게 되었습니다. 그 글을 보고 BMI 지수처럼 비율을 결과값으로 나타내는 데이터는 cos similarity를 적용하기 적합한 데이터 종류라는 것을 깨달았고, BMI 지수의 similarity를 예시로 들어 직접 finalize도 하게 되었습니다. 윤상수 학우님께서 작성하신 글을 보고, 제가 생각하고, 정리하는 과정이 제가 처음으로 이번 수업에서 탐구적인 자세를 보여준 것이라고 생각되기 때문에 이 글이 저에게는 meaningful 하다고 생각합니다.
ALL Must read This!! [Sample, Re-Finalized OK by SGLee] Open Problem 16 [Re-Finalized by Ng Zhi Wei(응즈웨이), 이규식, 남상현, 이예진, 고윤진, 고재윤, 도경은, 황세윤, 신유정, 박우현, 이예진, 남상현, 도경근, 이규식] (Solutions and Comments) Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.
작성자 : 응즈웨이(2019####51)작성일 : 12월 19일 오후 8:38
조회수 : 71
네 번째로 기억에 남는 글은 응즈웨이 학우님께서 finalize 해주신 open problem 16에 대한 내용입니다. open problem 16은 SVD에 대한 내용으로 저를 포함한 여러 학우님들께서 이 문제에 대해 finalize 해주셨고, 응즈웨이 학우님께서 마지막으로 4X5 matrix의 SVD를 구하시면서 지금까지 토론된 내용을 한눈에 볼 수 있도록 모두 정리해 주셨습니다. 저는 다른 학우님들이 SVD와 그 활용에 대해 더 잘 이해하셨으면 하는 마음으로 SVD의 decomposition 성분에 대해서 설명하고, 데이터 압축의 특성을 갖는 이유등을 설명하며 finalize 하였습니다. 그 결과, 제 글을 읽고 SVD에 대하여 더 토론하시고 finalize 해주신 학우님들이 계셔서 뿌듯함을 느꼈습니다. day 9까지 활동 중, 교수님께서 의도하신 수업 방식을 가장 잘 활용한 것이 이 최종 finalize 된 글이고, 그 과정이라고 생각합니다. 이 글의 구성 성분으로 제가 쓴 글이 학우님들의 토론에 도움이 된 것 같아 뿌듯하고, 기억에 남습니다. 이렇게 토론을 통해 얻은 SVD에 관한 내용은 오랫동안 기억에 남을 것이라고 생각합니다.
[Finalized by 정운섭, SGLee, 김지훈, 고재윤, 우건주, 안성준, 인유진, 윤상수]Open problem 2 solution by 정운섭 (3변수 함수의 Find Gradient 찾는 법, Find Critical points 임계점을 찾는법.)
작성자 : 정운섭(2018####88)작성일 : 12월 21일 오후 5:58
조회수 : 30
open problem 2는 함수를 통해 local maximum, local minimum, absolute maximum, absolute minimum을 찾는 문제였습니다. 정운섭 학우님께서는 복잡한 함수로부터 그래프를 plotting 하시고, critical point를 구함으로써 문제를 푸시고, 결론 부분에 ‘이러한 방법으로 하는 것은 답은 구해지나, 그 과정이 너무 복잡하고 시간이 오래 걸리는 것 같습니다. 왜냐하면 모든 df(x)=0이 되는 x값에 대하여 하나하나씩 다 구해보아야 하기 때문입니다.’ 라고 결론내리셨습니다. 저는 GDM은 함수의 local minimum, local maximum을 구하는 또 다른 방법이다 라는 정도만 생각했었는데, 정운섭 학우님의 결론을 읽고 난 후 GDM의 강점에 대해 배우게 되었습니다. 또한 저는 GDM으로부터 또 다른 생각을 할 수 있었습니다. 만약 인간이 계산을 모두 해야한다면, GDM은 도함수로부터 extreme point를 찾는 방법보다 훨씬 비효율적인 방법일 것입니다. 하지만 단순 계산을 빠르게하는 컴퓨터 덕분에, GDM은 local minimum, local maximum을 찾는 강력한 도구가 될 수 있었다고 생각합니다. 이처럼 저는 인간 기준에서 간단한 수학이 아닌, 컴퓨터의 연산 기준에서 간단한 수학이 앞으로 발전되고 연구될 수학이라는 생각이 들었습니다. 정운섭 학우님께서 공유해주신 open problem 2의 결과 덕분에, 저는 앞으로 어떤 수학을 배워야 할까 라는 생각을 해보게 되었고, meaningful한 글이었다고 생각합니다.
Fill in the below for your self-assessment and your project/term paper.
(A) Briefly describe your contributions through Q&A for yourself and fellow students in our "Basic Math4AI" classe!
(A1) Quantity :
- Check your participation numbers in QnA for each week (Saturday to Friday):
*** day5 = Friday+saturday+sunday
QnA 게시판에 ‘고재윤’을 검색하여 나온 결과로 채웠습니다.
Week(day) 1: 1 Week 2: 3 Week 3: 4 Week 4: 8
Week 5: 3+7+1 =11 Week 6: 3 Week 7: 6 Week 8: 3
Week 9: 2+ Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
total 41
- Total number of sessions (Q: 1 , A: 37 , Others: 3 )
※ I questioned using comment, so official question number is less than I actually questioned
- Number of online attendances: ( 17 / 17 )
- Off-line attendance and number of absences: ( 2 - webex / 2 - webex ) (0 absence)
· Others Include some announcements or course related posts.
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 0(12/13) Week 2: 5 Week 3: 4 Week 4: 8
Week 5: 5 Week 6: 5 Week 7: 3 Week 8: 2
Week 9: 4 Week 10: 3 Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 8 , A: 28 , Others: )
- Number of online attendances: ( 24 / 24 )
- Off-line attendance and number of absences: ( 2 / 2 ) (0 absence)
· Others Include some announcements or course related posts.
도경근, 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다. 응즈웨이, For the open problems, the compiler can be Python too. It can be R, Python, or SageMath <--- <-- Yes. Use any language and tool that we can use to solve Problems in the Textbook, 김명규, 수업에 좋은 성적을 얻기 위에서는 첫번째로 참여 하거나 요약해서 best 답변을 하는게 중요하다고 들었습니다. 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다.
· Ng Zhi Wei Self Introduction / Motivation
· [Question] Open problem 11 by 박우현
· Problem 1 by Ng Zhi Wei
· Problem 2 by Ng Zhi Wei
· Problem 3 by Ng Zhi Wei
· Problem 14 by 안성준
· Problem 15 by 안성준
· Problem 5 by random_matrix() by Ng Zhi Wei
· Problem 6 by Ng Zhi Wei
· Problem 1 by 남상현
· Day 7 Open Problem 1 by Ng Zhi Wei 응즈웨이 (using while loop) [Comment by: 우건주, 고재윤, 남상현, 윤상수]
· [News] The Future of Jobs in the Era of AI (인공지능 시대의 진로와 직업)
· Explained SVD in class (2nd WebEx meeting)
·
1) 수업을 미리미리 들었고, QnA에 Discussion이 있을 시, 언제든 참여할 수 있게 복습과 예습을 철저히 하였습니다.
2) 학우님들에게 도움이 될 내용이나, 좋은 아이디어라고 생각되는 solution은 finalize하여 다른 학우님들께 도움이 되도록 하였습니다.
3) 게시글을 올리고 나서 다른 학우님들이 남겨주시는 comment가 힘이 됨을 느꼈습니다. 그래서 다른 학우님들의 글에 comment를 많이 남기려고 노력했고, 모든 글에 comment를 남기게 된다면 질 낮고 양만 많은 분위기가 조성될 것을 염려해 적당한 양만 남기려고도 노력하였습니다.
매일 Q&A 활동에 열심히 참여하고자 노력하였습니다. 주로 open problem의 해결방안을 제시하고 학우분들과 토론하였으며, 내용을 finalize하고 summary하였습니다. Webex 수업 때에도 자발적으로 발표를 하고 열심히 참여하며 다른 학우분들과 소통하고자 노력하였습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
Number : 24
(B)Quality of Your Participation:
· Sketch graphs of polynomial functions
· Make a composite function
· Find solutions of equations
· Perform matrix operation by applying operations on vectors and matrices
· Check inverse and transpose of a matrix
· Find inner product and angle of two vectors
· Find system of linear equations
· Find SVD of a matrix
· Find derivative of a differentiable function using while loop
· Find local maximum, local minimum, absolute maximum, and absolute minimum of a function
· Final OK 받은 글 중 제목에 내 이름이 있는 글 -> 21개
· Final OK를 받지 않은 글 중 내가 활동에 참여한 QnA 글
· ->20개
· ** 미적분학 part는 아직 final OK를 받지 못함
· Final OK by SGLee [Finalized by 신유정, 남상현, 고재윤, 이규식] Open Problem 12
· 작성자 : 남상현(2018####17)작성일 : 12월 17일 오후 11:59
· 조회수 : 26
· Final OK by SGLee [Finalized by 신유정, 남상현, 고재윤, 이규식] Open Problem 12
· 아래 코드에서 해가 무수히 많을 때와 해가 없을 때를 고려하여 보완해 보았습니다.
· 우선 해가 무수히 많을 때, 첨가 행렬의 마지막 행은 0이 됩니다.
· 또한 해가 존재하지 않을 때에는, 첨가 행렬의 마지막 행에서 마지막 열을 제외한 성분이 모두 0이 됩니다.
· 이를 고려하여 if문을 통해 코드를 보완해 보았습니다.
·

이 때 실행 결과는 3가지로 나뉘어집니다.
1. 해가 무한히 많을 때

2. 해가 존재하지 않을 때

3. 해가 하나만 존재할 때
![]()
2016 신유정 open problem12
작성자 : 신유정(2016####90)작성일 : 12월 17일 오후 8:35
조회수 : 17

BigBook-LinearAlgebra-2015.pdf 50P 예제2번
A = matrix([[1, 1, 2], [1, 2, 3], [1, 1, -5]]) #
coefficient matrix
b = vector([-3, -4, -6]) # vector
print("x =", A.solve_right(b))
먼저 matrix를 만들고 그에 상응하는 vector 를 만들어 줍니다.
solve_right함수를 이용해 A,b에 맞는 답을 찾아줍니다
답은
('x =', (-17/7, -10/7, 3/7)) 인 거 같습니다.
혹시 아니라면 알려주시면 감사하겠습니다.
2개의 댓글
이상구(LEE SANGGU)12월 17일 오후 8:46
신유정 씨, 반가워요. 여기서 질문은 제 문제와 답을 더 업그레이드 시켜주실분? 이렇게 하는 것입니다. 조언은 다음과 같습니다. 1. 예를들어 본인의 전공책에 나오는 4차보다 더 크고 좀 더 복잡한 연립방정식과 해 가 있으면, ... 그 문제를 이렇게 내가 준 코드의 해당 부분을 고쳐서 구한 답이 교재의 답 또는 본인이 손으로 구한 답과 같으면 .. 아, 내가 앞으로 이런 비슷한 문제는 크기가 아주커도 언제나 이렀게 다 풀어서 정확한 답을 구할 수 있다 라는 자신감을 가지라고 제시한 문제 입니다. 2. 코드를 실행하면서 ... 행렬의 열과 행 배치하는 법, entry 들을 배열 하는 법 등 ... 주의 할점을 저절로 배우는 것 이랍니다. 3. 또 해가 존재하지 않을 때는? 해가 무수히 많을 때는? 어떤 최적해를 구해야 하나 .... 이런것을 생각하는 시간 이랍니다. 5. 아래 QnA 다른 학생 답을 읽고 . . . Fully 이해 했습니다. 감사합니다. 등 코멘트 달면서 ... make up 쉽게 하세요. 7. 그리고 다음 주 화요일 에 보고 ... 내게 질문하시면 추가 조언 줄께요.^^ Good luck.
신유정(2016####90)12월 17일 오후 9:14
네 다음 질문에서는 더 보완해서 올려 보겠습니다. 감사합니다!
댓글
남상현(2018####17)12월 18일 오전 1:23
A = matrix([[1, 1, 2], [1, 2, 3], [1, 1, -5]]) # coefficient matrix b = vector([-3, -4, -6]) # vector # 임의의 선형연립방정식에 대한 정의 #A = random_matrix(QQ, 3, 3) #b = random_vector(QQ, 3) Ab = A.augment(b) # 첨가행렬 Ar = Ab.rref() # RREF if (Ar[2] == 0): # RREF의 rank가 columns보다 작을 때 print("infinity solutions") print("RREF = ") print(Ab.rref()) elif (A.rref()[2] == 0) : ## A의 RREF의 마지막 행은 0이지만 첨가행렬의 RREF의 마지막 행은 0이 아닐 때 print("no solution") print("RREF = ") print(Ab.rref()) else : print("x =", A.solve_right(b)) 제가 응용한 코드입니다!
고재윤(2020####97)12월 18일 오전 2:44
해의 존재와 관련된 특성을 If 문으로 정말 잘 표현하신거같습니다!! 이해에 큰 도움이 되었습니다. 좋은 글 감사합니다
이상구(LEE SANGGU)12월 18일 오전 5:28
Wonderful job. Final OK by SGLee
이규식(2018####70)12월 18일 오후 10:00
이해에 도움이 되었습니다. 감사합니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
I think it is a good way to learn when we share our answer in QnA and discuss and ask questions so we get a better understanding on the concepts and also see how people approach the questions.
어렸을 때부터 반복된 문제풀이를 하며 혼자 하는 학습에 익숙해져 있었기 때문에, Discussion 위주의 수업에 적응하는 첫날, 둘째날에는 꽤 어려움을 겪었습니다. 하지만 글을 쓸 때마다 교수님께서 응원, 칭찬해주시고, 학우님들의 좋은 반응이 있었기 때문에 뿌듯함을 느꼈습니다. 이제는 글을 작성하고 다른 학우님들께서 풀이한 내용에 Discussion 하는 것이 즐겁게 느껴집니다. 더 도움 되고, 새로운 내용에 대해 공유하고 싶은 마음에 같은 문제를 다르게 생각해보는 등 탐구적인 자세로 문제를 들여다 보는 습관이 조금 들여진 것 같습니다. 또한, 많은 사람들의 관점에 대해서 생각해 볼 수 있다는 점에서 이 Discussion위주의 수업에 만족하고 있습니다. 제가 생각하지 못했던 내용에 대해서 글을 작성해 주시는 학우님, 제가 썼던 내용을 더 간결하고 이해하기 쉽게 글을 작성해주시는 학우님, 참신한 예시를들어 이해를 도와주시는 학우님 등 여러 학우님들 덕분에 혼자서 하는 문제 풀이가 실력 향상의 유일한 방법은 아니구나 라는 것을 느끼고 있습니다.
수업 방식 외에, 수업 내용에도 굉장히 만족하고 있습니다. 다른 과목들처럼 단순히 공식을 외우고, 계산기를 두드려가며 풀이를 하는 대신, 코딩을 활용하니 식의 의미 등 수학 자체에 대해 생각해보는 시간이 더 많아졌다고 생각합니다. QnA 게시판의 자기소개에서 말씀드렸듯이, 저는 인공지능과 수학 사이의 연관성을 찾고 싶어 이 강좌를 수강 신청하게 되었다고 말씀드렸는데, 그 수강 목적을 성취하고 있는 것 같아 뿌듯함을 느끼고 있습니다. 이렇게 좋은 수업 방식으로 진행해 주시고, Discussion의 활성화를 위해 QnA 게시판에 자주 들러주시는 교수님께 감사하며 수업을 듣고 있습니다. 이 강좌를 모두 수료하고 나면 정말 많은 배움을 얻을 수 있을 것 같습니다.
평소에 코딩 및 인공지능에 관심이 많아 관련된 과목을 수강하고자 찾고 있던 와중에 계절학기 때 Basic Mathematics for AI라는 좋은 과목을 수강할 기회를 얻게 되어 매우 기뻤으며 누구보다 열심히 수강하고자 하였습니다. 처음에는 생각보다 포괄적이고 다양한 분야의 수학을 배우는 데 있어서 어려움을 겪었습니다. 하지만, 학우분들 그리고 교수님과의 소통 및 상호작용을 통해 차근차근 학습해 나가며 점차 부족한 부분을 채워나가고 이해할 수 있게 되었습니다. 평소에 저는 소통과 토론을 통해 학습을 하는 것보다 혼자 힘으로 독학하고 이해하곤 하였습니다. 그러나 이번 강좌를 수강하면서 다른 학우들과 토론하고 함께 학습해 나가면서 개념부터 차근차근 발전해 나가는 활동에 흥미를 갖게 되었습니다. 저 뿐만 아니라 다른 학우분들 역시 Q&A활동에 열심히 참여해주시고 도와주신 덕분에 선형대수학, 미적분 등 다양한 학문을 좀 더 깊게 배울 수 있었고, 저 역시 그만큼 활발하게 활동하고, 부족한 점이 있으면 도우면서 열심히 참여하고자 합니다.
(B3) Write names of YOUR PBL Team members and Team Leader.
나는 아래의 내용 중 (붉은 색 내용) 함수, 벡터, 행렬, 텐서, 노름, 내적, 선형연립방정식, 가우스 소거법, RREF, 첨가행렬, 정사영, 최소제곱문제, LU분해, QR 분해, SVD, 도함수, 미분, 극대, 극소, 최대, 최소, 경사하강법, 학습률, 그래디언트, 의 개념을 이해하고, 설명할 수 있으며, (간단한 것은 손으로, 복잡한 것은 Sage/R/python 등의 도구를 이용하여) 계산하여 그 의미를 설명할 수 있다.
나는 아래의 내용 중 함수, 벡터, 행렬, 텐서, 노름, 내적, 선형연립방정식, RREF, 첨가행렬, 정사영, 최소제곱문제, LU분해, QR분해, SVD, 도함수, 미분, 극대, 극소, 최대, 최소, 경사하강법, 학습률, 그래디언트, 순열, 조합, 베이즈 정리, 확률변수, 확률분포의 개념을 이해하고, 설명할 수 있으며, (간단한 것은 손으로, 복잡한 것은 Sage/R/python 등의 도구를 이용하여) 계산하여 그 의미를 설명할 수 있다.


|
Subject |
Basic Math4AI |
Major |
Software |
||||
|
Name/ID |
Ng Zhi Wei 2019 |
Year |
3 |
||||
|
Learning contents |
|
||||||
|
Self-Checking |
|||||||
|
Activity |
Excellent |
Good |
Fair |
||||
|
1. |
I have contributed to generate ideas and facts needed to resolve the issue. |
ü |
|
|
|||
|
2. |
I proposed learning issues associated with learning. |
ü |
|
|
|||
|
3. |
When I study alone, I used a variety of learning materials. |
ü |
|
|
|||
|
4. |
I provide new information and knowledge in this class. |
ü |
|
|
|||
|
5. |
I was actively involved in the discussions. And I provided a lot of questions in order to understand these discussions. |
ü |
|
|
|||
|
6. |
I have made a contribution to the learning activities for our class. |
ü |
|
|
|||
|
※ Please record the following items by considering your learning process. 1. Do you understand the most of contents of this learning process? Yes
2. What kind of learning materials have you used to study? The lecture videos, QnA board, and online resources, lecture notes
3. What did you learn through the learning activities of this course? As I do the open problems, I learn the concepts and how to approach the questions in Sage.
4. What have you learned from the other colleagues? From the QnA board, I learn a lot from how people see the questions differently and how people approach the questions.
5. Self-Evaluation for Q/A Activities My score: ** I think I contributed a fair amount in terms of giving my answers, asking questions, and acknowledge other people answers when I understand them.
|
|||||||
Self Evaluation 1. (개인 성찰 노트) (20점)
|
Class |
인공지능을 위한 기초수학 입문 |
||||||
|
Name/이름 |
고재윤 |
ID |
2020 |
||||
|
학습한 내용 |
선형대수학, 미분적분학 |
||||||
|
자기 점검표 |
|||||||
|
활동(Activity) |
Excellent |
Good |
Fair |
||||
|
1. |
나는 개인학습을 할 때 다양한 학습 자료를 사용하였다. |
O |
|||||
|
2. |
나는 새로운 정보와 지식제공에 기여하였다. |
O |
|||||
|
3. |
나는 토의에 적극적으로 참여하였고, 토의의 촉진과 이해를 위한 적절한 질문을 많이 제공하였다. |
O |
|||||
|
4. |
나는 우리 반이 원활한 학습활동을 하는데 기여하였다. |
O |
|||||
[성찰노트]
※ 다음 항목들을 고려하여 자신의 학습과정과 내용을 기록하시오.
1. 나는 지금 수행되고 있는 학습의 진행내용을 이해하고 있는가?
선형대수학에 대한 기초적 내용 : 선형대수학에 대한 내용을 얕게 알고 있었기 때문에 수업을 따라가는데에 큰 어려움이 있지는 않았습니다. SVD를 이해하기 위한 선형대수학의 기본적 내용을 배우고, Sage를 통해 그 계산 및 고찰을 더 깊게 할 수 있게 되었습니다. 또한 복잡한 matrix도 sage로 쉽게 연산하다보니 자신감도 올라갔다고 생각합니다.
SVD: SVD를 비롯해 여러 decomposition 방법이 익숙하지 않았기 때문에, 복습을 여러번 하며 완전히 이해하였습니다. SVD와 관련된 Open Problem 16에 대한 학우님들의 풀이를 보고, 제가 직접 Finalize 해보고, 그것을 다시 정리해주신 다른 학우님의 게시글을 보고 하며 SVD의 내용을 더 깊이있게 이해할 수 있었습니다.
미분적분학에 대한 기초적 내용: 예전에 배웠던 미분적분학 내용이 기억났기 때문에 수업을 따라가는데 큰 어려움이 있지는 않았습니다. 미분적분학의 기초적 내용에 대해서는 거의 완벽하게 알고 있다고 생각했었는데, Fermat’s Theorm등
처음 들어보는 것 같은 내용을 보고 반성하고 복습을 철저히 하게 되었습니다. 그 결과 미분적분학에 대한 기초적 내용을 잘 이해하였습니다.
GDM: 미분적분학의 기초적 내용에 대해 어느정도 알고 있었기 때문에 GDM을 이해하는데 어렵지 않았습니다. sage를 통해 함수, tolerance, learnin rate가 주어진다면 GDM을 활용할 수 있게 되었습니다. 또한 도함수를 구해 extreme point를 구하는 방법보다 GDM을 이용하여 구하는 방법이 더 시간을 아낄 수 있겠다는 내용에 대해서도 생각해보게 되었습니다.
2. 어떤 방법을 통해서 학습하였는가? (학습방법 및 자료)
예습: 예습의 학습적 효율성에 대해 체감하고 있기 때문에, 이 강좌 역시 예습을 철저히 하였습니다. 교수님께서 올려주신 강의 자료를 한 번 읽어보았고, 몇 번 읽어도 이해가 잘 되지 않는 부분은 가벼운 구글링을 통해 강의를 듣기 전에 내용에 대한 어느 정도의 이해를 하려고 노력하였습니다.
강의 수강: 예습을 진행한 후 강의를 들으니 교수님께서 하신 말씀 대부분을 이해할 수 있게 되었습니다. 교수님께서 하신 말씀 중 강의 자료에 없는 내용은 필기하며 들었습니다.
복습: 강의 자료, 강의를 들으며 필기한 내용을 두 세 번 읽으며 내용에 대한 확실한 이해를 위해 복습하였습니다. 그 후 Open Problem들을 종이와 sage를 이용하여 풀이하고, 그 중 몇몇 problem들은 QnA 게시판에 게시하였습니다. 이해가 잘 되지 않는 problem의 경우에는 QnA 게시판에 다른 학우님들이 올린 solution을 보며 이해를 하려고 노력하였습니다.
Discussion: Open problem을 이해, 풀이한 후 QnA 게시판을 돌아다니며 다른 학우님들의 풀이와 생각을 읽고 comment를 남기거나, Finalize하는 활동을 하였습니다.
Office Hour: 지금까지 있었던 두 번의 office hour을 모두 참가하였습니다. 첫 번째 office hour에서는 수업 진행 방식에 대해 경청하며 들었고, 두 번째 office hour에서는 교수님께서 제게 질문 하셨을 때 아는 내용을 정리하여 발표하고, 그 내용을 요약하여 webex 채팅방에 올렸습니다. Office hour에서 제가 실시간으로 발표하는 것도 좋은 경험이었지만, 교수님께서 중요하다고 생각하시는 부분을 한 번 더 복습해주셔서 좋았다고 생각합니다.
3. 본 강좌의 학습활동을 통하여 무엇을 배웠나?
선형대수학과 미적분학에 대한 기초적 내용과 인공지능에서의 활용: 고등학교, 대학교에서 배운 내용을 복습하고, 상기시키면서 그 기초적 내용을 더 탄탄히 다지게 된 것 같습니다.
Sage 활용의 중요성: 코딩이 수학을 배우는데 강력한 도구라는 것을 느꼈습니다. sage를 통해 복잡한 계산이나 그래프도 쉽게 계산하며 자신감도 상승했다고 느꼈고, Discussion의 질도 올라갔다고 생각합니다. 이렇게 sage가 이번 강좌를 진행하고 이해하는데 큰 도움이 되었기 때문에 sage 활용의 중요성에 대해 배웠다고 생각합니다.
학우님들과의 소통, 그것에 대한 중요성: 복습, 강의 듣기, 예습만으로는 얻을 수 없는 학습 효과를 체감했다고 생각합니다. 같은 Open Problem에 대해서 창의적으로 다르게 풀이하는 것을 보았을 때, 더 깊이있는 내용으로 Finalize 하신 내용을 보았을 때 QnA 게시판 활용 즉 소통의 중요성을 배웠다는 생각이 들었습니다.
4. 다른 동료들로부터 무엇을 배웠는가?
첫 번째로는 자신감입니다. 제가 소심한 성격이었기 때문에 계절 학기가 진행되는 초반에는, QnA 게시판에 글을 쓰는 것에 적지 않은 부담감을 느꼈습니다. 하지만 여러 학우님들이 자신의 생각을 자유롭게 표현하시는 것을 보고 저도 자신감을 가지고 제 생각을 공유하고, 토론할 수 있게 되었다고 생각합니다.
두 번째는 창의성입니다. 특히 Open Problem중, Distance Similarity와 Cosine Similarity를 활용할 수 있는 예시를 생각해 보는 문제에 대한 학우님들의 풀이에서 학우님들의 창의성을 느끼고 배울 수 있었습니다. 이런 것들은 제가 혼자서 하는 공부로는 쉽게 접할 수 없는 것들이었기 때문에 좋은 경험이었다고 생각합니다.
마지막으로 탐구성입니다. 다른 학우님들께서 Finalize 하신 problem들 중 이분은 이 문제에 대해 꽤 많은 탐구를 하셨구나 라는 생각이 든 글들이 있습니다. 그 글에 대한 내용보다 더 많은 내용을 담기 위해, 학우님들께 도움이 되는 글을 작성하기 위해 Finalize에 신경 더 썼고, 탐구성을 발전시켰다고 생각합니다.
5. 새롭게 배운 내용을 실제 생활에 어떻게 적용할 것인가?
지금까지 수업 내용을 간단히 정리하면 선형대수학에 대한 기초적 내용과 미적분학에 대한 기초적 내용을 배우고, 배운 내용들을 통해 각각 SVD, GDM을 배웠습니다. 이 중 SVD와 GDM은 인공지능에 실제 적용될 수 있는 방법들이라고 생각됩니다.
SVD 와 GDM을 이용하면 least-squares solution을 구할 수 있습니다. 즉, 여러 데이터들을 학습하여 함수를 만들고 (학습을 하고) 이를 통해 다른 값에 대한 결과값 예측을 할 수 있을 것입니다. 실생활 예를 들자면 음성 인식, 날씨 예측, 주식 그래프 예측 등에 사용될 수 있을 것으로 생각됩니다.
GDM을 이용하면 복잡한 함수에서 local maximum, local minimum을 찾아낼 수 있습니다. 원하는 결과값에 대한 함수를 적절히 설정해 둔다면 방대한 양의 데이터 field에서 원하는 값을 쉽게 찾아낼 수 있을 것입니다. 실생활 예를 들자면 도로 교통량에 따른 길 안내 등에 사용될 수 있을 것으로 생각됩니다.
6. QnA 활동에서 자신의 역할과 기여도에 대한 평가(자신의 활동에 점수를 주고 그 이유를 적으세요.) :
- 9/10 점.
많은 comment와 finalize를 하려고 노력했고, Open Problem을 먼저 게시하는 점에서는 높은 점수를 받을만 하다고 생각하지만, Question을 많이 하지 않은 점, 극초반 활동이 조금 저조한 점이 감점의 요인이 될 수 있다고 생각하기 때문에 10점 만점 중 9점을 주었습니다.
7. 다른 학생에 대한 평가
QnA 게시판을 활용하는 이번 수업의 특성상, 전체적인 학우님들의 활동량이 저조하다면 학습 효율이 높지 않을 수 있지만, 감사하게도 대부분의 학우님들이 활동을 활발히 해주셔서 많은 내용을 배울 수 있었습니다. 특히 제가 작성한 글을 자세히 읽어주시고 질문을 남겨주시는 이예진 학우님, 시행착오의 결과를 정리하여 다시 Finalize 하신 정운섭 학우님, 제가 Finalize하신 내용을 알기 쉽게 정리해주시고, 그에 해당하는 코드를 짜신 남상현 학우님이 가장 기억에 남고, 저의 배움에 큰 도움을 주셨다고 생각합니다.
Self-Evaluation 2
|
Subject |
Basic Math4AI |
Major |
Software |
||||||
|
Name/ID |
Ng Zhi Wei 2019 |
|
|
||||||
|
Evaluation Items |
Strongly disagree |
Disagree |
Mostly disagree |
Mostly agree |
Agree |
Strongly agree |
|||
|
1. I participated actively in both, online and offline classes. |
|
|
|
|
|
ü |
|||
|
2. I participated actively on a Q&A activity. |
|
|
|
|
ü |
||||
|
|
3. My question and replies made on Q&A are relevant. |
|
|
|
|
ü |
|
||
|
|
4. Information provided by my activity was useful for other students in the class. |
|
|
|
ü |
|
|||
|
|
5. I enthusiastically took into the consideration other students’ opinions or point of view. |
|
|
|
|
ü |
|||
|
|
6. I contributed to class by participating on Q&A discussions. |
|
|
|
|
ü |
|||
|
|
7. I am enthusiastic about taking other class with the same students I am taking Discrete Mathematics. |
|
|
|
|
ü |
|
||
|
[Opinion] ► Satisfaction according to the Self-Evaluation I am very happy with the way this class is conducted. It is rather new to me but I think it is effective learning.
► Sorrow according to the Self-Evaluation The QnA board is a little messy. Rather than using the QnA board, I think using the discussion board and splitting the discussion board into the different days will be better. |
|||||||||
|
Subject |
Basic Math4AI |
Major |
전자전기공학과 |
||||
|
Name/ID |
남상현 |
Year |
3 |
||||
|
Learning contents |
선형대수학, 미분적분학(행렬, 도함수, 통계) |
||||||
|
Self-Checking |
|||||||
|
Activity |
Excellent |
Good |
Fair |
||||
|
1. |
I have contributed to generate ideas and facts needed to resolve the issue. |
V |
|
|
|||
|
2. |
I proposed learning issues associated with learning. |
V |
|
|
|||
|
3. |
When I study alone, I used a variety of learning materials. |
V |
|
|
|||
|
4. |
I provide new information and knowledge in this class. |
V |
|
|
|||
|
5. |
I was actively involved in the discussions. And I provided a lot of questions in order to understand these discussions. |
V |
|
|
|||
|
6. |
I have made a contribution to the learning activities for our class. |
V |
|
|
|||
|
※ Please record the following items by considering your learning process. 1. Do you understand the most of contents of this learning process? 2년 전에 선형대수학을 수강하였기 때문에 어느 정도 이해를 빠르게 하고 있으며, 이해하기 힘든 부분은 Q&A 및 인터넷 검색을 통해 이해를 도왔습니다. 특히 Q&A에서 여러 학우들 덕분에 학습 내용을 쉽고 자세하게 이해할 수 있었습니다.
2. What kind of learning materials have you used to study? 주로 강의를 듣고 교재를 읽으면서 학습을 진행하였고, 이해가 되지 않는 부분은 다시 한 번 반복하여 들으며 학습하였습니다. 또한 수업자료실에 올려주신 보충 자료들도 보면서 다양한 방법으로 이해하고 학습하고자 하였습니다. 또한 Q&A 활동을 통해 여러 open problem들을 풀어보고 다른 학우들의 글을 보며 다양한 관점으로 문제를 접근하고 개념을 빈틈없이 이해하였습니다.
3. What did you learn through the learning activities of this course? 인공지능 학문의 기초가 되는 선형대수학과 미적분학, 특히 행렬과 도함수 그리고 통계에 대해 집중적으로 배웠습니다. 특히 SVD에 관한 자세한 개념과 이에 대한 응용을 처음 접해보면서 흥미를 느낄 수 있었습니다. 또한 매일 같이 해당 과목을 수강하고 공부하며 Q&A에 참여하며 이해를 키워나가며 꾸준함의 중요성 역시 깨닫게 되었습니다.
4. What have you learned from the other colleagues? 문의 게시판에서 Q&A에 참여하면서 알지 못했거나 이해하기 힘들었던 여러 개념들에 대해 추가적인 도움을 받을 수 있었습니다. 또한 지속적으로 수강 인원들에게 도움을 줄 수 있는 좋은 글들을 쓰는 학우분들을 보며 저 역시 열심히 참여하고자 다짐하게 되는 계기가 되었습니다. 특히 각자 다른 생각과 관점을 갖고 문제에 접근하면서 다양한 시각으로 문제를 볼 수 있는 능력을 기르게 되었습니다.
5. Self-Evaluation for Q/A Activities My score: 95 - 다른 학생들의 여러 글들을 모두 보고 이해하였으며, 이해하고 보고 느낀 점을 코멘트하며 활동에 성실히 참여하였습니다. 또한 학우분들께 제가 이해한 부분에 대해 도움을 드리고자 주도적으로 문제를 해결하고 의견을 표출하였습니다. 특히 여러 개념과 문제들을 finalize하며 다양한 관점으로 문제를 바라보고 해결하는데 열심히 참여하였습니다. - 하지만, 좀 더 활발하게 참여하지 않은 아쉬움이 있고, 이후에는 더 열정적으로 참여하여 Final PBL Report에는 스스로를 100점으로 평가하고자 95점이라는 점수를 주게 되었습니다.
6. Evaluation for other students 다른 학우분들 역시 저처럼 유사한 전공을 가진 학생들의 경우에는 비교적 익숙하실 것이고, 또 몇몇 학우분들은 다른 분야를 전공하시기 때문에 어느 정도 익숙하지 않은 부분들이 있으실 거라고 생각합니다. 그럼에도, 모두가 힘을 합쳐 다 함께 발전하고자 하는 느낌을 Q&A를 통해 많이 느낄 수 있었습니다. 많은 학생들이 활동에 참여하여 인공지능에 관한 기초수학을 이해하고자 노력하고 있고, 덕분에 모두 좋은 결과를 만들어낼 수 있을 거라고 생각합니다. |
|||||||
Self-Evaluation 2
|
Subject |
Basic Math4AI |
Major |
전자전기공학과 |
||||||
|
Name/ID |
남상현/2018313417 |
|
|
||||||
|
Evaluation Items |
Strongly disagree |
Disagree |
Mostly disagree |
Mostly agree |
Agree |
Strongly agree |
|||
|
1. I participated actively in both, online and offline classes. |
|
|
|
|
|
V |
|||
|
2. I participated actively on a Q&A activity. |
|
|
|
|
V |
||||
|
|
3. My question and replies made on Q&A are relevant. |
|
|
|
|
V |
|
||
|
|
4. Information provided by my activity was useful for other students in the class. |
|
|
|
|
V |
|||
|
|
5. I enthusiastically took into the consideration other students’ opinions or point of view. |
|
|
|
|
|
V |
||
|
|
6. I contributed to class by participating on Q&A discussions. |
|
|
|
|
V |
|||
|
|
7. I am enthusiastic about taking other class with the same students I am taking Discrete Mathematics. |
|
|
|
|
V |
|||
|
[Opinion] ► Satisfaction according to the Self-Evaluation 우선 9일간 가장 만족스러웠던 것은 활동에 꾸준히 참여했다는 점입니다. 매일 오전에 강의를 듣고 이해하였으며, 이해한 직후 Q&A 활동에 열심히 참여하며 꾸준한 태도를 보였습니다. 덕분에 저 스스로도 많이 발전한 모습을 보였으며, 학우분들께도 도움을 주는 등 현재의 활발한 Q&A 활동에 어느정도 보탬이 되었다고 생각합니다. 또한 저만의 이해와 판단에 갇히지 않고 다른 학우분들의 의견을 존중하고 수렴하고자 노력하였으며, 서로 다른 방법 및 시각에서 해결한 부분을 수렴하고 정리하였습니다.
► Sorrow according to the Self-Evaluation 아쉬운 점은 없지만, 지금보다도 더 노력하고 다양한 시각을 통해 이해하여 보다 더 수준 높고 활발한 모두의 Q&A 게시판을 만들고 싶습니다. |
|||||||||
Self Evaluation 2. (개인 성찰 노트 2)
|
과 목 명 |
인공지능을 위한 기초수학 입문 |
||||||||
|
이 름 |
고재윤 |
ID |
2020313997 |
||||||
|
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
|||
|
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
O |
|||||||
|
2. |
QnA에 적극적으로 참여하였다. |
O |
|||||||
|
3. |
QnA 내용에 적합한 질문과 응답을 하였다. |
O |
|||||||
|
4. |
동료에게 도움이 되는 지식과 정보를 제공하였다. |
O |
|||||||
|
5. |
다른 동료의 의견을 존중하였다. |
O |
|||||||
|
6. |
QnA 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
O |
|||||||
|
7. |
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
O |
|||||||
[의견]
▶ 자체평가에 따른 잘한 점
QnA 게시판에 글을 올리고, Discussion 하는 과정을 반복하면서 토론하며 Finalize 하는 것에 재미를 느껴 QnA 게시판 활동을 꾸준히 한 점이 잘한 점이라고 생각합니다.
계절 학기 수업의 특성상 한 주에 다뤄야 할 내용을 하루만에 성취해야 했기에 시간이 부족할 수 있다는 것을 미리 예상했습니다. 그래서 2일치, 3일치 강의를 몰아서 들음으로써, 그에 대한 개념 복습이나 QnA 게시판 활동 시간을 늘리는 것이 좋겠다고 생각하고 그렇게 행동하였습니다. 지금 중간 평가를 해보며 생각해보니 이렇게 한 덕분에 선형대수학, 미적분학에 대해 더 깊이 생각하고 토론할 수 있게 된 거 같아 잘한 점으로 생각됩니다.
수업의 내용 중 Sage를 이용하는 부분이 많았기 때문에 수학에 대한 복습 뿐만 아니라, 파이썬에 대한 기초적인 공부, Sage 명령어를 정리하여 Finalize한 학우님의 글 등을 찾아 보며 코딩에 대한 내용도 공부하였습니다. 코딩 공부를 통해 더 간편한 코드를 찾거나 강의에 있는 코드에 대한 이해도가 높아졌다고 생각하기 때문에 잘한 점이라고 생각됩니다.
▶ 자체평가에 따른 아쉬운 점
QnA에 적합한 질문과 응답을 하였는지, 동료에게 도움이 되는 지식과 정보를 제공하였는지, QnA 운영 및 의견수렴 과정에 긍정적으로 참여하였는지는 객관적으로 판단하기 어려웠습니다. 제 나름대로 학우님들께 도움이 될만한 내용으로 활동하였다고 생각하기 때문에 ‘그렇다’ 에 부여했지만, 이 문항에 확신하지 못하는 것을 보아, 제가 더 공부하고 생각을 발전시켜 확신을 가질만한 내용에 대해 토론해야겠다는 생각이 들었습니다. 이 강좌의 남은 일 수 동안 더 열심히 참여하는 학생이 되도록 하겠습니다.
Self-Evaluation 3
|
Subject |
Basic Math4AI |
|||||||
|
Colleague’s name |
고재윤 |
|||||||
|
Name of evaluator |
남상현 |
|||||||
|
Evaluation Items |
Strongly disagree |
Disagree |
Mostly disagree |
Mostly agree |
Agree |
Strongly agree |
||
|
1. I participated actively in both, online and offline classes. |
|
|
|
|
|
V |
||
|
2. I participated actively on a Q&A activity. |
|
|
|
|
V |
|||
|
|
3. My question and replies made on Q&A are relevant. |
|
|
|
|
V |
||
|
|
4. Information provided by my activity was useful for other students in the class. |
|
|
|
|
V |
||
|
|
5. I enthusiastically took into the consideration other students’ opinions or point of view. |
|
|
|
|
|
V |
|
|
|
6. I contributed to class by participating on Q&A discussions. |
|
|
|
|
V |
||
|
|
7. I am enthusiastic about taking other class with the same students I am taking Discrete Mathematics. |
|
|
|
|
V |
||
|
[Opinion] ► Satisfaction according to the Self-Evaluation 항상 꾸준히 Q&A 활동에 참여하였으며, 항상 다양한 방법을 통해 문제를 해결하고자 하며 학우분들과 열심히 소통하는 모습이 매우 인상 깊었습니다. 또한 직접 단원 내용을 요약하기도 하며 다른 학우분들을 열심히 도우려 하는 모습 또한 좋은 점수를 주고 싶습니다. ► Sorrow according to the Self-Evaluation 요약본을 수기로 작성하여 사진으로 찍어 올리다 보니 가독성이 다소 떨어졌던 부분이 아쉽습니다. |
||||||||
Self Evaluation 3. (개인 성찰 노트 3)
자신의 학습에 도움이 된 우수한/성실한 동 료 평 가 과 목 명 |
Basic Math for AI |
|||||||
|
(두 명 이상의 추천을 받은 학생은 가산점) |
||||||||
|
피평가자(동료) Best classmate |
남상현 2018 |
|||||||
|
평가자(작성자) your name |
고재윤 2020 |
|||||||
|
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
||
|
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
O |
||||||
|
2. |
QnA에 적극적으로 참여하였다. |
O |
||||||
|
3. |
QnA 내용에 적합한 질문과 응답을 하였다. |
O |
||||||
|
4. |
동료에게 도움에 되는 지식과 정보를 제공하였다. |
O |
||||||
|
5. |
다른 동료의 의견을 존중하였다. |
O |
||||||
|
6. |
QnA 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
O |
||||||
|
7. |
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
O |
||||||
|
[의견] ▶ 자체평가 중 잘한 점 Open Problem에 대한 Finalize, comment 남기기, solution 제작 등을 성실히 하신 것을 보아 온라인-오프라인 출석을 규칙적으로 하신 것으로 생각됩니다. 이 학우님께서 작성하신 글 중에 저에게 직접적으로 도움을 주시거나, 제가 더 많은 생각을 해볼 수 있도록 도와주시는 글들이 많았기 때문에, 3번, 4번, 5번, 6번, 7번칸에 고민없이 ’매우 그렇다‘를 채울 수 있었습니다. ▶ 자체평가 중 미비점 학기 초반에는 QnA 게시판 활동량이 많지는 않으셨지만, 제가 그랬던 것처럼 수업 방식에 적응 시간이 필요했기 때문에 그랬던 것으로 추측할 수 있으므로 추후 활동량은 지금처럼 성실한 모습을 보여주실 것으로 기대됩니다. |
||||||||
Action Learning Class 반응평가(학생용)
* 1~16 평가내용을 읽고 「매우긍정~매우부정」 중 하나에 V 표시하시오. 그리고 5, 12, 14번은 연결문항에 답하시오.
|
평가내용 |
평가 |
||||
|
매우 긍정 |
긍정 |
보통 |
부정 |
매우 부정 |
|
|
1. 우리 방식의 수업에 적극적으로 참여하였다. |
O |
||||
|
2. 교수는 학생들의 능력을 발휘하도록 도와주었다. |
O |
||||
|
3. 우리 방식의 학습 과정을 통해서 새로운 지식을 획득하였고 지식수준이 향상되었다. |
O |
||||
|
4. 이 과정을 통하여 추론기술이 향상되었다. |
O |
||||
|
5. 이 과정을 통하여 자기 주도적 학습기술을 습득하였다. |
O |
||||
|
6. 이 과정을 통하여 문제해결기술을 습득하였다. |
O |
||||
|
7. 이 과정을 통하여 학습운영기술을 습득하였다. |
O |
||||
|
8. 이 과정을 통하여 전문성이 향상되었다. |
O |
||||
|
9. 이 과정은 실제 연구 상황과 유사하였다. |
O |
||||
|
10. 학습과정에 대한 평가 방법이 합리적이었다. |
O |
||||
|
11. 문제해결을 하면서 학습주제를 더 잘 알게 되었다. |
O |
||||
|
12. 학습과정에서 학습주제와 관련한 활발한 의사소통이 이루어졌다. |
O |
||||
|
13. 학습결과는 문제해결절차를 통해서 산출되었다. |
O |
||||
|
14 전반적으로 우리 방식의 수업이 효과적이라고 생각한다. |
O |
||||
|
15. 우리 방식의 수업에 다시 참여하고 싶다. |
O |
||||
* 5, 12, 14 연결문항
5-1. 본 수업을 통해 자신이 습득한 자기 주도적 학습 기술을 구체적으로 설명하시오.
수업 참여 활동에 매겨지는 점수는 QnA 게시판의 활동이었기 때문에 참여 점수를 받기 위해서는 단순히 강의를 듣는 것뿐만 아니라 문제를 풀고, 복습을 통해 그 개념을 잘 다룰 수 있어야 했습니다. 강의 자료를 계속해서 읽고, 헷갈리는 부분은 다른 교과서나 인터넷을 통해 찾아보는 과정을 통해 자기 주도적 학습 기술을 습득했다고 생각합니다. 또, QnA 게시판 활동을 하면서 다른 학우님들의 풀이법이나 코멘트에 대해 생각해보면서 더 탐구적인 자세를 가지게 되었다고 생각합니다. 수업 방식에 어느정도 익숙해진 지금, 스스로 공부하면서도 탐구적인 자세를 가지게 되어 이 수업을 수강하기 전보다 더 질 높고 가치 있는 학습법을 얻게 되었다고 생각합니다.
12-1. 본 수업과정에서 자신이 참여한 활발한 의사소통을 구체적으로 설명하시오.
QnA 게시판 활동을 최대한 많이 하려고 노력하였습니다. 매일매일 수업 진도가 나가는 계절학기 수업인 만큼, 매일매일 QnA 게시판을 확인하면서 모든 글을 읽었고, 제가 도움을 느낀 글들에는 comment를 남기려고 노력했습니다. 또한 정말 좋은 주제를 발견하거나 다른 학우님들께서 아셨으면 좋을 법한 내용들은 자료조사를 더 하고, 깊이 생각해보면서 Finalize 하려고 노력하였습니다.
14-1. 우리 방식의 수업에서 효과적이었다고 생각되는 부분을 구체적으로 설명하시오.
QnA 게시판 활동을 중요하게 여기는 점이 학습 효과에 좋은 영향을 미쳤다고 생각합니다. 앞서 말했듯이 QnA 게시판 활동을 하려면 미리 공부를 어느 정도 해야 했다는 점이 학습 동기를 불러 일으키는 요인 중 하나라고 생각됩니다. 또한 대학을 4학기 다니는 동안 다른 학우님들과의 생각을 나누는 수업은 처음이었는데, 각자 다른 생각을 공유하면서 보완하고, 발전시킬 수 있다는 점에서 좋은 학습 효과를 불러일으킨 것 같습니다. 마지막으로, PBL 리포트를 정리하면서 그동안 배웠던 내용을 복습하고 활동했던 내용들을 정리하는 과정도 효과적이라고 생각합니다. 다시 한 번 배웠던 내용들을 살펴보면서, 그동안 수업을 진행하며 습득했던 것들이 정말 저의 것이 되는 느낌을 받았습니다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
저는 계절 학기로 이 수업을 듣고 있는 학생입니다. 저는 선형대수학, 미분적분학에 대한 기본 지식은 이미 조금이나마 알고 있던 상태였기 때문에 수업 진행 방식을 따라가는데 큰 어려움은 없었습니다. 다만 이 내용들에 대한 기본 지식이 전혀 없는 학생이나 수학과 큰 접점이 없는 학과 학생들은 내용을 이해하고, discussion에 임하기까지 시간이 필요하다고 생각되는데, 계절 학기 수업 방식은 이 학생들에게 조금 힘든 방식이라고 생각됩니다. 일주일의 시간이 있는 일반적인 학기와 다르게 계절 학기는 하루의 시간밖에 없기 때문입니다. 물론 이 문제점은 교수님께서 해결하기 어려우신 문제라고 생각되지만, 이 문제 때문에 더 많은 학우님들의 목소리를 들을 수 없는 것 같아서 아쉬움이 조금 남습니다.
Self-Evaluation 4
◆ Number of your QnA participation up to the Due date. ( ** total entries )
[Yours to be added] -- 아래 공간에 여러분이 QnA 에 공개하여 답을 얻고 이해하였고, 중간/기말에 모아서 발표 할 수 있는 것들은 모두 모아서 윤문한 후 각 문제에 코멘트를 달아서 하나의 파일로 과제함에 전체 하나의 차일을 제출하시면 됩니다.
남상현 자기소개/수강동기
작성자 : 남상현(2018####17)작성일 : 12월 14일 오전 10:12
조회수 : 12
안녕하십니까? 전자전기공학과 18학번 남상현입니다.
나이는 23살이고, 현재 2학년 2학기를 마친 상황입니다.
취미는 당구, 볼링, 헬스와 같은 운동이고, 좋아하는 과목은 수학, 물리, 정보입니다.
최근 세부 전공과 관련해서 딥러닝에 무척 관심이 많아 다음 학기 때 관련된 수업을 수강하려 했는데,
계절학기에 Basic Mathematics for Artificial Intelligence가 개설된 것을 보고 수강하게 되었습니다.
선형대수학, 미적분 등 수학 역시 매우 좋아하기 때문에 매우 흥미롭고 유익한 기회를 갖게 되어 너무 좋습니다.
2개의 댓글
이상구(LEE SANGGU)12월 14일 오전 11:08
Very Good^^ SKKU자연대이상구Math 님이 모두에게: 오전 9:57 Hi. 1. Please leave you name in this chatting room for your attendance check^^ Thanks^^ … 이우흠-2018313775 님이 모두에게: 오전 10:52 Sharing quesions and answers, checking and finalise others' answers below it We can use any computer languages 45 인유진 님이 모두에게: 오전 10:52 전공에 관련없이 참여도가 중요하고 게시판을 많이 이용하라고 하셨습니다.
이상구(LEE SANGGU)12월 17일 오전 6:24
I will help you to learn something valuable in this class. 1. Ask mea lot. 2. I will give a to one Best international sutudent and 신입생 중 1등과 각 단과대 1등은 모두 A 주려고 합니다^^ Good luck.
Final OK by SGLee [Finalized by 이예진] Dec. 14th, Summary of 1st WebEx meeting - How this class will proceeds and Who will get A in this class. by 윤상수, 우건주, 김명규, 박우현, 고재윤, 안성준, 김지훈, 도경근, 이규리, 황세진, 응즈웨이, 이예진, 정운섭, 이우흠, 인유진, 김지훈, 신유정, 도경근, 남궁보민, 우건주, 강민지, 남상현, 이우흠, 인유진.
[Finalized by 이예진] Dec. 14th, Summary of 1st WebEx meeting - How this class will proceeds and Who will get A in this class.
Math4AI- 1st WebEx face-to face Meeting,
Sylubus-Introduction (2021/12/14) https://youtu.be/ZthLL0lOWjQ (60 min)
2021-12-14-Math4AI-WebEx (Image), Ms. Lee will summarize today's meeting.
2021-12-14-Math4AI-WebEx (Image), Ms. Lee will summarize today's meeting.

1. Contents of the lecture
First, the contents we will learn through this lecture are as follows. The purpose of the lecture is to systematize and internalize the following contents so that they can explain what they understand in their own language from beginners to experts.
1. SVD(Singular Value Decomposition)
2. GDM(Gradient Descent Method)
3. Data and Covariance Matrix
4. PCA(Principal Components Analysis)
5. Rank Reduction and the role of SVD in PCA
6. BP(Back-propagation) Algorithm in Machine Learning and Artificial Neural Network
2. Emphasis on participation
Participation and discussion are the process of solving the open profile of the following link, uploading it to the QnA bulletin board, and finding the best plan among them. Therefore, there are additional points for the student who solved the open program first and the student who finally came up with the best plan by synthesizing the answers of the students.
https://canvas.skku.edu/courses/26166/discussion_topics/242852
On the QnA bulletin board, you can post any questions about the open program and the contents of the course as well as the answers to the above open program. The quantity and quality of students' answers to this are evaluated by peer evaluation of the PBL report at the end of the semester.
3. Extra smmary of what the professor said during today's real time lecture.
THE FIRST OR THE BEST
It is more important to understand mathematical concepts than to memorize them.
If you don't make a presentation, good grades are hard.
You have to participate in class hard.
For the open problems, the compiler can be Python too. It can be R, Python, or Sage.
It is important to discuss math with each other.
It is important to understand the concept and work hard in class.
If you add the contents of the classmates who gave supplementary explanations to your answers in the pbl report, you will receive good reviews.
There are many classmates with various majors, so if you have any questions, don't hesitate to use Q&A.
Regardless of your major, participation is important and you should use the bulletin board a lot.
***
SKKU자연대이상구Math 님이 모두에게: 오전 9:57
Hi. 1. Please leave you name in this chatting room for
your attendance check^^ Thanks^^
And You better show
your face while we all chat together^^
Attendance check : 윤상수, 우건주, 김명규, 박우현, 고재윤, 안성준, 김지훈, 도경근, 이규리, 황세진, 응즈웨이, 이예진, 정운섭, 이우흠, 인유진, ...
박우현, 수업을 진행하는 동안 python의 numpy나 c++의 eigen3 라이브러리도 사용하게 되나요? <-- Yes. Use any language and tool that we can use to solve Problems in the Textbook,
이예진, 1. 공지 3의 코딩 과제 제출하기 <-- Good.
김지훈, 암기하는 것 보다 수학적 개념을 이해하는 것이 중요하다.
정운섭, 외우지 않아도 되고 이해하는 게 중요하다고 하셨습니다.
신유정, A 받은 학생 중 발표하는 학생은 발표를 잘하면 가산점 있습니다.
도경근, 온라인 수업 참여는 출석 점수에 필수이고, Academic activity
(1st 질문, 1st comment, 1st 답변,
Finalize 문제+ best 풀이, 강좌에
도움이 되는 관련 정보 공유) 를 열심히 하는
것이 보고서와 발표 및 성적에 직접적인 영향이 있다.
응즈웨이, For the open problems, the compiler can be Python too. It
can be R, Python, or SageMath <--- <-- Yes. Use any language and tool that we can use to
solve Problems in the Textbook,
김명규, 수업에 좋은 성적을
얻기 위에서는 첫번째로 참여 하거나 요약해서 best 답변을 하는게 중요하다고 들었습니다. 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment,
1st 답변, Finalize 문제+ best 풀이, 강죄에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다.
박우현, 참여를 얼마나 열정적으로 하는가가 중요한 것 같습니다
황세진, 발표하고 참여에 최대한 적극적으로 임할것
윤상수, 수학에 대해 서로 토론하는 것이 중요하다
남궁보민, (계산은 코딩으로 하면되고 그에 사용되는 용어) 개념을 이해하는
것이 중요하므로, 수업 시간에 궁금한 것은 모두 물어보면서 답을 구하는 성실성이 중요하다고 들었습니다
고재윤, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 활동을 많이 해야한다고 하셨습니다.
우건주, pbl 리포트에서 자신의
답안의 미비한 점을 고치고, 난이도를 높이면서, 보충설명을
보태고, Final Comment 를 달아 Finalize 한
학우는 그 내용을 보고서에 담아제출하고, 발표하면 좋은 평가를 받을 것입니다
강민지, 수업을 이해하고, open problem들을 풀고/공유하고/코멘트달고/Finalize
하는 토론 과정을 통해 학습하여 깨우치는 문제들의 양과 질이 ... 평가 기준의 하나이다.
안성준, 처음 올린사람과 정리한 사람에게는 좋은 점수가 주어진다. The First
or The Best.
Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강죄에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다.
남상현, qna에서 the first or the best로 서 참여하는 것이 좋은 요소가 된다.
이규리, 다양한 전공을 가진 학우들이 모여있으므로 ... 교재의 배우는 내용 뿐 아니라 본인 전공에서 Math44AI 와
관련된 어떤 문제라도 궁금한 점들이 생긴다면 주저말고 Q&A를 사용하라고 하셨습니다.
이우흠, Sharing quesions and answers, checking and finalise others'
answers below it We can use any computer languages
인유진, 전공에 관련없이 참여도가 중요하고 게시판을 많이 이용하라고 하셨습니다.
이상입니다.
comment: 첫 웹엑스 수업을 통해 앞으로 무엇을 배우게 될 것인지, 그리고 어떤 방법으로 평가될 것인지 알아보는 시간을 가졌습니다. 교수님께서 중요하다고 하신 QnA 활동을 중심으로 열심히 활동한 거 같아 뿌듯했습니다.
12월 14일 10am 실시간 강의 요약 - 강의 진행 방식에 대하여
1. 학습 내용
본 강의를 통해 저희가 학습할 내용은 다음과 같습니다. 강의의 목적은 다음 내용을 자신의 언어로 이해하고 이해한 바를 초급생부터 전문가에게까지 설명할 수 있을 정도로 체계화∙내재화하는 것입니다.
2. 참여 토론
참여∙토론이란 다음 링크의 open problem을 각각 풀이하여 QnA 게시판에 업로드한 뒤, 그 중 가장 최적의 안을 찾는 과정입니다. 따라서 open problem을 가장 먼저 풀이한 학생과, 최종적으로 수강생들의 답변을 종합하여 최적안을 도출한 학생에게 가산점이 있습니다.
https://canvas.skku.edu/courses/26166/discussion_topics/242852
QnA 게시판에는 위 open problem에 대한 답변 뿐 아니라 open problem, 수강 내용에 대한 어떠한 질의사항도 게시하실 수 있습니다. 이것에 대한 학생들 답변의 양과 질이 과정이 학기말 PBL 레포트의 동료평가로 평가됩니다.
3. 기타 내용
오늘 화상 강의에서 교수님께서 말씀해주신 기타 내용을 요약하겠습니다
게시글을 올릴 때엔 제목에 영어 제목을 추가할 것(외국인 학생들의 수업 참여를 위해)
THE FIRST OR THE BEST
암기하는 것 보다 수학적 개념을 이해하는 것이 중요하다.
발표를 하지 않으면 좋은 학점은 힘들다.
수업에 열심히 참여해야 한다.
For the open problems, the compiler can be Python too. It can be R, Python, or Sage.
수학에 대해 서로 토론하는 것이 중요하다
개념을 이해하고 수업 시간에 성실히 임하는 게 중요하다.
pbl리포트에서 자신의 답안에 보충설명을 해준 학우들의 내용을 추가하면 좋은 평가를 받을 것이다.
다양한 전공을 가진 학우들이 모여있으므로 궁금한 점들이 생긴다면 주저말고 Q&A를 사용하라.
전공에 관련없이 참여도가 중요하고 게시판을 많이 이용하라고 하셨습니다.
4개의 댓글
이상구(LEE SANGGU)12월 14일 오후 1:16
Good job!! You may add the following informations in the above. Others may like add more and Finalize this discussion later Math4AI- 1st WebEx face-to face Meeting, Sylubus-Introduction (2021/12/14) https://youtu.be/ZthLL0lOWjQ (60 min)
이상구(LEE SANGGU)12월 14일 오후 1:17
SKKU자연대이상구Math 님이 모두에게: 오전 9:57 Hi. 1. Please leave you name in this chatting room for your attendance check^^ Thanks^^ And You better show your face while we all chat together^^ 윤상수, 우건주, 김명규, 박우현, 고재윤, 안성준, 김지훈, 도경근, 이규리, 황세진, 응즈웨이, 이예진, 정운섭, 이우흠, 인유진, 박우현, 수업을 진행하는 동안 python의 numpy나 c++의 eigen3 라이브러리도 사용하게 되나요? <-- Yes. Use any language and tool that we can use to solve Problems in the Textbook, 이예진, 1. 공지 3의 코딩 과제 제출하기 <-- Good. 김지훈, 암기하는 것 보다 수학적 개념을 이해하는 것이 중요하다. 정운섭, 외우지 않아도 되고 이해하는 게 중요하다고 하셨습니다. 신유정, A 받은 학생 중 발표하는 학생은 발표를 잘하면 가산점 있습니다. 도경근, 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다. 응즈웨이, For the open problems, the compiler can be Python too. It can be R, Python, or SageMath <--- <-- Yes. Use any language and tool that we can use to solve Problems in the Textbook, 김명규, 수업에 좋은 성적을 얻기 위에서는 첫번째로 참여 하거나 요약해서 best 답변을 하는게 중요하다고 들었습니다. 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강죄에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다. 박우현, 참여를 얼마나 열정적으로 하는가가 중요한 것 같습니다 황세진, 발표하고 참여에 최대한 적극적으로 임할것 윤상수, 수학에 대해 서로 토론하는 것이 중요하다 남궁보민, (계산은 코딩으로 하면되고 그에 사용되는 용어) 개념을 이해하는 것이 중요하므로, 수업 시간에 궁금한 것은 모두 물어보면서 답을 구하는 성실성이 중요하다고 들었습니다 고재윤, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 활동을 많이 해야한다고 하셨습니다. 우건주, pbl 리포트에서 자신의 답안의 미비한 점을 고치고, 난이도를 높이면서, 보충설명을 보태고, Final Comment 를 달아 Finalize 한 학우는 그 내용을 보고서에 담아제출하고, 발표하면 좋은 평가를 받을 것입니다 강민지, 수업을 이해하고, open problem들을 풀고/공유하고/코멘트달고/Finalize 하는 토론 과정을 통해 학습하여 깨우치는 문제들의 양과 질이 ... 평가 기준의 하나이다. 안성준, 처음 올린사람과 정리한 사람에게는 좋은 점수가 주어진다. The First or The Best. Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강죄에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다. 남상현, qna에서 the first or the best로 서 참여하는 것이 좋은 요소가 된다. 이규리, 다양한 전공을 가진 학우들이 모여있으므로 ... 교재의 배우는 내용 뿐 아니라 본인 전공에서 Math44AI 와 관련된 어떤 문제라도 궁금한 점들이 생긴다면 주저말고 Q&A를 사용하라고 하셨습니다. 이우흠, Sharing quesions and answers, checking and finalise others' answers below it We can use any computer languages 인유진, 전공에 관련없이 참여도가 중요하고 게시판을 많이 이용하라고 하셨습니다. 이상입니다.
이상구(LEE SANGGU)12월 17일 오전 6:20
Job well done^^☆☆☆☆ You are all winners~~
이상구(LEE SANGGU)12월 17일 오후 10:21
Final OK by SGLee
[Final OK by SGLee] [HW2] Problem 5 (Solution) by 강민지, 고재윤, 남상현, 박우현, 이규리, 이규식.[학습요약/코드실습/질문]
작성자 : 강민지(2021####12)작성일 : 12월 14일 오전 11:46
조회수 : 59
[Final OK by SGLee] [HW2] Problem 5 (Solution) by 강민지, 고재윤, 남상현, 박우현, 이규리, 이규식.[학습요약/코드실습/질문]
<sol-equation>
solve function을 사용하며, x에 대한 방정식을 solve(equation, x)형태로 입력한다.
이때 출력값은 [x==]형태로 방정식의 근이 출력된다.
값이 크거나 복잡해 다루기 어려울 경우에는, 그래프를 그려 근사 값을 찾는 것이 더 효율적인 방법이다.
그래프는 저번 강의에서 처럼 plot function을 이용해 그릴 수 있다.
<vector-operations>
데이터를 순서 쌍이나 튜플 형태로 나타낼 수 있을 때, 이는 2차원 혹은 3차원 데이터 (또 n 차원 데이터) 로 coordinate plane이나 coordinate space 위의 (또 n 차원 공간안의) 한 점으로 (표현할 수있다) 나타낼 수 있다.
이 때 그 point를 다루기 위해서 vector를 사용한다.
vector를 이용해 좀 더 쉽게 시각화 할 수 있고, vector의 성질을 통해 다양한 계산을 할 수 있다.
vector function을 이용하며, vector(좌표)형식으로 입력한다.
(vector와 print 함수) 혹은 (var과 plot3d 함수)를 이용해, 이를 시각화 하여 출력값을 볼 수 있다.

1) f(x)=5/1-x^2에 대하여 0.3~3^(1/2)+0.05 까지 붉은 선 그래프를 출력하고, 0.5~3^(1/2)까지 f(x)와 x축 까지 영역을 색칠하여 출력합니다.
여기서, sqrt는 제곱근을 계산합니다.
2) f(x)에서 색칠 영역에 대하여 integral 합니다.
3) 해당 근사 값을 5자리 수로 출력합니다.

1) var function을 통해, 'x,y,z' 변수의 3차원 좌표를 설정합니다.
2) (x,-5,5),(y,-5,5),(z,-5,5) 영역 상의 x+y == 5 라는 graph를 plot3d 함수를 이용해 출력합니다.
Q) 첫 문제에서 simplify.full() 함수는 무엇을 의미할까요?
9개의 댓글
이상구(LEE SANGGU)12월 14일 오후 1:41
Q) 첫 문제에서 simplify.full() 함수는 무엇을 의미할까요? A) simplify.full() 명령어는 위의 복잡한 숫자를 ... 보기좋은 모습/이해하기쉬운/이용하기쉬운/간단한 숫자로 표현해 줍니다.
강민지(2021####12)12월 14일 오후 1:51
넵 답변 감사합니다!
이상구(LEE SANGGU)12월 14일 오후 2:49
Others may try to plot a composite function (아래 코드 등 이용하여 여러분 전공 책에서 보는 더 복잡한 함수의 그래프 를 그려서 공유해 보세요^^) Try #Daniil Kim [GEDN047_I2(이상구)] W1 Assignment # Declaring an equation f = exp(x^3)-x^4 == x^2+x # Solving the equation precise_solution = solve(f, x) # Printing the equation show (f) # Visualizing the graph show (plot(f, (x, -1.3, 1.3))) # Printing the solution show (precise_solution) # That is the right solution, however, we need a numeric value, so now we move on to the approximation: # As we can see, we have three places where our function intersects with the X axis: (approx. -0.9, 0.7 and 1.1) # To make our approximations more precise, we will zoom in the approximated points by reducing the limit values # Approximating -0.9: show (plot(f, (x, -0.9, -0.85))) show ("The solution is approx. -0.8821") # Approximating 0.7: show (plot(f, (x, 0.68, 0.71))) show ("The solution is approx. 0.6879") # Approximating 1.1: show (plot(f, (x, 1.09, 1.11))) show ("The solution is approx. 1.0957") # Showing the result show ("The equation ", f, " has 3 roots:") show ("Precise roots: ", precise_solution) show ("Approximated roots: x1 = ", -0.8821, " x2 = ", 0.6879, " x3 = ", 1.0957 ) We can practice the above code in http://matrix.skku.ac.kr/KOFAC/
이상구(LEE SANGGU)12월 17일 오전 6:19
I am happy to teach good students. Hope to help you learn something valuable in this class. And 신입생 중 1등과 각 단과대 1등은 모두 A 주려고 합니다^^
고재윤(2020####97)12월 17일 오후 6:19
머리속으로 생각하기 힘든 3-dim vector을 plot으로 나타내니 이해가 잘 되었습니다. 감사합니다!!
이규식(2018####70)12월 18일 오후 9:44
3차원 벡터의 이해에 도움이 되었습니다. 감사합니다!
이규리(2018####45)12월 19일 오전 7:58
단순한 수식에 불과했던 3차원 벡터를 plot으로 나타내고 이를 이미지화해서 보다 잘 이해할 수 있었습니다. 감사합니다!
남상현(2018####17)12월 21일 오전 10:44
3차원 벡터를 visualize하여 이해하기 쉽게 설명하신 것 같습니다. 감사합니다!
박우현(2016####31)12월 21일 오전 10:55
3차원 벡터의 plotting을 이해하는데 도움이 되었습니다
Open Problem 3 solution by 고재윤 , 문태의, 강민지, 이규식, 남상현
Open Problem 3 solution by 고재윤 , 문태의, 강민지, 이규식, 남상현
|
◩ Open Problem 3 |
Make a composite function from the functions that you learned and draw a graph of it. [Hint: plot(sin(e^(1/3)^x), (x, -1.2, 10))]
http://matrix.skku.ac.kr/KOFAC/ 로 접속하여 sin(e^(1/3)^x) 식을 -1.2부터 10까지 나타내기 위해 아래와 같이 코딩하였습니다.
![]()
plot ( sin(e^(1/3)^x), (x, -1.2, 10))
in http://matrix.skku.ac.kr/KOFAC/ gives
보시는바와 같이 한줄로 간단하게 코딩되었습니다. 전체적인 형태는 plot( function, (variable, starting interval, finishing interval))입니다.
그 결과 아래와 같은 그래프가 결과값으로 출력되었습니다.

함수에 대해 더 잘 이해하기 위해 e^(1.3)^x 그래프를 아래와 같이 코딩하고 출력값을 살펴보았습니다.
![]()
plot (e^(1/3)^x)
in http://matrix.skku.ac.kr/KOFAC/ gives

e^(1/3)^x 그래프의 x>0 부분을 보면 y=1 부근으로 수렴하며 감소한다는 것을 알 수 있습니다.
이를 통해 sin(e^(1/3)^x)의 x>0 부분이 왜 수렴하는 형태로 나왔는지 추론할 수 있었습니다.
반대로 x<0부분을 보면 exponential하게 y값이 증가한다는 것을 알 수 있습니다.
sin은 주기함수 이므로 sin(e^(1/3)^x)의 x<0 부분이 왜 진동하는 형태로 그려졌는지 추론할 수 있었습니다.
7개의 댓글
고재윤(2020####97)12월 14일 오후 4:03
To access http://matrix.skku.ac.kr/KOFAC/ and indicate sin(e^(1/3)^x) expression from -1.2 to 10, I coded as follows. ( picture) As you can see, it is simply coded in one line. The overall shape is plot (variable, starting interval, finishing interval). As a result, the graph below was output as the result value. (picture) To better understand the function, we coded the e^ (1.3)^x graph as follows and looked at the output values. (picture) (pirture) If you look at the x>0 part of the e^(1/3)^x graph, you can see that it converges to the vicinity of y=1 and decreases. Through this, it was possible to infer why the x>0 part of sin(e^(1/3)^x) came out in a convergent form. Conversely, if you look at part x<0, you can see that the y-value increases exponentially. Since sin is a periodic function, we could infer why the x<0 part of sin(e^(1/3)^x) was drawn in a vibrating form.
이상구(LEE SANGGU)12월 14일 오후 5:29
Good job^^
문태의(2016####21)12월 16일 오후 6:25
합성 함수 그래프를 그리는 법, 특히 각 부분을 나누어서 보는 법에 대해 자세히 알 수 있었습니다. 감사합니다.
강민지(2021####12)12월 16일 오후 9:54
중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 특히 합성함수의 관점에서 두 합성 함수들을 분리하여 분석해 더 쉽게 이해할 수 있었습니다. 감사합니다!
이상구(LEE SANGGU)12월 17일 오전 6:15
I am happy to teach a good stydent. Hope to help you learn something in this class. 1학년 중 1등과 각 단과대 1등은 모두 A 주려고 합니다^^
이규식(2018####70)12월 18일 오후 5:32
plot 함수의 형태에 대한 설명도 덧붙여주셔서 이해가 편했습니다. 감사합니다.
남상현(2018####17)12월 21일 오전 10:45
plot function을 그래프와 함께 쉽게 설명해주신 것 같습니다. 감사합니다!
Open Problem 1 solution by 남상현
작성자 : 남상현(2018####17)작성일 : 12월 14일 오후 11:42
조회수 : 33
|
◩ Open Problem 1 |
Sketch the graph of three polynomial functions found in your other math books.
3개의 polynomial functions는 Erwin Kreyszig의 Advanced Engineering Mathematics에서 차용했습니다.
1. (x-5)*(x-3)*(x+2)
단순히 sketch에만 중점을 두는 데에 그치지 않고, 해당 polynomial function의 solutions를 쉽게 판단할 수 있었고,
코딩을 통해 visualize하여 solutions를 확인하였습니다.
저번 강의에서 배운 plot function을 이용하여 visualize하였습니다. plot function의 구조는 plot(function, (variable, starting_interval, finishing_interval))와 같습니다.
![]()
이에 대한 실행 결과는 다음과 같았습니다.

이와 같은 방법으로 해당 3차 방정식의 graph를 sketch할 수 있고, 3개의 solution인 x=-2, 3, 5 역시 눈으로 확인할 수 있었습니다.
2. x^2 2*x^3
같은 방법으로 graph를
visualize하였습니다.
실행 결과는 다음과 같습니다.

3. -0.1*x^12+0.3*x^9-1.1*x^7+1.3*x^6-3.7*x^2+12
마찬가지로 plot function을 이용하여 sage코딩을 하였습니다.

그 결과, 다음과 같은 실행 결과가 도출되었습니다.

그래프가 원점 근처에서 y=0 함수와 유사한 형태로 나타나는 것을 볼 수 있는데, 이 부근의 개형을 자세하게 확인하기 위해 plot function에서 interval을 (-10, 10)에서 (-2, 2)로 줄여주었습니다.
이에 대한 실행 결과는 다음과 같습니다.

이를 통해 실제로는 function이 0의 값을 갖지 않지만, interval를 늘리게 되면 범위가 넓어져 0처럼 보이게 된다는 사실을 알게 되었습니다.
그럼에도 위의 실행 결과가 원점 근처에서 아직 y축과 평형하게 보이는 것을 확인할 수 있으며, 이를 더욱 자세히 보기 위해 interval를 더 줄여보았습니다.

interval을 임의로 수차례 조정해 본 결과, (-1.6, 1.2)의 interval에서 그래프의 개형이 잘 관찰되는 것을 확인하였습니다.
실행 결과는 다음과 같습니다.

Problem 수행 결과, 다양한 polynomial functions에서 다양한 graph가 나타나는 것을 확인할 수 있었으며, plot function에서 interval을 설정하는 것 또한 중요하다는 것을 깨닫게 되었습니다.
7개의 댓글
남상현(2018####17)12월 15일 오전 11:06
이미지 파일이 깨져 수정하였습니다.
이상구(LEE SANGGU)12월 15일 오후 2:43
OK^^
문태의(2016####21)12월 16일 오후 6:23
덕분에 그래프를 그리는 방법과 특히 interval 조정을 통해 그래프가 잘 보이도록 하는 법에 대해 알 수 있었습니다. 감사합니다.
이상구(LEE SANGGU)12월 16일 오후 7:44
Very good. Congratulation^^
남상현(2018####17)12월 16일 오후 10:56
사진 파일이 계속 깨졌었는데 원인을 확인했습니다ㅠㅠ 최종 수정하였습니다.
이상구(LEE SANGGU)12월 17일 오전 6:10
Very good. I am happy to teach a good stydent. Hope to help you learn something in this class. 신입생 중 1등과 각 단과대 1등은 모두 A 주려고 합니다^^
이규식(2018####70)12월 18일 오후 2:50
그래프 예시가 많아서 이해가 잘되었습니다. 감사합니다.
Finalized OK by SGLee Open problem #1 우건주,고재윤
작성자 : 우건주(2017####97)작성일 : 12월 15일 오후 1:25
조회수 : 37
1번 문제는 다른 학생분들께서 많이 풀어주셨지만
Sage가 낯설어서 개인적인 연습차원으로 진행해보았습니다.

다항함수 중에서 f(x)=f(-x)의 특성을 가진 함수를 선택해서 plot하였습니다.

다항함수 중에서 f(x)=-f(-x)의 특성을 가진 함수를 선택해서 plot하였습니다.

위 함수는 앞선 두 함수처럼 독특한 성질을 갖진 않지만,
개형이 직관적으로 다가오지 않아서 plot해보았습니다.
5개의 댓글
이상구(LEE SANGGU)12월 15일 오후 2:41
잘 했습니다. 초보자면 연습삼아 해 보시고 ... 다른 학생 들 한 것 보고 ... Comment 달면서 배워 가세요^^
고재윤(2020####97)12월 16일 오후 10:31
y축 대칭 그래프, 원점 대칭 그래프의 특성을 한눈에 볼 수 있어서 좋았습니다. 나중에 sage가 잘 기억나지 않을 때, 학우님이 보여주신 예제들을 한번씩 그려보면 큰 도움이 될 것 같습니다. 좋은 예시 감사합니다!!
윤상수(2020####53)12월 18일 오후 11:48
여러가지 다양한 함수들의 개형을 프로그램으로 그려주셔서 공부하는 데 도움이 되었습니다.
남상현(2018####17)12월 21일 오전 10:55
종류별로 분류하여 함수들의 개형을 이해하기 쉽게 plot해주신 것 같습니다. 감사합니다!
이예진(2017####54)12월 21일 오후 12:08
저도 다양한 그래프를 통해 설명해주시니 직관적 이해에 도움이 되었습니다 .감사합니다 !
comment: 아직 sage에 익숙해지지 않았을 때, 이 글을 보며 복습하였던 것이 기억에 남습니다. 많은걸 배울 수 있는 글이었습니다.
4
Finalized OK by SGLee Open Problem 7 Solution by 고재윤, 황세진, 이예진, 강민지, 이규식, 윤상수, 남상현, 박우현
작성자 : 고재윤(2020####97)작성일 : 12월 15일 오후 2:59
조회수 : 45
Finalized OK by SGLee Open Problem 7 Solution by 고재윤, 황세진, 이예진, 강민지, 이규식, 윤상수, 남상현, 박우현
◩ Open Problem 7
What kinds of data can you apply the similarity measures we just discussed?
"What kinds of data can you apply the similarity measures we just discussed (Distance similarity)?"
Using the distance similarity, we can determine the color similarity. Defining the 3-dim vectors as an rgb pair, and later calculating Euclidean distance between them.
두가지 이상의 데이터를 비교하는 방법 중 하나로 두 데이터 사이의 거리를 구하는 방법이 있습니다.

위 식은 'Euclidean distance' 에 대한 공식으로, 좌표에서 점 A(a1, a2)와 점 B(b1, b2)사이의 거리를 나타내는 공식입니다.
이 공식을 기초로 하여 두 데이터 사이의 연관성 또는 similarity를 구할 수 있습니다. 대표적으로, RGB 표를 통해 두가지 이상의 빛들의 similarity를 쉽게 알아낼 수 있습니다.
위 그림은 RGB 표를 나타낸 것입니다.
우리가 전자기기를 통해 보는 빛의 색은 빛의 삼원색인 빨강 (R) , 초록 (G), 파랑(B) 이 세가지 색의 조합으로 위 그림과 같은 많은 종류의 색을 표현할 수 있습니다.
즉, 색 데이터는 3-dim vector로 표현됩니다. 우리는 색 데이터간의 거리로 데이터간의 similarity를 판단할 수 있을 것입니다. (Distance Similarity)
color1 = [1, 2, 3], color2= [11, 22, 33], color3= [12, 23, 34]라는 세 가지 색 데이터가 있다고 가정해보도록 하겠습니다.
각 벡터의 성분은 [R,G,B]이고, 성분의 크기는 그 성분의 세기를 뜻합니다.
color1과 color2 중 어떤 색이 color3와 더 비슷한 색인지 알기 위해( Distance Similarity를 구하기 위해 ) 아래와 같이 코딩하였습니다.

여기서 bool() 명령어는 괄호 안의 조건문이 참이면 True, 거짓이면 False를 출력하는 명령어입니다.
위와 같이 코딩한 결과 아래와 같이 출력되었습니다.

따라서 Color2가 Color1보다 Color3와 더 비슷한, similarity가 높은 색 데이터라는 것을 알 수 있었습니다.
10개의 댓글
고재윤(2020####97)12월 15일 오후 3:10
One of the ways to compare two or more data is to find the distance between the two data.(Equation Figure)The above equation is a formula for 'Euclidean distance', which represents the distance between points A(a1, a2) and B(b1, b2) at the coordinates.Based on this formula, the association or similarity between the two data can be obtained. Typically, RGB tables make it easy to find out the similarity of two or more lights.(RGB table )The figure above shows the RGB table.The color of light we see through electronic devices is a combination of three primary colors, red (R), green (G), and blue (B), so we can express many kinds of colors like the picture above.In other words, color data is expressed as 3-dimvector. We will be able to determine the similarity between data by the distance between color data.(Distance Similarity)Let's assume that there are three color data: color 1 = [1, 2, 3], color 2 = [11, 22, 33], and color 3 = [12, 23, 34].The component of each vector is [R, G, B], and the size of the component means the strength of the component.To find out which color is more similar to color 3 (to obtain Distance Similarity), we coded as follows. (Input Figure)Here, the bool() command is a command that outputs True if the conditional statement in parentheses is true and False if it is false.(Output Figure)As a result of coding as above, it was printed as follows.Therefore, it was found that Color2 was more similar to Color3 than Color1.
이상구(LEE SANGGU)12월 15일 오후 4:42
Wonderful~~ You are the First on Day 3 problem^^ + 1
이예진(2017####54)12월 15일 오후 10:12
오... 감사합니다 진짜 어려운 개념일 줄 알았는데 이렇게 정리해주셔서 바로 이해되었습니다
강민지(2021####12)12월 16일 오후 9:52
RGB와 벡터 개념이 복잡하여 이해하기 힘들었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
이상구(LEE SANGGU)12월 17일 오전 6:04
I am very happy that you got it^^각 단과대 1등은 모두 A 주려고 합니다^^
황세진(2015####21)12월 17일 오후 9:07
RGB를 3차원 벡터로 표현하여 거리를 구하고 더 가까운 거리에 위치할수록 더 비슷한 색이라는 내용을 너무 잘 정리해주셔서 이해하기 쉬웠습니다. 감사합니다!
이규식(2018####70)12월 18일 오후 8:07
데이터 간의 거리를 색 간의 유사도를 판별하는 지표로 활용하는 것이 인상적이었습니다. 좋은 이해가 되었습니다 감사합니다!
윤상수(2020####53)12월 18일 오후 11:50
실제 와닿는 예를 통해 개념을 더 확실히 공부할 수 있었습니다. 감사합니다.
남상현(2018####17)12월 21일 오전 10:47
Distance similarity를 color를 통해 접근하신 방법이 참신하고 이해하기 쉬운 것 같습니다. 감사합니다!
박우현(2016####31)12월 21일 오전 10:56
단순 수학적인 접근 뿐만 아니라 RGB표를 이용한 해석이 흥미로운 것 같습니다
comment: 디스플레이가 R,G,B 세 가지 색의 조합으로 색을 표현한다는 것을 알고 있었기 때문에 이 문제를 푸는데 어렵지 않았습니다. 학우님들께서 많은 댓글을 남겨주셔서 뿌듯했습니다.
Open Problem 6 solution by 남상현
Final OK by SGLee [Re-Finalized by 정운섭, 남상현, 고재윤, 이규식 SGLee (problem 6) ] 가역 가능한 matrix 중에서 is_invertible() 의 값이 false 가 나오는 경우에 대하여
작성자 : 정운섭(2018####88)작성일 : 12월 16일 오후 1:49
조회수 : 36
|
◩ Open Problem 6 |
Find bigger than matrix from the internet or other textbooks and check whether transpose and inverse matrices exist. If those exist, find out what those are.
"With matrix bigger than 5x5, check whether transpose and inverse matrices exist."
5x5보다 큰 행렬로 6x6 행렬을 선택하였습니다.
우선, 다음과 같은 행렬을 이용하였습니다.
[1,0,3,2,0,-1],[0,4,1,-2,1,0],[2,1,3,0,0,-3],[0,1,1,2,1,1],[3,2,3,-4,-1,0],[1,0,0,3,2,-2]
이에 대한 전치행렬과 역행렬은 각각 transpose() 함수와 reverse() 함수를 사용하였습니다.

이에 대한 실행 결과는 다음과 같습니다.

이를 통해 6x6행렬 역시 transpose와 reverse가 존재한다는 사실을 알게 되었습니다.
transpose의 경우 어떤 matrix든 존재하지만, reverse의 경우 특수한 경우에만 존재한다는 사실을 이용하여, 이번에는 역행렬이 존재하지 않는 행렬을 만들어 보았습니다.
[0,2,0,-1,0,-2],[0,-2,2,0,1,0],[0,1,0,1,3,0],[0,-1,0,0,1,1],[0,2,0,0,2,1],[0,-1,0,3,0,0]
이 때 역행렬의 존재 여부는 is_invertible() 를 사용하였습니다.

실행 결과는 다음과 같습니다.

이번에는 역행렬이 존재하지 않는다는 것을 확인할 수 있었습니다.
comment: 다른 학우님께서 random_matrix 명령어 안의 성분 ‘ZZ’, ‘QQ’에 대해 질문하신 글이 있었습니다. 그 글을 통해 ‘ZZ’, ‘QQ’를 적용해보고 싶어서 이번 문제에 이것들을 사용해서 풀었습니다. 다른 학우님의 글을 보고 저의 솔루션을 발전시킨 첫 문제여서 뿌듯했습니다.
2개의 댓글
이상구(LEE SANGGU)12월 15일 오후 2:39
위의 단순 명령어로는 다른 책에 있는 많은 가역행렬도 비 가역이라고 나옵니다. ... 실제 확인해 보고 이유가 무엇인지 생각해 보고 ... 공유해 보세요.
이상구(LEE SANGGU)12월 17일 오전 6:08
I am happy to teach a good stydent. Hope to help you learn something in this class. 신입생 중 1등과 각 단과대 1등은 모두 A 주려고 합니다^^
Final OK by SGLee [Re-Finalized by 정운섭, 남상현, 고재윤, 이규식 SGLee (problem 6) ] 가역 가능한 matrix 중에서 is_invertible() 의 값이 false 가 나오는 경우에 대하여
아래 제가 올린 problem 6의 풀이에서 matrix가 가역가능함에도 불구하고 is_invertible() 함수의 값이 false가 나오는 경우가 있었습니다.
여러 matrix를 토대로 실행해 본 결과 inverse 값이 정수의 값을 가질 때는 is_invertible() 함수의 값이 true를 출력하였지만, inverse 값이 유리수(분수)의 형태로 표현되는 경우에는
invertible 한 경우에서도 is_invertible() 함수의 값이 false를 출력하였습니다.
#### 그에 대한 이상구 교수님의 답변입니다. #####
1. Very good^^A. 정운섭 씨,질문에 답을 줍니다.random_matrix에서 QQ를 사용할 때는 옵션을 x = 0, y= 5 이런 식이 아니라 num_bound = 20, den_bound = 4 형태로 써야 합니다.num_bound 는 분자의 범위den_bound 는 분모의 범위(예시)random_matrix(QQ, 6, 6, num_bound = 20, den_bound = 4)(http://matrix.skku.ac.kr/KOFAC/ 에서 실습하시고, 한번 더 업그레이드 하세요^^)**************************[ 5/4 -1 -5/4 17 15/4 -17/4][ -7 11/4 -10 10 -4 17][ -5 -3 17 6 18 -13/4][ 15 -11 9/4 -5 0 -19/3][ 11/4 -10 9/2 -5 -5 0][ 16 0 -16 -9/2 -16 19/2]
In http://matrix.skku.ac.kr/KOFAC/,
[Take a look on my Quick reference 참고하세요^ http://matrix.skku.ac.kr/2009-Sage/Sage-Reference.html ]
<zz를 사용했을 때 rref를 사용해서 inverse여부를 확인하는 코드>
A= random_matrix(ZZ, 6, 6, x=0, y=5)
print ("A=")
print (A)
print ()
print("-- Q. Is A invertible? Answer =")
print (A.is_invertible())
print ()
print("We may have a wrong answer, check the
following")
print ()
print (A.rref())
print("If we have an Identity matrix, A is an
invertible matrix.")
print ()
<자동생성 된 행렬 A를 QQ로 선언한 행렬 B에 입력한 후 가역행렬인지 확인하는 코드>
B = matrix(QQ, 6, 6, [0, 0, 4, 3, 1, 4, 1, 4, 0, 0, 1, 1, 3, 2, 4,
4, 1, 0, 1, 4, 0, 1, 1, 2, 1, 1, 2, 4, 0, 1, 4, 0, 4, 0, 0, 2,])
# C = matrix(QQ, 6, 6, [ [0, 0, 4, 3, 1, 4],
[1, 4, 0, 0, 1, 1], [3, 2, 4, 4, 1, 0], [1, 4, 0, 1, 1, 2], [1, 1, 2, 4, 0, 1],
[4, 0, 4, 0, 0, 2,]]) 으로 입력해도 됩니다. print ("B=")
print (B)
print ()
print("-- Q. A.is_invertible() - Answer = \n")
print (A.is_invertible())
print ()
print("원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한 방법입니다.")
print ()
print("-- Q. B.is_invertible() - Answer = \n")
print (B.is_invertible())
print ()
print("--- Inverser Matrix of B = \n")
print (B.inverse())
print () C = matrix(QQ, 6, 6, [ [0, 0, 4, 3, 1, 4], [1, 4, 0,
0, 1, 1], [3, 2, 4, 4, 1, 0], [1, 4, 0, 1, 1, 2], [1, 1, 2, 4, 0, 1], [4, 0, 4,
0, 0, 2,]])
print ("C=")
print (C)
print ()
print("-- Q. C.is_invertible() - Answer = \n")
print (C.is_invertible())
print ()
print("원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한 방법입니다.")
print ()
print ()
print("--- Inverser Matrix of C = \n")
print (C.inverse())
print ()
******
A=
[0 0 4 3 1 4]
[1 4 0 0 1 1]
[3 2 4 4 1 0]
[1 4 0 1 1 2]
[1 1 2 4 0 1]
[4 0 4 0 0 2]
-- Q. Is A invertible? Answer =
False
We may have a wrong answer, check the following
[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 1 0 0 0]
[0 0 0 1 0 0]
[0 0 0 0 1 0]
[0 0 0 0 0 1]
If we have an Identity matrix, A is an invertible matrix.
B=
[0 0 4 3 1 4]
[1 4 0 0 1 1]
[3 2 4 4 1 0]
[1 4 0 1 1 2]
[1 1 2 4 0 1]
[4 0 4 0 0 2]
-- Q. A.is_invertible() - Answer =
False
원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한 방법입니다.
-- Q. B.is_invertible() - Answer =
True
--- Inverser Matrix of B =
[ -5/21 -8/7 2/7 23/21 -8/21 1/7]
[ 1/63 8/7 -2/7 -55/63 31/63 1/42]
[ 13/63 19/14 -3/14 -85/63 25/63 5/84]
[ -4/63 -4/7 1/7 31/63 2/63 -2/21]
[ 1/9 -2 1 17/9 -14/9 -1/3]
[ 4/63 -3/7 -1/7 32/63 -2/63 2/21]
C=
[0 0 4 3 1 4]
[1 4 0 0 1 1]
[3 2 4 4 1 0]
[1 4 0 1 1 2]
[1 1 2 4 0 1]
[4 0 4 0 0 2]
-- Q. C.is_invertible() - Answer =
True
원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한 방법입니다.
--- Inverser Matrix of C =
[ -5/21 -8/7 2/7 23/21 -8/21 1/7]
[ 1/63 8/7 -2/7 -55/63 31/63 1/42]
[ 13/63 19/14 -3/14 -85/63 25/63 5/84]
[ -4/63 -4/7 1/7 31/63 2/63 -2/21]
[ 1/9 -2 1 17/9 -14/9 -1/3]
[ 4/63 -3/7 -1/7 32/63 -2/63 2/21]
#### 이상구 교수님이 정리해주신 행렬과 관련된 함수들 사용법 ####
*** In http://matrix.skku.ac.kr/2009-Sage/Sage-Reference.html
주의 : 행, 열의 인덱스는 0부터 시작
A = matrix(ZZ, [[1,2],[3,4],[5,6]])
3 × 2 정수 행렬
B = matrix(QQ, 2, [1,2,3,4,5,6])
2 × 3 유리수 행렬
C = matrix(CDF, 2, 2, [[5*I, 4*I], [I, 6]])
53-bit precision을 가지는 2 × 2 복소수 행렬
Z = matrix(QQ, 2, 2, 0) 영행렬
D = matrix(QQ, 2, 2, 8)
대각원소가 모두 8인 2 × 2 대각행렬
I = identity_matrix(5) 5 × 5 단위행렬
J = jordan_block(-2,3)
…
Finalized OK by SGLee Open problem #1 우건주,고재윤
작성자 : 우건주(2017####97)작성일 : 12월 15일 오후 1:25
조회수 : 34
1번 문제는 다른 학생분들께서 많이 풀어주셨지만
Sage가 낯설어서 개인적인 연습차원으로 진행해보았습니다.
…
#### 대표적으로 사용되는 환(ring)과 체(field) ####
대표적으로 사용하는 환(ring)과 체(field)ZZ 정수, 환(ring)QQ 유리수, 체(field)QQbar 확장된 체(algebraic extension field)RDF 실수, 체(field, inexact)RR 실수, 체(53-bit, inexact)RealField(400) 실수, 체(400-bit, inexact)CDF, CC, ComplexField(400) 복소수, 체(field)RIF 실수, 구간체(interval field)GF(2) GF(2) (mod 2, 체, 특화된 구성)GF(p) == FiniteField(p) p 소수 p로 구성된 체(field)Integers(6) mod 6로 만들어진 환(ring)QuadraticField(-5, ’x’) rationals adjoin x=√−?5SR symbolic expressions으로 만들어진 환(ring)도움말이 필요한 경우<command>? 명령에 대한 요약 및 예제<command>?? 명령에 대한 코드소스
https://cocalc.com/?utm_source=sagemath.org&utm_medium=icon will be also a good place to be used later.
#### 아래는 이전에 있었던 discussion들을 모아놓은 것입니다. ####
*******

< inverse가 정수로만 이루어진 경우>

<inverse가 유리수를 포함하는 경우>
이를 통해 결론을 도출해봤을 때, is_invertible() 함수는 입력 matrix가 정수형태의 data type을 가지고 있을 때, 내부적으로 계산하는 도중 정수의 범위를 넘어가는 유리수의 연산으로 넘어갈 때, 오류가 발생한다는 사실을 알 수 있습니다.
따라서 입력 matrix의 data type을 정수가 아닌 유리수로 바꾸어주면 이러한 문제가 해결됩니다. -> ZZ를 QQ로 바꾸어줌

따라서 앞으로 is_invertible()의 값을 구할 때는 matrix의 data_type이 QQ인지 유념해야 될 것 같습니다. 또한 다른 함수를 사용할 때도 마찬가지로 사용하고 있는 data type을 유념해서 사용해야 될 것 같습니다.
또한, is_invertible()이 아닌 다른 방법으로 확실하게 역수가 있는지 없는지를 구하고 싶을 때는 rref() 함수를 사용해서 identity matrix 가 나오는 지 확인하는 것도 좋은 방법입니다.

위의 코드에서는 A.rref()의 출력이 identity matrix 이기 때문에 invertible 하다고 할 수 있습니다.
[Discuss] 이유에 대하여 토론해 보세요. Problem 6 solution by 정운섭, Help me!
작성자 : 정운섭(2018####88)작성일 : 12월 15일 오후 10:05
조회수 : 26
[Discuss] 이유에 대하여 토론해 보세요. Problem 6 solution by 정운섭, Help me!
Open problem 6: Find bigger than 5x5 matrix from the internet or other textbook and check whether transpose and inverse matrices exist. If those exist, find out what those are.
random_matrix 함수를 사용하여 6x6 matrix A 를 생성한 후, invertible 한 지 여부를 출력하게 하고, A의 transpose 와 inverse를 함수를 사용하여 출력하는 코드를 짜봤습니다.

이 코드를 실행시켰더니 아래와 같은 결과가 나왔습니다.

여기서 matrix A의 transpose는 정상적으로 출력되지만, is_invertible() 함수의 출력결과가 false임에도 불구하고 inverse() 함수의 결과가 분수의 형태로 출력이 되는 것을 확인할 수 있었습니다.
실제로 위의 matrix A의 inverse 값을 구해본 결과 A는 invertible 한 것을 확인할 수 있었고, inverse() 함수의 출력이 맞다는 것을 확인할 수 있었기 때문에, is_invertible() 함수의 출력이 잘못되었다는
것을 확인할 수 있었습니다.
Question) 왜 matrix가 invertible 함에도 불구하고, is_invertible()의 값은 false를 출력했는지 잘 모르겠습니다.
이상구(LEE SANGGU)12월 15일 오후 10:15
ZZ 를 QQ 나 RDF 로 바꾸어서 다시 해 보세요^^(ZZ 는 자연수 에서의 계산 ... QQ 는 유리수에서의 연산 ... , RDF 에서 연산/계산 한다고 미리 정의 해 주어야만 여러분이 그동안 해온 보통의 계산이 되고, CDF 를 이용하면 복소수 까지? )그러나 invertible 인지를 물어보는 것 대신 A.RREF() 가 항등행렬 identity matrix 임인지 아닌지를 구해서 가역행렬임을 확인하면 에러가 100% 없습니다.두 가지 방법으로 구해서 비교해 보면 ... 코드 사용시 유의 할점을 자연스럽게 배우게 될 것입니다.그 이유에 대하여 토론해 보세요.
정운섭(2018####88)12월 15일 오후 10:38
교수님 말씀대로 ZZ를 QQ로 바꾸어서 A= random_matrix(QQ, 6, 6, x=0, y=5) 를 입력하니 출력창에 오류가 발생합니다...
정운섭(2018####88)12월 15일 오후 10:56
다시 생각해보니 random_matrix는 QQ를 사용할 수 없겠네요 랜덤한 정수를 반환하는 함수이기 때문에 유리수로 지정하면 에러가 뜨는군요 matrix 함수를 사용하니 에러가 없어졌습니다.
이전
다음
6개의 댓글
이상구(LEE SANGGU)12월 16일 오후 3:34
Very good^^A. 정운섭 씨,질문에 답을 줍니다.random_matrix에서 QQ를 사용할 때는 옵션을 x = 0, y= 5 이런 식이 아니라 num_bound = 20, den_bound = 4 형태로 써야 합니다.num_bound 는 분자의 범위den_bound 는 분모의 범위(예시)random_matrix(QQ, 6, 6, num_bound = 20, den_bound = 4)(http://matrix.skku.ac.kr/KOFAC/ 에서 실습하시고, 한번 더 업그레이드 하세요^^)**************************[ 5/4 -1 -5/4 17 15/4 -17/4][ -7 11/4 -10 10 -4 17][ -5 -3 17 6 18 -13/4][ 15 -11 9/4 -5 0 -19/3][ 11/4 -10 9/2 -5 -5 0][ 16 0 -16 -9/2 -16 19/2]
이상구(LEE SANGGU)12월 16일 오후 3:40
다른 학생이 이것 읽고 이해되었으면 ... 이해되었다고 여기에 코멘트 준 학생들은 모두 자신의 Midterm보고서/Exam 에 이 파일을 추가 할 수 있습니다. ... 의견을 여기에 답글로 보태주세요^^ ... 그럼 채점하고 Finakized OK by SGLee 달고 여러분 이름 추가하여 마무리 합니다.
남상현(2018####17)12월 16일 오후 9:49
교수님께서 제 글에도 같은 지적을 하셨는데 덕분에 완벽하게 이해하였습니다. 감사합니다!
고재윤(2020####97)12월 16일 오후 10:45
저도 이전에 있었던 Discussion 글을 어제 따라해본 결과, 같은 오류가 발생했었고, 단순히 'random_matrix 함수가 랜덤한 유리수를 만드는 것은 불가능하구나' 라고 결론을 내렸습니다.왜 랜덤한 유리수는 안될까 라고 의문이 들었지만 그냥 넘어가려고 했는데, 역시 옵션을 달리해서 해결하는 방법이 있었군요!!좋은 깨달음을 주셔서 감사합니다.또, 교수님께서 알려주신 행렬과 관련된 명령어들을 정리해주셨는데, 앞으로 있을 활동에 큰 도움이 될 것 같습니다!! 정말 감사합니다.
이상구(LEE SANGGU)12월 17일 오전 5:45
You are all excellent student^^Expect both do very well and improve ypur ability in our class.Go for A.
이규식(2018####70)12월 18일 오후 10:36
이해에 도움이 되었습니다. 감사합니다!
comment: pbl report 앞 부분에 보면 meaningful한 게시글에 대해 작성하는 부분이 있었습니다. 그 중 이 글이 있었는데 저는 이 글이 2번째로 저에게 meaningful한 글이라고 생각합니다. 앞부분에 쓴 내용을 정리하자면, 이 글을 쓰신 학우님께서 교수님으로부터 얻은 질문의 답 뿐만 아니라, 강의 자료의 내용(sage command) 또한 정리하여 주셔서 기억에 남았습니다. 8일차가 된 지금까지도 이 글을 보면서 제가 어떤 code를 써야하는지 고민하곤 합니다.
Finalized OK by SGLee Open Problem 7 Solution by 고재윤, 황세진, 이예진, 강민지, 이규식, 윤상수, 남상현, 박우현
작성자 : 고재윤(2020####97)작성일 : 12월 15일 오후 2:59
조회수 : 37
Finalized OK by SGLee Open Problem 7 Solution by 고재윤, 황세진, 이예진, 강민지, 이규식, 윤상수, 남상현, 박우현
|
◩ Open Problem 7 |
What kinds of data can you apply the similarity measures we just discussed?
"What kinds of data can you apply the similarity measures we just discussed (Distance similarity)?"
Using the distance similarity, we can determine the color similarity. Defining the 3-dim vectors as an rgb pair, and later calculating Euclidean distance between them.
두가지 이상의 데이터를 비교하는 방법 중 하나로 두 데이터 사이의 거리를 구하는 방법이 있습니다.

위 식은 'Euclidean distance' 에 대한 공식으로, 좌표에서 점 A(a1, a2)와 점 B(b1, b2)사이의 거리를 나타내는 공식입니다.
이 공식을 기초로 하여 두 데이터 사이의 연관성 또는 similarity를 구할 수 있습니다. 대표적으로, RGB 표를 통해 두가지 이상의 빛들의 similarity를 쉽게 알아낼 수 있습니다.

위 그림은 RGB 표를 나타낸 것입니다.
우리가 전자기기를 통해 보는 빛의 색은 빛의 삼원색인 빨강 (R) , 초록 (G), 파랑(B) 이 세가지 색의 조합으로 위 그림과 같은 많은 종류의 색을 표현할 수 있습니다.
즉, 색 데이터는 3-dim vector로 표현됩니다. 우리는 색 데이터간의 거리로 데이터간의 similarity를 판단할 수 있을 것입니다. (Distance Similarity)
color1 = [1, 2, 3], color2= [11, 22, 33], color3= [12, 23, 34]라는 세 가지 색 데이터가 있다고 가정해보도록 하겠습니다.
각 벡터의 성분은 [R,G,B]이고, 성분의 크기는 그 성분의 세기를 뜻합니다.
color1과 color2 중 어떤 색이 color3와 더 비슷한 색인지 알기 위해( Distance Similarity를 구하기 위해 ) 아래와 같이 코딩하였습니다.

여기서 bool() 명령어는 괄호 안의 조건문이 참이면 True, 거짓이면 False를 출력하는 명령어입니다.
위와 같이 코딩한 결과 아래와 같이 출력되었습니다.

따라서 Color2가 Color1보다 Color3와 더 비슷한, similarity가 높은 색 데이터라는 것을 알 수 있었습니다.
이전
다음
10개의 댓글
고재윤(2020####97)12월 15일 오후 3:10
One of the ways to compare two or more data is to find the distance between the two data. (Equation Figure) The above equation is a formula for 'Euclidean distance', which represents the distance between points A(a1, a2) and B(b1, b2) at the coordinates. Based on this formula, the association or similarity between the two data can be obtained. Typically, RGB tables make it easy to find out the similarity of two or more lights. (RGB table ) The figure above shows the RGB table. The color of light we see through electronic devices is a combination of three primary colors, red (R), green (G), and blue (B), so we can express many kinds of colors like the picture above. In other words, color data is expressed as 3-dimvector. We will be able to determine the similarity between data by the distance between color data.(Distance Similarity) Let's assume that there are three color data: color 1 = [1, 2, 3], color 2 = [11, 22, 33], and color 3 = [12, 23, 34]. The component of each vector is [R, G, B], and the size of the component means the strength of the component. To find out which color is more similar to color 3 (to obtain Distance Similarity), we coded as follows. (Input Figure) Here, the bool() command is a command that outputs True if the conditional statement in parentheses is true and False if it is false. (Output Figure) As a result of coding as above, it was printed as follows. Therefore, it was found that Color2 was more similar to Color3 than Color1.
이상구(LEE SANGGU)12월 15일 오후 4:42
Wonderful~~ You are the First on Day 3 problem^^ + 1
이예진(2017####54)12월 15일 오후 10:12
오... 감사합니다 진짜 어려운 개념일 줄 알았는데 이렇게 정리해주셔서 바로 이해되었습니다
강민지(2021####12)12월 16일 오후 9:52
RGB와 벡터 개념이 복잡하여 이해하기 힘들었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
이상구(LEE SANGGU)12월 17일 오전 6:04
I am very happy that you got it^^ 각 단과대 1등은 모두 A 주려고 합니다^^
황세진(2015####21)12월 17일 오후 9:07
RGB를 3차원 벡터로 표현하여 거리를 구하고 더 가까운 거리에 위치할수록 더 비슷한 색이라는 내용을 너무 잘 정리해주셔서 이해하기 쉬웠습니다. 감사합니다!
이규식(2018####70)12월 18일 오후 8:07
데이터 간의 거리를 색 간의 유사도를 판별하는 지표로 활용하는 것이 인상적이었습니다. 좋은 이해가 되었습니다 감사합니다!
윤상수(2020####53)12월 18일 오후 11:50
실제 와닿는 예를 통해 개념을 더 확실히 공부할 수 있었습니다. 감사합니다.
남상현(2018####17)12월 21일 오전 10:47
Distance similarity를 color를 통해 접근하신 방법이 참신하고 이해하기 쉬운 것 같습니다. 감사합니다!
박우현(2016####31)12월 21일 오전 10:56
단순 수학적인 접근 뿐만 아니라 RGB표를 이용한 해석이 흥미로운 것 같습니다
Finalized OK by SGLee Open Problem 8 Solution by 문태의, 김지훈, 깅민지
작성자 : 문태의(2016####21)작성일 : 12월 15일 오후 10:41
조회수 : 58
[Open Problem 8]
What
kind of data you cannot use this similarity measure using the distance? Any
other measures that you can think of? (Hint: Vectors/Data in the same
directions)
"Can you think of the data you cannot apply to the similarity measure we
just discussed (Distance similarity)?"
데이터 유사성을 측정하기 위해 'Euclidean distance'방식을 적용할 수 없는 데이터는 문장입니다.
예를 들어 다음과 같은 문장이 있다고 생각해보겠습니다.
보기에 가장 유사한 문장은 1번과 3번입니다.
이 세 문장의 데이터 유사성을 측정하기 위해 'Euclidean distance'방식을 사용해보겠습니다.
우선 각 문장이 각 단어를 몇개나 갖고 있는지 표로 나타내보겠습니다.
|
|
인공지능 |
수학 |
과학 |
어려워 |
|
1번 |
1 |
1 |
0 |
1 |
|
2번 |
1 |
0 |
1 |
1 |
|
3번 |
3 |
3 |
0 |
3 |
각 문장을 벡터로 나타내고 각 데이터 간의 거리를 구하는 코드를 작성합니다.

결과는 다음과 같습니다.

값이 낮을수록 두 데이터가 유사도가 높은 것입니다.
2번 문장과 3번 문장이 가장 유사도가 떨어지는 것은 어느정도 예상한 결과이나,
1번 문장이 3번 문장보다 2번 문장과 유사하다는 결과가 도출되었습니다.
단순히 데이터 간의 거리를 사용하기 때문에 일어난 결과라고 볼 수 있습니다.
이러한 데이터의 경우 두 데이터의 거리를 비교하는 방법으로는 유사도를 비교하기 어려워 보입니다.
따라서 해당 데이터의 유사도를 측정하기 위해서는 코사인 유사도(Cosine Similarity) 방식을 사용해야 합니다.
코사인 유사도는 두 벡터가 이루는 각이 작을수록 유사도가 높은 것으로 보는 방식으로, 각이 작을수록 코사인 값이 1에 가까워지고 각이 클수록 코사인 값이 -1에 가까워집니다.
두 벡터의 코사인 값은 벡터의 내적을 이용해 다음과 같이 구할 수 있습니다.

아까 예시로 든 세 문장의 유사도를 이번엔 코사인 유사도 방식을 사용하여 구해보겠습니다.

결과는 다음과 같습니다.

아까 말했듯이 결과 값은 -1~1의 범위를 가지며, 1에 가까울수록 데이터 유사도가 높고, -1에 가까울수록 데이터 유사도가 낮습니다.
이번 결과에서는 1번 문장과 3번 문장이 가장 유사하다는 결과를 도출하였습니다.
두 문장의 벡터가 크기만 다를뿐 방향이 같기 때문에 도출되는 결과라고 생각할 수 있습니다.
김지훈(2020####97)12월 15일 오후 11:39
유사도측정 방식의 비교가 직관적으로 이해가 잘되는 예시인것 같아서 도움이 많이 됬습니다!! '유사하다'는 의미는 같은 단어를 얼마나 공유하는지로 정의하신건가요?? 그러면 확실히 같은패턴을 분석하는 것이 초점인 데이터는 거리유사도보다 코사인유사도를 사용하는 것이 적절하다.... 라고 이해하면 될까요?
고재윤(2020####97)12월 16일 오전 2:30
'Euclidean distance'방식을 적용할 수 없는 데이터를 가정하는게 꽤 어렵다고 생각했었는데, 예시를 잘 들어 설명해 주셔서 이해가 잘 되었습니다. 다른 예시들도 생각해보도록 하겠습니다!!
문태의(2016####21)12월 16일 오후 6:28
김지훈님께, 네 문장이 같은 단어를 공유할수록 유사도가 높습니다. 이러한 방식을 사용해서 관련 검색과 같은 기능을 구현할 수 있지 않나 생각합니다.
강민지(2021####12)12월 16일 오후 9:58
Euclidean Distance 방식이 어려워 이해하기 힘들었었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
이상구(LEE SANGGU)12월 17일 오전 5:48
Good job.
이상구(LEE SANGGU)12월 17일 오전 11:45
Finilize this^^
이규식(2018####70)12월 18일 오후 8:46
유클리디안 거리를 이용한 유사도 측정에 대해 더 치밀하게 이해하게 되었습니다. 문제 제기와 그에 따른 해결법까지 제시해주셔서 매우 이해가 쉬웠습니다. 감사합니다.
윤상수(2020####53)12월 18일 오후 11:52
개념에 맞는 예시를 통해 효과적으로 내용을 보여주신 것 같습니다. 감사합니다.
남상현(2018####17)12월 21일 오전 10:53
Euclidean Distance와 Cosine Simiarity에 대해 잘 설명해주신 것 같습니다. 감사합니다!
이예진(2017####54)12월 21일 오후 12:11
ㅎㅎ 이렇게 문장 예시로 들어주시니 친근하고 이해가 잘 되었습니다. 감사합니다 !
Finalized OK by SGLee [HW4] Problem 11 (Solution) by 강민지. 고재윤, 도경근, 문태의, 이규식, 남상현, 이예진
작성자 : 강민지(2021####12)작성일 : 12월 16일 오후 12:06
조회수 : 34
Finalized OK by SGLee [HW4] Problem 11 (Solution) by 강민지. 고재윤, 도경근, 문태의, 이규식, 남상현, 이예진
Open Problem 11 : "Make two 5-dim vectors and find the inner product and the angle of two vectors."
먼저, v=[1,2,3,4,5], w=[-1,-2,-3,-4,-5]인 두 개의 5-dimensional vectors들을 만들었습니다.
두 벡터의 내적vw는 inner_product function을 이용해, vw=v.inner_product(w) 형식으로 입력하였습니다.
두 벡터의 사잇각은 코사인 유사도를 통해 구하였는데, 이는 아래 식을 통해 계산할 수 있습니다.

마지막으로 유효숫자 3자리로 근삿값을 구해 출력하였습니다.

7개의 댓글
도경근(2018####55)12월 16일 오후 9:19
Thanks you. Now I do fully understand this problem and solution
고재윤(2020####97)12월 17일 오전 2:09
cos similarity에 대해 생각해보는데에 큰 도움이 되었습니다. 감사합니다
이상구(LEE SANGGU)12월 17일 오전 5:45
Job well done.
문태의(2016####21)12월 17일 오후 11:51
cosine similarity를 더 깊게 이해할 수 있게 되었습니다. 감사합니다!
이규식(2018####70)12월 18일 오후 9:06
이해에 도움이 되었습니다. 감사합니다.
남상현(2018####17)12월 21일 오전 10:59
Cosine simiarity를 쉽고 자세하게 설명해주신 것 같습니다. 감사합니다!
이예진(2017####54)12월 21일 오후 12:07
사잇값 관련 내용 정리와 코드를 함께 제시해 주시니 이해에 큰 도움이 되었습니다 .감사합니다 !
Final OK by SGLee [Re-Finalized by 정운섭, 남상현, 고재윤, 이규식 SGLee (problem 6) ] 가역 가능한 matrix 중에서 is_invertible() 의 값이 false 가 나오는 경우에 대하여
Final OK by SGLee [Re-Finalized by 정운섭, 남상현, 고재윤, 이규식 SGLee (problem 6) ] 가역 가능한 matrix 중에서 is_invertible() 의 값이 false 가 나오는 경우에 대하여
아래 제가 올린 problem 6의 풀이에서 matrix가 가역가능함에도 불구하고 is_invertible() 함수의 값이 false가 나오는 경우가 있었습니다.
여러 matrix를 토대로 실행해 본 결과 inverse 값이 정수의 값을 가질 때는 is_invertible() 함수의 값이 true를 출력하였지만, inverse 값이 유리수(분수)의 형태로 표현되는 경우에는
invertible 한 경우에서도 is_invertible() 함수의 값이 false를 출력하였습니다.
#### 그에 대한 이상구 교수님의 답변입니다. #####
1. Very
good^^ A. 정운섭 씨, 질문에 답을 줍니다. random_matrix에서 QQ를 사용할 때는 옵션을 x = 0, y= 5 이런 식이 아니라 num_bound = 20, den_bound = 4 형태로 써야 합니다.
num_bound 는 분자의 범위 den_bound 는 분모의 범위 (예시) random_matrix(QQ, 6, 6, num_bound =
20, den_bound = 4) (http://matrix.skku.ac.kr/KOFAC/ 에서 실습하시고, 한번 더 업그레이드 하세요^^)
************************** [ 5/4 -1 -5/4 17 15/4 -17/4] [ -7 11/4 -10 10 -4 17]
[ -5 -3 17 6 18 -13/4] [ 15 -11 9/4 -5 0 -19/3] [ 11/4 -10 9/2 -5 -5 0] [ 16 0
-16 -9/2 -16 19/2]
In http://matrix.skku.ac.kr/KOFAC/,
[Take a look on my Quick reference 참고하세요^ http://matrix.skku.ac.kr/2009-Sage/Sage-Reference.html ]
<zz를 사용했을 때 rref를 사용해서 inverse여부를 확인하는 코드>
A= random_matrix(ZZ, 6, 6, x=0,
y=5)
print ("A=")
print (A)
print ()
print("-- Q. Is A invertible? Answer =")
print (A.is_invertible())
print ()
print("We may have a wrong answer, check the following")
print ()
print (A.rref())
print("If we have an Identity matrix, A is an invertible
matrix.")
print ()
<자동생성 된 행렬 A를 QQ로 선언한 행렬 B에 입력한 후 가역행렬인지 확인하는 코드>
B = matrix(QQ, 6, 6, [0, 0, 4, 3, 1, 4, 1, 4, 0, 0, 1, 1, 3, 2, 4,
4, 1, 0, 1, 4, 0, 1, 1, 2, 1, 1, 2, 4, 0, 1, 4, 0, 4, 0, 0, 2,])
# C = matrix(QQ, 6, 6, [ [0, 0,
4, 3, 1, 4], [1, 4, 0, 0, 1, 1], [3, 2, 4, 4, 1, 0], [1, 4, 0, 1, 1, 2],
[1, 1, 2, 4, 0, 1], [4, 0, 4, 0, 0, 2,]]) 으로 입력해도 됩니다. print ("B=")
print (B)
print ()
print("-- Q. A.is_invertible() - Answer = \n")
print (A.is_invertible())
print ()
print("원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한
방법입니다.")
print ()
print("-- Q. B.is_invertible() - Answer = \n")
print (B.is_invertible())
print ()
print("--- Inverser Matrix of B = \n")
print (B.inverse())
print ()
C = matrix(QQ, 6, 6, [ [0, 0, 4, 3, 1, 4], [1, 4, 0,
0, 1, 1], [3, 2, 4, 4, 1, 0], [1, 4, 0, 1, 1, 2], [1, 1, 2, 4, 0, 1], [4, 0, 4,
0, 0, 2,]])
print ("C=")
print (C)
print ()
print("-- Q. C.is_invertible() - Answer = \n")
print (C.is_invertible())
print ()
print("원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한
방법입니다.")
print ()
print ()
print("--- Inverser Matrix of C = \n")
print (C.inverse())
print ()
******
A=
[0 0 4 3 1 4]
[1 4 0 0 1 1]
[3 2 4 4 1 0]
[1 4 0 1 1 2]
[1 1 2 4 0 1]
[4 0 4 0 0 2]
-- Q. Is A invertible? Answer =
False
We may have a wrong answer, check the following
[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 1 0 0 0]
[0 0 0 1 0 0]
[0 0 0 0 1 0]
[0 0 0 0 0 1]
If we have an Identity matrix, A is an invertible matrix.
B=
[0 0 4 3 1 4]
[1 4 0 0 1 1]
[3 2 4 4 1 0]
[1 4 0 1 1 2]
[1 1 2 4 0 1]
[4 0 4 0 0 2]
-- Q. A.is_invertible() - Answer =
False
원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한 방법입니다.
-- Q. B.is_invertible() - Answer =
True
--- Inverser Matrix of B =
[ -5/21 -8/7 2/7 23/21 -8/21 1/7]
[ 1/63 8/7 -2/7 -55/63 31/63 1/42]
[ 13/63 19/14 -3/14 -85/63 25/63 5/84]
[ -4/63 -4/7 1/7 31/63 2/63 -2/21]
[ 1/9 -2 1 17/9 -14/9 -1/3]
[ 4/63 -3/7 -1/7 32/63 -2/63 2/21]
C=
[0 0 4 3 1 4]
[1 4 0 0 1 1]
[3 2 4 4 1 0]
[1 4 0 1 1 2]
[1 1 2 4 0 1]
[4 0 4 0 0 2]
-- Q. C.is_invertible() - Answer =
True
원하는 크기의 행렬 A 를 자동 생성한 후 그 행렬을 B로 입력한후, B 가 가역행렬인지를 아래와 같이 물어보는 것고 한 방법입니다.
--- Inverser Matrix of C =
[ -5/21 -8/7 2/7 23/21 -8/21 1/7]
[ 1/63 8/7 -2/7 -55/63 31/63 1/42]
[ 13/63 19/14 -3/14 -85/63 25/63 5/84]
[ -4/63 -4/7 1/7 31/63 2/63 -2/21]
[ 1/9 -2 1 17/9 -14/9 -1/3]
[ 4/63 -3/7 -1/7 32/63 -2/63 2/21]
#### 아래는 이전에 있었던 discussion들을 모아놓은 것입니다. ####
*******

< inverse가 정수로만 이루어진 경우>

<inverse가 유리수를 포함하는 경우>
이를 통해 결론을 도출해봤을 때, is_invertible() 함수는 입력 matrix가 정수형태의 data type을 가지고 있을 때, 내부적으로 계산하는 도중 정수의 범위를 넘어가는 유리수의 연산으로 넘어갈 때, 오류가 발생한다는 사실을 알 수 있습니다.
따라서 입력 matrix의 data type을 정수가 아닌 유리수로 바꾸어주면 이러한 문제가 해결됩니다. -> ZZ를 QQ로 바꾸어줌

따라서 앞으로 is_invertible()의 값을 구할 때는 matrix의 data_type이 QQ인지 유념해야 될 것 같습니다. 또한 다른 함수를 사용할 때도 마찬가지로 사용하고 있는 data type을 유념해서 사용해야 될 것 같습니다.
또한, is_invertible()이 아닌 다른 방법으로 확실하게 역수가 있는지 없는지를 구하고 싶을 때는 rref() 함수를 사용해서 identity matrix 가 나오는 지 확인하는 것도 좋은 방법입니다.

위의 코드에서는 A.rref()의 출력이 identity matrix 이기 때문에 invertible 하다고 할 수 있습니다.
[Discuss] 이유에 대하여 토론해 보세요. Problem 6 solution by 정운섭, Help me!
[Discuss] 이유에 대하여 토론해 보세요. Problem 6 solution by 정운섭, Help me!
Open problem 6: Find bigger than 5x5 matrix from the internet or other textbook and check whether transpose and inverse matrices exist. If those exist, find out what those are.
random_matrix 함수를 사용하여 6x6 matrix A 를 생성한 후, invertible 한 지 여부를 출력하게 하고, A의 transpose 와 inverse를 함수를 사용하여 출력하는 코드를 짜봤습니다.

이 코드를 실행시켰더니 아래와 같은 결과가 나왔습니다.

여기서 matrix A의 transpose는 정상적으로 출력되지만, is_invertible() 함수의 출력결과가 false임에도 불구하고 inverse() 함수의 결과가 분수의 형태로 출력이 되는 것을 확인할 수 있었습니다.
실제로 위의 matrix A의 inverse 값을 구해본 결과 A는 invertible 한 것을 확인할 수 있었고, inverse() 함수의 출력이 맞다는 것을 확인할 수 있었기 때문에, is_invertible() 함수의 출력이 잘못되었다는
것을 확인할 수 있었습니다.
Question) 왜 matrix가 invertible 함에도 불구하고, is_invertible()의 값은 false를 출력했는지 잘 모르겠습니다.
이상구(LEE SANGGU)12월 15일 오후 10:15
ZZ 를 QQ 나 RDF 로 바꾸어서 다시 해 보세요^^ (ZZ 는 자연수 에서의 계산 ... QQ 는 유리수에서의 연산 ... , RDF 에서 연산/계산 한다고 미리 정의 해 주어야만 여러분이 그동안 해온 보통의 계산이 되고, CDF 를 이용하면 복소수 까지? ) 그러나 invertible 인지를 물어보는 것 대신 A.RREF() 가 항등행렬 identity matrix 임인지 아닌지를 구해서 가역행렬임을 확인하면 에러가 100% 없습니다. 두 가지 방법으로 구해서 비교해 보면 ... 코드 사용시 유의 할점을 자연스럽게 배우게 될 것입니다. 그 이유에 대하여 토론해 보세요.
정운섭(2018####88)12월 15일 오후 10:38
교수님 말씀대로 ZZ를 QQ로 바꾸어서 A= random_matrix(QQ, 6, 6, x=0, y=5) 를 입력하니 출력창에 오류가 발생합니다...
정운섭(2018####88)12월 15일 오후 10:56
다시 생각해보니 random_matrix는 QQ를 사용할 수 없겠네요 랜덤한 정수를 반환하는 함수이기 때문에 유리수로 지정하면 에러가 뜨는군요 matrix 함수를 사용하니 에러가 없어졌습니다.
이상구(LEE SANGGU)12월 16일 오후 3:34
Very good^^ A. 정운섭 씨, 질문에 답을 줍니다. random_matrix에서 QQ를 사용할 때는 옵션을 x = 0, y= 5 이런 식이 아니라 num_bound = 20, den_bound = 4 형태로 써야 합니다. num_bound 는 분자의 범위 den_bound 는 분모의 범위 (예시) random_matrix(QQ, 6, 6, num_bound = 20, den_bound = 4) (http://matrix.skku.ac.kr/KOFAC/ 에서 실습하시고, 한번 더 업그레이드 하세요^^) ************************** [ 5/4 -1 -5/4 17 15/4 -17/4] [ -7 11/4 -10 10 -4 17] [ -5 -3 17 6 18 -13/4] [ 15 -11 9/4 -5 0 -19/3] [ 11/4 -10 9/2 -5 -5 0] [ 16 0 -16 -9/2 -16 19/2]
이상구(LEE SANGGU)12월 16일 오후 3:40
다른 학생이 이것 읽고 이해되었으면 ... 이해되었다고 여기에 코멘트 준 학생들은 모두 자신의 Midterm보고서/Exam 에 이 파일을 추가 할 수 있습니다. ... 의견을 여기에 답글로 보태주세요^^ ... 그럼 채점하고 Finakized OK by SGLee 달고 여러분 이름 추가하여 마무리 합니다.
남상현(2018####17)12월 16일 오후 9:49
교수님께서 제 글에도 같은 지적을 하셨는데 덕분에 완벽하게 이해하였습니다. 감사합니다!
고재윤(2020####97)12월 16일 오후 10:45
저도 이전에 있었던 Discussion 글을 어제 따라해본 결과, 같은 오류가 발생했었고, 단순히 'random_matrix 함수가 랜덤한 유리수를 만드는 것은 불가능하구나' 라고 결론을 내렸습니다. 왜 랜덤한 유리수는 안될까 라고 의문이 들었지만 그냥 넘어가려고 했는데, 역시 옵션을 달리해서 해결하는 방법이 있었군요!! 좋은 깨달음을 주셔서 감사합니다. 또, 교수님께서 알려주신 행렬과 관련된 명령어들을 정리해주셨는데, 앞으로 있을 활동에 큰 도움이 될 것 같습니다!! 정말 감사합니다.
이상구(LEE SANGGU)12월 17일 오전 5:45
You are all excellent student^^ Expect both do very well and improve ypur ability in our class. Go for A.
이규식(2018####70)12월 18일 오후 10:36
이해에 도움이 되었습니다. 감사합니다!
Finalized OK by SGLee [HW4] Problem 10 (Solution) by 윤상수, 고재윤,우건주, 이예진, 이규식, 남상현,
Finalized OK by SGLee [HW4] Problem 10 (Solution) by 윤상수, 고재윤,우건주, 이예진, 이규식, 남상현,
Q. What kinds of data can you apply a cosine similarity measure to?
A. Cosine similarity measure can be applied to data concerining pattern or direction of vector.
- BMI index(Body Mass Index): ratio between height ant weight. When weight and height is given as data, we can measure similarity between BMI index by comparing (weight, height) vector's direction.
- GNI (Glycemic Index) per person (GNI/population): When GNI and population is given as data, we can measure similarity between GNI per person by comparing (GNI, population) vector's direction.
* The glycemic index (GI; /ɡlaɪˈsiːmɪk/[1]) is a
number from 0 to 100 assigned to a food, with pure glucose arbitrarily given
the value of 100, which represents the relative rise in the blood glucose level
two hours after consuming that food. FROM https://en.wikipedia.org/wiki/Glycemic_index
고재윤(2020####97)12월 16일 오후 10:49
BMI의 경우 몸무게와 키의 비율이므로, 각도로 비교하는 cosine similarity 방법에 적합한 예제인 것 같습니다. 좋은 예시 감사합니다!!
우건주(2017####97)12월 17일 오후 8:36
(height)^2와 (weight)의 비율을 나타낸 것이므로 x축에는 (height)^2를, y축에는 (weight)로 설정하여 다양한 표본들의 세타값을 구한다면 표본들끼리의 코사인 유사도를 알아볼 수 있을 것 같습니다. 좋은 예시를 제공해주셔서 감사합니다.
이예진(2017####54)12월 18일 오후 3:53
cosine similarity는 벡터 간 관계에 대한 얘기로만, 수학책 예시로만 이해했는데 이렇게 친근한 예시를 들어주시니 더욱 흥미로운 것 같습니다. 감사합니다 !
이규식(2018####70)12월 18일 오후 10:30
코사인 유사도의 적절한 예시를 선택해주신 것 같습니다. 감사합니다!
남상현(2018####17)12월 21일 오전 10:58
Cosine similarity가 적용되는 다양한 예시를 알게 되었습니다. 감사합니다!
Finalized OK by SGLee open problem 13 (solution) by 윤상수, 고재윤, 박우현, 이규식, 강민지, 남상현, 이예진,
Finalized OK by SGLee open problem 13 (solution) by 윤상수, 고재윤, 박우현, 이규식, 강민지, 남상현, 이예진,
Q. Explain how and what we can determine for a given linear system of equations with a unique solution or infinitely many solutions, or no solutions. Use an RREF of [A : b] to do this. Explain to others what you understand.
A. As explained in the textbook, we can determine if the matrix has unique solution or infinitely many solutions, or no solutions like below.
from http://matrix.skku.ac.kr/LA/Ch-3/

If there are no solutions, we can simply determine that we have no solution.
If there are is a unique solution, we can
determine the an exact
solution (vector).
If there are infinitely many
solutions, we can determine the solution set space
spanned by more than one vector.
(Only Ax=0 can have a solution space (.. Spanned by a basis of the solution space.) = the Solution set.)
Any vector from the solution set is also a solution of the linear system of equations.
고재윤(2020####97)12월 16일 오후 9:55
강의를 들으면서 암기하기 어려웠던 내용들을 보기 쉽게 정리해주셔서 큰 도움이 되었습니다!!
박우현(2016####31)12월 18일 오후 3:19
augmented matrix의 RREF를 통해 해의 존재 유무와 해의 갯수를 파악하는 과정이 잘 설명된 것 같습니다.
이규식(2018####70)12월 18일 오후 9:17
이해에 도움이 되었습니다. 감사합니다!
강민지(2021####12)12월 20일 오후 7:24
개념이 복잡하여 이해하기 힘들었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
남상현(2018####17)12월 21일 오전 10:56
RREF를 통해 해의 개수를 판별하는 방법을 쉽게 설명해주신 것 같습니다. 감사합니다!
이예진(2017####54)12월 21일 오후 12:06
이 부분이 특히 여러모로 중요한 것 같은데 정리해주셔서 감사합니다 !
문태의(2016####21)12월 22일 오후 2:45
덕분에 RREF를 사용하여 선형 방정식의 해를 구하는 방법에 대해 쉽게 이해할 수 있었습니다!
comment: rref를 통해 solution이 unique하게 존재하는지, 존재하지 않는지, 무수히 많은지 판단할 수 있는 자료를 보기 쉬운 그림으로 볼 수 있어서 도움이 된 글이라고 생각합니다.
Finalized OK by SGLee 2016313690 신유정, 강민지, 이예진, 남상현problem 10
작성자 : 신유정(2016####90)작성일 : 12월 16일 오후 6:32
조회수 : 46
Finalized OK by SGLee 2016313690 신유정, 강민지, 이예진, 남상현problem 10
Q. What kinds of data can you apply a cosine similarity measure to?
A.
We can use cosine similarity to analyze and classify data. For example, you can find people who are similar to you by specifying your personal preferences, and recommend a variety of things that people like you like. Recommended programs such as movies and clothes can be represented.
이상구(LEE SANGGU)12월 16일 오후 7:36
Nice Try^^ 다른 학생이 한 답에 답글로 달거나, 그 답을 복사하여 가지고 와서 (그 답을 준 사람 이름과 함께 그 내용의 중요 부분을 을 인용하고, 그것에 본인 의견을 보태도 된답니다.
강민지(2021####12)12월 16일 오후 10:02
선호도에 코사인 유사도 방식을 적용하여 분석하는 방법이 아주 적절한 것 같습니다! 이 예시를 보며 코사인 유사도에 대해 더 잘 이해하게 된 것 같습니다. 감사합니다!
남상현(2018####17)12월 16일 오후 10:18
선호하는 항목에 대한 데이터를 벡터화하면 코사인 유사도를 통해 쉽게 데이터를 분석할 수 있을 것 같아 좋은 생각 같습니다!
이예진(2017####54)12월 21일 오후 12:10
답글을 공유해주셔서 감사합니다. 특히 영화나 의류업계에 응용된다니 흥미로운 것 같습니다.
comment: 제가 이 문제에 대해 finalize 하는데 도움을 받은 글입니다. cos similarity에 대한 예시에 대한 아이디어를 이 글을 보고 구체화하였습니다.
Final OK by SGLee [Finalized by 정운섭, 고재윤, 강민지, 남상현, 도경근, 이규식, 이예진] Open problem 9 and Solution
Final OK by SGLee [Finalized by 정운섭, 고재윤, 강민지, 남상현, 도경근, 이규식, 이예진] Open problem 9 and Solution
|
◩ Open Problem 9 |
Make (randomly generate) two 7-dimensional vectors and then calculate the distance between two vectors. [Hint: Lab <Distance similarity> ]
My code to solve this problem is shown below (and practiced in https://sagecell.sagemath.org/ )
v1= random_vector(QQ, 7, x=-10, y=10)
v2= random_vector(QQ, 7, x=-10, y=10)
print(v1)
print()
print(v2)
print()
dist= (v1-v2).norm()
print(dist)
print()
print(dist.numerical_approx().n(digits=3))
I generated two 7-dimensional vectors consisting of rational numbers by putting QQ in random_vector() function.
Then I used norm() function to calculate the distance between v1 and v2.
In order to find the exact numerical value of distance, I used print(dist.numerical_approx().n(digits=3)) code.
The following is the result of this code

The result comes out as I expected. Hope this can help you
***
Open Problem 9 Solution by 고재윤 + about 'ZZ' and 'QQ'
|
Open Problem 9 |
Make (randomly generate) two 7-dimensional vectors and then calculate the distance between two vectors.
(Hint: Lab <Distance similarity>) http://matrix.skku.ac.kr/math4AI-tools/distance_similarity/ (외부 사이트로 연결합니다.)
"Randomly generate two 7-dim vectors and then calculate the distance between two vectors."
저는 아래 글 중 정운섭 학우님의 Problem 6 Solution 질문글을 보고 random 함수에서 ZZ, QQ의 의미를 새롭게 알게되었습니다.
주어진 값의 범위에 대하여 ZZ는 정수값을 랜덤으로 입력한다는 뜻이었고, QQ는 유리수, 즉 정수를 포함한 분수값들도 랜덤으로 입력될 수 있다는 뜻입니다.
Open Problem 9에서 7-dimensional vector 2개를 만들어야 한다는 내용이 있는데, 새롭게 알게된 내용을 확인해볼겸 vector1은 ZZ로, vector2는 QQ를 이용하여
랜덤함수로 나타내도록 하겠습니다.
문제를 풀이하기 위해 아래와 같이 코딩하였습니다.

그 결과 아래와 같은 결과값이 출력되었습니다.

의도했던 것처럼 vector1은 정수값으로만 이루어진 벡터로 랜덤하게 만들어졌고, vector2는 정수가 아닌 유리수들로도 만들어 졌다는 것을 확인할 수 있었습니다.
결과값은 세 번째 줄처럼 출력되었는데, sqrt(5523309)가 1/630의 분모에 곱해지는 형태인지, 분자에 곱해지는 형태인지 헷갈리는 형태로 출력되었습니다.
계산기로 계산한 결과, sqrt(5523309)는 분자에 곱해지는 형태였습니다.
제가 겪었던 것처럼 결과값의 출력이 헷갈리게 출력된 분들은 이 글을 참고하셨으면 좋겠습니다!!
이상구(LEE SANGGU)12월 16일 오전 11:43
나나 다른 학생이 코드를 개선/고쳐 줄 수 있게 ... 코드는 text 로 해서 공유하세요^^ 그리고 마지막 줄 의 값을 자세히 보기위해서는 Q=1/630*sqrt(55234309) print(Q.numerical_approx().n(digits = 3)) 로 하면 결과값이 11.8 임을 쉽게 알수 있습니다.
9개의 댓글
이상구(LEE SANGGU)12월 16일 오후 7:30
Good job^^
이상구(LEE SANGGU)12월 16일 오후 7:41
Wonderful^^
고재윤(2020####97)12월 16일 오후 8:21
교수님께서 코멘트로 알려주신 부분까지 올려주셔서 큰 도움이 되었습니다. 감사합니다!!
강민지(2021####12)12월 16일 오후 10:00
중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 특히 ZZ와 QQ에 대해 알아볼 수 있었고, random_vector를 이해할 수 있었습니다. 감사합니다!
남상현(2018####17)12월 16일 오후 10:15
ZZ와 QQ 이니셜 개념이 헷갈렸는데, random_vector 함수를 통해 쉽게 눈으로 확인하고 이해할 수 있게 되었습니다 감사합니다!
이상구(LEE SANGGU)12월 17일 오전 5:36
Great^^
도경근(2018####55)12월 17일 오후 7:08
좋은 풀이 감사합니다 학우님. ZZ와 QQ가 이해가 잘 되었습니다.
이규식(2018####70)12월 18일 오후 9:01
앞선 문제들에서도 교수님께서 정수범위와 유리수범위를 언급하셨는데 이것이 중요한 개념임을 다시 한번 깨닫고갑니다. 좋은 이해가 되었습니다. 감사합니다!
이예진(2017####54)12월 21일 오후 12:01
이렇게 수업 내용에서부터 시작해서 실제 응용과 질문 내용, 그 해결까지 일목요연하게 정리해주셔서 저도 이해에 도움이 되었습니다. 감사합니다 !
comment: 정운섭 학우님의 random_matrix command에 대한 질문을 보고 제가 ‘ZZ’, ‘QQ’를 이용하여 open problem9을 풀이하였는데, 이번에는 다시 정운섭 학우님께서 이 내용으로 finalize 하셔서 뿌듯함을 느꼈습니다.
Finalized OK by SGLee. Open problem#4 우건주, 고재윤, 도경근, 신유정, 이규식
작성자 : 우건주(2017####97)작성일 : 12월 16일 오후 9:23
조회수 : 40
Finalized OK by SGLee. Open problem#4 우건주, 고재윤, 도경근, 신유정, 이규식
Open problem#4
이번 문제는 정운섭 학우님의 문제풀이에서 많은 도움을 받았습니다.
미적분학에서 많이 접할 수 있었던 f(x)=1/ln(1+x)-2x 의 해를 구하고자 하였습니다.

EF82D46D-6E18-4442-81F7-763423107172.jpeg
Solve함수를 이용하였더니 미지수가 포함된 방정식의 꼴로 나와서 원하는 답을 숫자형으로 찾고자 하였습니다.
93258B977E3C-4A62-A2F8-8708F9E8D6F6.jpeg
범위를 (- 50, 50 )으로 설정하여 설정하였습니다.
하지만 ln함수 특성상 x>-1 조건이 추가되어야 합니다.
4E29F3BE-E479-413D-9A93-66390EA4A8E9.jpeg
먼저 x>0인 범위에서 plot해보면
대략적으로 0.8에 가까워 보입니다.

0788857B-9CC5-40ED-BD6D-35B769A16E11.jpeg
같은 과정을 (0.80, 0.85)에서 반복해주면 더 정확한 값으로 근사할 수 있습니다
BD873275-A662-4FC6-ABEB-FE21D94B24A5.jpeg
최종적으로 약 0.8285라는 값에 위치함을 알 수 있습니다.
Question

720C065C-0814-4BB4-BB9C-1BE6B002E8EF.jpeg
-1<x<0 범위에서 해가 존재하는 것으로 그래프가 나오는데
제 실수인지 정확한 근사에 실패했습니다.
혹시 잘못이해한 부분이나 실수한 부분이있다면
지적해주시면 감사하겠습니다.
고재윤(2020####97)12월 16일 오후 9:40
학우님께서 질문하신 내용을 제가 제대로 이해한 것인지는 모르겠지만, 마지막 사진은 1/ln(x+1) 그래프이고, 이 그래프는 -1<x<0에서 해를 가지지 않는 함수 입니다.두번째 사진에서는 1/ln(x+1) -2*x 그래프 사진을 올려주셨는데, 여기서는 음수 영역에서 해를 갖는 형태가 관찰되는 것 같습니다. 두번째 사진의 함수를 확대하시면 -1<x<0 범위에서 해가 관찰될 것 같습니다!!y 축 범위를 ( -5 , 5 ) 정도로 하시고 ...
우건주(2017####97)12월 17일 오전 11:19
아 그렇네요 ㅠㅠ 학우님 답변 감사드립니다!!
도경근(2018####55)12월 17일 오후 7:16
저는 평소에 다른 소프트웨어를 사용하기 때문에 파이썬은 사용 해보지 못하였는데, 학우님 덕분에 파이썬을 사용하여 방정식의 해를 찾고 plotting을 하는 법을 알게되었습니다. 감사합니다!
신유정(2016####90)12월 17일 오후 9:14
파이선 내부의 메소드를 이해하는데 큰 도움이 되었습니다. 감사합니다!
이규식(2018####70)12월 18일 오후 10:24
공부에 도움이 되었습니다. 감사합니다!
이예진(2017####54)12월 21일 오전 11:59
오 고재윤 학우님께서 답변해주신 내용 덕분에 저도 이해했습니다. 정리와 답변 감사합니다 !
comment: 이 글의 질문에 대해 제가 답변을 남겼는데, 글쓴 학우님께서 감사하다고 하셔서 뿌듯함을 느꼈습니다. 이 글을 계기로 저도 모르는 것은 고민하지 않고 QnA 게시판을 이용해야겠다고 생각했습니다.
Finalized OK by SGLee Open Problem 16 (Solution) by 도경근, 고재윤, 황세진, 남상현, 이규식, 강민지
작성자 : 도경근(2018####55)작성일 : 12월 16일 오후 10:11
조회수 : 53
Finalized OK by SGLee Open Problem 16 (Solution) by 도경근, 고재윤, 황세진, 남상현, 이규식, 강민지
|
Open Problem 16 |
Find the SVD for a matrix from the other textbook by using the codes above.
R을 사용하여 martix의 svd값을 찾아보고 분석을 해보았습니다.

특잇값 분해는 데이터 정보를 압축해주는 기능이 있습니다. 여기서 확인할수 있는 점은 특잇값 벡터 d의 첫번째 두번째 세번째 원소값에 비하여 4번째 원소 값이 비교적 작다는 것을 알수 있습니다.따라서원래 데이터의 3/4만큼의 데이터인 처음 3개의 특잇값과 U, V의 1~3열만 사용하여도 원래 데이터에 대한 대표성이 충분하고 정보 손실이 작다고 판단할수 있습니다.
이것이 실제로 그런지 한번 확인 해보기 위해서 처음 3개의 특잇값과 U, V의 1~3열만 사용하여 matrix를 reconstruct 해보았습니다.

보시다시피 원래 데이터와 거의 유사하다는 점을 확인 할 수 있었습니다.
또한 처음 2개의 특잇값과 U, V의 1~2열만 사용하여 matrix를 reconstruct 해보았습니다

이 역시 원래 데이터와 유사하지만 중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습이 눈에 띕니다.
이번 HW에서는 matrix의 svd값을 구해보고 그것이 어떤 의미를 가지고, 어떻게 쓰일수 있을지 고민해보는 시간을 가질수 있어서 유익했습니다. 감사합니다.
이전
다음
9개의 댓글
이상구(LEE SANGGU)12월 16일 오후 10:30
Very good^^ Share your text code, so others can check your output amd improve it.
도경근(2018####55)12월 17일 오후 4:08
m1 <- c(0,0,4,0,0,0,1,0, 0,0,0,2,0,0,5,0, 0,1,0,0,1,1,1, 0,3,1,0,0,0,2,2,1) dim(m1) <- c(4,8) m1 cross_svd <- svd(m1) str(cross_svd) cross_svd$d cross_svd$u cross_svd$v round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) round(cross_svd$u[,c(1,2,3)] %*% diag(cross_svd$d[c(1,2,3)]) %*% t(cross_svd$v[,c(1,2,3)])) round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) text code 입니다
고재윤(2020####97)12월 17일 오후 7:43
학우님의 코딩 방식이 처음보는 방식이어서 처음엔 낯설었는데, text code가 매우 간결하게 써진 것을 보고 놀랐습니다. 제 방식대로 했다면 학우님의 몇 배 길이의 코딩을 했을텐데, 코딩공부도 더 해야겠다는 생각이 들었습니다. 또한, 학우님께서 하신 문제풀이 중 U, V의 1,2,3번째 column으로 다시 A 를 조합하여 원래 A와 비교하는 방식이 매우 흥미로웠습니다. 학우님께서 U,V의 1,2 번째 column만을 이용하여 A를 재조합 하셨을 때 '중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습' 이라고 서술해 주셨는데 마지막 행의 데이터가 왜 가장 중요할 가능성이 높은 데이터인지 여쭈어봐도 될까요? 좋은 problem solution 감사합니다!!
이상구(LEE SANGGU)12월 17일 오후 8:58
12일 차 rank reduction 에서 배울 내용 입니다^^
고재윤(2020####97)12월 17일 오후 10:17
답변 감사합니다 교수님!!
황세진(2015####21)12월 17일 오후 11:22
주어진 데이터를 통해 합리적인 추론을 통해 벡터값이 가장 작은 곳을 제외하고 계산했을 때에 원래 데이터에서 손실이 많이 나지 않는 것을 소프트웨어를 통해 간결하게 확인시켜주셔서 한눈에 이해가 되었습니다! 도움이 많이 되었습니다.
남상현(2018####17)12월 18일 오후 5:56
데이터의 연산량을 감소시켜 다방면으로 이용할 수 있다는 부분을 이해할 수 있었습니다. 감사합니다!
이규식(2018####70)12월 18일 오후 9:24
svd에 대해 좋은 공부가 된 것 같습니다. 감사합니다!
강민지(2021####12)12월 20일 오후 7:25
svd에 대한 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
comment: 저는 SVD에 대해 공부하기 전에 이 글부터 보게 되었습니다. 처음에는 개념이 어려워보였지만, 강의를 듣고 인터넷 자료를 좀 더 찾아보니 쉽게 SVD를 습득할 수 있었습니다. 그 후 이 글을 보게 되니 이해가 잘 되었습니다. 제가 이해를 하는 과정에서 깨달은 SVD에 대한 내용들에 대하여 학우님들께 공유하고 싶었기 때문에, 제가 finalize 한 글들 중 위 글을 finalize 한 글도 있습니다.
Final OK by SGLee [Finalized by 신유정, 남상현] Open problem 10 solution 강민지, 정운섭, 이예진, 이규식
작성자 : 남상현(2018####17)작성일 : 12월 16일 오후 10:51
조회수 : 58
Final OK by SGLee [Finalized by 신유정, 남상현] Open problem 10 solution 강민지, 정운섭, 이예진, 이규식
|
Open Problem 10 |
What kinds of data can you apply the cosine similarity to?
[Finalized by 신유정, 남상현] Open problem 10 solution
For analyzing the data of preference, it is a good way to apply the cosine similarity. To apply it, we should change the data to the vector, and then we can measure the cosine similarity.
I made a random data related to reference. There are three groups of different sizes, and different preferences at the three products, X, Y, Z.

I could make three vectors of three groups, such as [138, 79, 187], [46, 27, 61], and [139, 81, 2960].

Using cosine similarity, similarity in preference between the three groups was derived.

By this method, we can analyze and classify data focusing on similarity.
2016313690 신유정 problem 10
작성자 : 신유정(2016####90)작성일 : 12월 16일 오후 6:32
조회수 : 20
Q. What kinds of data can you apply a cosine similarity measure to?
A.
We can use cosine similarity to analyze and classify data. For example, you can find people who are similar to you by specifying your personal preferences, and recommend a variety of things that people like you like. Recommended programs such as movies and clothes can be represented.
이상구(LEE SANGGU)12월 16일 오후 7:36
Nice Try^^ 다른 학생이 한 답에 답글로 달거나, 그 답을 복사하여 가지고 와서 (그 답을 준 사람 이름과 함께 그 내용의 중요 부분을 을 인용하고, 그것에 본인 의견을 보태도 된답니다.
강민지(2021####12)12월 16일 오후 10:02
선호도에 코사인 유사도 방식을 적용하여 분석하는 방법이 아주 적절한 것 같습니다! 이 예시를 보며 코사인 유사도에 대해 더 잘 이해하게 된 것 같습니다. 감사합니다!
남상현(2018####17)12월 16일 오후 10:18
선호하는 항목에 대한 데이터를 벡터화하면 코사인 유사도를 통해 쉽게 데이터를 분석할 수 있을 것 같아 좋은 생각 같습니다!
이상구(LEE SANGGU)12월 16일 오후 11:16
Good job! 그래요 이렇게 같은 방법으로 다른 학생이 푼 문제와 답을 이해한 것 몇개씩 Finalized by 남성현,***, ** 제목으로 결론을 내리면 ... 중간고사 100점 받을 수 있을 것입니다.
정운섭(2018####88)12월 16일 오후 11:52
cosine similarity를 이해하는 데 도움이 되는 좋은 예시였습니다!! 감사합니다!
이상구(LEE SANGGU)12월 17일 오전 11:39
Final OK by SGLee
이예진(2017####54)12월 18일 오후 1:44
저도 올려주신 자료를 통해 코사인 유사도의 의미와 그 사용에 대해 확인할 수 있었습니다. 감사합니다!
이규식(2018####70)12월 18일 오후 9:08
코사인 유사도에 대해 더 깊게 이해하게 되었습니다. 감사합니다.
많은 학우님들이 이미 Open Problem 10 문제에 대해 풀이해 주셨습니다.
풀이해주신 내용을 보며 저도 많이 배워가던 도중, 윤상수 학우님의 Open Problem 10 풀이에서 BMI를 Cosine Similarity로 Similarity를 판단할 수 있다는 글을
보게 되었습니다. 아래 사진은 윤상수 학우님의 Open Problem 10 solution 입니다.
[HW4] Problem 10 (Solution) by 윤상수
작성자 : 윤상수(2020####53)작성일 : 12월 16일 오후 4:49
조회수 : 26
Q. What kinds of data can you apply a cosine similarity measure to?
A. Cosine similarity measure can be applied to data concerining pattern or direction of vector.
- BMI index(Body Mass Index): ratio between height ant weight. When weight and height is given as data, we can measure similarity between BMI index by comparing (weight, height) vector's direction.
- GNI (Glycemic Index ) per person (GNI/population): When GNI and population is given as data, w e can measure similarity between GNI per person by comparing (GNI, population) vector's direction.
* The glycemic index is a number from 0 to 100 assigned to a food, with pure
glucose arbitrarily given the value of 100, which represents the relative rise
in the blood glucose level two hours after consuming that food. FROM https://en.wikipedia.org/wiki/Glycemic_index
고재윤(2020####97)12월 16일 오후 10:49
BMI의 경우 몸무게와 키의 비율이므로, 각도로 비교하는 cosine similarity 방법에 적합한 예제인 것 같습니다. 좋은 예시 감사합니다!!
BMI는 몸무게/(키^2) 으로 나타낼 수 있는 식입니다. BMI가 같거나 유사하려면, 몸무게와 키의 제곱의 비율이 같거나 유사한 값이어야 합니다.
y축을 몸무게, x축을 키^2이라고 놓았을 때, BMI 값은 arctan(몸무게/(키^2))으로 표현 가능하고, BMI 유사도는 이 각도에따라 결정되는 형태가 됩니다.
즉, cosine similarity를 적용하여 판단할 수 있는 형태가 됩니다.
개인적으로 cosine similarity 계산은 어느정도 익숙해졌지만, 실생활에 적용되는 경우를 찾기 어려웠기에 이 경우를 학우님들께 소개해드리고 싶었습니다.
아래 사진은 위 내용의 이해를 돕기 위하여 제가 그린 그림입니다.

보시는 바와 같이 y축이 몸무게, x축이 키^2인 좌표평면에서, BMI similarity는 cos similarity로 판단할 수 있기 때문에, 같은 각도를 가지고 있는 a1, a2, a3, a4
는 모두 같은 BMI값을 가지고 있다는 것을 알 수 있습니다.
실제 있을법한 사람의 키와 몸무게로 2-dim vector 4개를 아래 사진과 같이 만들어보았습니다. person1과 person2,3,4와의 cosine similarity를
각각 구해보았습니다.

그 결과 아래와같은 결과값이 출력되었습니다.

BMI값은 x>0, y>0인 구역에서만 위치하므로 person1과 BMI값이 유사할수록 cos similarity가 1과 가까운 값이 출력됨을 알 수 있었습니다.
person4의 경우 cos similarity값이 1로 나왔는데, 실제로 person4의 데이터로 BMI를 계산한 결과, person1과 같은 값으로 나왔습니다.
이상구(LEE SANGGU)12월 17일 오전 1:04
Supurb! Bonus +1
윤상수(2020####53)12월 17일 오전 1:41
제가 제시한 예시를 잘 시각화하고 실제 코드로 실행한 예시까지 보여주셔서 감사합니다. 특히 그림으로 표현하니 글로만 설명하는 것보다 훨씬 전달력이 생기는 것 같습니다.
김지훈(2020####97)12월 17일 오전 1:46
비율이기에 방향성이 중요하다는 것은 알았지만 좀 추상적인 이해였는데, 그리신 그래프를 통해 기울기에 대한 이해로 바뀌면서 방향이 유사성을 사용하는 것이 좀더 구체화되어서 좋았습니다!
이상구(LEE SANGGU)12월 17일 오전 11:39
Good. Final OK by SGLee
황세진(2015####21)12월 17일 오후 11:17
실생활에서 자주 사용하는 수치인 BMI를 가지고 예시를 잘 들어주셔서 COS similarity에 대한 이해에 도움이 많이 되었습니다! 감사합니다
이상구(LEE SANGGU)12월 18일 오후 4:17
Finalized OK by SGLee
이규식(2018####70)12월 18일 오후 10:13
BMI의 예시가 적절해서 좋은 이해가 되었습니다. 감사합니다.
이예진(2017####54)12월 21일 오전 11:52
수식으로만 배웠던 것을 이렇게 실생활 예시로 들어주시니 실제 활용에 대해 더 관심이 생겼습니다. 감사합니다 !
comment: 이 글은 이전에 cos similarity의 실생활 예시로 bmi 지수를 제시하셨던 학우님의 글을 finalize 한 것입니다. 다른 학우님들께서 이 글을 보시고 도움이 되신 것 같아서 뿌듯했습니다.
Final OK by SGLee Open Problem 15 Solution by 고재윤, 문태의, 이예진, 정운섭, 강민지, 남상현, 이규식, 윤상수
Final OK by SGLee Open Problem 15 Solution by 고재윤, 문태의, 이예진, 정운섭, 강민지, 남상현, 이규식, 윤상수
|
◩ Open Problem 15 |
Find a system of linear equations problem from other textbooks. Then find that problem's least-squares solution using the same method as in example 4.
http://matrix.skku.ac.kr/intro-math4ai/W6/ 의 example 4에서 사용한 least-squares solution을 구하는 방법은 QR decomposition을 이용한 방법입니다.
QR decomposition이란 mXn coefficient matrix A (m>=n)를 column에 대하여 orthonormal한 mXn matrix Q 와, invertible한 upper triangular nxn matrix R로
분리하는 것입니다. 식으로 나타내면 A=Q*R로 나타납니다.
Ax=b 형태의 식에서, QR decomposition을 이용하면 Q*R*x=b로 나타낼 수 있습니다. orthonormal한 matrix Q는 Q*(Q^T) = I 라는 특성이 있으므로, 방금 다뤘던
식의 양변에 Q^T를 곱하면 R*x=(Q^T)*b로 나타낼 수 있습니다. 이번에는 양변에 R^(-1)을 곱하면 x=( R^(-1) )*(Q^T)*b로 나타낼 수 있습니다.
최종적으로 Q, R을 구해 각각 transpose, inverse 형태로 바꾼 값을 구하면, x 값을 알 수 있습니다.
아래 그림은 other text book에서 가져온 least-squares solution을 구하는 문제 입니다.

위에서 설명한내용을 토대로 least squares solution을 구하기 위해 아래와 같이 코딩하였습니다.

실행한 결과 아래와 같이 결과가 출력되었습니다.

textbook의 해설 부분과 비교하니 같은 값으로 x가 계산되었습니다.
이번 문제를 통해 헷갈렸던 QR decomposition을 다시 살펴볼 수 있어서 뜻깊었다고 생각합니다. 익숙하지 않은 개념인 만큼 혹시 제가 실수한 부분이 있다면
코멘트로 알려주시면 감사하겠습니다!!
고재윤(2020####97)12월 17일 오전 5:58
문제풀이에 사용된 코드입니다!! 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, 3, 5], [1, 1, 0], [1, 1, 2], [1, 3, 3]]) b = vector([3, 5, 7, -3]) Q, R = gs_orth(A) print("x =", R.solve_right(Q.transpose()*b))
이상구(LEE SANGGU)12월 17일 오전 5:59
고재윤 씨, 아주 잘 이해하셨습니다. 이제 SVD 이해 하실 준비가 되었습니다. You are a good student.
고재윤(2020####97)12월 17일 오전 6:02
감사합니다!!
정운섭(2018####88)12월 17일 오후 5:08
이 글을 보니 least squares solution을 QR decomposition 으로 구하는 과정이 더 확실하게 이해되었습니다!
문태의(2016####21)12월 17일 오후 11:45
덕분에 QR decomposition로 least square solution을 해결하는 방법에 대해 확실히 이해할 수 있게 되었습니다.
강민지(2021####12)12월 17일 오후 11:56
QR decomposition 개념이 복잡하여 이해하기 힘들었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
남상현(2018####17)12월 18일 오전 00:14
QR decomposition을 통해 보다 쉽게 LLS를 구하신 것 같고 ValueError function으로 예외 경우까지 고려하셔서 너무 좋은 코드 같습니다. 감사합니다!
이예진(2017####54)12월 18일 오후 4:27
- 감사합니다. 덕분에 이해에 도움이 되었습니다 !
이규식(2018####70)12월 18일 오후 9:23
이해에 도움이 되었습니다. 감사합니다!
윤상수(2020####53)12월 18일 오후 11:58
좋은 예시 덕분에 공부하는데 도움이 되었습니다. 감사합니다.
comment: 이 글을 게시할 당시 QR Decomposition에 대한 내용이 헷갈렸기 때문에 open problem을 풀면서 내용에 익숙해지려 했습니다. 풀이 code를 간단히 보면 if 문을 통해 row의 개수가 column의 개수보다 적은 경우, rank가 column의 개수보다 작은 경우 일 때는 error가 표시되도록 설계했고, 그 이외의 경우에는 Q와 R을 구해 x를 출력하도록 하였습니다.
Final OK by SGLee Open Problem 3 황세진, 이예진, 이규식
작성자 : 황세진(2015####21)작성일 : 12월 17일 오후 6:02
조회수 : 26
Final OK by SGLee Open Problem 3 황세진, 이예진, 이규식
|
◩ Open Problem 3 |
Make a composite function from the functions that you learned and draw a graph of it. [Hint: plot(sin(e^(1/3)^x), (x, -1.2, 10))]
다항함수를 가지고 합성하여 graph를 plot해보기로 했습니다.
먼저 다음과 같이 두 다항함수를 설정합니다.
f(x) = 2*x-1
g(x) = 3*x^2 + 2*x -1
그리고 이를 활용하여 f(g(x))와 g(f(x))를 plot해보기로 했습니다.

하지만 명령어 plot을 사용한 뒤 바로 합성한 f(g(x))는 다음과 같은 에러를 도출합니다.
이를 해결하기 위해 f(g(x))를 새로운 하나의 함수 h(x)로 설정한 뒤 다시 코딩한 결과

함수가 잘 plot된 것을 확인할 수 있었고, 마찬가지로 g(f(x))도 새로운 함수로 설정하여

원하는 합성함수를 그래프로 그릴 수 있게 되었습니다.
이전
다음
4개의 댓글
이상구(LEE SANGGU)12월 17일 오후 8:07
Good start of 황세진씨^^
이예진(2017####54)12월 18일 오후 4:27
Thank you. Now I do fully understand this problem and solution.
이규식(2018####70)12월 18일 오후 10:08
공부에 도움이 되었습니다. 감사합니다.
남상현(2018####17)12월 22일 오전 2:20
합성함수를 새로 정의하여 에러를 없애는 부분이 좋은 것 같습니다. 감사합니다!
2016 신유정 open problem12
작성자 : 신유정(2016####90)작성일 : 12월 17일 오후 8:35
조회수 : 32

BigBook-LinearAlgebra-2015.pdf 50P 예제2번
A = matrix([[1, 1, 2], [1, 2, 3], [1, 1, -5]]) # coefficient
matrix
b = vector([-3, -4, -6]) # vector
print("x =", A.solve_right(b))
먼저 matrix를 만들고 그에 상응하는 vector 를 만들어 줍니다.
solve_right함수를 이용해 A,b에 맞는 답을 찾아줍니다
답은
('x =', (-17/7, -10/7, 3/7)) 인 거 같습니다.
혹시 아니라면 알려주시면 감사하겠습니다.
이상구(LEE SANGGU)12월 17일 오후 8:46
신유정 씨, 반가워요. 여기서 질문은 제 문제와 답을 더 업그레이드 시켜주실분? 이렇게 하는 것입니다. 조언은 다음과 같습니다. 1. 예를들어 본인의 전공책에 나오는 4차보다 더 크고 좀 더 복잡한 연립방정식과 해 가 있으면, ... 그 문제를 이렇게 내가 준 코드의 해당 부분을 고쳐서 구한 답이 교재의 답 또는 본인이 손으로 구한 답과 같으면 .. 아, 내가 앞으로 이런 비슷한 문제는 크기가 아주커도 언제나 이렀게 다 풀어서 정확한 답을 구할 수 있다 라는 자신감을 가지라고 제시한 문제 입니다. 2. 코드를 실행하면서 ... 행렬의 열과 행 배치하는 법, entry 들을 배열 하는 법 등 ... 주의 할점을 저절로 배우는 것 이랍니다. 3. 또 해가 존재하지 않을 때는? 해가 무수히 많을 때는? 어떤 최적해를 구해야 하나 .... 이런것을 생각하는 시간 이랍니다. 5. 아래 QnA 다른 학생 답을 읽고 . . . Fully 이해 했습니다. 감사합니다. 등 코멘트 달면서 ... make up 쉽게 하세요. 7. 그리고 다음 주 화요일 에 보고 ... 내게 질문하시면 추가 조언 줄께요.^^ Good luck.
신유정(2016####90)12월 17일 오후 9:14
네 다음 질문에서는 더 보완해서 올려 보겠습니다. 감사합니다!
남상현(2018####17)12월 18일 오전 00:11
좋은 방법으로 정답을 유도하신 것 같습니다. 그런데 해가 존재하지 않거나 무수히 많을 때의 경우 또한 고려해주면 좋을 것 같단 생각이 들어 보완점이 필요하다고 생각됩니다!
comment: RREF form에서 unique solution, no solution, many solution의 조건에 맞는 if 문을 집어넣은 것이 인상적이었습니다.
Final OK by SGLee [Finalized by 문태의, 황세진, 박우현, 이규식, 남상현, 이예진] Open problem 8 solution
작성자 : 황세진(2015####21)작성일 : 12월 17일 오후 10:21
조회수 : 29
Final OK by SGLee [Finalized by 문태의, 황세진, 박우현, 이규식, 남상현, 이예진] Open problem 8 solution
문태의 학우님께서 풀이해주신 OPEN PROBLEM 8을 보고, 거리에 따른 유사도 측정과 코사인 유사도 측정의 적절한 예시를 문장을 통해 예시를 잘 들어주셨습니다. 도움이 많이 되었습니다!
2학기에 전공과목중 계량경영분석이라는 과목을 수강하였고, Similarity를 분석하는 기법에 대해 배워서 이를 같이 공유할겸 스스로 복습하는 차원에서 finalize해보기로 하였습니다.
Similarity Analysis의 목표는 유사한 문서들은 같이, 유사치 않은 문서들은 떨어뜨려서 partition하는 것이 목표이며, 이를 유사한 단어를 count vector들로 표현하여 계량화하고 측정합니다. 이를 통해 기하학적인 계산이 가능해진다는 장점이 존재합니다.
먼저 문장으로 된 document를 예시로 들었을 때,
Document_1 = "Novel? No novel."이라는 문장에서
word 1 = novel, word 2 = no가 되어 이를 document 1 = (2,1)과 같은 count vector로 표현할 수 있게 됩니다.

Document_2 = "No novel! No, no, no!"라는 두번째 문장은
document 2 = (1,4)의 count vector로 표현이 가능합니다.

이 때 둘 사이의 거리를 Euclidean Distance를 이용하여 구하면
document_1 = vector([2,1])
document_2 = vector([1,4])
print("||document_1-document_2|| =", (document_1 - document_2).norm())
로 표현할 수 있고, 이에 대한 실행 결과는 sqrt(10)으로 표현됩니다.
document_3 가 document_1의 문장을 두번 반복한 문장이라면, document 3 = (4,2)로

다음과 같이 표시할 수 있습니다. 같은 문장의 성분이지만 Euclidean Distance를 사용하게 된다면 다른 값이 나올 것이고 document 2와의 유사도 또한 달라질 것입니다.
이 때 cosine similarity를 사용한다면 똑같은 문장 성분의 document는 같은 유사도를 가지게 될 것입니다.
document_1 = vector([2,1])
document_2 = vector([1,4])
document_3 = vector([4,2])
cos1_2 = document_1.dot_product(document_2) / (document_1.norm()*document_2.norm())
cos1_3 = document_1.dot_product(document_3) / (document_1.norm()*document_3.norm())
cos2_3 = document_2.dot_product(document_3) / (document_2.norm()*document_3.norm())
print( "cos 1_2 value = ", cos1_2.n())
print( "cos 1_3 value = ", cos1_3.n())
print( "cos 2_3 value = ", cos2_3.n())
cos 1_2 value = 0.650791373455969
cos 1_3 value = 1.00000000000000
cos 2_3 value = 0.650791373455969
박우현(2016####31)12월 18일 오후 3:34
단어나 문장을 벡터로 표현하여 데이터 분석하는 방식이 인상깊네요.
이규식(2018####70)12월 18일 오후 10:05
이해에 도움이 되었습니다. 감사합니다!
남상현(2018####17)12월 19일 오후 10:42
문장을 예시로 하여 보기 쉽게 설명하신 것 같습니다. 감사합니다!
이예진(2017####54)12월 21일 오후 12:04
데이터 유사도 개념을 경영 분석 과목에 적용한 사례를 올려주시니 흥미롭습니다. 감사합니다 !
Final OK by SGLee [Finalized by 신유정, 남상현, 고재윤, 이규식] Open Problem 12
작성자 : 남상현(2018####17)작성일 : 12월 17일 오후 11:59
조회수 : 26
Final OK by SGLee [Finalized by 신유정, 남상현, 고재윤, 이규식] Open Problem 12
아래 코드에서 해가 무수히 많을 때와 해가 없을 때를 고려하여 보완해 보았습니다.
우선 해가 무수히 많을 때, 첨가 행렬의 마지막 행은 0이 됩니다.
또한 해가 존재하지 않을 때에는, 첨가 행렬의 마지막 행에서 마지막 열을 제외한 성분이 모두 0이 됩니다.
이를 고려하여 if문을 통해 코드를 보완해 보았습니다.

이 때 실행 결과는 3가지로 나뉘어집니다.
1. 해가 무한히 많을 때

2. 해가 존재하지 않을 때

3. 해가 하나만 존재할 때

2016 신유정 open problem12
작성자 : 신유정(2016####90)작성일 : 12월 17일 오후 8:35
조회수 : 17

BigBook-LinearAlgebra-2015.pdf 50P 예제2번
A = matrix([[1, 1, 2], [1, 2, 3], [1, 1, -5]]) #
coefficient matrix
b = vector([-3, -4, -6]) # vector
print("x =", A.solve_right(b))
먼저 matrix를 만들고 그에 상응하는 vector 를 만들어 줍니다.
solve_right함수를 이용해 A,b에 맞는 답을 찾아줍니다
답은
('x =', (-17/7, -10/7, 3/7)) 인 거 같습니다.
혹시 아니라면 알려주시면 감사하겠습니다.
이상구(LEE SANGGU)12월 17일 오후 8:46
신유정 씨, 반가워요. 여기서 질문은 제 문제와 답을 더 업그레이드 시켜주실분? 이렇게 하는 것입니다. 조언은 다음과 같습니다. 1. 예를들어 본인의 전공책에 나오는 4차보다 더 크고 좀 더 복잡한 연립방정식과 해 가 있으면, ... 그 문제를 이렇게 내가 준 코드의 해당 부분을 고쳐서 구한 답이 교재의 답 또는 본인이 손으로 구한 답과 같으면 .. 아, 내가 앞으로 이런 비슷한 문제는 크기가 아주커도 언제나 이렀게 다 풀어서 정확한 답을 구할 수 있다 라는 자신감을 가지라고 제시한 문제 입니다. 2. 코드를 실행하면서 ... 행렬의 열과 행 배치하는 법, entry 들을 배열 하는 법 등 ... 주의 할점을 저절로 배우는 것 이랍니다. 3. 또 해가 존재하지 않을 때는? 해가 무수히 많을 때는? 어떤 최적해를 구해야 하나 .... 이런것을 생각하는 시간 이랍니다. 5. 아래 QnA 다른 학생 답을 읽고 . . . Fully 이해 했습니다. 감사합니다. 등 코멘트 달면서 ... make up 쉽게 하세요. 7. 그리고 다음 주 화요일 에 보고 ... 내게 질문하시면 추가 조언 줄께요.^^ Good luck.
신유정(2016####90)12월 17일 오후 9:14
네 다음 질문에서는 더 보완해서 올려 보겠습니다. 감사합니다!
남상현(2018####17)12월 18일 오전 1:23
A = matrix([[1, 1, 2], [1, 2, 3], [1, 1, -5]]) # coefficient matrix b = vector([-3, -4, -6]) # vector # 임의의 선형연립방정식에 대한 정의 #A = random_matrix(QQ, 3, 3) #b = random_vector(QQ, 3) Ab = A.augment(b) # 첨가행렬 Ar = Ab.rref() # RREF if (Ar[2] == 0): # RREF의 rank가 columns보다 작을 때 print("infinity solutions") print("RREF = ") print(Ab.rref()) elif (A.rref()[2] == 0) : ## A의 RREF의 마지막 행은 0이지만 첨가행렬의 RREF의 마지막 행은 0이 아닐 때 print("no solution") print("RREF = ") print(Ab.rref()) else : print("x =", A.solve_right(b)) 제가 응용한 코드입니다!
고재윤(2020####97)12월 18일 오전 2:44
해의 존재와 관련된 특성을 If 문으로 정말 잘 표현하신거같습니다!! 이해에 큰 도움이 되었습니다. 좋은 글 감사합니다
이상구(LEE SANGGU)12월 18일 오전 5:28
Wonderful job. Final OK by SGLee
이규식(2018####70)12월 18일 오후 10:00
이해에 도움이 되었습니다. 감사합니다.
Finalized OK by SGLee [Finalized by 고재윤, 정운섭, 문태의, 강민지, 남상현] Open Problem 15 Solution
Finalized OK by SGLee [Finalized by 고재윤, 정운섭, 문태의, 강민지, 남상현] Open Problem 15 Solution
밑의 코드를 응용하여 least-squares solution을 통해 quadratic approximation을 구하고 visualize하고자 하였습니다.

다음과 같은 방법으로 Au = y form을 나타내고, 이를 QR decomposition을 이용하여 LLS를 구한다면 suitable curve 역시 구할 수 있습니다.

4개의 데이터를 통해 suitable curve를 구했으며, 이를 visualize하여 확인하였습니다.
이 때 실행 결과는 다음과 같습니다.


comment: 이 글은 학우님께서 QR Decomposition을 활용하여 least-squares solution을 구하시는 글입니다. 제가 게시한 QR Decomposition에 관한 글에 도움을 받으셨다고 하셔서 뿌듯했습니다.
Open Problem 15 Solution by 고재윤
|
◩ Open Problem 15 |
Find a system of linear equations problem from other textbooks. Then find that problem's least-squares solution using the same method as in example 4.
http://matrix.skku.ac.kr/intro-math4ai/W6/ 의 example 4에서 사용한 least-squares solution을 구하는 방법은 QR decomposition을 이용한 방법입니다.
QR decomposition이란 mXn coefficient matrix A (m>=n)를 column에 대하여 orthonormal한 mXn matrix Q 와, invertible한 upper triangular nxn matrix R로
분리하는 것입니다. 식으로 나타내면 A=Q*R로 나타납니다.
Ax=b 형태의 식에서, QR decomposition을 이용하면 Q*R*x=b로 나타낼 수 있습니다. orthonormal한 matrix Q는 Q*(Q^T) = I 라는 특성이 있으므로, 방금 다뤘던
식의 양변에 Q^T를 곱하면 R*x=(Q^T)*b로 나타낼 수 있습니다. 이번에는 양변에 R^(-1)을 곱하면 x=( R^(-1) )*(Q^T)*b로 나타낼 수 있습니다.
최종적으로 Q, R을 구해 각각 transpose, inverse 형태로 바꾼 값을 구하면, x 값을 알 수 있습니다.
아래 그림은 other text book에서 가져온 least-squares solution을 구하는 문제 입니다.

위에서 설명한내용을 토대로 least squares solution을 구하기 위해 아래와 같이 코딩하였습니다.

실행한 결과 아래와 같이 결과가 출력되었습니다.

textbook의 해설 부분과 비교하니 같은 값으로 x가 계산되었습니다.
이번 문제를 통해 헷갈렸던 QR decomposition을 다시 살펴볼 수 있어서 뜻깊었다고 생각합니다. 익숙하지 않은 개념인 만큼 혹시 제가 실수한 부분이 있다면
코멘트로 알려주시면 감사하겠습니다!!
고재윤(2020####97)12월 17일 오전 5:58
문제풀이에 사용된 코드입니다!! 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, 3, 5], [1, 1, 0], [1, 1, 2], [1, 3, 3]]) b = vector([3, 5, 7, -3]) Q, R = gs_orth(A) print("x =", R.solve_right(Q.transpose()*b))
이상구(LEE SANGGU)12월 17일 오전 5:59
고재윤 씨, 아주 잘 이해하셨습니다. 이제 SVD 이해 하실 준비가 되었습니다. You are a good student.
고재윤(2020####97)12월 17일 오전 6:02
감사합니다!!
정운섭(2018####88)12월 17일 오후 5:08
이 글을 보니 least squares solution을 QR decomposition 으로 구하는 과정이 더 확실하게 이해되었습니다!
문태의(2016####21)12월 17일 오후 11:45
덕분에 QR decomposition로 least square solution을 해결하는 방법에 대해 확실히 이해할 수 있게 되었습니다.
강민지(2021####12)12월 17일 오후 11:56
QR decomposition 개념이 복잡하여 이해하기 힘들었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
남상현(2018####17)12월 18일 오전 00:14
QR decomposition을 통해 보다 쉽게 LLS를 구하신 것 같고 ValueError function으로 예외 경우까지 고려하셔서 너무 좋은 코드 같습니다. 감사합니다!
남상현(2018####17)12월 18일 오전 1:22
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 data = random_matrix(ZZ, 4, 2, x=-5, y=5) p, q, r, s = data[0], data[1], data[2], data[3] A = matrix([[1, p[0], p[0]^2], [1, q[0], q[0]^2], [1, r[0], r[0]^2], [1, s[0], s[0]^2]]) b = vector([p[1], q[1], r[1], s[1]]) Q, R = gs_orth(A) x_sol = R.solve_right(Q.transpose()*b) show("x =", x_sol) a, b, c = x_sol[0], x_sol[1], x_sol[2] y = a + b*x + c*x^2 show("Quadratic function : y =", y) show(data[0], data[1], data[2], data[3], " approximated to ", (data[0][0], y(x=data[0][0])), (data[1][0], y(x=data[1][0])), (data[2][0], y(x=data[2][0])), (data[3][0], y(x=data[3][0]))) show(plot(y, (x, -5, 5))) 제가 응용한 코드입니다!
고재윤(2020####97)12월 18일 오전 2:22
제가 사용한 코드를 사용하여 함수 그래프까지 표현한 것이 인상적입니다!! 저도 비슷한 방법으로 한번 시도해 보겠습니다. 좋은 글 감사합니다!!
이상구(LEE SANGGU)12월 18일 오전 5:27
Wonderful job.
이상구(LEE SANGGU)12월 18일 오전 10:07
Finalized OK by SGLee
Finalized OK by SGLee [Finalized by 도경근, 고재윤 . . . 이예진,이규식, 남상현, 박우현, 신유정, 윤상수] Open Problem 16 Solution
Finalized OK by SGLee [Finalized by 도경근, 고재윤 . . . 이예진,이규식, 남상현, 박우현, 신유정, 윤상수] Open Problem 16 Solution
저는 도경근 학우님의 open problem 16 solution 글을 보고 굉장히 잘 쓰셨다는 생각이 들었고, 새로운 내용에 대해서 생각해보게 되었습니다. SVD 개념이
어려우신 학우님들의 도경근 학우님께서 작성하신 내용에 대한 이해를 도와드리기 위하여 이 문제에 대해 finalize 하게 되었습니다.
먼저, 선형 변환 (linear transformation)에 대한 개념이 SVD의 이해에 도움이 될 것이라고 생각하여, 선형 변환에 대해 설명드리겠습니다.
선형 변환이란 간단히 말해, 자료의 분포는 동일하게 하되 어떤 변수를 사칙연산을 통해 다른 값으로 변환하는 것을 뜻합니다.
여기서 변수는 vector, 사칙연산은 matrix를 통해 다른 vector값으로변환할 수 있습니다.
http://matrix.skku.ac.kr/2012-Album/13.html 이 링크는 교수님께서 올려주신 자료 중 선형 변환에 해당하는 내용입니다.
이번에는 아래의 2차원 그림에 대해서 살펴보도록 하겠습니다. 검은 원은 선형변환 하기 전의 x vector (x) 와 y vector (y) 의 모습이고, 빨간 원은
coefficient matrix A를 곱한 A*x vector (Ax) 와 A*y vector (Ay)의 모습입니다.

y가 x에 대하여 90도가 되도록 하는 vector라면, 선형 변환 하기 전의 상태에서 y는 x에 대해 모든 direction에서 90도를 유지합니다.
하지만, 선형 변환이 일어난 Ax 와 Ay 사이의 각도는 모든 direction에서 90도라고 보장하지 못합니다.
위 그림을 가지고 SVD의 식을 이해할 수 있습니다.
우리는 강의를 통해 SVD 식을 A=U*∑*V^T로 배웠습니다. 위 그림을 가지고 각각의 연산자에 대해 살펴보도록 하겠습니다.
A를 coefficient matrix
V는 선형 변환 전 서로 직교하던[ x,y] 열벡터
U는 Ax, Ay가 서로 90도를 이루는 direction에서 각각의 단위 열벡터 [u1, u2] ,
∑를 scaling factor 역할을 하는 diagonal matrix라고 두겠습니다.
그렇다면 AV=∑U 라는 식은 션형 변환의 관점에서 생각해보면, 변환 전 직교했던 두 벡터가 변환 후에도 직교할 때의 direction을 찾는 식이 됩니다.
V는 orthogonal matrix 이므로 A=U*∑*V^T 로 나타낼 수 있고, 이는 강의 시간에 배웠던 SVD의 형태가 됩니다.
comment: 이 글은 제가 도경근 학우님의 open problem 16을 이해하는 과정에서 찾아본 SVD의 수학적 기본 의미를 다른 학우님들과 나누고 싶어서 쓰게 되었습니다. 이 글을 가지고 또 다른 학우님들이 finalize 해주셔서 뿌듯했습니다.
아래 사진은 도경근 학우님이 작성하셨던 Open Problem 16 solution 입니다.
Open Problem 16 (Solution) by 도경근
|
◩ Open Problem 16 |
Find the SVD for a matrix from the other textbook by using the codes above.
R을 사용하여 martix의 svd값을 찾아보고 분석을 해보았습니다.

특잇값 분해는 데이터 정보를 압축해주는 기능이 있습니다. 여기서 확인할수 있는 점은 특잇값 벡터 d의 첫번째 두번째 세번째 원소값에 비하여 4번째 원소 값이 비교적 작다는 것을 알수 있습니다.따라서원래 데이터의 3/4만큼의 데이터인 처음 3개의 특잇값과 U, V의 1~3열만 사용하여도 원래 데이터에 대한 대표성이 충분하고 정보 손실이 작다고 판단할수 있습니다.
이것이 실제로 그런지 한번 확인 해보기 위해서 처음 3개의 특잇값과 U, V의 1~3열만 사용하여 matrix를 reconstruct 해보았습니다.

보시다시피 원래 데이터와 거의 유사하다는 점을 확인 할 수 있었습니다.
또한 처음 2개의 특잇값과 U, V의 1~2열만 사용하여 matrix를 reconstruct 해보았습니다

이 역시 원래 데이터와 유사하지만 중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습이 눈에 띕니다.
이번 HW에서는 matrix의 svd값을 구해보고 그것이 어떤 의미를 가지고, 어떻게 쓰일수 있을지 고민해보는 시간을 가질수 있어서 유익했습니다. 감사합니다.
이상구(LEE SANGGU)12월 16일 오후 10:30
Very good^^ Share your text code, so others can check your output amd improve it.
도경근(2018####55)12월 17일 오후 4:08
m1 <- c(0,0,4,0,0,0,1,0, 0,0,0,2,0,0,5,0, 0,1,0,0,1,1,1, 0,3,1,0,0,0,2,2,1) dim(m1) <- c(4,8) m1 cross_svd <- svd(m1) str(cross_svd) cross_svd$d cross_svd$u cross_svd$v round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) round(cross_svd$u[,c(1,2,3)] %*% diag(cross_svd$d[c(1,2,3)]) %*% t(cross_svd$v[,c(1,2,3)])) round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) text code 입니다
고재윤(2020####97)12월 17일 오후 7:43
학우님의 코딩 방식이 처음보는 방식이어서 처음엔 낯설었는데, text code가 매우 간결하게 써진 것을 보고 놀랐습니다. 제 방식대로 했다면 학우님의 몇 배 길이의 코딩을 했을텐데, 코딩공부도 더 해야겠다는 생각이 들었습니다. 또한, 학우님께서 하신 문제풀이 중 U, V의 1,2,3번째 column으로 다시 A 를 조합하여 원래 A와 비교하는 방식이 매우 흥미로웠습니다. 학우님께서 U,V의 1,2 번째 column만을 이용하여 A를 재조합 하셨을 때 '중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습' 이라고 서술해 주셨는데 마지막 행의 데이터가 왜 가장 중요할 가능성이 높은 데이터인지 여쭈어봐도 될까요? 좋은 problem solution 감사합니다!!
이상구(LEE SANGGU)12월 17일 오후 8:58
12일 차 rank reduction 에서 배울 내용 입니다^^
고재윤(2020####97)12월 17일 오후 10:17
답변 감사합니다 교수님!!
황세진(2015####21)12월 17일 오후 11:22
주어진 데이터를 통해 합리적인 추론을 통해 벡터값이 가장 작은 곳을 제외하고 계산했을 때에 원래 데이터에서 손실이 많이 나지 않는 것을 소프트웨어를 통해 간결하게 확인시켜주셔서 한눈에 이해가 되었습니다! 도움이 많이 되었습니다.
도경근 학우님께서는 중요성이 가장 낮은 U와 V의 column을 제거하고 재조합한 결과, decomposition 하기 전의 matrix와 비슷한 값이 나옴을
보여주시면서 SVD의 특성에 대해 작성해주셨습니다. 이 방식이 왜 성립하는지 알기 위해 SVD의 식을 다시 살펴보도록 하겠습니다.
아래 사진은 SVD 식 A=U*∑*V^T 을 보다 자세히 서술한 식 입니다.

앞서 살펴보았듯이, U*V^T의 성분의 크기는 모두 -1에서 1 사이의 값이기 때문에 ∑가 마치 scaling factor와 같은 역할을 한다고 볼 수 있습니다.
∑는 diagonal matrix이기 때문에 A는 σ1*u1*v1^T +σ2*u2*v2^T*+..... 로 쪼개서 나타낼 수 있습니다.
이 때 k번째 σ 값이 다른 σ 값들에 비해 작은 값이라면, 그 부분은 A라는 데이터를 이루는데에 중요성이 낮다는 것을 뜻함을 알 수 있습니다.
따라서 중요성이 낮은 부분, 즉 σ 값이 상대적으로 작은 column은 A를 이루는데 큰 부분을 차지하지 않을 것이고, 이 부분을 제외하고 A를 계산해도
비슷한 값이 나올 것이라고 생각할 수 있습니다.
이런 SVD의 특성을 이용하면 중요성이 낮은 데이터를 제거함으로써, 압축된 데이터를 표현할 수 있을 것입니다.
반대로, 중요성이 높은 데이터 몇개를 가지고 원래 데이터를 부분복원 하는 것이 가능할 것 같습니다.
이상구(LEE SANGGU)12월 18일 오전 5:21
Good job. Great. 다른 학생들도 모두 읽어야 할 여러분 동료의 SVD 설명 내용입니다.
윤상수(2020####53)12월 18일 오전 10:42
선형 변환을 함께 설명해주신 것이 이해에 한결 도움이 되는 것 같습니다. 감사합니다.
신유정(2016####90)12월 18일 오후 2:35
svd 이해에 막혀 있었는데, 이해하는데 큰 도움이 되었습니다. 감사합니다!
박우현(2016####31)12월 18일 오후 2:36
SVD를 이해하는데 도움이 되었습니다 감사합니다
이예진(2017####54)12월 18일 오후 4:01
인터넷으로 뒤져가며 어렴풋하게 이해한 선형변환, SVD 등의 내용을 이렇게 한 문서에 일목요연하게 정리해주셔서 정말 도움이 크게 되었습니다. 감사합니다 !
남상현(2018####17)12월 18일 오후 5:49
시각적 효과와 더불어서 너무 간결하고 쉽게 SVD에 관해 정리해주신 것 같습니다. 감사합니다!
도경근(2018####55)12월 18일 오후 7:17
안녕하세요 학우님. 제가 작성해주신 글을 잘 finalize 해주셔서 감사합니다. 마지막 행의 데이터가 왜 중요하다고 질문을 해주셨는데, 이부분에서는 제가 설명이 부족했던것 같습니다. 제가 하고싶었던 말은 '데이터를 복원했을때 마지막 행이 아예 사라졌다. 이 데이터로 어떤 insight를 뽑아낼건지에 따라서 그 결과에 안좋은 영향이 있을 수 있다' 입니다. SVD 에 대해서 정성스럽게 요약해주시고 추가적인 설명을 해주셔서 감사합니다. 좋은 연말 보내십시오.
이규식(2018####70)12월 18일 오후 9:54
SVD에 대해 매우 잘 정리해주신 것 같습니다. 감사합니다!
comment: 저는 open problem16을 finalize 할 때 문장의 맥락을 조금 정신없게 쓴건 아닐까 라는 생각이 들기도 하였는데, 남상현 학우님께서 제가 finalize 한 내용을 문장의 완성도가 높게 refinalize 하셔서 감사했습니다.
Open problem 11 by 안성준
작성자 : 안성준(2016####47)작성일 : 12월 18일 오후 12:48
조회수 : 14
세 벡터의 크기가 같은 경우
내적값이 클수록 코사인 값이 커질 수 있다는 (클 수 밖에 없음? may be not) 것을
보이고 싶었습니다.
임의로 크기가 같은 세 벡터를 구해보았습니다.

그 후 내적값과 코사인 값을 비교하도록 명령어를 설정했습니다.

이후 나온 결과입니다.

당연하게도 예상했던 결과과 나왔습니다.
감사합니다.
고재윤(2020####97)12월 18일 오후 11:28
내적값과 cos 값과의 연관성에 대해 잘 알게되었습니다. 감사합니다!!
남상현(2018####17)12월 19일 오후 9:21
내적값과 cos similarity까지 출력값을 깔끔하게 정리하셔서 이해가 잘 되는 것 같습니다. 감사합니다!
[Final OK by SGLee] Open Problem 16 Solution by 남상현 (SVD를 동한 데이터 압축의 이해) with 도경근, 고재윤, 황세진, 윤상수, 신유정, 박우현, .남상현, 이규리, 문태의, 이예진
[Final OK by SGLee] Open Problem 16 Solution by 남상현 (SVD를 동한 데이터 압축의 이해) with 도경근, 고재윤, 황세진, 윤상수, 신유정, 박우현, .남상현, 이규리, 문태의, 이예진
도경근 학우님과 고재윤 학우님의 Finalized Open Problem 16을 보고 쉽고 정확하게 SVD와 이를 이요한 데이터 압축에 관해 이해할 수 있었으며, 이에 관련하여 좀 더 깊게 생각해 보게 되었습니다. 데이터 압축에 관하여 좀 더 세부적인 개념과 이해를 돕고자 Open Problem 16을 finalized해보았습니다.
우선 SVD를 응용하여 데이터의 연산량을 줄여 데이터 압축을 할 수 있는데, 이는 truncated SVD로의 변환을 통해 응용할 수 있습니다.
m x n matrix의 SVD의 경우, m이 n보다 작거나 같다면 Σ행렬의 마지막 행에는 singular value의 마지막 값이 들어가게 됩니다.
하지만, m>n이라면 m x n size의 Σ행렬의 아랫부분에는 0으로 구성된 성분이 들어가게 됩니다. 이를 Full SVD라고 합니다.
(Image by : http://matrix.skku.ac.kr/2020-Math4AI-Final-pbl2/ )

singular value의 갯수를 s라고 합시다. 이 때 Σ행렬은 밑에서부터 m-s 개 만큼의 행이 0으로 구성됩니다. 행렬의 곱을 생각해본다면, U와 Σ행렬을 곱할 때 이 부분은 제거하여도 상관 없는 부분, 즉 크기가 0인 빈 데이터가 됩니다. 예시를 들면 다음과 같습니다.

-> 원래 행렬이 5x3 size이며 singular value가 3개이므로 S행렬의 아래 두 행이 0이 되었습니다. 즉, U행렬의 오른쪽 두 열을 지우고 계산하더라도 SVD는 같은 값이 나오게 됩니다. 이렇게 하여 빈 데이터를 지운 SVD를 Thin SVD라고 합니다.

아직까지는 SVD의 값이 일치합니다. 또한 값이 0인 singular value가 존재한다면 이 역시 제거할 수 있습니다. 가령 2번째 singular value의 값이 0이라면, S행렬의 2번째 열과 2번째 행이 모두 0으로 구성되어 있으므로, U행렬의 2번째 열을 제거할 수 있고, V^T행렬의 2번째 행을 제거할 수 있습니다.
이렇게 하여 0인 singular value까지 모두 지운 SVD를 Compact SVD라 하며, 아직까지는 빈 데이터 껍데기만 제거하여 실질적으로 데이터 크기가 압축되진 않았습니다.

그리고, 본격적으로 데이터를 압축하는 방법은 Truncated SVD를 이용한 방법입니다. Singular value를 내림차순으로 나열하여 SVD를 만든다면 오른쪽 아래로 내려갈수록 singular value의 값이 감소하며, 이들은 제거되어도 SVD의 값에 큰 영향을 주지 않습니다. 이렇게 하여 0이 아닌 singular value까지 제거해준 SVD를 Truncated SVD라 부릅니다.

이러한 방법을 데이터 압축에 응용할 수 있으며, singular value를 제거하여 노이즈 역시 감소시킬 수 있습니다.
다음 6x5 행렬을 통해 예시를 만들어 보았습니다.

우선 Full SVD를 구하면 다음과 같습니다.


0인 singular value는 없으므로, S행렬의 마지막 행만 제거하여 Compact SVD를 구해보았습니다.


SVD의 값은 데이터 손실 없이 일치하는 것을 확인할 수 있습니다. 이제 5번째 singular value(1.306)를 제거하여 Truncated SVD를 구해보겠습니다.


다음 truncated SVD를 통해 데이터를 압축할 수 있습니다. 여기서 데이터를 압축함이라 함은, U, S, V^T 행렬을 일렬로 하여 크기를 구했을 때 그 값이 감소했음을 의미합니다.
즉, 위와 같은 경우에선 Full SVD에서의 세 행렬이 각각 6x6, 6x5, 5x5 size로서 36+30+25=91Byte라고 할 수 있습니다.
하지만, Truncated SVD의 크기는 6x4+4x4+4x5=60Byte로서, 66% 정도의 메모리만을 사용하였지만 원래의 데이터와 거의 일치함을 확인할 수 있습니다.
해당 내용을 visualize하여 이미지 파일을 통해 확인해보고 싶었으나, 아직 sage 코딩에 대한 이해도가 부족하여 직접 해보지 못했습니다.
하지만 이는 이상구 교수님의 선형대수학 연구실에서 제공하는 "Matrix Decomposition and Image Processing via MATHEMATICA" 논문을 통해 정확하고 자세히 이해할 수 있었으며, 해당 논문을 통해 학우분들 모두 SVD와 데이터 압축 및 노이즈 캔슬을 쉽게 이해하실 수 있을 거라고 생각합니다.
http://matrix.skku.ac.kr/sglee/03-Note/IP/ImageProcessing.htm
혹시 잘못된 점이나 추가하고 싶으신 점이 있으시다면 지적 부탁드립니다!
Finalized OK by SGLee [Finalized by 도경근, 고재윤 . . . 이예진] Open Problem 16 Solution
저는 도경근 학우님의 open problem 16 solution 글을 보고 굉장히 잘 쓰셨다는 생각이 들었고, 새로운 내용에 대해서 생각해보게 되었습니다. SVD 개념이
어려우신 학우님들의 도경근 학우님께서 작성하신 내용에 대한 이해를 도와드리기 위하여 이 문제에 대해 finalize 하게 되었습니다.
먼저, 선형 변환 (linear transformation)에 대한 개념이 SVD의 이해에 도움이 될 것이라고 생각하여, 선형 변환에 대해 설명드리겠습니다.
선형 변환이란 간단히 말해, 자료의 분포는 동일하게 하되 어떤 변수를 사칙연산을 통해 다른 값으로 변환하는 것을 뜻합니다.
여기서 변수는 vector, 사칙연산은 matrix를 통해 다른 vector값으로변환할 수 있습니다.
http://matrix.skku.ac.kr/2012-Album/13.html 이 링크는 교수님께서 올려주신 자료 중 선형 변환에 해당하는 내용입니다.
이번에는 아래의 2차원 그림에 대해서 살펴보도록 하겠습니다. 검은 원은 선형변환 하기 전의 x vector (x) 와 y vector (y) 의 모습이고, 빨간 원은
coefficient matrix A를 곱한 A*x vector (Ax) 와 A*y vector (Ay)의 모습입니다.

y가 x에 대하여 90도가 되도록 하는 vector라면, 선형 변환 하기 전의 상태에서 y는 x에 대해 모든 direction에서 90도를 유지합니다.
하지만, 선형 변환이 일어난 Ax 와 Ay 사이의 각도는 모든 direction에서 90도라고 보장하지 못합니다.
위 그림을 가지고 SVD의 식을 이해할 수 있습니다.
우리는 강의를 통해 SVD 식을 A=U*∑*V^T로 배웠습니다. 위 그림을 가지고 각각의 연산자에 대해 살펴보도록 하겠습니다.
A를 coefficient matrix
V는 선형 변환 전 서로 직교하던[ x,y] 열벡터
U는 Ax, Ay가 서로 90도를 이루는 direction에서 각각의 단위 열벡터 [u1, u2] ,
∑를 scaling factor 역할을 하는 diagonal matrix라고 두겠습니다.
그렇다면 AV=∑U 라는 식은 션형 변환의 관점에서 생각해보면, 변환 전 직교했던 두 벡터가 변환 후에도 직교할 때의 direction을 찾는 식이 됩니다.
V는 orthogonal matrix 이므로 A=U*∑*V^T 로 나타낼 수 있고, 이는 강의 시간에 배웠던 SVD의 형태가 됩니다.
아래 사진은 도경근 학우님이 작성하셨던 Open Problem 16 solution 입니다.
Open Problem 16 (Solution) by 도경근
|
◩ Open Problem 16 |
Find the SVD for a matrix from the other textbook by using the codes above.
R을 사용하여 martix의 svd값을 찾아보고 분석을 해보았습니다.

특잇값 분해는 데이터 정보를 압축해주는 기능이 있습니다. 여기서 확인할수 있는 점은 특잇값 벡터 d의 첫번째 두번째 세번째 원소값에 비하여 4번째 원소 값이 비교적 작다는 것을 알수 있습니다.따라서원래 데이터의 3/4만큼의 데이터인 처음 3개의 특잇값과 U, V의 1~3열만 사용하여도 원래 데이터에 대한 대표성이 충분하고 정보 손실이 작다고 판단할수 있습니다.
이것이 실제로 그런지 한번 확인 해보기 위해서 처음 3개의 특잇값과 U, V의 1~3열만 사용하여 matrix를 reconstruct 해보았습니다.

보시다시피 원래 데이터와 거의 유사하다는 점을 확인 할 수 있었습니다.
또한 처음 2개의 특잇값과 U, V의 1~2열만 사용하여 matrix를 reconstruct 해보았습니다

이 역시 원래 데이터와 유사하지만 중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습이 눈에 띕니다.
이번 HW에서는 matrix의 svd값을 구해보고 그것이 어떤 의미를 가지고, 어떻게 쓰일수 있을지 고민해보는 시간을 가질수 있어서 유익했습니다. 감사합니다.
6개의 댓글
이상구(LEE SANGGU)12월 16일 오후 10:30
Very good^^ Share your text code, so others can check your output amd improve it.
도경근(2018####55)12월 17일 오후 4:08
m1 <- c(0,0,4,0,0,0,1,0, 0,0,0,2,0,0,5,0, 0,1,0,0,1,1,1, 0,3,1,0,0,0,2,2,1) dim(m1) <- c(4,8) m1 cross_svd <- svd(m1) str(cross_svd) cross_svd$d cross_svd$u cross_svd$v round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) round(cross_svd$u[,c(1,2,3)] %*% diag(cross_svd$d[c(1,2,3)]) %*% t(cross_svd$v[,c(1,2,3)])) round(cross_svd$u[,c(1,2)] %*% diag(cross_svd$d[c(1,2)]) %*% t(cross_svd$v[,c(1,2)])) text code 입니다
고재윤(2020####97)12월 17일 오후 7:43
학우님의 코딩 방식이 처음보는 방식이어서 처음엔 낯설었는데, text code가 매우 간결하게 써진 것을 보고 놀랐습니다. 제 방식대로 했다면 학우님의 몇 배 길이의 코딩을 했을텐데, 코딩공부도 더 해야겠다는 생각이 들었습니다. 또한, 학우님께서 하신 문제풀이 중 U, V의 1,2,3번째 column으로 다시 A 를 조합하여 원래 A와 비교하는 방식이 매우 흥미로웠습니다. 학우님께서 U,V의 1,2 번째 column만을 이용하여 A를 재조합 하셨을 때 '중요할 가능성이 높은 마지막 행의 데이터들이 모두 사라진 모습' 이라고 서술해 주셨는데 마지막 행의 데이터가 왜 가장 중요할 가능성이 높은 데이터인지 여쭈어봐도 될까요? 좋은 problem solution 감사합니다!!
이상구(LEE SANGGU)12월 17일 오후 8:58
12일 차 rank reduction 에서 배울 내용 입니다^^
고재윤(2020####97)12월 17일 오후 10:17
답변 감사합니다 교수님!!
황세진(2015####21)12월 17일 오후 11:22
주어진 데이터를 통해 합리적인 추론을 통해 벡터값이 가장 작은 곳을 제외하고 계산했을 때에 원래 데이터에서 손실이 많이 나지 않는 것을 소프트웨어를 통해 간결하게 확인시켜주셔서 한눈에 이해가 되었습니다! 도움이 많이 되었습니다.
도경근 학우님께서는 중요성이 가장 낮은 U와 V의 column을 제거하고 재조합한 결과, decomposition 하기 전의 matrix와 비슷한 값이 나옴을
보여주시면서 SVD의 특성에 대해 작성해주셨습니다. 이 방식이 왜 성립하는지 알기 위해 SVD의 식을 다시 살펴보도록 하겠습니다.
아래 사진은 SVD 식 A=U*∑*V^T 을 보다 자세히 서술한 식 입니다.

앞서 살펴보았듯이, U*V^T의 성분의 크기는 모두 -1에서 1 사이의 값이기 때문에 ∑가 마치 scaling factor와 같은 역할을 한다고 볼 수 있습니다.
∑는 diagonal matrix이기 때문에 A는 σ1*u1*v1^T +σ2*u2*v2^T*+..... 로 쪼개서 나타낼 수 있습니다.
이 때 k번째 σ 값이 다른 σ 값들에 비해 작은 값이라면, 그 부분은 A라는 데이터를 이루는데에 중요성이 낮다는 것을 뜻함을 알 수 있습니다.
따라서 중요성이 낮은 부분, 즉 σ 값이 상대적으로 작은 column은 A를 이루는데 큰 부분을 차지하지 않을 것이고, 이 부분을 제외하고 A를 계산해도
비슷한 값이 나올 것이라고 생각할 수 있습니다.
이런 SVD의 특성을 이용하면 중요성이 낮은 데이터를 제거함으로써, 압축된 데이터를 표현할 수 있을 것입니다.
반대로, 중요성이 높은 데이터 몇개를 가지고 원래 데이터를 부분복원 하는 것이 가능할 것 같습니다.
7개의 댓글
이상구(LEE SANGGU)12월 18일 오전 5:21
Good job. Great. 다른 학생들도 모두 읽어야 할 여러분 동료의 SVD 설명 내용입니다.
윤상수(2020####53)12월 18일 오전 10:42
선형 변환을 함께 설명해주신 것이 이해에 한결 도움이 되는 것 같습니다. 감사합니다.
신유정(2016####90)12월 18일 오후 2:35
svd 이해에 막혀 있었는데, 이해하는데 큰 도움이 되었습니다. 감사합니다!
박우현(2016####31)12월 18일 오후 2:36
SVD를 이해하는데 도움이 되었습니다 감사합니다
이예진(2017####54)12월 18일 오후 4:01
인터넷으로 뒤져가며 어렴풋하게 이해한 선형변환, SVD 등의 내용을 이렇게 한 문서에 일목요연하게 정리해주셔서 정말 도움이 크게 되었습니다. 감사합니다 !
남상현(2018####17)12월 18일 오후 5:49
시각적 효과와 더불어서 너무 간결하고 쉽게 SVD에 관해 정리해주신 것 같습니다. 감사합니다!
도경근(2018####55)12월 18일 오후 7:17
안녕하세요 학우님. 제가 작성해주신 글을 잘 finalize 해주셔서 감사합니다. 마지막 행의 데이터가 왜 중요하다고 질문을 해주셨는데, 이부분에서는 제가 설명이 부족했던것 같습니다. 제가 하고싶었던 말은 '데이터를 복원했을때 마지막 행이 아예 사라졌다. 이 데이터로 어떤 insight를 뽑아낼건지에 따라서 그 결과에 안좋은 영향이 있을 수 있다' 입니다. SVD 에 대해서 정성스럽게 요약해주시고 추가적인 설명을 해주셔서 감사합니다. 좋은 연말 보내십시오.
9개의 댓글
남상현(2018####17)12월 18일 오후 8:29
M = matrix(RDF,[[1, 2, 1, 4, -2],[2, 4, 4, -6, -8], [1, 2, -2, 4, 6], [-2, -1, 1, 4, 3], [-2, 0 ,0, 1, 1], [2, 5, 4, -3, -1]]) U, S, V = M.SVD() # A = U*S*V' # A's SVD Ut = matrix(RDF, [[U[i][j] for j in range(4)] for i in range(6)]) St = matrix(RDF, [[S[i][j] for j in range(4)] for i in range(4)]) Vt = matrix(RDF, [[V[i][j] for j in range(4)] for i in range(5)]) show("U = ") show(Ut.n(digits=4)) show("S = ") show(St.n(digits=4)) show("V = ") show(Vt.n(digits=4)) show("M = ") show(M) show("USV^T = ") show(Ut*St*Vt.transpose().n(digits=4)) Truncated SVD를 구할 때 사용한 코드입니다!
이상구(LEE SANGGU)12월 18일 오후 8:42
잘 했습니다. 서로 다르게 생각하는 부분이 있어 보입니다. 결론은 마지막행의 데이터가 특별히 중요하지는 않습니다. 분석에서는 큰 특이값들과 그에 대응하는 singular vectors 가 다른 것 보다 영향을 더 준다 정도로 이해하시고. 더 자세한 것은 12-13 th day 에 배울 rank reduction 과 PCA 에서 SVD 의 이용 에서 배울 것 입니다.
남상현(2018####17)12월 18일 오후 8:49
네 감사합니다!
도경근(2018####55)12월 18일 오후 9:45
잘 정리해주셔서 감사합니다 학우님. SVD에 대해 이해하는데 도움이 많이 되었습니다.
고재윤(2020####97)12월 18일 오후 9:49
설명해주신 모든 내용에 대응되는 예시들을 코딩해주시고, 알맞은 그림으로 식을 표현해주시니 제가 작성한 글보다 SVD에 대해서 더 잘 이해할 수 있는 글인 것 같습니다!! 교수님께서 말씀하신 12-13th day에 배우는 내용에 대해서도 나중에 토론할 수 있었으면 좋겠습니다. 좋은 글 감사합니다!!
이규리(2018####45)12월 19일 오전 7:47
SVD를 그저 수학적 개념에서 끝나지 않고 데이터에서는 이를 어떤 식으로 쓸 수 있는지, 어떻게 이해하면 되는지를 자세히 설명해주셔서 이해에 많은 도움이 되었습니다. 감사합니다!
문태의(2016####21)12월 19일 오후 4:29
SVD를 이해하는데 큰 도움이 되었습니다! 감사합니다.
정운섭(2018####88)12월 20일 오전 00:54
이 부분은 몰랐던 부분인데 이렇게 잘 정리해주셔서 SVD에 대해서 더 깊이 이해할 수 있게 되었습니다! 감사합니다!
이예진(2017####54)12월 21일 오후 12:02
덕분에 SVD에 관한 더욱 구체적 이해를 할 수 있었습니다. 감사합니다 !
[Final OK by SGLee] (Important File) Collection of all Final OKed Problem and Solutions 1~16 모음 by 이규식
작성자 : 이규식(2018####70)작성일 : 12월 18일 오후 11:03
조회수 : 39
(Important File) Collection of all Final OKed Problem and Solutions 1~16 모음 by 이규식
2021-12-18 11:00 기준으로 현재까지 문의 게시판에 올라온 Final OK by SGLee 받은 솔루션들을 모은 워드 파일입니다.
보기 좋도록 폰트와 사이즈를 통일하여 작성하였습니다. 정리하면서 제가 느낀 것들을 코멘트로 첨언하였습니다.
복습하실 때 참고하시면 좋을 듯 싶습니다.
개인 사정으로 인해 늦게 학습에 참여하게 되어 Open Problem 학습에 도움을 드리지 못하였는데 이렇게라도 학우분들에게 도움이 되었으면 합니다.
8개의 댓글
이상구(LEE SANGGU)12월 18일 오후 11:11
Wonderful job~~ Mr. 이규식 did a wonderful job for all other students^^ Bonus points will be given for this contribution. Others may read and use this file to improve and add your ans missed name in it . AND USE IN TO FILL OUR YOUR 1ST PBL REPORT= EXAM 2 .
고재윤(2020####97)12월 18일 오후 11:45
정리해주셔서 감사합니다~~
박우현(2016####31)12월 19일 오후 1:03
좋은 정리 감사합니다. 학습하는데 도움이 될 것 같습니다
문태의(2016####21)12월 19일 오후 4:33
정리 정말 감사합니다.
남상현(2018####17)12월 19일 오후 9:14
정리해주셔서 정말 감사합니다!
우건주(2017####97)12월 20일 오후 10:38
정리해주셔서 정말 감사드립니다. 부족한 부분들을 채워나가는데 유용할 것 같습니다 !!
이예진(2017####54)12월 21일 오전 11:53
정리해주셔서 감사합니다! 열심히 공부하겠습니당
황세진(2015####21)12월 21일 오후 10:57
정리해주셔서 감사합니다! 도움이 되었습니다.
comment: Final OK를 받은 글들을 정리해주셔서 학습 시간을 늘릴 수 있었습니다.
ALL Must read This!! [Sample, Re-Finalized OK by SGLee] Open Problem 16 [Re-Finalized by Ng Zhi Wei(응즈웨이), 이규식, 남상현, 이예진, 고윤진, 고재윤, 도경은, 황세윤, 신유정, 박우현, 이예진, 남상현, 도경근, 이규식] (Solutions and Comments) Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.
ALL Must read This!! [Sample, Re-Finalized OK by SGLee]
Open Problem 16 [Re-Finalized by Ng Zhi Wei(응즈웨이), 이규식, 남상현, 이예진, 고윤진, 고재윤, 도경은, 황세윤, 신유정, 박우현, 이예진, 남상현, 도경근, 이규식]
(Solutions and Comments) Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.
Open Problem 16 by Ng Zhi Wei, (Cont. from [Final OK by SGLee] open problem 16 (Solution) by 도경근 ... 황세진
(Cont. from [Final OK by SGLee] open problem 16 (Solution) by 도경근 ... 황세진
Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.

***
[Final OK by SGLee] (Important File) Collection of all Final OKed Problem and Solutions 1~16 모음 by 이규식
(Important File) Collection of all Final OKed Problem and Solutions 1~16 모음 by 이규식
2021-12-18 11:00 기준으로 현재까지 문의 게시판에 올라온 Final OK by SGLee 받은 솔루션들을 모은 워드 파일입니다.
보기 좋도록 폰트와 사이즈를 통일하여 작성하였습니다. 정리하면서 제가 느낀 것들을 코멘트로 첨언하였습니다.
복습하실 때 참고하시면 좋을 듯 싶습니다.
개인 사정으로 인해 늦게 학습에 참여하게 되어 Open Problem 학습에 도움을 드리지 못하였는데 이렇게라도 학우분들에게 도움이 되었으면 합니다.
5개의 댓글
이상구(LEE SANGGU)12월 18일 오후 11:11
Wonderful job~~ Mr. 이규식 did a wonderful job for all other students^^ Bonus points will be given for this contribution. Others may read and use this file to improve and add your ans missed name in it . AND USE IN TO FILL OUR YOUR 1ST PBL REPORT= EXAM 2 .
고재윤(2020####97)12월 18일 오후 11:45
정리해주셔서 감사합니다~~
박우현(2016####31)12월 19일 오후 1:03
좋은 정리 감사합니다. 학습하는데 도움이 될 것 같습니다
문태의(2016####21)12월 19일 오후 4:33
정리 정말 감사합니다.
남상현(2018####17)12월 19일 오후 9:14
정리해주셔서 정말 감사합니다!
6개의 댓글
이상구(LEE SANGGU)12월 19일 오후 9:28
Good. You made it^^ You did good because you tried to have SVD of a rectangular 4 by 5 matrix (and not full column rank) which is bigger than 3 by 3 . That was closer to my intention^^ Bonus 1.
남상현(2018####17)12월 20일 오후 5:10
I think it is a good example for SVD by using the matrix of 4x5 size, and having two zero-singular values. Thank you!
강민지(2021####12)12월 20일 오후 7:26
svd 개념이 복잡하여 이해하기 힘들었는데, 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
이상구(LEE SANGGU)12월 20일 오후 8:27
Dear 남성현 and 강민지, wonderful. I may give you a chance to talk about this summary tomorrow. Then you may get a bonus point 1.
박우현(2016####31)12월 21일 오전 00:13
데이터 압축에 해당하는 truncated 부분이 쉽게 이해되었습니다
황세진(2015####21)12월 22일 오후 6:53
svd 개념을 잘 정리해주셔서 이해에 도움이 되었습니다. 감사합니다.
Summary of day 7, day 8 lecture + Useful Sage code
- Day 7, 8 Lecture Summary




- Useful Sage code in day 7, day 8
1 (We can practice the following code at http://sage.skku.edu/ or http://matrix.skku.ac.kr/KOFAC/ or https://sagecell.sagemath.org/ etc)
print( limit( f(x), x = a, dir = '-'
) ) # left-hand limit at x = a
print( limit(
f(x), x = a, dir = '+' ) ) # right-hand limit at x = a
2
print( diff(f(x), x ) )
# first derivative
print(
diff(f(x), x, 2 ) ) # second derivative
print(
diff(f(x), x, 3 ) ) # third derivative
3
f(x) = ~~~
# arbitrary fuction f(x)
x0 = a
df(x) =
diff(f(x), x) # derivative
print(
"tangent line : y =", f( x0 ) + df( x0 )*( x - x0 ) )
# print tangent line
4
f(x) = ~~~
# arbitrary fuction f(x)
df(x) =
diff(f(x), x) # derivative
solve ( df(x) > 0, x ) #the interval where f’(x) > 0
solve(diff(f(x)) == 0, x) # critical points
이전
다음
5개의 댓글
남상현(2018####17)12월 20일 오후 5:26
정말 보기 쉽게 정리해주신 것 같습니다. 코드도 참고하여 응용해 보도록 하겠습니다. 감사합니다!
이상구(LEE SANGGU)12월 20일 오후 8:20
Nice try ^^
정운섭(2018####88)12월 20일 오후 11:16
코드를 정리해주신 것이 특히 유용하게 잘 쓰일 것 같습니다. 감사합니다!
이예진(2017####54)12월 21일 오전 11:57
코드 정리해주셔서 일일이 찾아봐야 하는 번거로움을 덜 수 있었습니다. 감사합니다!
인유진(2020####32)12월 22일 오후 4:20
어려운 내용들을 잘 정리해주셔서 참고하여 공부하기 좋았습니다. 감사합니다!
Open Problem 1 by 남상현
작성자 : 남상현(2018####17)작성일 : 12월 20일 오후 6:19
조회수 : 52
|
◩ Open Problem 1 |
Find the third derivative of a differentiable function from the textbook.
First, I choose the differentiable function from the textbook,
![]()
The function is differentiable for every x, so we can define a derivative of f(x).
To find the third derivative of the function, first, we should check if the derivative is still differentiable.
If it is checked, we can find the second derivative of the function. Also, we should check if the second derivative is differentiable.
If it is checked, now we can find the third derivative of the function.

By using diff() function, we can find the third derivative of the function. And this is the result.

As we can see, they are differentiable, and I could find the third derivative of the function.
고재윤(2020####97)12월 20일 오후 7:28
작성하신 글을 읽고 diff() function에 대한 이해에 도움이 되었습니다. 감사합니다!!
정운섭(2018####88)12월 20일 오후 7:31
diff() function에 대한 좋은 예시를 들어주셔서 이해에 도움이 되었습니다!
이상구(LEE SANGGU)12월 20일 오후 8:19
Good job^^ Others may try the same job (with the same code) for a couple more complicated or composite functions.
박우현(2016####31)12월 20일 오후 11:58
diff()함수의 활용에 대한 보기 좋은 예시인 것 같습니다
응즈웨이(2019####51)12월 21일 오전 00:22
Hi! Thank you very much and your codes work perfectly fine! :) However, just for sharing, I used a while loop to tackle this problem as I find it more efficient that way. If interested, do take a look at my post at "Day 7 Open Problem 1 by Ng Zhi Wei (using while loop)". Thanks!
남상현(2018####17)12월 21일 오전 00:46
I will :) Thanks a lot!
우건주(2017####97)12월 21일 오후 6:56
diff() function의 용법의 예시를 들어주셔서 더욱 이해하기 쉽게 다가오는 것 같습니다!! 감사합니다:)
강민지(2021####12)12월 21일 오후 11:08
diff() function의 중요 부분을 잘 정리해주셔서 내용 이해할 수 있었습니다. 감사합니다!
안성준(2016####47)12월 22일 오후 2:41
n계도 함수를 잘 정리해서 나타낼 수 있다는 점을 알려주셔서 감사합니다!
인유진(2020####32)12월 22일 오후 4:13
diff() fucntion에 대해서 이해를 하지 못하였는데 조금이나마 이해를 할 수 있게 되었습니다. 감사합니다!
Day 7 Open Problem 1 by Ng Zhi Wei 응즈웨이 (using while loop) [Comment by: 우건주, 고재윤, 남상현, 윤상수]
작성자 : 응즈웨이(2019####51)작성일 : 12월 21일 오전 00:15
조회수 : 31
Day 7 Open Problem 1 by Ng Zhi Wei 응즈웨이 (using while loop) [Comment by: 우건주, 고재윤, 남상현, 윤상수]
I recommend using a while loop to tackle Day 7 Open Problem 1 as it is more code efficient compared to hard coding each derivative. As the question only asked for the third derivative, it is still possible to hard code; but using a while loop will be more efficient as it can handle a larger number of derivatives. Besides, it is also easier to edit the code if a larger number of derivatives is needed (simply change the 4 from line 12). The 4 should be changed to 'the number of derivatives + 1'. For example, 4 for the 3rd derivative and 101 for the 100th derivative.


Open Problem 1 by 남상현
작성자 : 남상현(2018####17)작성일 : 12월 20일 오후 6:19
조회수 : 41
|
◩ Open Problem 1 |
Find the third derivative of a differentiable function from the textbook.
First, I choose the differentiable function from the textbook,
![]()
The function is differentiable for every x, so we can define a derivative of f(x).
To find the third derivative of the function, first, we should check if the derivative is still differentiable.
If it is checked, we can find the second derivative of the function. Also, we should check if the second derivative is differentiable.
If it is checked, now we can find the third derivative of the function.

By using diff() function, we can find the third derivative of the function. And this is the result.

As we can see, they are differentiable, and I could find the third derivative of the function.
고재윤(2020####97)12월 20일 오후 7:28
작성하신 글을 읽고 diff() function에 대한 이해에 도움이 되었습니다. 감사합니다!!
정운섭(2018####88)12월 20일 오후 7:31
diff() function에 대한 좋은 예시를 들어주셔서 이해에 도움이 되었습니다!
이상구(LEE SANGGU)12월 20일 오후 8:19
Good job^^ Others may try the same job (with the same code) for a couple more complicated or composite functions.
박우현(2016####31)12월 20일 오후 11:58
diff()함수의 활용에 대한 보기 좋은 예시인 것 같습니다
응즈웨이(2019####51)12월 21일 오전 00:22
Hi! Thank you very much and your codes work perfectly fine! :) However, just for sharing, I used a while loop to tackle this problem as I find it more efficient that way. If interested, do take a look at my post at "Day 7 Open Problem 1 by Ng Zhi Wei (using while loop)". Thanks!
남상현(2018####17)12월 21일 오전 00:46
I will :) Thanks a lot!
우건주(2017####97)12월 21일 오전 00:27
Thank you for your creative answer. I agree with the idea that using while loop will be faster. I only thought about it and couldn't apply it, but it was very helpful to understand because you actually showed it.
고재윤(2020####97)12월 21일 오전 00:39
It's an efficient way that I couldn't think of. Thank you. I learned a lot.
남상현(2018####17)12월 21일 오전 00:50
Very efficient way! It would be better to choose the developed code by using while loop. Thanks a lot:)
윤상수(2020####53)12월 21일 오전 1:01
Thank you for sharing your efficient method.
이상구(LEE SANGGU)12월 21일 오전 5:27
Dear Ng Zhi Wei , share the text code in QnA. So others can check whether it really works or not.
응즈웨이(2019####51)12월 21일 오후 1:11
As requested, below is the code in text. Fellow classmates can test out the code or test out his or her code simply by changing the f(x)'s function at line 3 of the code. Also, one can play around with the number of derivatives by changing the number '4' at line 12 of the code. Also, please remember to indent the last 4 lines of code so it is inside the while loop (I cannot indent the last 4 lines here in iCampus). Thanks! #Compiler: Sage f(x) = sin(sqrt(e^x)/2) #Function print ("f(x) =", f(x)) print() print("After 1 differentiation = ") print(diff(f(x), x)) #Results of first differentiation print() i = 2 #Starting from 2nd differentiation while i < 4: #Loops twice for 2nd and 3rd differentiation print("After ", i, " differentiation = ") print(diff(f(x), x , i)) #Results of i-th differentiation print() i += 1 #Increase i by 1 a.k.a go to next differentiation
안성준(2016####47)12월 22일 오후 2:47
It is a well-organized code! Thanks for sharing
[Finalized by 정운섭, SGLee, 김지훈, 고재윤, 우건주, 안성준, 인유진, 윤상수]Open problem 2 solution by 정운섭 (3변수 함수의 Find Gradient 찾는 법, Find Critical points 임계점을 찾는법.)
[Finalized by 정운섭, SGLee, 김지훈, 고재윤, 우건주, 안성준, 인유진, 윤상수]Open problem 2 solution by 정운섭 (3변수 함수의 Find Gradient 찾는 법, Find Critical points 임계점을 찾는법.)
|
◩ Open Problem 2 |
Find a complicated twice differentiable function in other textbooks, and use the code to find the local maximum, the local minimum,
the absolute maximum, and the absolute minimum of the function.
제가 선택한 함수는 아래에 보이는 함수입니다. 저는 이 함수의 x= (-1.5, 1.5) 구간에서의 local minimum, local maximum, absolute maximum, absolute minimum을 구해보았습니다.

먼저, 그래프의 개형을 보기 위해서 아래의 코드를 사용해서 x= (-1.5, 1.5) 구간에서의 그래프를 출력해봤습니다.
f(x) = (x^9 - x^7)/sqrt(1+x^6+x^10)
show(plot(f(x), (x,-1.5,1.5), ymin=-1, ymax=1))

그랬더니 이러한 그래프의 형태를 얻을 수 있었습니다. 이를 통해 알 수 있는 점은 Absolute maximum은 x=1.5 에서, 그리고 Absolute minimum은 x=-1.5에서 발생한다는 것을 확인할 수 있었습니다.
이를 코드를 사용하여 구해보면 아래와 같은 결과를 얻을 수 있습니다.
f(x) = (x^9 - x^7)/sqrt(1+x^6+x^10)
show("Absolute max= ",f(1.5).n(digits=3))
show("Absolute min= ",f(-1.5).n(digits=3))

위의 그래프에서 또 한 가지 알 수 있는 점은, 총 3군데의 critical points가 있는데 x= (-1, -0.5) 구간에 local maximum이 위치하고, x= (0.5, 1) 구간에 local minimum이 위치해 있다는 것을 확인할 수 있습니다.
x=0은 critical point에 속하지만 local maximum이나 local minimum 중 어느 것에도 해당하지 않습니다.
따라서 f'(x)=0 이 되는 x값을 찾아서 f(x)에 대입해 주어야 합니다. 이를 코드로 구현하면 아래와 같은 출력이 나옵니다.
f(x) = (x^9 - x^7)/sqrt(1+x^6+x^10)
df(x)= diff(f(x), x)
show(solve(df(x)==0, x))
r1= find_root(df(x), 0.5, 1) # local minimum x=(0.5, 1)
r2= find_root(df(x), -1, -0.5) # local maximum x=(-1, -0.5)
show("local minimum= ", f(r1).n(digits=3))
show("local maximum= ", f(r2).n(digits=3))

위의 코드를 설명하자면 solve 함수를 사용하여서 df(x)=0 인 x값을 구할 경우 solve 함수의 computing power(?) 가 복잡한 연산을 감당을 못하기 때문에 위와 같이 복잡한 식의 형태로 나오게 됩니다.
따라서 위의 그래프에서 얻은 정보를 이용해서 find_root 함수로 x=(0.5, 1)의 범위에서 df(x)=0이 되는 x 값을 r1에 저장하고, x=(-1, -0.5)의 범위에서 df(x)=0이 되는 x 값을 r2에 저장하였습니다.
따라서 local minimum= f(r1) = -0.0711, local maximum= f(r2) = 0.0711 가 됩니다.
결론: 이러한 방법으로 하는 것은 답은 구해지나, 그 과정이 너무 복잡하고 시간이 오래 걸리는 것 같습니다. 왜냐하면 모든 df(x)=0이 되는 x값에 대하여 하나하나씩 다 구해보아야 하기 때문입니다.
Gradient descent method가 이러한 문제점에 해결책을 제시해 줄 것 같습니다.
*** 3변수 함수의 Gradient 찾는 법도 똑 같습니다. Reference in http://matrix.skku.ac.kr/math4ai/part2/
|
정의. |
방향도함수(directional derivative), 그래디언트(gradient), 헤시안(Hessian) |
(1)
를 단위벡터(크기가 1인 벡터)라 하자. 그러면
점
에서
방향으로의
의 방향도함수(directional derivative)는 다음과 같이 정의된다.
![]()
▪
일 때
이고,
일 때
이다.
▪
가 점
를 지나고,
에 평행한 직선이라 하자. 즉
![]()
그러면 다음이 성립한다.
.
(2)
의 그래디언트(gradient)는
의 편도함수를
성분으로 갖는 벡터로 다음과 같이 정의된다.
grad ![]()
![]()
[ 그래디언트(gradient)의
시각적 의미 ]

는 미분가능함수
의
점에서의 접선벡터와 직교인 벡터. 접선벡터는 표면 위에 있다.
(3)
의 헤시안(Hessian)은
의 2계 편도함수를 성분으로 갖는 행렬로 다음과 같이 정의된다.
![]()
▪
의 이계 편도함수가 연속인 경우에는
이므로
이 대칭행렬이 된다.
▪ 같은 방법으로 독립변수가
개
이상인 다변수함수
에 대하여도
의 그래디언트와 헤시안이 정의된다. 즉
변수 함수
에 대하여
의 그래디언트와 헤시안은 다음과 같다.
의 그래디언트(gradient): grad ![]()
![]()
의 헤시안(Hessian): 
|
정리. |
방향도함수(directional derivative) |
가 점
에서 미분가능하고
가 단위벡터라 하면 다음이 성립한다.
![]()
, ![]()
점
에서
축의 양의 방향과 이루는 각(angle)이
인 단위벡터
방향으로의 함수
의 방향도함수를 구하여라.
[Find ![]()
]
https://sagecell.sagemath.org/
1
var('x, y') # https://sagecell.sagemath.org/
2
f(x, y) = x^3 - 3*x*y + 4*y^2
3
u = vector([cos(pi/6), sin(pi/6)])
4
gradf = f.gradient() # 함수 f의 그래디언트
5
print("Duf(1,2) =", gradf(1, 2).dot_product(u))
Evaluate
▪ 내적의 성질을 이용하면 다음을 알 수 있다.
![]()
![]()
여기서
는
과
의 사잇각이다.
따라서
의 그래디언트
방향이 점
에서
가 가장 가파르게 증가하는 방향이고, 음의 그래디언트
방향이
점
에서
가 가장 가파르게 감소하는 방향이다. 이는 이후에 학습하게 되는 경사하강법(gradient descent
method)의 Key idea를 제공합니다.
▪ 다변수 함수
에 대한 Taylor
정리는 다음과 같다. 이는 한 점
근방에서
의 선형근사(linear approximation) 및 이차근사식(quadratic approximation)을 구성하는데 사용된다.
|
정리. |
Taylor 정리 |
다변수 함수
가 연속인 편도함수를 가지면, 적당한
가 존재하여 다음이 성립한다.
![]()
만일 연속인 2계 편도함수를
가지면, 적당한
가 존재하여
다음이 성립한다.
![]()
▪ 점
근방에서
의 선형근사식(벡터형식 표현)은 다음과
같다.
![]()
▪ 점
근방에서
의 이차근사식은 다음과 같다.
■
2.4 함수의 극대(Local Maximum), 극소
참고 동영상: http://youtu.be/oDZUkOEszOQ
실습 사이트: http://matrix.skku.ac.kr/Cal-Book1/Ch13/
http://matrix.skku.ac.kr/Cal-Book/part2/CS-Sec-13-8-Sol.html
15강 동영상, 극대, 극소 https://youtu.be/nR9it9cBjDk (21:25)
...
Find Critical points 임계점을 찾는법.
http://matrix.skku.ac.kr/PBL2/
http://math1.skku.ac.kr/home/skku/3465/
13.6 #7 Find the gradient of ![]()
sol) ![]()
![]()
var('x,y,z')
f(x,y,z)=(x+y+z)*exp(x*y*z)
f.gradient()
13장7절 3번 http://math1.skku.ac.kr/home/pub/1430/
..
13.6.4 최주영 이인행 Solved by 최주영 Revised by 이인행
4. If
, find
..
Sol)
.
http://math1.skku.ac.kr/home/skku/3345/
|
var('x, y, z'); f(x, y, z)=1/sqrt(x^2+y^2+z^2); f.gradient(); |
Code 실습 : http://matrix.skku.ac.kr/KOFAC/
and http://matrix.skku.ac.kr/Cal-Book/CS-Sec-14-1-Sol.htm
이상구(LEE SANGGU)12월 21일 오후 6:29
맞습니다. Gradient descent method 는 1변수 함수 뿐 아니라 2변수 함수는 물론, <다변수 함수 의 Local minimum 값을 구해줍니다>^^
김지훈(2020####97)12월 21일 오후 11:13
Gradient descent method를 배우기전에 방법이 가진 의미에 대해 고민해볼수 있어서 도움이 됬습니다.
고재윤(2020####97)12월 22일 오전 1:34
문제를 풀어주신 것 뿐만 아니라 GDM의 필요성에 대해 언급해주신 덕분에 개념과 개념 사이의 연관성에 대해서도 생각해보게 되었습니다. 감사합니다!!
우건주(2017####97)12월 22일 오후 2:47
find root함수의 활용을 알 수 있었고 Gradient descent method의 필요성을 느낄 수 있었습니다. 감사합니다.
안성준(2016####47)12월 22일 오후 2:50
본래에 이용했던 방법과 GDM을 비교해주신 덕분에 GDM의 유용성을 알 수 있었습니다. 감사합니다!
인유진(2020####32)12월 22일 오후 4:23
단순한 식보다 본래의 개념들을 보고 예시까지 들어주셔서 GDM에 대해 감을 잡을 수 있었습니다! 감사합니다.
윤상수(2020####53)12월 22일 오후 4:43
"결론: 이러한 방법으로 하는 것은 답은 구해지나, 그 과정이 너무 복잡하고 시간이 오래 걸리는 것 같습니다. 왜냐하면 모든 df(x)=0이 되는 x값에 대하여 하나하나씩 다 구해보아야 하기 때문입니다. Gradient descent method가 이러한 문제점에 해결책을 제시해 줄 것 같습니다." 이 부분에서 GDM이 필요한 이유에 대해 언급해주신 부분이 정말 좋았습니다. 감사합니다!
남상현(2018####17)12월 22일 오후 5:47
critical points를 찾는 과정을 통해 GDM의 필요성까지 알게 되어 다음 강의 때 도움이 될 것 같습니다. 감사합니다!
Day 7_Open problem 1 by 이규리
Day7_[Open problem 1] Find the third derivative of a differentiable function from the textbook.
The function for derivative is f(x)=(cos(x)-1)/x.
This function is differentiable and continuous, so we can find the derivative function of f(x).
The first and second derivative of f(x) are also derivative, so I find the third derivative function of it.
For this, I use ‘for’ with list and diff(). And then visualize those functions with plot() at once.


*This is the code that I use.
##
f(x) = (cos(x) - 1)/x
pl = [diff(f(x), x, i) for i in
range(1,7)] #
p1 = plot(f(x), (x, -10, 10), color='red',
linestyle='dashed', legend_label='f(x)', thickness='2')
p2 = plot(pl[0], (x, -10, 10),
color='green', legend_label='df1(x)', thickness='3')
p3 = plot(pl[1], (x, -10, 10),
color='orange', legend_label='df2(x)', thickness='3')
p4 = plot(pl[2], (x, -10, 10),
color='purple', legend_label='df3(x)', thickness='3')
print (pl[3])
print (pl[4])
print (pl[5])
show("f(x)=", f(x), ",
df1(x)=", pl[0], ", df2(x)=", pl[1], ", df3(x)=",
pl[2])
p1 + p2 + p3 + p4
in http://matrix.skku.ac.kr/KOFAC/
output:
p5= cos(x)/x - 4*sin(x)/x^2 - 12*cos(x)/x^3 + 24*sin(x)/x^4 + 24*(cos(x) - 1)/x^5
p6= -sin(x)/x - 5*cos(x)/x^2 + 20*sin(x)/x^3 + 60*cos(x)/x^4 - 120*sin(x)/x^5 - 120*(cos(x) - 1)/x^6p7= -cos(x)/x + 6*sin(x)/x^2 + 30*cos(x)/x^3 - 120*sin(x)/x^4 - 360*cos(x)/x^5 + 720*sin(x)/x^6 + 720*(cos(x) - 1)/x^7 이상구(LEE SANGGU)12월 21일 오후 8:51
Beautiful^^
도경근(2018####55)12월 21일 오후 10:02
함수의 극한을 적용하지 않으면 x=0 에서 함수가 값이 없는지, 수렴하는지, 발산하는지 빠르게 판단이 불가능한 함수인 f(x) = (cos(x) - 1)/x를 도함수와 2계 도함수를 포함하여 한 평면위에 plotting 해줌으로써, 직관적으로 어떤 모양을 가지는지 알 수 있게 잘 정리해주셔서 감사합니다.
김지훈(2020####97)12월 21일 오후 11:58
복잡한 함수도 diff함수를 통해 간단히 몇번이고 미분가능한것을 보여주는 좋은 예시인것 같습니다!
고재윤(2020####97)12월 22일 오전 1:27
복잡해질 수도 있었던 코드를 'for'과 'list'를 사용하여 간단히 나타내주신 것이 큰 도움이 되었습니다. 또 n차 도함수와 f(x) 함수를 한 그림에 나타내주셔서, 미분의 특성에 대해 생각해보는데에도 도움이 되었습니다. 감사합니다!!
남상현(2018####17)12월 22일 오전 2:18
여러 개의 함수를 다양한 색깔과 종류로 한 그래프 안에 나타내는 방법을 처음 알게 되었습니다. n차 도함수들을 원함수와 함께 나타내니 이해도 더 쉽게 되는 것 같습니다. 감사합니다!
정운섭(2018####88)12월 22일 오전 9:35
n계도 함수를 for 함수와 plot함수를 통해서 간단하게 시각화 할 수 있는 방법을 알려주셔서 감사합니다!
안성준(2016####47)12월 22일 오후 2:39
diff 함수를 if를 통해서 한 번에 나타낼 수 있는 방법과 그것들을 시각화 하는 방법을 알려주셔서 감사합니다!
인유진(2020####32)12월 22일 오후 4:18
복잡해 보이는 함수도 코드를 활용해 시각적으로 보기 쉽게 나타낸 것이 신기했습니다!
[Question] The Value Difference between Original Matrix and USV^T in SVD
작성자 : 고재윤(2020####97)작성일 : 12월 22일 오후 6:30
조회수 : 10
저는 SVD 과정을 통해 계산된 U, S, V를 '조정 없이' 그대로 재조합하여 U*S*V^T로 다시 original matrix M을 나타내면,
처음 M과 정확히 같은 값으로 나타나야한다고 알고있었습니다.
다른 학우님들께서 올려주시는 Open problem 16 에 대한 글을 보다가, U,S,V 값을 조정 없이 그대로 재조합 하였는데도
아주 작은 오차가 발견된다는 것을 알게 되었습니다.
아래 사진은 그 예시로 윤상수 학우님께서 7X5 matrix에 대하여 SVD를 적용하시고, USV^T 식으로 재조합하신 모습입니다.

'오차가 아주 작은 값이라서 Original matrix와 비슷하다고 볼 수 있다' 라고 생각할 수는 있지만 어느 과정에서 이 오차가 발생한 것인지 의문이 들었습니다.
오차가 발생한 이유에 대해 알려주시면 감사하겠습니다!!
3개의 댓글
이상구(LEE SANGGU)12월 22일 오후 6:42
당연히 컴퓨터가 실수를 표현하는 방식 때문에 생기는 <floating point error , 부동 소수점(Floating Point) 에러, 플로팅에러> 때문입니다. 분수가 나오면 컴퓨터는 무한소수의 일부를 또는 몇자리 이하의 수를 무시하고 다음 단계로 나가니까 ... 소숫점이하 5자리 이하에서는 아주 미세한 (무시해도 좋은) 에러는 항상 저절로 생겨납니다. https://steemit.com/kr/@modolee/floating-point 보세요^^
고재윤(2020####97)12월 22일 오후 6:54
감사합니다 교수님!! 궁금했던 내용이 해결되었습니다.
남상현(2018####17)12월 22일 오후 10:11
저도 항상 어느 정도 오차가 발생해서 소수점 세자리까지만 표현했었는데 덕분에 이유를 알게 되었습니다. 감사합니다!
- nA에 참여했지만 Final OK를 못받은 글, Final OK 글의 제목에 내 이름이 들어가지 않은 글, 미분적분학 글
![]()
![]()
![]()
![]()
Self-Evaluation 5 ◆ Project
(only) submission (10 points)
Your possible Team Project 제목, 동기, 방법론, 참고문헌 [아이디어와 Draft]
<인지능을 위한 기초수학 입문>을 수강하면서 자신의 전공과 연계하여 제안하고 싶은 프로젝트를 구상하여 작성합니다.
[Team Project 제안서 (TBA)] - 중간고사의 10점 부분 (제안서는 10점 배점 필수이며, 완성은 Optional)
Team Project Proposal/Final Report (Form)
인공지능을 위한 기초수학 입문
Prof : Sang-Gu LEE
◆ Project (only) submission (10 points)
20203 고재윤 / jyun0825@g.skku.edu
Team Project (Tentative, just idea now): ai를 활용한 집적회로 배치 설계
초록: 집적회로란 전자 부품으로 구성된 전자회로를 고밀도로 집적하여 패키지화 한 것을 뜻합니다. 집적회로 배치 설계란 전자 부품들을 패키지화 하는 과정으로, 평면적 또는 입체적으로 설계할 수 있습니다. 효율적인 집적회로 배치 설계를 한다는 것은 낭비되는 공간을 최소화하도록 설계하는 것입니다. 낭비되는 공간이 더 적을수록 더 작은 크기의 집적회로가 만들어질 것이고, 이는 과학기술의 발전으로 이어질 수 있습니다. 수업시간에 배운 GDM을 응용하면 이 집적회로 배치 설계를 ai가 빠르고, 더 정확하게 할 수 있을 것으로 생각됩니다.
연구방법 개요: 집적회로 배치 설계를 아주 간단히 생각하면, 모양이 잡힌 퍼즐을 정해진 공간 안에 배치하는 것입니다. 또, 이 퍼즐들 중 서로 규칙을 만족시키며 배치되어야 하는 퍼즐 쌍들도 있을 것입니다. 이를 고려하여 output 축을 낭비되는 빈 공간으로 놓고, 그 이외의 축은 설계될 수 있는 경우의 수들로 이루어져 있는 field라고 놓을 수 있습니다. 최적의 설계의 경우의 수에선 빈 공간이 local minimum이거나 absolute minimum일 것이고, 최적의 설계와 비슷한 설계일수록 빈 공간은 점점 감소하며 local, absolute minimum의 결과값에 근접하는 경향성을 보일 것입니다. 따라서 GDM을 이용하여 최적의 집적회로 배치 설계 경우의 수를 찾아낼 수 있다고 생각합니다. 이를 위해 연구해야 할 것은 크게 두가지로 생각해볼 수 있습니다. 첫 번째는 경우의 수 집합으로부터 least-squares solution을 찾아 연속 함수 g를 찾는 것 입니다. GDM을 구하기 위해 이용해야 할 함수 f는 {f(경우의 수) = 빈 공간} 으로 아주 간단하게 표현해 볼 수 있는데, 이는 연속적인 함수가 아닙니다. 따라서 f의 input point, output point와 least-squares solution을 활용하여 연속 함수 g를 찾아내고, 이 g를 이용하여 GDM을 계산하면 된다고 생각합니다. 두 번째로 연구해야 할 것은 집적회로 배치의 경우의 수에 대해 연구하는 것입니다. 이는 우리가 목표로 하는 집적회로가 무엇인지에 따라 달라질 수 있습니다.
추가로 고려해볼 수 있는 점 / 어려움이 예상되는 점 :
복잡한 회로일수록 경우의 수가 매우 급격하게 증가할 것이고 GDM을 연산하는데도 시간이 오래 걸릴 것입니다. 사용자가 초반의 부품 몇 개 정도만 미리 설계해 놓는다면 GDM 연산 시간이 훨씬 줄어들 것으로 생각됩니다. 이 옵션이 연산 시간에 얼마나 영향을 주는지 측정해 보는 것도 의미 있을 것으로 생각됩니다.
전자 부품 중에는 자기장을 발생시키는 부품도 있고, 그 자기장에 영향을 받는 부품도 있습니다. 실제 회로 설계에도 이를 고려하여 설계하는 경우가 있고, 이는 함수를 만드는 요인으로 볼 수 있습니다. 제가 아직 전공 분야에 전문적이지 못하기 때문에 이를 고려하는 것에는 어려움이 있을 것이라고 생각됩니다.
Team Project (Tentative, just idea now):
제목 : 효율적인 반도체 전지 모델 구축
동기: 원전공은 전자전기공학부로서, 반도체와 관련된 과목을 수강하며 반도체의 효율을 높이기 위한 다양한 방법들을 배우게 되었습니다. 하지만, 변수가 많고 식 또한 복잡하기 때문에 모든 변수를 포괄하면서 논리적으로 최고 효율의 반도체 전지를 모델링하는 것이 매우 어렵다고 느꼈습니다. 이를 보다 정확하게 찾아줄 방법이 인공지능이라는 것을 깨닫게 되었으며, AI 프로그래밍을 이용한다면 가장 효율적인 모델을 구축할 수 있을 거라고 생각하게 되어 이러한 프로젝트를 설계하게 되었습니다.
실행방안: 반도체 전지의 효율에 영향을 끼치는 여러 변수들을 정의한 후, 데이터화하여 인공지능 프로그래밍을 설계 -> 경사하강법 혹은 다양한 데이터 분석 방법을 통해 가장 효율적인 경우에서의 변수를 계산하고 모델을 구축할 수 있음.
Name / e-mail (이름과 이-메일): nsh0975@naver.com
********* Others Note and Project Proposal ***
Name / e-mail (이름과 이-메일): KANG MINJI / minjikang0801@gmail.com
(A1)Quantity :
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 2 Week 2: 3 Week 3: 1 Week 4: 9 Week 5: 4 Week 6: 3 Week 7: 3 Week 8: 1
Week 9: 1 Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 2 , A: 17 , Others: 8 )
- Number of online attendances: ( 17 / 35 )
- WebEx attendance and number of absences: ( 2 / 2 ) (0 absence)
(B)Quality of Your Participation:
• (B1) What did you especially remember while you are doing the first part 1, 2, 3, (4, 5-Final).
I especially remember the SVD. When I first listened to the lecture, there were actually many parts I didn't understand. However, I understood many parts through the explanations and discussions of my classmates. In addition, the part that the professor explained additionally in the last Webex meeting helped complete the concept.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
I received great help in understanding the lecture by sharing opinions on the solution to the problem through discussions with my classmates. In addition, it was easy to understand problems that were difficult to understand alone. And it was good to receive opinions from my classmates on the solution I solved.
(B3) Write names of YOUR PBL Team members and Team Leader.
Team Project (Tentative, just idea now):
<A service that automatically supports voice by detecting the color of a traffic light using a CSS code for color for the blinds. >
[Motivation] Many visually impaired people have difficulty seeing traffic lights. And then they press the voice guidance button near the traffic light, but this may also cause inconvenience. Therefore, I came up with this project because I wondered what it would be like to be guided by a traffic light through a voice device owned by an individual.
[Abstract] Traffic lights are photographed through a camera attached to personal devices possessed by an individual. After converting the color of the traffic light into the CSS codes through data analysis, a voice notification corresponding that is transmitted to the personal device.
[Reference]
https://post.naver.com/viewer/postView.naver?volumeNo=32688032&memberNo=36745374&vType=VERTICAL
Name / e-mail (이름과 이-메일): KANG MINJI / minjikang0801@gmail.com
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
이번 보고서를 작성하면서, 이 강의에 대해 점검하고, 학습내용들을 정리하며 복습하는 기회를 가지게 되었습니다. 처음 배우는 내용들도 있고, 배웠던 개념들도 코딩을 통해 데이터 처리하는 관점으로 접근하며, 여러 내용을 학습해볼 수 있었습니다. 또한, 프로젝트를 설계하면서, 아직 전공을 갖고 있진 않지만, 평소 관심 갖던 분야와 연관 지어 배웠던 내용을 발전시킬 수 있었습니다. 짧은 수강기간으로 이를 직접 완벽하게 구현하기는 어렵겠지만, 할 수 있는 만큼 이를 발전시키는 데 도전해보고 싶습니다.
Self-Evaluation을 하면서, 스스로 이 수업에 참여하는 정도를 돌아보며, 반성과 다짐을 하는 시간을 가질 수 있었습니다. 다른 학우들과 토론을 통해 많은 점들을 배우고, 또 직접 풀이를 올려 여러 의견을 받아 이 수업의 이해도에 있어 많은 발전을 이룬 것 같습니다. 이를 계기로 더 많은 발전을 할 수 있도록 앞으로 더 활발한 참여와 노력을 통해 많은 지식들을 얻고 싶습니다.
(Self-Evaluation 7
◆ Final comment after this semester!! requirement. Essential (10 pts) ]
전공진입을 앞두고, 인공지능과 데이터 마이닝에 관심을 갖고 이에 대해 공부하기 위해, 인공지능을 위한 수학을 배울 수 있다는 점이 좋았습니다. 교수님의 설명을 통해 내용을 학습하고, 여러 Open Problem들을 학우분들과 토론을 통해 해결해가면서, 여러 관점의 풀이들과 실질적인 예시들을 얻으며 더욱 쉽게 이해할 수 있었습니다. 아직 미적분학만을 배운 신입생으로 Matrix를 배워본 적이 없어 전치, 역행렬 등을 배울 때 조금 어려웠지만, 토론에 참여하며 학우분들로부터 많은 정보를 얻어 이해할 수 있었습니다. 아직 이해하는데 조금 시간이 걸려 다른 학우분들과의 토론을 통해 문제들을 이해하고 있지만, 앞으로는 문제풀이에 있어 더 많은 참여를 하고 싶습니다.
Week(day) 1: 1 Week 2: 1 Week 3: 1 Week 4: 3
Week 5: 1 Week 6: 1 Week 7: 4 Week 8:
Week 9: Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 3 , A: 0 , Others: 9 )
- Number of online attendances: ( / )
- Off-line attendance and number of absences: ( 2 / 2 ) (0 absence)
· Others Include some announcements or course related posts.
I have posted problems that I solved with solutions and questions on the QnA board and questioned about mathematics and application to AI learning method.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
I felt a bond that I can ask for help to my classmates by QnA board anytime about I am not fully understood.
(B3) Write names of YOUR PBL Team members and Team Leader.
I was helped by 문태의, 강민지, 윤상수 정운섭 이규식, 황세진, 이규리, 고재윤
Team Project (Tentative, just idea now):
Personal Health Care Device에 필요한 AI를 학습시키는 방법으로 사용자의 모든 데이터를 벡터화하여 학습. 특히 무수히 많은 답을 가진 진료와 처방에 대한 최적의 해를 찾는 방법을 사용하도록 수학적 도구를 사용.
Name / e-mail (이름과 이-메일): 김지훈 / lkwlgns0502@Outlook.com
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
Data science에 대해 공부하기위해 수학 중에서 특히 인공지능을 위한 수학으로 배울 수 있는 것이 참 좋았습니다. 교수님의 설명도 충분했지만 학우님들의 토론을 보며 실제적인 예시들가운데서 개념에 대한 더욱 깊은 이해가 되는 것이 정말 좋았습니다. 한가지 아쉬운점은 Linear algebra 에 대한 이해도가 높지 않아 Matrix와 관련된 토론과 문제풀이 참여에 망설여졌던 것이 약간의 아쉬움으로 남는 것같습니다. 미적분학과 통계학분야에서 이 부분을 make up하기 위해 더 많은 질문과 토론으로 참여해야겠다는 생각이 들었습니다.
81/100
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 0(12/13) Week 2: 5 Week 3: 4 Week 4: 8
Week 5: 5 Week 6: 5 Week 7: 1 Week 8: 2
Week 9: 4 Week 10: 1 Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 8 , A: 28 , Others: )
- Number of online attendances: ( 20 / 20 )
- Off-line attendance and number of absences: ( 2 / 2 ) (0 absence)
· Others Include some announcements or course related posts.
도경근, 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다. 응즈웨이, For the open problems, the compiler can be Python too. It can be R, Python, or SageMath <--- <-- Yes. Use any language and tool that we can use to solve Problems in the Textbook, 김명규, 수업에 좋은 성적을 얻기 위에서는 첫번째로 참여 하거나 요약해서 best 답변을 하는게 중요하다고 들었습니다. 온라인 수업 참여는 출석 점수에 필수이고, Academic activity (1st 질문, 1st comment, 1st 답변, Finalize 문제+ best 풀이, 강좌에 도움이 되는 관련 정보 공유) 를 열심히 하는 것이 보고서와 발표 및 성적에 직접적인 영향이 있다.
매일 Q&A 활동에 열심히 참여하고자 노력하였습니다. 주로 open problem의 해결방안을 제시하고 학우분들과 토론하였으며, 내용을 finalize하고 summary하였습니다. Webex 수업 때에도 자발적으로 발표를 하고 열심히 참여하며 다른 학우분들과 소통하고자 노력하였습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
Number : 24
(B)Quality of Your Participation:
Final OK by SGLee [Finalized by 신유정, 남상현, 고재윤, 이규식] Open Problem 12
작성자 : 남상현(2018####17)작성일 : 12월 17일 오후 11:59
조회수 : 26
Final OK by SGLee [Finalized by 신유정, 남상현, 고재윤, 이규식] Open Problem 12
아래 코드에서 해가 무수히 많을 때와 해가 없을 때를 고려하여 보완해 보았습니다.
우선 해가 무수히 많을 때, 첨가 행렬의 마지막 행은 0이 됩니다.
또한 해가 존재하지 않을 때에는, 첨가 행렬의 마지막 행에서 마지막 열을 제외한 성분이 모두 0이 됩니다.
이를 고려하여 if문을 통해 코드를 보완해 보았습니다.

이 때 실행 결과는 3가지로 나뉘어집니다.
1. 해가 무한히 많을 때

2. 해가 존재하지 않을 때

3. 해가 하나만 존재할 때

(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
평소에 코딩 및 인공지능에 관심이 많아 관련된 과목을 수강하고자 찾고 있던 와중에 계절학기 때 Basic Mathematics for AI라는 좋은 과목을 수강할 기회를 얻게 되어 매우 기뻤으며 누구보다 열심히 수강하고자 하였습니다. 처음에는 생각보다 포괄적이고 다양한 분야의 수학을 배우는 데 있어서 어려움을 겪었습니다. 하지만, 학우분들 그리고 교수님과의 소통 및 상호작용을 통해 차근차근 학습해 나가며 점차 부족한 부분을 채워나가고 이해할 수 있게 되었습니다. 평소에 저는 소통과 토론을 통해 학습을 하는 것보다 혼자 힘으로 독학하고 이해하곤 하였습니다. 그러나 이번 강좌를 수강하면서 다른 학우들과 토론하고 함께 학습해 나가면서 개념부터 차근차근 발전해 나가는 활동에 흥미를 갖게 되었습니다. 저 뿐만 아니라 다른 학우분들 역시 Q&A활동에 열심히 참여해주시고 도와주신 덕분에 선형대수학, 미적분 등 다양한 학문을 좀 더 깊게 배울 수 있었고, 저 역시 그만큼 활발하게 활동하고, 부족한 점이 있으면 도우면서 열심히 참여하고자 합니다.
Team Project (Tentative, just idea now):
제목 : 효율적인 반도체 전지 모델 구축
동기: 원전공은 전자전기공학부로서, 반도체와 관련된 과목을 수강하며 반도체의 효율을 높이기 위한 다양한 방법들을 배우게 되었습니다. 하지만, 변수가 많고 식 또한 복잡하기 때문에 모든 변수를 포괄하면서 논리적으로 최고 효율의 반도체 전지를 모델링하는 것이 매우 어렵다고 느꼈습니다. 이를 보다 정확하게 찾아줄 방법이 인공지능이라는 것을 깨닫게 되었으며, AI 프로그래밍을 이용한다면 가장 효율적인 모델을 구축할 수 있을 거라고 생각하게 되어 이러한 프로젝트를 설계하게 되었습니다.
실행방안: 반도체 전지의 효율에 영향을 끼치는 여러 변수들을 정의한 후, 데이터화하여 인공지능 프로그래밍을 설계 -> 경사하강법 혹은 다양한 데이터 분석 방법을 통해 가장 효율적인 경우에서의 변수를 계산하고 모델을 구축할 수 있음.
Name / e-mail (이름과 이-메일): nsh0975@naver.com
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
Week(day) 1: 6 Week 2: 4 Week 3: 2 Week 4: 3
Week 5: 3 Week 6: 3 Week 7: Week 8:
Week 9: Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 5 , A: 12 , Others: )
- Number of online attendances: ( 19 / 21 )
- Off-line attendance and number of absences: (0 absence)
QNA에 열심히 참여하였지만, 그 중에서도 가장 contribution이 컸던 것은 SVD에 대한 문제의 solution을 해설하고, 더 나아가 데이터를 복원하여 모습을 비교함으로써 SVD가 어떤 의미를 함축하는지 학우들에게 설명한것입니다. 또한 다양한 학우들의 solution에 적극적으로 댓글을 남기며 의견을 주고 받기를 하였습니다.
(B)Quality of Your Participation:
제가 SVD에 대하여 설명한 것을 많은 학우들이 읽고 유익하게 읽었다고 댓글을 남겨주고 거기에 덧붙여 finalize를 해주신 것이 가장 기억에 남습니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
수업에서 배우는 개념들이 익숙하지 않을 문과 학우들도 굉장히 적극적으로 수업에 참여하는 모습을 보며 저자신을 돌아보게 되었고, 앞으로도 열심히 하자고 다짐을 할 수 있게 되었습니다.
Team Project (Tentative, just idea now):
Market basket dataset을 rule 추출을 하기위하여 PCA로 차원을 줄인뒤 rule을 분석합니다. 대부분의 Market basket datasetdms 하나의 transaction에 포함될수 있는item의 가지수가 너무 많아 scalibilty problem이 생기는데, 이것을 PCA를 통하여 해결합니다.
Name / e-mail (이름과 이-메일):
도경근 / doh2629@gmail.com
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
저는 전공을 data science, 그중에서도 다양한 data mining 기법들과 application을 연구해보고 싶어서 시스템 경영공학과에 진학하였습니다. 그러기위하여 응용통계와, 선형대수학, 경영과학과 같은 필수적인 과목들을 이번 학기까지 수강하였습니다. 하지만 수강하고 시간이 지난 과목들의 개념들이 조금씩 잊혀져갈 즈음에 basic mathematics for artificial intelligence를 수강하게되어 정말 다행이라고 느껴집니다. 이번 수업에서 교수님이 정말 핵심적인 개념들만 쏙쏙 뽑아주셔서 항상 가장 중요한 기초인 개념이 흔들리지 않도록 해주셨습니다. 또한 개념을 익히는 것 뿐만 아니라, 배운것을 실제로 코드로 짜서 실행시켜보는 실습도 굉장히 유익하였습니다. 앞으로도 남은기간동안 열심히 하겠습니다.
(Self-Evaluation 7
- Check your participation numbers in QnA for each week (Saturday to Friday):
day 1: 0 day 2: 3 day 3: 1 day 4: 2
day 5: 4 day 6: 1 day 7: 1
- Total number of sessions (Q: 0, A: 0, Others: 2)
- Number of real-time online attendances: ( 0 / 2 )
- Online attendance and number of absences: ( 9 / 9 ) (0 absence)
Others Include some announcements or course related posts.
Open Problem 8을 처음으로 풀이하고 게시판에 게시하였습니다.
다른 Open Problem은 학우들이 풀이한 것을 보고 이해했습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
총 11번
(B)Quality of Your Participation:
처음으로 Open Problem을 풀고 학우들에게 공유한 일입니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
함께 토론하면서 공부하니 서로 부족한 점을 피드백받고 개선할 수 있어서 좋았습니다. 또한 제가 공유한 것이 도움이 될 수 있어서 기뻤습니다.
Name / e-mail (이름과 이-메일): 문태의 / 701b.vn14a@gmail.com
이미지 데이터를 입력 받아 SVD 분해를 사용하여 이미지가 사람이 보기에 알아 볼 수 있는 선에서 데이터의 크기를 최대한 줄이는 프로그램을 만들어 본다.
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
앞서 개념을 정리하고 Q&A 게시판을 돌아보면서 다시 한번 내용을 정리하고 복습할 수 있어서 좋았다. 하지만 돌이켜보니 Q&A 토론에 조금 소극적으로 참여한 것 같아 더 노력해야겠다는 생각이 든다.
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: Week 2: Week 3: Week 4:
Week 5: Week 6: Week 7: Week 8:
Week 9: Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 3 , A: 10 , Others: 3 )
- Number of online attendances: ( Attended every class )
- Off-line attendance and number of absences: ( There is no off-line class ) (0 absence)
· Others Include some announcements or course related posts.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
8
(B)Quality of Your Participation:
인공지능 코딩에 활용되는 다양한 수학적 스킬들을 배웠지만, 현재까지 무엇보다 인상깊게 배운 내용은 SVD(single value decomposition)인 것 같습니다. 기계공학을 전공하고 있기에 수업의 초반에 진행된 plotting은 Matlab에서 경험해 볼 기회가 있었습니다. 또한 Vector나 Matrix의 기본적인 정의와 연산이나 함수의 Minimum/Maximum에 대한 개념 또한 1~2학년부터 배워오던 내용인지라 이걸 단순히 코드로 나타내는 과정은 특별하게 와 닿지는 않았습니다. 하지만 SVD라는 개념을 배우면서, 단순히 벡터나 행렬을 문제를 풀기 위한 도구에서 벗어나 실제 데이터셋을 압축하여 다루기 위한 실용적인 도구로 생각할 수 있게 되었습니다. 행렬의 대각화 이후에 빈 데이터를 지워내는 Thin SVD, 0인 singular value를 지워내는 Compact SVD, 이후에 작은 데이터셋을 지워냄으로써 본격적인 데이터 압축을 행하는 Truncation SVD의 소개는 앞으로 제가 AI나 머신러닝과 같은 분야에 진출하여 데이터셋을 다루는 과정에서 굉장히 유용하게 쓸 수 있을 것 같다는 생각이 들었습니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
Team Project (Tentative, just idea now):
Name / e-mail (이름과 이-메일): 박우현 / wh761@naver.com
SAT (separating axis theorem)
저의 전공인 기계공학을 배우면서, 연구실 프로젝트에 참가하여 자율주행 자동차 대회에 출전해 본 경험이 있습니다. 이 Basic Mathematics for Artificial Intelligence 수업을 수강하게 된 동기도 앞서 말씀드린 자율주행 자동차에 대해 더 알아보고 싶은 이유에서 수강하게 되었습니다. 자율주행을 진행하면서, 무엇보다 우선시되어야 했던 부분은 바로 다른 장애물이나 자동차와의 ‘충돌’을 피하는 것이었는데요, 이를 행하기 위해서는 차량에 부착된 LiDAR를 이용하여 장애물과 차량이 충돌 상황에 있는지를 판단하는 과정이 필요했습니다.
![]()
이를 판단하는 알고리즘으로, SAT (separating axis theorem)에
대해 알게 되었는데, 본 수업에서 활용하는 Vector and
Matrix연산을 통해 팀 프로젝트로 진행될 수도 있겠다는 생각이 들었고, 이를 제안 드리게
되었습니다.
SAT란 위 그림과 같은 2D상황에서 물체를 구성하고 있는 각각의 Vector에 물체 전체를 정사영 시킵니다. 이 과정에서 우측 그림과 같이 두 도형 간의 intersection이 생길 수도 있고, 좌측 그림처럼 서로 떨어진 채로 존재할 수도 있게 되는데요, 두 물체가 직사각형이라고 가정하였을 때 모든 Vector에 대하여 Intersection이 발생할 경우, 충돌 상황이라고 감지가 가능해집니다.
이러한 SAT 알고리즘을 구현하기 위해 수업에서 배운 Vector와 Matrix간의 각도 구하기, 정사영 시키기와 같은 작업이 이용될 수 있을 것 같습니다.
참고문헌
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
수업에 참여하면서 제가 교수님, 다른 학우분들과 주고받은 토론이나 질의응답 그 자체가 하나하나의 내용이 되어 본 포트폴리오를 구성하게 되었습니다. 수업이 진행되고 시간이 지나감에 따라 사소하다고 여기어 지나치거나, 단순히 잊혀질 수도 있는 부분까지 Open problem에 대한 지속적인 토론과 피드백을 통해 복습 및 예습이 된 것 같습니다. 본 포트폴리오를 작성하면서도 다시 한 번 지금까지 주고받은 내용들을 찾아보며 복습할 기회가 되었습니다.
(Self-Evaluation 7
신유정 2016 *e-mail(이-메일): jason9605@naver.com
(1) QnA 참여 회수 <QnA에서 직접 확인하세요> : 각 주별 (토요일에서 금요일)
(1) 1주차 : 총 회, 2주차: 총 회, 3주차: 총 회, 4주차: 총 1회
(2) 5주차 : 총 2회, 6주차: 총 1 회, 7주차: 총 회, 8주차: 총 1 회
(3) 9주차 : 총 회, 10주차: 총 회, 11주차: 총 회, 12주차: 총 회
(4) 13주차 : 총 회, 14주차: 총 회, 15주차: 총 회.
총 회 (질문: 2 회, 답변/수정/Finalize: 3회)
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
졸업작품을 구현하기 위해 개념들에 대해 여기 나오는 개념들에 대해 가볍게만 알고 넘어갔는데 어떤것인지 자세하게, 개념적으로 알 수 있게 되어 이해하는데 많은 도움이 되었습니다.
Name / e-mail (이름과 이-메일): 신유정/jason9605@naver.com
Team Project Title (Tentative, just idea now):
초록:
연구방법 개요:
참고문헌/웹주소:
Ch 6장. ◆ Final comment after your report ◆ (10점)
(PBL보고서/Project를 마치고 ...)
*중간 PBL (검은 글씨): 이번 중간 보고서를 작성하면서, 질문이나 대답을 별로 안했다는것을 깨달았습니다. 다만 교수님의 수업에서는 배울것들이 많아 학기 시작 이후 정신없이 공부했다는 생각을 할 수 있어 기분 좋았습니다. 질문하고 대답하는 방식이 어색하긴 하지만 중간 평가가 끝난 이후에는 조금더 적극적인 모습으로 질문대답에 참여해야겠다는 생각이 듭니다. 인공지능을 개인 적으로 공부하면서 부족한 수학적지식을 포괄적으로 알려주셔서 빠르게 배울 수 있었다는 생각이 듭니다. 기본적인것은 어느정도 알았으니 필요한것이 생기면 스스로 깊게 공부할 수 있겠다는 확신을 주셔서 감사합니다. 다른 학생들을 본받아 더 열심히 해야겠다는 생각을 할수 있었습니다.
Week 1: 1 Week 2: 2 Week 3: 1 Week 4: 1
Week 5: 1 Week 6: 1 Week 7: 3 Week 8: 2
Week 9: 1 Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 6 , A: 17 , Others: )
- Number of online attendances: ( 9 / 9 )
- Off-line attendance and number of absences: ( 2 / 2 ) (0 absence)
· Others Include some announcements or course related posts.
·
·
· (A3) No. of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
(A2) What you contributed through this course (Q & A and/or In-class)?
전공이 수학교육과인 만큼 개념의 엄밀한 정의나 증명과정들을 Q & A에 올림으로서 학우들의 이해도를 높이는 기여를 했습니다.
Team Project (Tentative, just idea now): 교내 시험에서 학생의 수준과 정답률간의 similarity를 조사하여 시험에 대한 평가를 내리는 과정
Name / e-mail (이름과 이-메일): 안성준 / karl0806@naver.com
◆ Final comment (10 points)
배운 내용에 대한 이해도에 비해 참여도가 저조했던 것 같습니다.
더 적극적인 모습이 필요할 것 같습니다.
Fill in the below for your self-assessment and your project/term paper.
(A) Briefly describe your contributions through Q&A for yourself and fellow students in our "Basic Math4AI" classe!
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
(B)Quality of Your Participation:
Projection is impressive
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
I will communicate more frequently.
(B3) Write names of YOUR PBL Team members and Team Leader.
Honestly, I don't know.
Team Project (Tentative, just idea now):
Name / e-mail (이름과 이-메일):
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
<--Dear 예찬, you are an honest student. But there are too many empty answers.
Week(day) 1: 1 Week 2: 1 Week 3: 1 Week 4: 2
Week 5: 1 Week 6: 2 Week 7: 1 Week 8: 5
Week 9: 2 Week 10: 1 Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 4 , A: 12 , Others: )
- Number of online attendances: ( 17 / 17 )
- Off-line attendance and number of absences: ( 2 / 2 ) (0 absence)
· Others Include some announcements or course related posts.
QnA에서 개념이 부족한 상태였지만 나의 배경지식을 활용하여 풀 수 있었떤 open problem을 풀어서 해답을 게시했고, 수강생들의 학습에 도움이 될 만한 글들을 게시해주면 그 글을 읽고 생각하고 이해한 바를 댓글로 달았습니다. 인공지능 코딩에 활용되는 다양한 수학적 스킬들을 배웠지만, 현재까지 무엇보다 인상깊게 배운 내용은 SVD(single value decomposition)인 것 같습니다. 예전에 기계공학과 친구들이 matlab을 활용하는 것을 보았던 터라 초반에 진행된 plotting은 Matlab에서 경험해 볼 기회가 있었습니다. 또한 Vector나 Matrix의 기본적인 정의와 연산이나 함수의 Minimum/Maximum에 대한 개념 또한 1~2학년부터 배워오던 내용인지라 이걸 단순히 코드로 나타내는 과정은 특별하게 와 닿지는 않았습니다. 하지만 SVD라는 개념을 배우면서, 단순히 벡터나 행렬을 문제를 풀기 위한 도구에서 벗어나 실제 데이터셋을 압축하여 다루기 위한 실용적인 도구로 생각할 수 있게 되었습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
Final OK 받은 글 중 제목에 내 이름이 있는 글 -> 10개
Final OK를 받지 않은 글 중 내가 활동에 참여한 QnA 글 ->7개
(B)Quality of Your Participation:
선형 대수학을 수강했지만 단순히 문제를 빠르게 푸는 데에 치중한 나머지 개념 정립이나, 행렬의 응용에 대해서는 생각해보지 않았습니다. 그러나 이러한 고등학교식 문제풀이에 급급한 수학방법은 수학의 개념을 탐구하는 데에는 상당히 취약했고, 수학에 대한 흥미도 자체를 떨어지게 만드는 역효과를 냈습니다.
따라서 저는 행렬이 어떻게 실생활에서 특히 인공지능과 관련된 분야에서 활용될 수 있는지에 대해 궁금증을 가지고 탐구하기로 했습니다. 이러한 노력을 하던 중 Matrix를 사용해서 least-squares problem을 구할 수 있다는 것을 알게 되었고, SVD decomposition을 통해서 mxn 행렬에 대해서 대각화가 가능하다는 것을 상기할 수 있었습니다.
또한, SVD Decomposition방법이 데이터를 압축시키는 데 사용된다는 것도 알게 되었습니다. Part 3 에서는 Gradient descent method(GDM)이 기억나는데, 복잡한 함수와 다변수 함수의 Local Minimum 값을 구하는 데 사용될 수 있다는 것을 알게 되었습니다. 이를 이용해서 error function을 minimize하는 least-squares problem을 해결할 수 있다는 것을 배웠습니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
우선 이 강좌의 학습방법이 독특하다고 느꼈습니다. 과목명을 처음 봤을 때는 다른 교양수학 과목들처럼 교수님이 강의를 올려 주시면 과제로 문제를 풀고, paper test를 통해서 grade를 부여받는 형식으로 생각했습니다.
하지만 수강생들로 하여금 외우는 것보다는 이해하는 것을 주 목적으로 하고, QnA에 정기적으로 질문이나, 풀이 등을 게시하게 하여서 서로 협력하여 배우는 방법은 이제껏 제가 들은 어느 강좌에서도 가지고 있는 독특한 방법이었습니다. 그래서 처음에는 약간 혼란스럽기도 하였지만, 강좌의 절반정도가 지난 지금, 정말 좋은 학습방법이라고 느끼고 있습니다. QnA에 질문이나 풀이 등을 올리면, 서로 더 발전할 수 있는 부분을 발견하게 되고, 내가 놓치고 있던 부분이나 부족했던 부분을 채워나갈 수 있었고, 그럼으로써 내용에 대한 더 깊은 이해도를 가질 수 있게 되었습니다.
학생들은 사실 자신의 지식에 확신이 없는 경우가 많아서 잘못을 지적당하거나 남에게 잘못된 정보를 줄 것을 우려하여 자신의 생각이나 답안을 공유하지 않는 경우가 많습니다. 하지만 이러한 우려부분도 교수님께서 거의 실시간에 가까운 속도로 답을 수정해주시거나 보충할 내용을 올려주셔서 짧은 계절학기 기간임에도 딜레이 없이 즉각즉각 수정해 나갈 수 있었습니다. 비록 온라인상이지만, 집단지성의 힘을 느낄 수 있는 강좌인 것 같습니다.
(B3) Write names of YOUR PBL Team members and Team Leader.
나는 아래의 내용 중 함수, 벡터, 행렬, 텐서, 노름, 내적, 선형연립방정식, RREF, 첨가행렬, 정사영, 최소제곱문제, LU분해, QR분해, SVD, 도함수, 미분, 극대, 극소, 최대, 최소, 경사하강법, 학습률, 그래디언트의 개념을 이해하고, 설명할 수 있으며, (간단한 것은 손으로, 복잡한 것은 Sage/R/python 등의 도구를 이용하여) 계산하여 그 의미를 설명할 수 있다.
Team Project (Tentative, just idea now): 2d물질에 관한 박리방법
Name / e-mail (이름과 이-메일): wgunju1@g.skku.edu
저는 신소재공학과 학생으로 고등학교 재학 당시 탄소나노튜브 광촉매에 관련된 학교 프로그램을 통해서 2d물질에 관심을 갖게 되었고, 대학에 와서도 꾸준히 2d 물질에 대한 관심을 지속해 나가고 있습니다. 최근 반도체 산업의 핵심 물질인 Si의 근본적 한계(에너지 밴드갭, Si원자의 크기로 인한 나노 공정에 대한 한계점 봉착)에 따라서 다양한 대체 물질이 연구 중에 있으며, 대표적으로 MoS2와 같은 2차원 물질이 대두되고 있습니다. 그러나 이러한 물질 모두 실용화를 거치기 위해서는 필수적으로 박리되어야 하는 과정이 필요합니다.

이러한 박리과정으로는 기계적 박리, 화학적 증착, 용액공정의 방법으로 분류되는데 Materials compatibility, Materials purity, Scalability를 모두 만족시키기는 위 그래프에서 볼 수 있다시피 어렵습니다. 또한 현실적으로 생각해 볼 때 세가지 요소 중 어떤 것을 포기하더라도 꼭 필수적으로 요구되는 사항이 발생할 수 있습니다. 따라서 각 요소의 중요도를 성분으로 하는 벡터를 설정하여 각 공정별로 유사도를 구한다면 그나마 최적의 공정방법을 도출할 수 있지 않을까 하는 생각을 가지게 되었습니다. Image by 반도체 공정실험_강주훈 교수님
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
1학년 때 코딩관련 과목에서 좋지 못한 성적을 받아서 의도적으로 학부에서 코딩과 관련이 적어 보이는 신소재 공학과에 진입하였을 정도로 코딩과 소프트웨어에 거부감을 가지고 있었습니다. 하지만 결국 공대에 온 이상 코딩과 떨어질 수 없다는 사실을 깨달은 저는 어떻게 하면 이렇게 어긋나버린 코딩과의 관계를 되돌릴 수 있을까 고민했습니다. 이러한 저에게 ‘인공지능기초수학’과목은 코딩에 문외한이고 수학에도 자신이 없었던 저에게 많은 지식과 자신감을 전해준 좋은 강의라고 생각합니다. 처음에는 문의게시판에서 쉴 새 없이 open problem을 함께 풀어가며 공부하는 강의 방식이 다소 난잡하여 당황했고 잘 따라가지도 못했지만 녹화강의와 병행하여 공부하니 공부효율이 좋은 방식이라는 것을 깨달았습니다. 기본 배경지식 뿐만 아니라 나의 적극성과 성실성이 평가 요소에 반영된다는 점이 때로는 부담으로 다가오기도 했지만 결과적으로 지금까지 내가 모르던 것, 나에게 부족한 것들을 알 수 있었고 더욱 질 높은 공부를 하게 되었습니다. 코딩도 수학도 자신이 없던 저에게 매우 의미 있었던 강의라고 생각합니다.
- Check your participation numbers in QnA for each week (Saturday to Friday):
12/13: 0 12/14: 3 12/15: 3 12/16: 3
12/17: 2 12/18: 2 12/19: 0 12/20: 0
12/21: 5 12/22: 4
- Total number of sessions (Q: 2 , A: 16 , Others: 4 )
- Number of online attendances: ( 2 / 2 )
- Off-line attendance and number of absences: ( 0 / 0 ) (0 absence)
· Others Include some announcements or course related posts.
- I actively participated on Q&A open problems. I frequently shared my solution to the class.
- I shared the study material I’ve found during studying about the concept to the class. This might helped some colleagues understand the concept better.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
8 problems
Team Project (Tentative, just idea now):
[Protein Structure Similarity]
Motivation: I studied Protein Biomaterials in last semester. I think our similarity measurement method can be used in comparing similarity of protein structures.
Method: Compare secondary structure of proteins using distance measurement on Ramachandran plot. Calculate the distance between two vectors in Ramachandran plot.
Reference: Biochemistry, Voet
Name / e-mail (이름과 이-메일): 윤상수 yss2322@g.skku.edu
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
I was surprised after collecting what we have discussed in Q&A. We talked more actively than I expected. And during writing this file, I could recap all the concepts we’ve learned so far. By viewing our learning in big picture, I could understand the meaning of what we’ve learned and why we learned.
<--- Good job^^ 기말 보고서는 좀 더 detail 하게 채워 보세요^^ 93점 주었는데 보고서에 이름 등 안 쓴 것에서 2점 감점 되었습니다. 91/100
Week(day) 1: 0 Week 2: 3 Week 3: 0 Week 4: 0
Week 5: 10 Week 6: 1 Week 7: 3 Week 8: 0
Week 9: 1 Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 1 , A: 11 , Others: 6 )
- Number of online attendances: ( 24 / 24 )
- Off-line attendance and number of absences: ( 2 / 2) (0 absence)
· Others Include some announcements or course related posts.
Ng Zhi Wei Self Introduction / Motivation
[Question] Open problem 11 by 박우현
Problem 1 by Ng Zhi Wei
Problem 2 by Ng Zhi Wei
Problem 3 by Ng Zhi Wei
Problem 14 by 안성준
Problem 15 by 안성준
Problem 5 by random_matrix() by Ng Zhi Wei
Problem 6 by Ng Zhi Wei
Problem 1 by 남상현
Day 7 Open Problem 1 by Ng Zhi Wei 응즈웨이 (using while loop) [Comment by: 우건주, 고재윤, 남상현, 윤상수]
[News] The Future of Jobs in the Era of AI (인공지능 시대의 진로와 직업)
Explained SVD in class (2nd WebEx meeting)
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
Final OK by SGLee [Finalized by 이예진] Dec. 14th, Summary of 1st WebEx meeting - How this class will proceeds and Who will get A in this class. by 윤상수, 우건주, 김명규, 박우현, 고재윤, 안성준, 김지훈, 도경근, 이규리, 황세진, 응즈웨이, 이예진, 정운섭, 이우흠, 인유진, 김지훈, 신유정, 도경근, 남궁보민, 우건주, 강민지, 남상현, 이우흠, 인유진.
[Final OK by SGLee] open problem 4 solution by 정운섭, 황세진, 응즈웨이 (finding solutions to various equation using sage) and question
Open Problem 4 by Ng Zhi Wei (Cont. from [Final OK by SGLee] open problem 4 solution by 정운섭, 황세진 (finding solutions to various equation using sage) and question) [Comment by: 이예진]
ALL Must read This!! [Sample, Re-Finalized OK by SGLee] Open Problem 16 [Re-Finalized by Ng Zhi Wei(응즈웨이), 이규식, 남상현, 이예진, 고윤진, 고재윤, 도경은, 황세윤, 신유정, 박우현, 이예진, 남상현, 도경근, 이규식] (Solutions and Comments) Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.
OK : the2nd WebEx meeting (처음 게시글을 작성한 인원이 자신의 글에 코멘트를 달아준 학우들의 이름을 포함하여 제목 및 내용을 수정 해주어야 다른 분들의 검색이 쉬어질 것입니다.) 고재윤/전자전기공학과, 우건주/신소재공학과 (Woo Gun Joo), 문헌정보학과 2018 이규리(Lee Kyuri), 시스템경영공학과 황세진 (Hwang Sejin), 전자전기공학과 김지훈 (Kim Jihoon), 기계공학과 박우현 (Park Woohyeon), 2019 응즈웨이, 2020 인유진, 2021 강민지, 2018 정운섭, 2020 윤상수, 2018 남상현, 2015 김명규, 이우흠-2018 (Yi) , 안성준 2016, 2016 안성준, 박우현_2016, 2018 이규식, 정운섭_2018, 2018 이규리, 2015_김명규, 고재윤 2020, 2015_ 황세진, 안성준 2016, 2015_김명규, 2018 이우흠, 안성준 2016, 2018 도경근, 김지훈_2020
Open Problem 16 by 이우흠 Re-Finalized OK by SGLee] Open Problem 16 [Re-Finalized by Ng Zhi Wei(응즈웨이), 이규식, 남상현, 이예진, 고윤진, 고재윤, 도경은, 황세윤, 신유정, 박우현, 이예진, 남상현, 도경근, 이규식] (Solutions and Comments) Find SVD of a rectangular 4 by 5 matrix which is bigger than 3 by 3.
(B)Quality of Your Participation:
· Sketch graphs of polynomial functions
· Make a composite function
· Find solutions of equations
· Perform matrix operation by applying operations on vectors and matrices
· Check inverse and transpose of a matrix
· Find inner product and angle of two vectors
· Find system of linear equations
· Find SVD of a matrix
· Find derivative of a differentiable function using while loop
· Find local maximum, local minimum, absolute maximum, and absolute minimum of a function
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
I think it is a good way to learn when we share our answer in QnA and discuss and ask questions so we get a better understanding on the concepts and also see how people approach the questions.
Team Project (Tentative, just idea now):
Name / e-mail (이름과 이-메일):
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
I think I learned a lot for the past 8 days through the online videos, lecture notes, and QnA board. I think the QnA board is a new and effective way to learn from others and ask questions.
(Self-Evaluation 7
이규리/문헌정보학과/4학년
E-mail: sinku13@naver.com
(3) State your meaningful Comment/Answer/Discussions in Discussion/QnA.
0. [Final OK by SGLee] [HW2] Problem 5 (Solution) by 강민지, 고재윤, 남상현, 박우현, 이규리, 이규식.[학습요약/코드실습/질문]
데이터를 순서쌍이나 튜플 형태로 나타낼 수 있을 때, 이는2차원 혹은 3차원 데이터(또 n 차원 데이터)로 coordinate plane이나coordinate space 위의(또 n 차원 공간안의)한 점으로 (표현할 수있다) 나타낼 수 있다.
이 때 그 point를 다루기 위해서 vector를 사용한다.
vector를이용해좀더쉽게시각화할수있고, vector의성질을통해다양한계산을할수있다.
vector function을 이용하며, vector(좌표)형식으로 입력한다.
(vector와 print 함수) 혹은 (var과 plot3d 함수)를 이용해, 이를 시각화 하여 출력값을 볼 수 있다.
My comment: 단순한 수식에 불과했던 3차원 벡터를 plot으로 나타내고 이를 이미지화해서 보다 잘 이해할 수 있었습니다. 감사합니다!
1. [Final OK by SGLee] Open Problem 16 Solution by 남상현 (SVD를 동한 데이터 압축의 이해) with 도경근, 고재윤, 황세진, 윤상수, 신유정, 박우현, .남상현, 이규리, 문태의, 이예진
도경근 학우님과 고재윤 학우님의 Finalized Open Problem 16을 보고 쉽고 정확하게 SVD와 이를 이요한 데이터 압축에 관해 이해할 수 있었으며, 이에 관련하여 좀 더 깊게 생각해 보게 되었습니다. 데이터 압축에 관하여 좀 더 세부적인 개념과 이해를 돕고자 Open Problem 16을 finalized해보았습니다.
우선 SVD를 응용하여 데이터의 연산량을 줄여 데이터 압축을 할 수 있는데, 이는 truncated SVD로의 변환을 통해 응용할 수 있습니다.
m x n matrix의 SVD의 경우, m이 n보다 작거나 같다면ΣS행렬의 마지막 행에는 singular value의 마지막 값이 들어가게 됩니다.
하지만, m>n이라면 m x n size의ΣS행렬의 아랫부분에는 0으로 구성된 성분이 들어가게 됩니다. 이를 Full SVD라고 합니다.
(Image by :http://matrix.skku.ac.kr/2020-Math4AI-Final-pbl2/)
singular value의 갯수를 s라고 합시다. 이 때 ΣS행렬은 밑에서부터 m-s 개 만큼의 행이 0으로 구성됩니다. 행렬의 곱을 생각해본다면, U와ΣS행렬을 곱할 때 이 부분은 제거하여도 상관 없는 부분, 즉 크기가 0인 빈 데이터가 됩니다. 예시를 들면 다음과 같습니다.
-> 원래 행렬이 5x3 size이며singular value가 3개이므로 S행렬의 아래 두 행이 0이 되었습니다. 즉, U행렬의 오른쪽 두 열을 지우고 계산하더라도 SVD는 같은 값이 나오게 됩니다. 이렇게 하여 빈 데이터를 지운 SVD를 Thin SVD라고 합니다.
아직까지는 SVD의 값이 일치합니다. 또한 값이 0인 singular value가 존재한다면 이 역시 제거할 수 있습니다. 가령 2번째 singular value의 값이 0이라면, S행렬의 2번째 열과 2번째 행이 모두 0으로 구성되어 있으므로, U행렬의 2번째 열을 제거할 수 있고, V^T행렬의 2번째 행을 제거할 수 있습니다.
이렇게 하여 0인 singular value까지 모두 지운 SVD를 Compact SVD라 하며, 아직까지는 빈 데이터 껍데기만 제거하여 실질적으로 데이터 크기가 압축되진 않았습니다.
그리고, 본격적으로 데이터를 압축하는 방법은 Truncated SVD를 이용한 방법입니다. Singular value를 내림차순으로 나열하여 SVD를 만든다면 오른쪽 아래로 내려갈수록 singular value의 값이 감소하며, 이들은 제거되어도 SVD의 값에 큰 영향을 주지 않습니다. 이렇게 하여 0이 아닌 singular value까지 제거해준 SVD를 Truncated SVD라 부릅니다.
이러한 방법을 데이터 압축에 응용할 수 있으며, singular value를 제거하여 노이즈 역시 감소시킬 수 있습니다.
다음 6x5 행렬을 통해 예시를 만들어 보았습니다.
우선 Full SVD를 구하면 다음과 같습니다.
0인 singular value는 없으므로, S행렬의 마지막 행만 제거하여 Compact SVD를 구해보았습니다.
SVD의 값은 데이터 손실 없이 일치하는 것을 확인할 수 있습니다. 이제 5번째singular value(1.306)를 제거하여 Truncated SVD를 구해보겠습니다.
다음 truncated SVD를 통해 데이터를 압축할 수 있습니다. 여기서 데이터를 압축함이라 함은, U, S, V^T 행렬을 일렬로 하여 크기를 구했을 때 그 값이 감소했음을 의미합니다.
즉, 위와 같은 경우에선 Full SVD에서의 세 행렬이 각각6x6, 6x5, 5x5 size로서 36+30+25=91Byte라고 할 수 있습니다.
하지만, Truncated SVD의 크기는 6x4+4x4+4x5=60Byte로서, 66% 정도의 메모리만을 사용하였지만 원래의 데이터와 거의 일치함을 확인할 수 있습니다.
해당 내용을 visualize하여 이미지 파일을 통해 확인해보고 싶었으나, 아직 sage 코딩에 대한 이해도가 부족하여 직접 해보지 못했습니다.
하지만 이는 이상구 교수님의 선형대수학 연구실에서 제공하는 "Matrix Decomposition and Image Processing via MATHEMATICA" 논문을 통해 정확하고 자세히 이해할 수 있었으며, 해당 논문을 통해 학우분들 모두 SVD와 데이터 압축 및 노이즈 캔슬을 쉽게 이해하실 수 있을 거라고 생각합니다.
http://matrix.skku.ac.kr/sglee/03-Note/IP/ImageProcessing.htm
혹시 잘못된 점이나 추가하고 싶으신 점이 있으시다면 지적 부탁드립니다!
Finalized OK by SGLee [Finalized by 도경근, 고재윤 . . . 이예진] Open Problem 16 Solution
작성자:고재윤(2020####97)작성일:12월 18일 오전 1:35
조회수:29
저는 도경근 학우님의 open problem 16 solution 글을 보고 굉장히 잘 쓰셨다는 생각이 들었고, 새로운 내용에 대해서 생각해보게 되었습니다. SVD 개념이
어려우신 학우님들의 도경근 학우님께서 작성하신 내용에 대한 이해를 도와드리기 위하여 이 문제에 대해 finalize 하게 되었습니다.
먼저, 선형 변환 (linear transformation)에 대한 개념이 SVD의 이해에 도움이 될 것이라고 생각하여, 선형 변환에 대해 설명드리겠습니다.
선형 변환이란 간단히 말해, 자료의 분포는 동일하게 하되 어떤 변수를 사칙연산을 통해 다른 값으로 변환하는 것을 뜻합니다.
여기서 변수는 vector, 사칙연산은 matrix를 통해 다른 vector값으로변환할 수 있습니다.
http://matrix.skku.ac.kr/2012-Album/13.html이 링크는 교수님께서 올려주신 자료 중 선형 변환에 해당하는 내용입니다.
이번에는 아래의 2차원 그림에 대해서 살펴보도록 하겠습니다. 검은 원은 선형변환 하기 전의 x vector (x) 와 y vector (y) 의 모습이고, 빨간 원은
coefficient matrix A를 곱한 A*x vector (Ax) 와 A*y vector (Ay)의 모습입니다.
y가 x에 대하여90도가 되도록 하는 vector라면, 선형 변환 하기 전의 상태에서 y는 x에 대해 모든 direction에서 90도를 유지합니다.
하지만, 선형 변환이 일어난 Ax 와 Ay 사이의 각도는 모든 direction에서 90도라고보장하지 못합니다.
위 그림을 가지고 SVD의 식을 이해할 수 있습니다.
우리는 강의를 통해 SVD 식을 A=U*∑*V^T로 배웠습니다. 위 그림을 가지고 각각의 연산자에 대해 살펴보도록 하겠습니다.
A를 coefficient matrix
V는 선형 변환 전 서로 직교하던[ x,y] 열벡터
U는 Ax, Ay가 서로 90도를 이루는 direction에서 각각의 단위 열벡터 [u1, u2] ,
∑를 scaling factor 역할을 하는 diagonal matrix라고 두겠습니다.
그렇다면 AV=∑U 라는 식은 션형 변환의 관점에서 생각해보면, 변환 전 직교했던 두 벡터가 변환 후에도 직교할 때의 direction을 찾는 식이 됩니다.
V는 orthogonal matrix 이므로A=U*∑*V^T 로 나타낼 수 있고, 이는 강의 시간에 배웠던 SVD의 형태가 됩니다.
00 My comments: SVD를 그저 수학적 개념에서 끝나지 않고 데이터에서는 이를 어떤 식으로 쓸 수 있는지, 어떻게 이해하면 되는지를 자세히 설명해주셔서 이해에 많은 도움이 되었습니다. 감사합니다!
Ch 2장. Participation (참여부분, 정량) 자기 평가와 본인의 Project (Term paper) 제안서 등에 대해 아래를 채우시오. (20점)
◆ Participation Part (20 points)
Fill in the below for your self-assessment and your project/term paper.
(A) Briefly describe your contributions through Q&A for yourself and fellow students in our "Basic Math4AI" classe!
(A1)Quantity :
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 1 Week 2: 2 Week 3: 1 Week 4: 1
Week 5: 1 Week 6: 1 Week 7: 2 Week 8:
Week 9: Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 7 , A: 2 , Others: )
- Number of online attendances: ( 14 / 14 ) _without the videos that are not included in attendance on i-campus such as Korean lecture
- Off-line attendance and number of absences: ( 2 / 2 ) (0 absence)
· Others Include some announcements or course related posts.
· (A2) What you contributed through this course so far (Q & A and/or In-class)?
최대한 당일에 강의를 듣고 문제를 풀려고 노력했고 QnA에 참여하고자 하고 유용하게 사용한 코드가 있다면 공유하였습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
Final OK 받은 글 중 제목에 내 이름이 있는 글 -> 4개
Final OK를 받지 않은 글 중 내가 활동에 참여한 QnA 글
->5개
2018 이규리 / sinku13@naver.com
Team Project (Tentative, just idea now):
문헌정보학과인만큼 정보에 대한 기록, 관리, 검색에 대한 내용들을 많이 접하다보니 정보 관리나 검색을 주제로 앞서 배운 개념들을 어떻게 활용할 수 있을지에 대해 생각해보았습니다.
정보화시대에 넘쳐나는 정보 사이에서 언제 어디서나, 누구나 검색을 하여 정보를 찾고 이용할 수 있습니다. 여기서 중요한 부분이 검색 엔진이라고 할 수 있습니다. 얼마나 엔진을 효율적으로 만들어, 방대한 데이터 사이에서 이용자가 원하는 정보에 가장 가까운 결과를 도출해내느냐가 중요한 포인트가 됩니다. 그러나 검색 엔진이 이러한 결과를 도출하기 위해서는 만들어져 있는 방대한 정보들에 대한 정리가 잘 되어있어야 합니다. 즉, 문서나 웹 사이트나 페이지 내의 정보들이 잘 정리되어 있어야 합니다. 이를 위해서는 용어에 대한 개념 정의와 언어들 간의 유의, 반의 등의 관계 정리가 중요하다고 생각합니다. 이와 같이 관계 정리를 위하여 용어들 간의 개념적 유사도를 계산하여 이를 바탕으로 가중치를 두고, 가중치를 바탕으로 정렬해놓는 것이 필요합니다. 유의어와 반의어에 대한 내용은 이미 많은 사전에 기재되어 있으며 따로 일일이 정리할 필요는 없다고 생각합니다. 그렇다면, 이제 용어들 간에 유의 정도와 반의 정도를 가중치로 수치화하여 이를 바탕으로 용어들을 정리한 하나의 거대한 데이터를 만듭니다. 이러한 데이터를 바탕으로, 문서(웹 사이트나 페이지 포함)와 질의어(쿼리) 간의 유사도를 측정할 때 해당 질의어만이 아니라 질의어의 유의어, 반의어도 포함하여 유사도를 측정하면 검색 결과에 대한 신뢰도가 높아질 수 있다고 생각합니다. 뿐만 아니라, 쿼리에도 용어가 2개 이상 있을 수 있는데 이때 쿼리 내의 용어들 간에 유사도를 유의 정도와 반의 정도를 가중치로 표현한 데이터를 바탕으로 distance similarity를 이용하여 구하면, 이용자가 어떠한 정보를 원하는지 파악하여 결과 도출에 보다 도움이 될 것이라고 생각합니다.
Ch 6장. ◆ Final comment after your report ◆ (10점)
(PBL보고서/Project를 마치고 ...)
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
*중간 PBL (검은 글씨):
이번 중간 PBL 리포트를 작성하면서 전반적으로 개념을 다시 정리할 수 있었으며, 개념 간의 유기성을 다시 학습할 수 있었습니다. 또한 전공에 적용시켜 지금까지 배운 개념들을 어떻게 활용하면 좋을지에 대해 생각해볼 수 있는 좋은 기회가 되었습니다. 개념에 대한 활용이 어렵다고 생각했고, 늘 오답에 대한 두려움으로 도전해보지 못하였으나 이번 리포트를 통해 도전해볼 수 있었습니다. 뿐만 아니라, 스스로의 부족한 점에 대해 다잡을 수 있는 기회가 되었으며, 보다 적극적인 참여를 위한 동기부여가 되었습니다. 얼마 안 남은 시간이지만 남은 시간만큼이라도 더욱 보탬이 될 수 있도록 노력하겠습니다.
지금까지 들었던 많은 강의들은 대체로 교수님이 중심이 되었으며, 그게 당연하다 여겼고 그렇게 해왔습니다. 그러나 이번 강의를 통해 다른 학우분들께도 다양한 것들을 배울 수 있다는 것을 느꼈습니다. 강의 내용에 대한 이해에도 도움을 받았지만, 그 외에도 많은 다른 학우분들의 아이디어나, 적극성을 배울 수 있었습니다. 비록 벌써 졸업을 앞둔 4학년이고 많은 참여를 하지 못했지만, 졸업 전에 이와 같은 강의를 듣고 졸업할 수 있어서 다행이라는 생각이 들었습니다.
<--- Good. I think you can make A. Get going? 89/100
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 0 Week 2: 0 Week 3: 1 Week 4: 0
Week 5: 0 Week 6: 25 Week 7: 0 Week 8: 0
Week 9: 0 Week 10: 0 Week 11: 1 Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 3 , A: 25 , Others: )
- Number of online attendances: ( 11 / 11 )
- Off-line attendance and number of absences: ( 1 / 1 ) (1 absence)
· Others Include some announcements or course related posts.
· 12월 18일까지 올라온 Final Ok 받은 솔루션들을 정리하여 워드파일로 하여 공유를 하였습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
21
(B)Quality of Your Participation:
학우들의 Final Ok 받은 솔루션들을 정리하면서 코멘트를 달았던 것이 기억에 남습니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
다른 학우분들 모두가 학구열이 대단하고 수학 및 코딩 실력이 발전해가는 것이 보여서 저에게도 크게 자극으로 다가왔습니다.
Team Project (Tentative, just idea now):
Name / e-mail (이름과 이-메일): 이규식/rbtlrl7447@naver.com
저의 전공인 바이오메카트로닉스와 인공지능을 위한 기초수학을 연게해보자면 바이오 이미지 처리를 할 때 이미지를 보고 이미지를 판별할 때 이미지의 RGB값을 벡터로 나타낸 뒤 이를 코사인 유사도를 활용하여 찾고자 하는 이미지와 매칭 시켜 해당 이미지가 어느 분야에 포함되는지를 자동으로 태깅해주는 시스템을 만들 수 있을 것 같습니다. 예를 들면 개와 고양이 사진을 넣었을 때 기존의 개 사진들과 코사인 유사도의 평균이 높을 시 개로, 아니면 고양이로 판별하는 방식으로 사용할 수 있을 듯합니다.
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
(Self-Evaluation 7
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week 1: 14
Week 2: 12
- Total number of sessions (Q: 2 , A: 31 , Others: 3 ) in total 36
- Number of online attendances: ( 35 / 35 )
- Off-line attendance and number of absences: ( 0 ) (0 absence)
· Others Include some announcements or course related posts.
Open Problem에 대한 답변 및 다른 학우들께서 올려주신 글에 대한 질문사항, 코멘트
그리고 화상 강의 내용 요약 / 교수님의 grading 방법에 대한 포스팅 리스트업 작업을 진행했습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
27
(B)Quality of Your Participation:
Data similarity를 색상표에 활용할 수 있음을 배운 내용
SVD의 기하학적/대수적 이해
SVD 등의 분해 방법을 컴퓨터로 진행하였을 때 나타난 값과 이론상 값의 오차(컴퓨터 계산 오류)
Cosine similarity
함수, 벡터, 행렬, 텐서, 노름, 내적, 선형연립방정식, 가우스 소거법, RREF, 첨가행렬, 정사영, 최소제곱문제, LU분해, QR 분해, SVD, 도함수, 미분, 극대, 극소, 최대, 최소, 경사하강법, 학습률, 그래디언트, 순열, 조합, 베이즈 정리, 확률변수, 확률분포, 기댓값, 분산, 표준편차, 공분산, 상관계수, 주성분 분석(PCA), 인공신경망, 오차역전파법(Back propagation), MNIST
위의 굵은 글씨로 표시된 항목에 대해 설명할 수 있습니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
저 뿐 아니라 학우들께서도 수학적 개념을 이해하는 데에 어려움을 겪고 있구나를 확인하여 이 내용이 쉬운 개념은 아니구나, 그러니까 더 열심히 공부해야겠구나를 느끼게 되었습니다.
제목: Application of AI technique on creating an efficient electric circuit
동기: Since I major in electronics & electrical engineering, I have always been interested in creating most efficient electrical circuit. The “efficient” means, in this case, the circuit should require minimum energy from the source to get desired output from the elements. I thought AI technique can help with designing the most efficient circuit using minimum number of circuit elements.
방법론: First, we need huge amount of data set of electrical circuits ever made in history. Electrical circuits are classified into several categories by their characteristics and connecting methods, etc. We give those data to AI and AI will learn to classify new circuits. With this ability, AI will be able to determine what to use to design circuit with optimal efficiency.
Team Project (Tentative, just idea now): SVD를 사용한 이미지 데이터 압축
Name / e-mail (이름과 이-메일): 문태의 / 701b.**@gmail.com
이미지 데이터를 입력 받아 SVD 분해를 사용하여 이미지가 사람이 보기에 알아 볼 수 있는 선에서 데이터의 크기를 최대한 줄이는 프로그램을 만들어 본다.
◆ Final comment after this HW/Exam(10 points)
앞서 개념을 정리하고 Q&A 게시판을 돌아보면서 다시 한번 내용을 정리하고 복습할 수 있어서 좋았다. 하지만 돌이켜보니 Q&A 토론에 조금 소극적으로 참여한 것 같아 더 노력해야겠다는 생각이 든다.
Self-Evaluation 6 ◆ Final comment after this HW/Exam(10 points)
◆ Final comment after this PBL report!! ß requirement. Essential (10 pts) ]
Final comment:
코딩에 문외한이고 수학에도 자신이 없었던 저에게 많은 지식과 자신감을 전해준 좋은 강의라고 생각합니다. 처음에는 문의게시판에서 쉴새 없이 open problem을 함께 풀어가며 공부하는 강의 방식이 다소 난잡하여 당황했고 잘 따라가지도 못했지만 녹화강의와 병행하여 공부하니 공부효율이 좋은 방식이라는 것을 깨달았습니다. 비록 주도적으로 문제를 풀지는 못했지만 다른 학우들의 문제 풀이를 보며 내가 모르던 것, 나에게 부족한 것들을 알 수 있었고 더욱 질 높은 공부를 하게 되었습니다. 코딩도 수학도 자신이 없던 저에게 매우 의미있었던 강의라고 생각합니다.
Data science에 대해 공부하기위해 수학 중에서 특히 인공지능을 위한 수학으로 배울 수 있는 것이 참 좋았습니다. 교수님의 설명도 충분했지만 학우님들의 토론을 보며 실제적인 예시들가운데서 개념에 대한 더욱 깊은 이해가 되는 것이 정말 좋았습니다. 한가지 아쉬운점은 Linear algebra 에 대한 이해도가 높지 않아 Matrix와 관련된 토론과 문제풀이 참여에 망설여졌던 것이 약간의 아쉬움으로 남는 것같습니다. 미적분학과 통계학분야에서 이 부분을 make up하기 위해 더 많은 질문과 토론으로 참여해야겠다는 생각이 들었습니다.
(Self-Evaluation 7
◆ Final comment after this semester!! ß requirement. Essential (10 pts) ]
이 보고서를 통해 많은 것을 깨닫게 되었습니다. 고등학생 때부터 선형대수학과 코딩에 관심이 많아 이 부분에 있어 부족한 점이 거의 없을 거라고 생각했는데, 매 강의를 듣고 이해하면서 아직 부족한 부분이 많고 새로 배우는 점도 많았습니다.
그만큼 완벽하게 이해하려 노력했고, 노력한만큼 보고서에 그 결실이 담겨있어 뿌듯합니다. 또한 길지 않은 기간이긴 하지만 그간 학습하고 활동해 왔던 것을 돌이켜 점검할 수 있는 좋은 기회가 되었습니다.
점검을 통해 선형대수학, 미적분학 등 그간 배웠던 여러 개념들을 다시 한 번 복습해볼 수 있었고, Self-Evaluation을 통해 스스로 반성해보는 시간을 가질 수 있었습니다. 또한 프로젝트를 설계하면서 전공과 연관 지어 생각해보았으며, 훗날 전문성을 키워 좀 더 깊이 있게 프로젝트를 접근하고 도전해보고 싶습니다.
이번 강의를 들으며 가장 인상 깊었던 것은 Q&A 활동이었습니다.
처음 접해보는 활동에 익숙하지 않았지만, 점차 시간이 지나며 열정적으로 활동에 참여하게 되었고,
다른 학우분들의 게시글을 읽고 또한 직접 게시글을 작성하면서 스스로 발전해 나가는 모습을 볼 수 있었습니다. 활발하고 똑똑하신 학우분들이 많아 덕분에 문제를 해결하는 시각 등 많은 점을 배울 수 있었습니다.
이번 보고서를 계기로 기말 보고서까지 더욱 노력하고 활발하게 참여하여 더 좋은 결과물을 만들 수 있도록 하고 싶습니다.
Name/Major/Year(학년): 이우흠-civil engineering-senior
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 0 Week 2: 2 Week 3: 0 Week 4: 1
Week 5: 0 Week 6: 7 Week 7: 2 Week 8: 2
Week 9: 2 Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 0 , A: 9 , Others: 6 )
- Number of online attendances: ( 19 / 19 )
- Off-line attendance and number of absences: ( / ) (0 absence)
· Others Include some announcements or course related posts.
I shared answers for the open problems and comment to others’ answers. I collected and shared the useful information related to the course to help understand the learning materials better.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
Three.
(B)Quality of Your Participation:
It is a very convenient and efficient way to solve and plot graphs of different functions using code. The code provided can also be used for vector operations and matrix operations. SVD, limit and derivative can also be computed using code.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
Sharing and reviewing different ways of solving problems is a great method to improve and learn new things. I learnt how to solve problems more efficient and understand the contents more clearly.
Term/Team Project Proposal
◆ Project Proposal (10
points)
Artificial Intelligence (AI)
approaches have been utilised across a range of applications in power systems,
but only recently have begun attracting significant research interest in the
field of demand-side response. Demand response (DR) has been identified as one
of the promising approaches for providing demand flexibility to the power
system; thus, increasing the scale and scope of DR programmes is of key
importance to many system operators. This enhanced function of DR schemes
requires a framework which is automated and able to adjust in a dynamic
environment and learn (e.g. consumers’ preferences). This framework can be
created with the assistance of AI techniques; in fact, it is increasingly
apparent that AI can contribute greatly in the future success of DR schemes by
automating the process, while learning the preferences of end-use consumers.
Aims
the aim of is to provide a
systematic review of the various AI data-driven approaches for DR applications.
The goal is three-fold:
First, provide a comprehensive
overview of the AI techniques underpinning this area, as well as the main
specific applications/tasks in energy DR to which these techniques have been
applied. Therefore, offering a broad perspective of the field's evolution and
potential future research paths.
Second, see the review serving as a useful guide for
researchers and practitioners in the field. More specifically, informing a
systematic discussion of the advantages and drawbacks of using a specific AI technique in each application domain.
Third, go one step beyond
looking only at scientific papers and give some insights into the start-ups and
more established companies applying these techniques, as well as to some of the
industrially funded research projects in this area.
The focus of this project is
on the non-symbolic, soft computing, data-driven paradigm of AI. Furthermore,
to present a more holistic view the AI approaches are studied both in the single-agent
and the multi-agent setting.
Machine learning includes a
set of methods that try to learn from data, and it is a core subset of AI. This
group of AI techniques envelopes methods that can identify patterns in the data
in an automatic way, and then use these patterns to predict, and techniques to
perform other ways of decision making in an uncertain environment. Machine
learning is a multi-disciplinary domain that draws concepts from various
domains, primarily computer science, statistics, mathematics, and engineering.
The main types of machine learning are supervised learning, unsupervised
learning, and reinforcement learning.
In the context of AI,
nature-inspired algorithms have been utilised for searching and planning
purposes, i.e. to find the sequences of actions needed to reach an agent's
goals. The nature-inspired algorithms found in the DR literature are often
meta-heuristics motivated from evolution, biological swarms, or physical
processes. Since meta-heuristics are able to find solutions in a reasonable
timeframe, they have been heavily utilised under the DR context, where the
scheduling task can be computationally expensive.
Artificial Neural Networks
(ANNs) are computational models inspired by, albeit not identical to, biological
nervous systems. ANNs have been developed since the early years of AI as
connectionist models; models which are large networks of simple processing
units, massively interconnected and running in parallel.
Due to the distributed nature
of the demand-side in power systems there is the need for approaches that can
learn, plan and make decisions in an environment that involves multiple
interacting intelligent agents. The tools to study these problems are provided
by a sub-area of distributed AI called multi-agent systems (MAS). The subfields
of MAS studied are automated negotiations for the negotiation between the
various participants in a scheme, cooperative/coalitional game theory for the
study of coalitions among these participants, as well as mechanism design.
AI applications in DR
AI methods have been applied
across the spectrum of DR by providing the tools for prediction, real-time
efficient control of distributed systems, decision-making, while adapting to an
ever-changing environment and learning from human behaviour.
One of the major purposes, for
which AI techniques have been employed, is forecasting. In the DR context AI
methods have been used for the prediction of electricity prices and various
load types. Forecasting can inform real-time electricity scheduling, as well as
longer-term system and service providers’ planning. Short-term forecasts can
improve electricity scheduling, enabling aggregators to provide better
services, and consumers to respond closer to optimal in DR signals. Better
long-term forecasts can enhance the planning process, helping service providers
and operators to have a better understanding of the available flexibility,
which consumers to target for DR, and setting DR signals.
The large number and range of
devices which can be used for DR pose an important challenge, both for the
companies offering services and the end-use consumers. The scheduling and
control of the various units for DR can be done either in the service provider
(aggregator) level, or the consumer level. The main difference between the two
levels is the scale and scope of units. Algorithms used to schedule and control
devices at the aggregator level need to be more scalable and able to work in a
more diverse environment, than in the consumer level.
The way a pricing or incentive
mechanism is designed affects not only the profitability of the aggregator, or
the retailer company, but also the success of the DR scheme. Regarding pricing
mechanisms, the majority of the use of AI techniques is to find the optimal
dynamic scheme for day-ahead in a hierarchical electricity market, while
maximizing the service provider's profit subject to realistic market
constraints and consumers' discomfort for load reduction/shifting.
Categorising electricity
consumers in groups is an important application area for DR. It can support
service providers in designing DR programmes, aggregating resources, evaluate
the load potentiality of participation in different DR program, etc..
(A1)Quantity :
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: Week 2: Week 3: Week 4:
Week 5: Week 6: Week 7: Week 8:
Week 9: Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: , A: , Others: )
- Number of online attendances: ( / )
- Off-line attendance and number of absences: ( / ) (0 absence)
· Others Include some announcements or course related posts.
전반적인 함수의 개념에 대해 이해를 했고, 그래프의 개형 또한 알게됐습니다. 단순 2차원을 넘어 3차원 그래프 또한 알게되면서 공간감각이 조금이나마 발달했고, 앞으로의 저의 전공에도 도움이 될 것 같습니다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
(B)Quality of Your Participation:
특히 기억에 남는 파트는 행렬파트였습니다. 이번 수업을 듣게 되면서 처음 행렬이라는 단어를 알게 되었고 또한 그 형태도 배우게 됐습니다. 그리고 행렬에서는 순서가 중요하다는 것을 알게 되었고 행렬 간의 덧셈, 뺄셈, 스칼라 곱, 행렬 곱과 같은 기본 사칙연산이 또한 적용될 수 있다는게 신기 했고 기억에 가장 남았습니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
본 수업강의를 듣고 잘 이해하지 못한 부분이 있어도 문의게시판을 활용하여 다른 학우들의 생각과 의견을 공유하면서 더 쉽게 잘 이해할 수 있었고 댓글을 달며 저의 생각도 한 번 더 정리할 수 있게 되면서 더 기억에 잘 남는다는 이점을 느꼈습니다. 비대면 수업이지만 이러한 게시판을 통해 활발히 서로의 생각을 공유해서 좋은 것 같습니다.
,,,Team Project (Tentative, just idea now):
Name / e-mail (이름과 이-메일):
Self-Evaluation 6
◆ Final comment after this HW/Exam ß- requirement. Essential (10 pts) ]
(A1)Quantity :
- Check your participation numbers in QnA for each week (Saturday to Friday):
Week(day) 1: 1 Week 2: 1 Week 3: 1 Week 4: 6
Week 5: 2 Week 6: 2 Week 7: 1 Week 8: 2
Week 9: Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: , A: , Others: )
- Number of online attendances: ( 17 / 35 )
- Off-line attendance and number of absences: ( / ) (0 absence)
· Others Include some announcements or course related posts.
QnA에서 정기적으로 open problem을 풀어서 해답을 게시했고, 수강생들의 학습에 도움이 될 만한 질문들을 게시하여서 도움을 주었다. 또한 질문에 대한 답을 교수님으로부터 받게 되면, 정리하여서 문제와 함께 finalize 시켰다. 또한, 다른 수강생의 해답에 개선할 여지가 보이면, 개선하여서 finalize 시켰다.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
11 final OK by SGLee Problems
(B)Quality of Your Participation:
Matrix를 사용해서 least-squares problem을 구할 수 있다는 것을 알게 되었고, SVD decomposition을 통해서 mxn 행렬에 대해서 대각화가 가능하다는 것이 가장 기억에 납니다. 또한, SVD Decomposition방법이 데이터를 압축시키는 데 사용된다는 것도 알게 되었습니다. Part 3 에서는 Gradient descent method(GDM)이 기억나는데, 복잡한 함수와 다변수 함수의 Local Minimum 값을 구하는 데 사용될 수 있다는 것을 알게 되었습니다. 이를 이용해서 error function을 minimize하는 least-squares problem을 해결할 수 있다는 것도 기억에 납니다.
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
우선 이 강좌가 취하고 있는 학습방법이 독특하다고 느꼈습니다. 수강생들로 하여금 외우는 것보다는 이해하는 것을 주 목적으로 하고, QnA에 정기적으로 질문이나, 풀이 등을 게시하게 하여서 서로 협력하여 배우는 방법은 이제껏 제가 들은 어느 강좌에서도 가지고 있는 독특한 방법이었습니다. 그래서 처음에는 약간 혼란스럽기도 하였지만, 강좌의 절반정도가 지난 지금, 정말 좋은 학습방법이라고 느끼고 있습니다. QnA에 질문이나 풀이 등을 올리면, 서로 더 발전할 수 있는 부분을 발견하게 되고, 내가 놓치고 있던 부분이나 부족했던 부분을 채워나갈 수 있었고, 그럼으로써 내용에 대한 더 깊은 이해도를 가질 수 있게 되었습니다. 비록 온라인상이지만, 집단지성의 힘을 느낄 수 있는 강좌인 것 같습니다.
Your possible Team Project 제목, 동기, 방법론, 참고문헌 [아이디어와 Draft]
제목: Application of AI technique on creating an efficient electric circuit
동기: Since I major in electronics & electrical engineering, I have always been interested in creating most efficient electrical circuit. The “efficient” means, in this case, the circuit should require minimum energy from the source to get desired output from the elements. I thought AI technique can help with designing the most efficient circuit using minimum number of circuit elements.
방법론: First, we need huge amount of data set of electrical circuits ever made in history. Electrical circuits are classified into several categories by their characteristics and connecting methods, etc. We give those data to AI and AI will learn to classify new circuits. With this ability, AI will be able to determine what to use to design circuit with optimal efficiency.
Self-Evaluation 6
◆ Final comment after this HW/Exam(10 points)
이 PBL Report를 작성하면서, 수업 시간에 배웠던 내용을 다시 한번 복습하는 효과가 있어서 앞으로 잘 잊어버리지 않을 것 같습니다. 또한 QnA에 참여하면서 이해가 잘 가지 않았던 부분들도 그냥 넘어가지 않고 이해할 수 있어서 좋았습니다. QnA에서 활동은 어느 정도 많이 했지만, 질문의 양이 많지 않았던 것 같습니다. 이 부분은 남은 기간동안 보완해야 될 점이라고 생각했습니다.
(Self-Evaluation 7
Week(day) 1: 0 Week 2: 3 Week 3: 3 Week 4: 1
Week 5: 3 Week 6: 2 Week 7: 2 Week 8: 0
Week 9: 1 Week 10: Week 11: Week 12:
Week 13: Week 14: Week 15:
- Total number of sessions (Q: 3 , A: 10 , Others: 2 )
- Number of online attendances: ( 2 / 2 )
- Off-line attendance and number of absences: ( / ) (0 absence)
· Others Include some announcements or course related posts.
I tried some open problems provided and I left some comments on the problems other collegues wrote in the Q&A board.
(A3) Number of Final OK by SGLee Problems (and/or Completed Discussion/Question) in QnA that your name is included.
10
(B)Quality of Your Participation:
(B2) What did you learn or feel while learning Basic Math4AI (Action Learning/PBL) with your classmates?
Through this course, I could simulate some math problems using sage/python codes which helped me catch up with the up-to-date learning methods.
(B3) Write names of YOUR PBL Team members and Team Leader.
This semester I had no any team members.
Open Problem 2 Solution by 이우흠 [Finalized by 정운섭, SGLee, 김지훈, 고재윤, 우건주, 안성준, 인유진, 윤상수]Open problem 2 solution by 정운섭 (3변수 함수의 Find Gradient 찾는 법, Find Critical points 임계점을 찾는법.)
|
◩ Open Problem 2 |
Sketch the graph for the function .
[ Hint: plot(x*sin(1/x), (x, -2, 2), ymin = -1.5, ymax = 1.5) ]
Practice in http://matrix.skku.ac.kr/KOFAC/ (외부 사이트로 연결합니다.)
Example of plotting statistical data
import
numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from plotly.offline import init_notebook_mode, iplot
import plotly.figure_factory as ff
import cufflinks
cufflinks.go_offline()
cufflinks.set_config_file(world_readable=True, theme='pearl')
import plotly.graph_objs as go
import plotly.plotly as py
import plotly
from plotly import tools
plotly.tools.set_credentials_file(username='XXX', api_key='XXX')
init_notebook_mode(connected=True)
pd.set_option('display.max_columns', 100)
df = pd.read_csv('house_train.csv')
df.drop('Id', axis=1, inplace=True)
df.head()
table_cat
= ff.create_table(df.describe(include=['O']).T, index=True,
index_title='Categorical columns')
iplot(table_cat)
sns.set_theme(style="darkgrid")

Histogram
df['SalePrice'].iplot(
kind='hist',
bins=100,
xTitle='price',
linecolor='black',
yTitle='count',
title='Histogram of Sale Price')

Boxplot
df['SalePrice'].iplot(kind='box', title='Box plot of SalePrice')

scatter plot
df.iplot(
x='GrLivArea',
y='SalePrice',
xTitle='Above ground living area square feet',
yTitle='Sale price',
mode='markers',
title='Sale Price vs Above ground living area square feet')

2D Density Joint plot
trace1 =
go.Scatter(
x=df['GrLivArea'], y=df['SalePrice'], mode='markers',
name='points',
marker=dict(color='rgb(102,0,0)', size=2, opacity=0.4)
)
trace2 = go.Histogram2dContour(
x=df['GrLivArea'], y=df['SalePrice'], name='density',
ncontours=20,
colorscale='Hot', reversescale=True, showscale=False
)
trace3 = go.Histogram(
x=df['GrLivArea'], name='Ground Living area density',
marker=dict(color='rgb(102,0,0)'),
yaxis='y2'
)
trace4 = go.Histogram(
y=df['SalePrice'], name='Sale Price density',
marker=dict(color='rgb(102,0,0)'),
xaxis='x2'
)
data = [trace1, trace2, trace3, trace4]
layout = go.Layout(
showlegend=False,
autosize=False,
width=600,
height=550,
xaxis=dict(
domain=[0, 0.85],
showgrid=False,
zeroline=False
),
yaxis=dict(
domain=[0, 0.85],
showgrid=False,
zeroline=False
),
margin=dict(
t=50
),
hovermode='closest',
bargap=0,
xaxis2=dict(
domain=[0.85, 1],
showgrid=False,
zeroline=False
),
yaxis2=dict(
domain=[0.85, 1],
showgrid=False,
zeroline=False
)
)
fig = go.Figure(data=data, layout=layout)
py.iplot(fig)

Heterogeneity and stratification
trace0 =
go.Scatter(x=df.loc[df['BldgType'] == '1Fam']['GrLivArea'], y=df.loc[df['BldgType']
== '1Fam']['SalePrice'], mode='markers', name='1Fam')
trace1 = go.Scatter(x=df.loc[df['BldgType'] == 'TwnhsE']['GrLivArea'],
y=df.loc[df['BldgType'] == 'TwnhsE']['SalePrice'], mode='markers',
name='TwnhsE')
trace2 = go.Scatter(x=df.loc[df['BldgType'] == 'Duplex']['GrLivArea'],
y=df.loc[df['BldgType'] == 'Duplex']['SalePrice'], mode='markers',
name='Duplex')
trace3 = go.Scatter(x=df.loc[df['BldgType'] == 'Twnhs']['GrLivArea'],
y=df.loc[df['BldgType'] == 'Twnhs']['SalePrice'], mode='markers', name='Twnhs')
trace4 = go.Scatter(x=df.loc[df['BldgType'] == '2fmCon']['GrLivArea'],
y=df.loc[df['BldgType'] == '2fmCon']['SalePrice'], mode='markers',
name='2fmCon')
fig = tools.make_subplots(rows=2, cols=3)
fig.append_trace(trace0, 1, 1)
fig.append_trace(trace1, 1, 2)
fig.append_trace(trace2, 1, 3)
fig.append_trace(trace3, 2, 1)
fig.append_trace(trace4, 2, 2)
fig['layout'].update(height=400, width=800, title='Sale price Vs. Above ground
living area square feet' +
' by building type')
py.iplot(fig)

Mixed categorical and quantitative data
data = []
for i in range(0,len(pd.unique(df['BldgType']))):
trace = {
"type": 'violin',
"x": df['BldgType'][df['BldgType']
== pd.unique(df['BldgType'])[i]],
"y":
df['SalePrice'][df['BldgType'] == pd.unique(df['BldgType'])[i]],
"name":
pd.unique(df['BldgType'])[i],
"box": {
"visible":
True
},
"meanline": {
"visible":
True
}
}
data.append(trace)
fig = {
"data": data,
"layout" : {
"title": "",
"yaxis": {
"zeroline": False,
}
}
}
py.iplot(fig)

Self-Evaluation 6
◆ Final comment after this HW/Exam ß requirement. Essential (10 pts) ]
*중간 PBL (검은 글씨):
After writing this report, I
summarized all the solutions and comments I made, I reviewed the new knowledge
I gained and I found my weaknesses. I had a clear view about what I learnt
through the course and what I should study more for better understanding. By
reviewing after students’ solutions and comments, I improved my understandings
and developed my thoughts. This is a very meaningful process and all of us can
learn from each other and help each other. I also watched many videos shared by
others that are very helpful for understanding the lecture contents. I will
share more and ask more in the last few days and I will improve better for the
final report.
중간 PBL report를 쓰고난 후, day 1 ~ day 9 강의에 대한 내용 복습, 그동안 QnA 게시판에서 활동했던 내용과 새로 알게된 내용 복습, 수업 방식에 대한 생각을 정리할 수 있었습니다. QnA 게시판 활동 내용은 따로 정리하지 않으면 복습하기 힘들겠다고 생각했었는데, 이번 report를 쓰면서 그 내용들을 정리하고, 다시 생각해 보며 완전히 저의 것으로 만들었다는 생각이 들었고 뿌듯했습니다. 계절학기 수업으로 총 15일 수업 중 9일을 진행한 결과 이 수업의 강점은 sage를 사용하여 알고리즘에 대한 자신감을 길렀다는 점과, 계산에 큰 신경을 쓰지 않아도 되어서 수학적으로 생각할 수 있는 시간이 많았다는 점, 그리고 QnA 게시판을 통해 혼자서 생각할 수 없었던 내용에 대해 토론할 수 있었던 점이라고 생각합니다. 수업 초반에는 수업 방식에 적응하기가 어려웠지만, 이제 충분히 적응하였다고 생각합니다. 남은 기간동안 더 열심히 하여 의미 있는 결과를 만들어내도록 하겠습니다. 긴 글 읽어주셔서 감사합니다!!
이번 중간 PBL 리포트를 작성하면서 전반적으로 개념을 다시 정리할 수 있었으며, 개념 간의 유기성을 다시 학습할 수 있었습니다. 또한 전공에 적용시켜 지금까지 배운 개념들을 어떻게 활용하면 좋을지에 대해 생각해볼 수 있는 좋은 기회가 되었습니다. 개념에 대한 활용이 어렵다고 생각했고, 늘 오답에 대한 두려움으로 도전해보지 못하였으나 이번 리포트를 통해 도전해볼 수 있었습니다. 뿐만 아니라, 스스로의 부족한 점에 대해 다잡을 수 있는 기회가 되었으며, 보다 적극적인 참여를 위한 동기부여가 되었습니다. 얼마 안 남은 시간이지만 남은 시간만큼이라도 더욱 보탬이 될 수 있도록 노력하겠습니다.
지금까지 들었던 많은 강의들은 대체로 교수님이 중심이 되었으며, 그게 당연하다 여겼고 그렇게 해왔습니다. 그러나 이번 강의를 통해 다른 학우분들께도 다양한 것들을 배울 수 있다는 것을 느꼈습니다. 강의 내용에 대한 이해에도 도움을 받았지만, 그 외에도 많은 다른 학우분들의 아이디어나, 적극성을 배울 수 있었습니다. 비록 벌써 졸업을 앞둔 4학년이고 많은 참여를 하지 못했지만, 졸업 전에 이와 같은 강의를 듣고 졸업할 수 있어서 다행이라는 생각이 들었습니다.
수업에 참여하면서 제가 교수님, 다른 학우분들과 주고받은 토론이나 질의응답 그 자체가 하나하나의 내용이 되어 본 포트폴리오를 구성하게 되었습니다. 수업이 진행되고 시간이 지나감에 따라 사소하다고 여기어 지나치거나, 단순히 잊혀질 수도 있는 부분까지 Open problem에 대한 지속적인 토론과 피드백을 통해 복습 및 예습이 된 것 같습니다. 본 포트폴리오를 작성하면서도 다시 한 번 지금까지 주고받은 내용들을 찾아보며 복습할 기회가 되었습니다.
I think I learned a lot for the past 8 days through the online videos, lecture notes, and QnA board. I think the QnA board is a new and effective way to learn from others and ask questions. I think I will be able to understand the different areas of maths in AI and share them with others and talk about them.
[The End]