CSDS1 : Week 4— Linear Algebra & More
이번 주는 Linear Algebra 덕분에 지옥과 천국을 왔다 갔다 했다.
나는 Linear Algebra를 한번도 수강하거나, 배운적이 없다. 교양으로 들은 100번대 물리학 수업과, 고등학교때 배운 Algebra II에서 아주 기본적인 벡터의 개념과, Trigonometry를 배웠던 기억이 난다.
주변의 친구들에게 나는 지금 Data Science를 공부중이고 이번주에는 Linear Algebra 를 배운다고 했을때, 친구들은 “그거 그래프 그리는거 아니야? 엄청 간단한거?” 라고 이야기를 하길래 방심하고 있었더니… (너네들 두고보자 🐕🧲들)
매트릭스와 매트릭스를 곱하는건, 생전 처음 경험하는 개념이었다, 2x3 매트릭스와 3x2 매트릭스를 곱하면 새로운 2x2 매트릭스가 나오고, 1x4 과 4x1을 곱하면, 왜!? 4x4 가 나오는지, 뭐랑 뭐를 곱해야 새로운 매트릭스에 넣을것이 값이 나오나?
내가 계산한 이 값은 어디에 넣는건가와 같은 혼돈의 카오스같은 느낌은 당최 말로 표현할수가 없었다. (Could not be described with words)
요즘은 과제를 하면서 배경음악으로 일렉트로닉 음악을 틀어 놓는다. 요즘 즐겨 듣는 Playlist에 RL Grime 이란 사람이 만든 OMG라는 노래가 있는데 부분의 가사가
아래와 같다…
Like, oh my god (oh my god) (오마이깟!)
I don’t know (I don’t know) (난몰라)
What the f*ck (what the f*ck) (아 ** 도대체)
Is going on (뭐가 어떻게 돌아가는지)
Like, oh my god (오마이깟!)

이번주의 내 심정과 부서진 멘탈을 완벽하게 표현해 주는 노래 한 소절과 사진이다.
본론으로 들어가서, Linear Algebra는 Data Science의 근간이 되는 학문이이라고 생각이 든다.
Curse of Dimensionality
데이터 셋의 차원을 : 사진을 예로 들면
사진의 해상도가 높으면(예 12만 화소 : 4000 * 3000)(정보의 양이 많으면) 사진의 픽셀이 높기 때문에 더 선명한 사진을 볼 수있다.
사진의 해상도가 적당히 낮으면 (정보의 양을 줄이면… 400 * 300) 선명도는 줄지만 그래도 그 사진이 무엇을 나타내는지 알 수 있다.
사진의 해상도가 매우 낮다면 (극단적인 예 4*3 (12개의 점/화소/픽셀) 선명도는 말 할 것도 없고, 그 사진이 어떠한 내용이었는지도 전달 할 수 없게 되어 버린다.
“어떠한 dimension을 사용해야 우리가 가진 데이터를 효과적으로 표현 할 수 있는가/적당히 표현 할 수 있는가”에서 오는 딜레마가 Curse of Dimensionality 인것같다.
위의 그래프 대로, 만약 0에서 20까지의 값을 가진, x,y,z 들의 데이터 값이 있을때
- 1D 그래프는 x-axis안에서만 (선에서) 표현이되고.
- 2D 그래프는 x and y axes 안에서 표현(면)
- 3D 그래프는 x, y, z axes 를 통해 (cube) 안에서 표현할 수 있게 된다.
- 1D 그래프를 보면, 5마다 region을 정했을때, 4개의 region으로.
- 2D 그래프에선, 16개의 region
- 3D 그래프에선, 64개의 region을 표현 할 수 있다
데이터셋의 차원이 커지면 생기는 문제점
사람은 3차원 공간을 넘어가는 차원은 이해하기 어렵다. 3차원은 실생활에서, 느낄 수 있지만. 사람이 3차원이 넘는 공간을 시각적 이해하기란 거의 불가능에 가깝다고 한다. 4차원의상의 정육면체는 3차원 공간에 살고 있는 우리가 볼 수 있게 그려본다면

Pivot Table, Cross Table로 100x100 매트릭스로 만들어도 우리에게 의미있는 자료가 되기 위해서는 시각화가 필요한데, 우리 사람은 3차원 공간을 넘는 시각화는 이해하는것에 많은 어려움이 있기때문에, Dimensional reduction(차원 축소)가 필요한것이 아닐까 라고 생각해 본다.
UC Irvine, Machine Learning Depository 에 있는 Breast Cancer Data
(아직 시각화 스킬이 부족하여, 중간에 색이 반전되서 혼란 스럽습니다.
미리 사과 드립니다.)

잘 살펴 보면 동그라미 친 구역을 보면, 양성종양으로 판명될 부분에, 악성종양도 포함되어있다.
K-means Clustering

과제를 하면서 (아주 당연한 결과가 나온 것 이었지만 실제로 보았을때는) 아주 흥미로운 점을 하나 발견하였다.
무작정 양성과 악성을 구분 했으면 해서 cluster를 2로 설정하고 나온 값을 보면, 모세가 홍해 가르듯, 동그라미친 부분을 기점으로 데이터가 나뉘고 있는데. 이것은 실제 데이터와 비교를 해보면 정말 터무니 없는/ 오류가 정말 많은 시각화 자료이다…
여기서 무작정 K-mean clustering을 하면 만사 okay는 아니라는것을 느꼈다.
K-means clustering (after Training the Kmeans with PC1 and PC2)

처음에 보았던 Actual Data와 비슷한 트렌드를 보여준다.
단면적으로 판단하면, ‘양성종양이 있을만한 곳에 악성종양이있다’ 라는 것을 recreate 재창조, 다시 보여주는 자료라서 좋은 자료라고 생각이 들수도 있지만.
실제 데이터와 얼마나 일치 하는지 확인해 보자

아무런 guidence 없이, 그냥 코드 몇줄로 number crunching/ Data Training 한것 만으로 90.68%의 정확도는 정말 대단한것 같다.
그렇지만, cancer diagonsis는, 사람의 목숨과 직결되기 때문에 조금더 나은 확률을 구할 수 있으면 좋겠다.
After thought
어젯밤 과제를 마치고, 문득든 생각은, 3차원 그래프로 그리면 , 양성종양과 악성종양좀더 시각적으로 분리하여 구분 할 수 있을까? 라는 생각이 들었다.
(matplotlib으로 scatter plot을 그릴줄 몰라 seaborn으로 그렸는데, seaborn 예를 보니까. 3D scatter plot이 안보인다. Solo Week에 matplotlib으로 3차원 scatter plot을 그려 follow up 하겠다.