레이블이 수학인 게시물을 표시합니다. 모든 게시물 표시
레이블이 수학인 게시물을 표시합니다. 모든 게시물 표시

2016년 12월 19일 월요일

분산, 공분산, 상관계수, 그리고 결정계수

학창시절, 왜 배우는지는 모르고, 왜 그런지도 모르고,
단지 외우라고 갈궈주신 선생님들 덕분에, 난 자랑스런 "수학바보"가 되었다.
(이런 염병, 고마워 죽겠다 진짜.. )
이후 이런저런 알고리즘을 보면서 틈만나면 등장하는 Δ와 λ에, 
상실의 시대를 경험하게 되었다. ㅠㅠ

아무튼, 난 알아야했고 이해하고 싶었다. 
그저 남들이 만들어 놓은걸 가져다 쓰는 방법도 있었지만, 
내맘대로 튜닝을 원할때는, 기본적인 이해없이 답이 안나왔다.

당시 '수학 메멘토' 상태였던 난, 수학전공한 사람들한테 들고가서 물어보았고,
돌아오는 대답은 한결같이.
"우린 증명만 합니다."
헐;;;;

수학전공자 누구에게 묻던 "그렇게물으면 이렇게 답하라!" 라고 배운거마냥,
토씨하나 안틀린 동일한 대답이 돌아왔다.

적어도 어디에 쓰는지만 알려달라해도, 어디에 쓰는지는 모른단다. ㅠㅠ;
(이런 염병, 고마워 죽겠다 진짜.. )

결국 난 (목마른놈-우물이론에 입각) 이해를 위해 직접 수년간 구경조차 안한 수학정석을 펴보기에 이르렀다.

참 이상한게, 
전엔 그저 가르쳐주는대로 외우기만하던 이 수학이란 녀석이,
알고보니 상당한 논리적 해결안의 교본이었다는 것이다. ㅠㅠ+

난 수학과를 전공한 사람도 아니고 수학점수가 특출났던 사람도 아니었다.
따라서 솔직히 수학을 전공한 사람들 입장에서는 개그일지 모르지만;ㅎㅎ

나처럼 수학바보로서 '통계학'을 이해하고자하는 분들을 위해 
10여년전 (아; 벌써 이렇게되었다니; ㅠㅠ)
내가 홀로 이해한 방법, 홀로 터득한 방법,
책에서는 배울 수 없었던 수학을 기록해 두려한다.
(누군가에겐 도움이 되었으면;;)

그래도 그때 이놈들을 이해해둔 덕분에,
통계 알고리즘을 이해할때, 그리고 응용할때 잇점이 상당히 많았다. ^^+

단, 이게 나름 이해를 하고자 하다보니, 솔직히 100% 맞는지는 잘 모른다.ㅎㅎ
(뭔가 이상하거나 틀린 부분이 있다면 과감하게 지적바래요. ㅜㅜ)

마찬가지 스스로 이해한 삼각함수, 벡터나 행렬같은 것들도 시간나는대로 정리할 생각이다.
또한 업무특성상 필요한거 이외의 수학은 잘 모른다는 것도 이해해주길 바란다.ㅎㅎ



'분산'에 대해


간단하다. 데이터의 퍼진 정도, 분산된 정도랄까?

그럼 퍼진 정도를 어떻게 알까? 편차의 정도를 따져보면 어떨까?
'각 데이터들은 평균에서 얼마씩 떨어져있어.' 라는게 결국 분산 아닐까?

'편차'는 각 값이 평균에서 얼마나 떨어져 있는가를 말한다.
즉 요소에서 평균을 빼면 편차가 되는것이다. (요소와 평균의 차이)
(평균은 다 알테니 패스. ㅎㅎ)

이 편차들의 평균을 내면 그것이 바로 '분산된 정도'를 의미하는 '분산'이 되는 것이다.

그런데 여기에 문제가 있다.
편차는 평균과의 차이이기에 음수가 존재한다는 것이다.

예) 요소x는 평균보다 10만큼 크다. 근데 요소y는 평균보다 10만큼 작다.
→ x는 편차가 +10인 반면 y는 -10이 된다.

이러한 음수의 존재는 양수를 상쇄시켜 그 차이를 정확히 표현해주지 못한다.
그럼 음수를 없애자! 헌데 어떻게?

그 음수값을 없애기 위해 각 값을 제곱해주면 된단다.
음수끼리 곱하면 양수가 되기 때문이다.

따라서 분산의 공식은 다음과 같아진다.
('x-평균'은 '편차'를 말한다.)

(분산 공식)





'공분산'에 대해


공분산은 한문을 알면 좀 더 쉽게 이해가 될텐데,
共(함께할 공)이란 한문을 사용해서 '함께 공유되는 분산'이란 의미이다.
분산은 하나의 기준에 의한 분포를 말한다면,
공분산은 두 기준에 의한 '관계'를 말하는 것이다.
X가 변할때 Y는 영향을 받는가? 라는 정도?

이는 X의 각 요소가 대응하는 Y의 요소에 끼치는 영향력을 보면 될 것이다.
X들의 편차의 평균과 Y들의 편차의 평균을 구하고 이를 비교한다는 의미가 된다.
결국, X와 Y의 각 요소별 편차차이의 평균으로서 구하면 될것이다.

헌데 여기서 각 값은 동일한 비율로 인식되어져야 한다.
그때그때 다른비율로 인지되면 기준이 그때마다 달라져 결과값에 문제가 발생한다.

예를들어,

X=3, Y=2 일때 각각에 2를 더하면 X=5 Y=4가 되어 2/3 이었던 힘의 비율이 4/5가 됨으로 데이터의 벡터 자체가 변화하게 된다.

X=3, Y=2 일때 각각에 2를 곱하면 X=6 Y=4가 되어 2/3 이었던 힘의 비율이 4/6 = 2/3가 됨으로 데이터의 벡터에는 영향이 없게 된다.

아무튼 그런이유로 두 X, Y그룹간의 공분산을 구하고자 한다면,

X그룹요소에서 편차를 뺀 값과, Y그룹요소에서 편차를 뺀 값을 곱한 후
이것들을 모두 합해 평균을 구함된다. 즉, 전체 갯수(혹은 전체갯수-1)로 나누면 된다.

(공분산 공식)


예를들어 커피가격과 판매량이 서로 상관관계가 있는지 확인하고자 할때,
커피가격 = {2500,3000,4500,7000,3500}
판매량 = {44,97,33,89,45} 
이라면,

커피가격편차 = {-1600, -1100, 400, 2900, -600}
판매량편차 = {-17.6, 35.4, -28.6, 27.4, -16.6} 
이다.

이를 계산하면
( (-1600*-17.6) + (-1100*-35.4) + (400*-28.6) + (2900*-27.4) + (-600*-16.6) ) / 5 = 13440

공분산은 13,440 이렇게 된다.

공분산은 3가지 상태 즉, 양수, 음수, 0의 경우에 대해 다음과 같은 특성을 가진다.
  • 공분산이 양수면 X가 증가 할 때 Y도 증가한다.
  • 공분산이 양수면 X가 증가 할 때 Y는 감소한다.
  • 공분산이 0이면 X와 Y는 아무런 선형관계가 없다.
(위의 예로 볼때, 가격이 비쌀수록 판매량이 올라간다는 결론이 도출된다.)



상관계수에 대해


공분산은 영향력의 정도에 대한 상황은 알 수가 없고 단지 3가지 상태를 구분할 뿐이다.
이에 좀 더 자세한 상호 상관관계를 알기 위해 상관계수(r)란 것이 등장했다.

상관계수의 종류가 좀 되는데, 목적에 따라 약간씩 다르달까? 아무튼 가장 흔히(?) 사용되는 피어슨 상관계수(Pearson correlation coefficient)를 예를 들겠다.

서로 어떤관계가 있는가의 문제이다보니 다음과 같이 생각해도 좋을 것이다.



이것을 위의 분산, 공분산으로 바꿔 생각하면 다음과 같이 표현할 수 있다.
(분산이 스스로 제곱된 것을 곱한 값이기에 제곱근을 해 준 것을 유의하자.)



이는 다음과 같은 의미를 지닌다.



분모들을 몰살시켜 단순화하면 다음과 같다.
(이거 다 증명해야할라나? 증명싫은데; ㅠㅠ)



(상관계수r은 -1≤r≤1 사이의 값을 가진다.)

위의 예에 적용해보자.

커피가격 = {2500,3000,4500,7000,3500}


판매량 = {44,97,33,89,45} 

커피가격편차 = {-1600, -1100, 400, 2900, -600}
판매량편차 = {-17.6, 35.4, -28.6, 27.4, -16.6} 

(-1600*-17.6 + -1100*35.4 + 400*-28.6 + 2900*27.4 + -600*-16.6) / √((-1600^2 + -1100^2 + 400^2 + 2900^2 + -600^2)*(-17.6^2 + 35.4^2 + -28.6^2 + 27.4^2 + -16.6^2))
= 67200 / (3563.705936 * 58.37122579)
= 0.32304915

커피가격과 판매량은 32.3%정도의 양의 상관관계를 가진다는 것을 알 수 있다.

참고)
r이 -1.0과 -0.7 사이이면, 강한 음적 선형관계,
r이 -0.7과 -0.3 사이이면, 뚜렷한 음적 선형관계,
r이 -0.3과 -0.1 사이이면, 약한 음적 선형관계,
r이 -0.1과 +0.1 사이이면, 거의 무시될 수 있는 선형관계,
r이 +0.1과 +0.3 사이이면, 약한 양적 선형관계,
r이 +0.3과 +0.7 사이이면, 뚜렷한 양적 선형관계,
r이 +0.7과 +1.0 사이이면, 강한 양적 선형관계

*│r│ ≥ 0.65 일때 의미가 있다는데.. 
뭐 결국 65%는 먹어줘야 된다는 의미 아닌가?이게 절대적이란건 아니라 생각한다. 그래서 난 %로 생각한다. ㅎㅎ


(상관계수 값의 범위)



결정계수

아무튼 위에서 보면 알겠지만 상관계수의 범위는 -1≤r≤1 사이의 값을 가진다.
이 상관계수를 제곱하면 범위는 0≤r≤1 사이로 변한다.

이렇게 상관계수를 제곱함으로서 만들어진 수 역시 결정계수라 하는데,
"총변동중에서 회귀선에 의해 설명이 되는 변동이 차지하는 비율"을 가르키는 것으로
결국 상관계수를 양수화 한것이란 의미지 싶다.
R2 = r2

결정계수는 R2은 '회귀분석'의 정확도를 따지는 기준이 되는 값이 되기도 한다.
따라서 다음과 같은 공식을 사용하기도 한다.



#결정 계수는 분석의 종류(선형 회귀, 비선형 회귀등 에 따라 계산방법이 바뀌기도한다.
(아.. 결정계수는 역시 회귀분석과 묶어서 따져야하겠다;)

아무튼 여기까지.





















2016년 9월 19일 월요일

프로그래머와 수학의 관계?

아주 황당한 경험을 하게 되었다. (점입가경이랄까?)

아무리 직업의 세분화가 좀더 정밀해졌다고 하더라도 이건 좀 아닌가 싶은 일이 벌어졌다.

팀 사람들에게 프로그래밍 관련 알고리즘을 설명해야할 시간이 생겼다.
당연히 알고리즘은 수학이 빠질 수 없기에 수학적 설명을 곁들였다.
근데 이게 무슨 일인지 전부 먼산만 바라본다.
왜 관련도 없는 수학을 논하는가? 그저 배포된거 가져다쓰면 되는데, .. 하는 분위기..

회의 후 사람들은 내게 '수학을 되게 잘하시네요.' 라고 말한다.

'응? 난 수학이 아니라 알고리즘을 설명한건데?' 

수학 == 알고리즘?, 수학 != 알고리즘?, 수학 ⊆ 알고리즘!!


이상하다 정말.
내가 아무리 알고리즘이라 해도 사람들은 수학으로 받아들였다.

뭐 액면은 수학이긴 하지.. 흠..

더불어 자신에게 수학을 강요하지 말란다.
'데이터 사이언티스트'나 수학을 한다며, 자기들과는 분야가 다르다는 지론을 내세운다.

어떤이는 안드로이드 개발자란다.
어떤이는 시스템 개발자란다.
어떤이는 프론트 개발자란다.
어떤이는 자바개발자는 잘 가져다 쓰면 우수한 개발자라는 주장을 피력했다.
(이미 있는거 가져다 조립 잘하는게 어떻게 '개발'인지는 모르겠지만;;)

얼마 전에..

연구성향이 강한 사람이 있기에 '당신은 개발자 스타일이네요' 한마디 했더니,
"그 사람 빼고 나머지는 개발자 아니냐? 왜 비하하냐"며 매서운 눈빛으로 날 바라봤다.

(수학 모르고, 알고리즘 생각해본 적 없고,
배포된 소스를 한번도 직접 분석해본 적 없으면서 개발자 소린 듣고 싶은가 보다. ㅠㅠ)

많은 사람들이 수학에 대해 잘못 이해하고 있다.
수학은 그저 외워야하는 복잡한 공식이라고 알고 있다.

수학은 논리력이다. 

예를 들자면,
삼각함수를 이용해 데이터를 평준화 하거나 매출변화를 분석할 수 있다.
그저 직각 삼각형을 가져다놓고 의미 없는 나누기를 하는 '뻘짓'이 아니다.
전체 분포에서 일부 그룹들을 나누면 점유율이 나오고 이는 곧 코사인 결과가 나오게된다.
이전 데이터와 현재데이터를 비교한 변화량은 곧 탄젠트로 이어진다.

복잡한 공식의 문제가 아니라, 우리가 이미 알고 있을지 모르는 논리적 사고능력, 문제해결 능력을 표현하는 방법이 수학이라는 것이다.

알고리즘에 있어 수학을 모르면 그저 우주어가 적힌 논문일 뿐이다. 수학을 모르면 그저 남들이 만든 소스를 '설명서에 맞춰' 가져다 붙이는 것만 가능하게 된다.

물론 나도 수학을 잘한다고 말 못한다.
학창시절에도 수학을 그렇게 좋아하지 않았고, 가방끈도 짧은 내게 유일한 수학선생은 '수학정석' 이었다.

수학을 가르쳐준 선생이 문제인지 그 선생의 뜻을 이해하지 못한 내 문제인진 모르겠으나,
아무튼 난 직장생활 내내 수학정석을 데스크에 항상 올려두었다.

(쪽팔림? 그건 순간이다.)

이해가 가지않으면 외우지 못하는 몹쓸병에 걸린 난,
구구단을 다 익히는데 30년이나 걸렸다. (요새도 사실 가끔 해깔린다.. ㅜㅜ)
그런 내가 수학을 이해하기 위해 쏟은 시간과 노력은 정말 혹독했다.

아무튼,

수학을 못하면 프로그래머가 될수 없다?
프로그래머인데 수학을 못해도 된다?

결론은..

한국에서 수학을 못한다해도 '프로그래머'가 될 수는 있다.
하지만, 수학을 하지 않고서는 '개발자'가 될 수는 없다.

한국 교과과정에서의 '수학'을 하려하지말고, 
논리적 분석 능력이 바로 '수학'임을 깨닳아라.





2015년 6월 1일 월요일

14~15세를 대상으로 한 싱가포르와 아시아 수학 올림피아드에 나온 문제

(2015/05/22 작성)




알버트와 버나드가 새로 사귄 셰럴에게 생일을 물었더니 ‘5월 15·16·19일, 6월 17·18일, 7월 14·16일, 8월 14·15·17일 중 하나’라고 말했다. 이후 셰럴은 알버트에게는 자신의 생일이 속한 월을, 버나드에게는 날짜를 각각 알려줬다.


  • 알버트: 셰럴의 생일이 언젠지 알 수가 없어. 하지만 버나드도 몰라.
  • 버나드: 처음엔 몰랐는데 이젠 알아.
  • 알버트: 나도 이제 셰럴 생일이 언젠지 알 것 같아.


셰럴의 생일은 언제인가? ▼