분산, 공분산, 상관계수
특징 추출은 데이터를 간단하게 만들면서도 중요한 정보를 뽑아내는 과정이다. 쉽게 말해, 데이터를 잘 살펴보고 비슷한 성질을 가진 것들을 한 방향으로 묶어주는 작업이라고 생각하면 된다. 이 과정을 통해 데이터의 본질을 더 잘 파악하거나 분석하기 쉽게 만들 수 있다.
벡터는 어떤 변수에 대해 크기와 방향을 가진 것을 뜻한다. 데이터 분석에서는 벡터를 이용해 변수들 간의 관계를 표현하거나, 비슷한 방향을 가진 데이터끼리 묶는 데 사용한다. 즉, 데이터가 어떤 방향성을 가지고 있는지 확인해서 그룹을 나눌 때 벡터가 중요한 역할을 한다.
PCA(주성분 분석)는 데이터를 차원 축소하면서도 중요한 정보를 최대한 유지하는 방법이다. 데이터를 살펴보면 어떤 방향으로 가장 많이 퍼져 있는지를 알 수 있는데, PCA는 이렇게 가장 큰 분산을 가진 방향을 먼저 찾는다. 이를 PCA1이라고 한다. PCA1은 데이터를 가장 잘 설명하는 축이고, 그다음으로 큰 분산을 가진 축이 PCA2다. PCA1은 데이터를 가장 많이 담고, PCA2는 그보다 적게 담는 식으로 차례대로 축이 정해진다.
이 과정에서 데이터가 얼마나 퍼져 있는지, 그리고 어떤 방향으로 퍼져 있는지 동시에 고려해야 한다. 예를 들어 데이터를 묶어낸 그룹이 같은 방향성을 가지는지 확인해야 하고, 데이터의 분산도 분석해야 한다. 이런 방향성과 분산의 특성을 알아야 데이터 분석 결과가 더 정확해진다.
상관계수는 두 변수 사이의 관계를 숫자로 나타낸 것이다. 피어슨 상관계수라는 값은 -1에서 1 사이의 범위를 가지는데, 1에 가까우면 두 변수가 같은 방향으로 변화하고, -1에 가까우면 반대 방향으로 변화한다는 뜻이다. 0에 가까울수록 두 변수 사이에 뚜렷한 관계가 없다는 걸 나타낸다. PCA에서도 상관계수나 공분산을 활용해서 변수들 간의 관계를 계산하고, 이를 바탕으로 주요 방향(주성분)을 찾아낸다.
PCA를 할 때는 데이터를 수학적으로 변환해서 분산이 가장 큰 방향을 찾아내는데, 이 과정에서 공분산, 고유값, 고유벡터 같은 수학적 개념들이 쓰인다. 하지만 너무 복잡하게 들어가기 전에, 먼저 데이터의 분산과 상관관계를 살펴보는 것이 중요하다. 이렇게 기본적인 특징을 이해한 뒤에 PCA를 적용하면 데이터를 더 효과적으로 분석할 수 있다.
공분산하고 난 다음에 상관계수를 구한다.
넘파이는 날데이터라고 생각하고, 판다스는 데이터를 csv로 한번 거쳐온 정리된 데이터라고 생각한다. 그렇기 때문에 판다스를 표본집단이라고 본다.
GPT에 질문하기
업무성과를 주로 보고 싶다면 x축을 업무성과로 보면 된다. 연관성이 있는 지표로 보면 된다.
무턱대고 상관계수를 볼 수 없고, 세그멘테이션 한 다음에 상관계수 찾아야 한다. 분석할 때 통신사를 갈아타는 이유가 있는데 2년이 되가는 고객들부터 잡아야 한다. 1년 전쯤부터 해서 해당고객에게 마케팅을 해야할지 알아야 한다.
상관계수가 있다고 해서 인과관계가 있는 것은 아니다. 상관과 인과는 서로 다른 얘기다. A때문에 B가 이루어진다는 직접적인 요소가 인과이고, 연관성이 있을 것 같지만 직접적 요소가 아닌 것이 상관이다. 업무성과가 좋은 그룹군을 확인해보면 5-8년사이에 훨씬 더 업무성과를 잘 낸다는 것이 신입 직원보다는 잘 나온다고 하면, 이번 프로젝트에서는 5-8년 직원을 프로젝트에 넣는 것이 좋다라고 하는 것이지, 5-8년 직원이 있어서 프로젝트 성공한 인과관계는 아니다. 통계학적으로 살펴봤을 때 상관계수를 볼 때는 가설을 세운다. 5-8년 사이 직원이 업무성과가 제일 좋을 것 같다라고 하는 것이 연관성이 있음을 확인하였습니다~ 라는 것이다. 공분산은 회사에서 거의 하지 않는다. 근속연수가 높아질수록 업무성과도 뛰어나다는 것이 보입니다~ 라고 말하는 것이다.
GPT에 질문하기
우리에게 중요한건 이런 인사이트
‘물류 빅데이터’ 구글에 검색
A지점에서 B지점으로 넘기는 데이터
물건을 단순히 배달이 아니라 재고수준, 스케줄링을 해야하고, 수요예측을 해야하고, 운송이 시작되면 최적화 경로를 봐야하고, 재고계획도 해야한다. 물류를 운송만 생각하지말고 창고를 어떻게 관리할 것인가를 생각해야한다. 쿠팡은 사무직군 뽑을 때 SQL, 엑셀 역량을 본다. 쿠팡물류센터 내부 안에서 셔틀버스 동선 최적화 할 사람 구한다고 한다. 어느지점에 세우는 것이 좋을지 결정하는 사람을 구한다. 인공지능과 같은 빅데이터를 통해서 사람들 태그값이 많은 곳에 노선을 배치하는 시스템이 있다. 심야버스도 그때그때 상황에 따라서 동선을 조정하고 있다.
물류시장에서의 빅데이터는 기본적으로 스케줄링, 수요예측, 창고관리, 운송, 재고게획, 유통을 하는데, 데이터분석으로 유동적으로 움직이고 있다.
유통하는 곳에 데이터를 넘겨야 하는데 데이터 표준화가 안되어있는 케이스가 생각보다 많다. 헬스케어는 병원마다 사용하는 용어도 다르고 포맷도 다달라서 서로 두개이상의 의료원들을 연계하는게 쉽지 않아서 한계가 있다. 물류도 공급망과 처리하는 기술 수준이 달라서 데이터 통합이 어려워서 데이터 수집부터 문제가 있다.
수출파트도 한번에 데이터를 통합해서 관리하기가 어렵다.
창고관리의 데이터능력이 제일 낮다. 아직까지는 운송을 자동화하지 않고 싶다.
재고관리에 있어서 입항지연에 의한 공급망 피해도 큰 문제이다. 대응방안으로 실시간 모니터링, 대체 경로 확보, 공급망 다각화를 해야한다. 공급망 다각화에 대해서 고민을 많이 한다. 입항지연은 단순한 일정 문제를 넘어, 공급망의 전체 효율성과 비용 구조에 광범위한 영향을 미친다. 이를 최소화하기 위해서는 예측 기반의 관리와 유연한 대응 전략이 필수적이다.
데이터분석 회사 - 쌀쌀맞은 팀장, 친절한 회사, 회사 성향에 따라서 나뉜다. 의사결정때문에 되게 힘들거다. IT회사 특징이 대기업말고 중견기업들은 인원수가 200명만 되도 IT는 큰회사로 본다. 보통 이사님 대표님이 다 동급이다. 스타트업으로 시작한 회사라서, 회의가 엄청 많고, 이사 대표가 와서 안된다고 하면 끝난다. 열심히 회의하면 뭐하나 대표가 와서 그런소리하는건 이해하는데 이사가 와서 그러니까 이해못하는데 그거 다 동업자라서 그렇다. 내가 열심히 회의한 내용이 의미가 없구나라고 느끼는 경우가 엄청 많다. 대표님이랑 동급이라서 그렇다. 그 과정에서도 우리가 취할게 뭐가 있는지 봐야한다.
물류데이터만 전문적으로 처리하는 곳이 트레드링스 라는 회사다. 이 회사는 워낙 독특한 회사라서 다른 업무로의 전환이 어려울 수도 있다. 해상쪽 물류는 해외가 아닌 국내에서는 물류를 많이 왔다갔다 안한다. 독특하다보니 사람들이 많이 안하려고 하고, 그래서 또 좋을 수도 있다.
해상 물류데이터 BigdataSea 여기서 볼 수 있다 - 선박 스케줄 정보 등등
회사 가면 이정도 피티가 평균적이다. 하지만 신입에게 바라는 것은 이런 것들이기도 하다.
선박 속도를 올리는 요소가 뭔지도 봐야한다. 선박속도는 연료소모량 상관관계로 보여질 수 있다.
하나의 주제를 가지고 땅굴파듯이 구글검색을 하는 것이다. 물어보고 끝내는 게 아니라 꼬리물듯이 계속 질문해서 도메인에 대해서 파악하는 노력을 해야한다.
내가 취할 수 있는 짧은 시간에 도메인을 이해하는 것이 한계가 있었지만, gpt가 도메인과 관련된 논문이나 데이터를 가지고 LLM에 넣어서 요약시키면 되고, 요약되어있는 걸로 다시 넣든 RAG에 넣든지 해서 도메인을 빠르게 습득할 수 있다라고 어필하면 된다. 나는 물류항만 관련 논문 3천건을 꺼내서 요약해서 이 데이터들을 리스트업하고 읽어봤다고 말하는 것이 좋은 경험치가 될 것이다. 좋게 들으면 오 성실하다~라고 생각하고, 이상하게 들으면 광기라고 생각할지도 모른다. 나는 광기가 아니라는 것을 보여주는 면접 스킬도 중요하다. 선한 미소를 보여주면 된다.
어떤 지역에 창고를 세울지 고려할 때, 세그멘테이션해야하고 지역에서 갖고 있는 데이터와 유기적으로 결합하여 분석한다. 바람과 화학물질의 상관도를 확인하고, 바람이 센 곳에는 어떤 화학물질 창고를 세우면 안된다!라고 결정한다. 빅데이터의 좋은 점은 들어오는 데이터에 따라서 실시간으로 대응할 수 있는 방법론을 세운다. 도시에서 바람을 일으키는 요소는 뭘까? 양옆으로 칼바람이 분다. 도시같은 경우는 바람의 세기를 결정하는 곳은 건물이 신축이 되면서 바람이 세진다. 바람이 들어오는 공간과 나가는 공간이 있다. 지역의 환경이 바뀌면 바람이 바뀐다. 바람의 방향도 바뀐다. 이런 부분을 빠르게 실시간으로 대응할 수 있는 것이 빅데이터이다. 사람이 기존에 봤던 것이 아니라 프로그램이 알아서 그때그때 데이터셋을 가지고 실시간적으로 처리한다는 것이다.
스마트팜처럼 축사 근처에 한다면 바람, 비의 영향을 많이 받는다. 비에 의해서 토양들이 같이 쓸려서 내려온다. 식물들은 여기에 영향을 받을 수 밖에 없다. 실시간적으로 자동화해서 할 수 있는 방법론이다. 우리가 잘 모른다고 해도 모르는 거일 수록 더 찾아봐야한다. 화학물질을 모른다고 해도 모든 요소들을 찾아내서 분산, 공분산을 찾아낸다. 분산과 공분산이 PCA의 기본이다.
제조업 사례 - KAMP AI 제조 데이터 인공지능
이거는 작은 회사를 위한 것이다. 이미 대기업들은 자동화가 되어있다.
열처리를 자동화하는 것이다. 제조공정은 소규모는 KAMP안에서 빅데이터 방법론을 쓸 수 있게 해두었고, 제조AI Use-Case 실증사례들을 봐야한다.
대기업 쪽 보려면 삼성 브라이틱스 보면된다. 아주 큰 회사의 공장은 자동화가 이미 되어있다. 공장자동화 이미 되어있지만 회사들이 제조공정을 바꿔야할 때가 오기는 했다. 공정을 바꾸는 건 아니지만 데이터 센터에 관련된 부분을 바꿀 때가 되었다. 홈페이지 웹과 관련된 기술이 바뀌었고, HTML 국제표준도 바뀌었고, 국가에서 하라는 것도 바뀌고 해서, 디지털화 하려고 한다.
은행에서 설, 추석 때 전산망 못쓴다고 하는데, 작년 재작년에 더 있었던 이유는 디지털화시켰다. 디지털화 시키면서 HTML5로 바뀌고 그랬다. 내부적으로 코드를 다 바꿨다. 이거를 바꿀 때는 백엔드도 다 같이 바꿔줘야한다. 이제는 빅데이터가 되는 백엔드로 바꿔야한다.
공분산 행렬
공분산을 구했을 때 매트릭스 결과를 가지고 인사이트를 달라고 gpt에 물어본다.
단위 벡터가 실제 데이터를 잘 나타내는지 확인하는 방법은 고유벡터를 활용하여 판단할 수 있다. 데이터를 정규화하거나 스케일링(L2 노름, Min-Max 스케일러 등)을 적용하면 데이터의 크기를 조정하지만, 중요한 점은 이러한 과정이 데이터의 방향성을 유지한다는 것이다. 고유벡터는 데이터의 공분산 행렬 또는 상관계수 행렬을 기반으로 계산되며, 이는 데이터의 분산이 가장 큰 방향(주요 축)을 나타낸다. 따라서 고유벡터를 통해 데이터의 방향성을 확인하고, 단위 벡터로 변환된 데이터가 원래 데이터의 특징을 유지하는지 확인할 수 있다.
GPT에 질문하기 아래 순서대로
아직 행렬은 안했다. 분산과 공분산은 두 변수간의 관계라서 변수 2개 밖에 못 넣는다. 공분산은 해석이 가장 중요하다. 공분산은 얼마인지만 나와주면 된다.
gpt에 질문하기 “행렬풀이과정도 보여줘”
PCA를 수행하는 데 공분산을 반드시 알아야 하는 것은 아니지만, 공분산은 데이터 분석에서 중요한 역할을 하므로 함께 살펴보는 것이 유용하다. 특히, 공분산은 변수들 간의 상호 관계와 데이터의 분산 구조를 이해하는 데 도움을 준다.
데이터에서 x 변수의 스케일(값의 크기)이 너무 크거나 변동성이 심할 경우, PCA의 결과에 영향을 미칠 수 있다. 이로 인해 값이 왜곡되거나 올바르지 않은 결과가 나올 수 있으므로, 단위벡터를 이용한 정규화 작업이 필요하다. 정규화 작업은 데이터를 일정한 범위로 조정하면서도 원래의 방향성을 유지하는 과정이다. 이를 통해 상관관계 값도 더 적절하게 계산될 수 있다.
정규화는 데이터의 비교 가능성을 높이고, 분석 결과의 신뢰성을 확보하기 위해 필수적이다. 또한, PCA를 수행하는 과정에서 행렬 곱셈과 같은 수학적 작업이 필요하므로, 이를 이해하기 위해 행렬 풀이 과정을 함께 살펴보는 것이 도움이 된다. 행렬 계산은 데이터 변환과 주성분 추출의 핵심이기 때문이다.
행렬 연산을 통한 공분산 행렬 계산 과정
분산과 공분산을 보여준다. x데이터에 대한 분산 2.18이고, 공분산이면 0.53이다. 이거를 하나만 하는게 아니라 이런 값을 하나 더 준다. 주황색은 웨이트값이다.
0.5는 서로 강한 양의 상관계수를 가지고 있다는 뜻이다.
단위벡터는 PCA와 같은 데이터 분석 기법에서 중요한 역할을 하기 때문에, 정규화 작업의 범위와 방법이 결과에 큰 영향을 미칠 수 있다. 데이터를 어떻게 정규화하느냐에 따라 분석 결과의 해석이 달라질 수 있으므로, 정규화는 매우 신중하게 수행되어야 한다.
고유값과 고유벡터는 PCA뿐만 아니라 추천 시스템의 핵심 원리 중 하나이기도 하다. 추천 시스템에서 사용자와 아이템 간의 관계를 분석하거나 차원 축소를 통해 패턴을 찾아내는 과정에 PCA와 같은 기법이 활용되며, 이 과정에서 고유값과 고유벡터가 중요한 역할을 한다.
PCA를 수행할 때는 먼저 데이터를 정규화하여 변수 간의 스케일 차이를 없앤다. 그런 다음 공분산 행렬을 계산하여 변수 간의 연관성을 파악한다. 이 과정을 통해 데이터가 어떤 방향으로 퍼져 있는지(분산 구조)를 이해할 수 있으며, 이를 기반으로 같은 방향성을 가진 데이터들을 찾아낸다. 최종적으로, 분산이 최대화되는 방향으로 데이터를 투영하여 주요 특징을 추출하고, 이를 활용해 차원을 축소하거나 데이터를 분석한다.
이러한 과정은 데이터 분석의 정확도를 높이고, 데이터 간의 관계를 더 명확하게 드러낼 수 있도록 돕는다. PCA는 단순히 차원을 줄이는 것이 아니라 데이터의 중요한 패턴과 특성을 보존하면서 분석을 용이하게 만드는 데 목적이 있다.
여기 부분은 지금 난이도 최상이고, 추천시스템도 난이도 높다. PCA를 수학적으로 풀 필요없다.
우리가 뒤에서 할 작업은 SVD 추천시스템 빼면 수학이 안나온다. 수학 거의 다 끝났다.
고유값: 고유값은 데이터의 변동성을 설명하는 크기를 나타낸다. 고유값을 볼 일이 많지는 않지만 고유값은 방향에 대한 것이다. 고유값은 데이터의 총 변동성 중에서 설명하는 비율을 나타낸다.
고유벡터: 고유벡터는 데이터가 가장 많이 펴져 있는 방향을 나타낸다. 양의 값 혹은 음의 값.
PCA는 기본적으로 데이터의 분산과 공분산을 활용하며, 이를 통해 데이터의 주요 방향성을 분석한다. PCA에서 사용되는 핵심 개념에는 고유값과 고유벡터도 포함된다. 고유값은 데이터의 분산을 나타내는 크기를 의미하고, 고유벡터는 그 분산이 최대화되는 방향을 나타낸다. 이러한 수학적 개념이 PCA의 기반을 이루며, 데이터를 차원 축소하거나 중요한 특징을 추출하는 데 사용된다.
추천 시스템에서도 이와 같은 수학적 원리가 사용된다. 추천 시스템은 행렬의 구조를 기반으로 사용자와 아이템 간의 관계를 분석하고, 차원 축소를 통해 숨겨진 패턴이나 관계를 발견한다. 이 과정에서 행렬 분해나 행렬 조작이 필수적으로 사용되며, PCA와 유사한 기법들이 응용되기도 한다. 따라서, 행렬에 대한 개념을 이해하고 있다면 이러한 데이터 처리 과정이나 알고리즘을 더 쉽게 이해하고 활용할 수 있다.
이와 같은 행렬 기반의 접근 방식은 단순히 추천 시스템뿐만 아니라, 거의 모든 데이터 처리 및 분석에서 사용된다. 데이터의 구조를 분석하고 패턴을 발견하며, 이를 기반으로 예측하거나 결론을 도출하는 대부분의 과정은 행렬 연산과 밀접하게 연결되어 있다. 그러므로, 행렬에 대한 기초적인 이해는 데이터 사이언스 전반에 걸쳐 매우 유용하다.
분석에 집중하고자 한다면, 우리가 사용하는 공분산, 상관계수, 고유값, 고유벡터는 요인분석이 가능한 방법론이다. 이러한 기법은 데이터 분석에서 필수적인 벡터 처리 기법이며, 변수 간 관계를 파악하고 데이터의 주요 특성을 추출하는 데 사용된다. 요인분석처럼 데이터를 이해하고 구조화하는 데 중요한 기반이 된다.
이런 인사이트를 얻을 수 있다.
파이썬 코드가 아닌 수학적으로 풀었을 때의 답이 나온다.
추알못 #2
http://tech.kobeta.com/wp-content/uploads/2021/02/30208.pdf
다양한 축소기법이 필요하다. 축소기법 하나로써 PCA가 고전적인 방법이다. 여기에서 기반이 되는 것이 행과 열이다.
PCA도 고전적인 방법이고, 굳이 고유값, 벡터변환은 잘 안한다. 그냥 PCA를 돌리고 끝낸다.
추알못 #3
http://tech.kobeta.com/wp-content/uploads/2021/03/30307.pdf
추천시스템
구글검색 ‘넷플릭스 추천시스템’, ‘당근마켓 추천시스템’
추천시스템 한번 정도는 날코딩 해보기를 권장한다.
정형데이터 - 머신러닝
비정형데이터 - 딥러닝 인공지능
인공지능을 해야 생성형 AI가 어떻게 만들어지는지 알수있다. 인공지능 중에 컴퓨터 비전이나 코딩으로 풀어나가는 것 1월에 작은 프로젝트 진행할 수도 있다. 이때 수학식 풀수도 있다.
코딩으로 승부하는 공모전이 DACON 인공지능 경진대회다.
https://dacon.io/competitions/official/236417/overview/description
<본선> 데이터·AI를 활용한 물가 예측 경진대회 : 농산물 가격을 중심으로 - DACON
분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.
dacon.io
추천시스템이 한가지 방법론으로 해결되는게 아니다. 위 리스트는 다 논문이다. 경영파트에서 말하는 말그대로 비슷한것을 추천해준다고, 기술쪽에서는 ML기반 해서는 자동화된 추천화된 시스템을 말한다. 용어의 혼재가 있어서 조심해야한다.
쏘카 굳이 추천하지 않는다. 추천시스템 같은거 안만든다. 어차피 빠른 시간안에 선택만 하면 되는데 추천 알고리즘 만드는 것을 하지 않는다.
작업1. 추천시스템 관련 각 회사 정책 찾아봄. 추천 알고리즘에서 중요한 요소에 대해 이해함.
작업2. 추천시스템 모듈 이용해서 추천시스템 구현해봄. 대표적으로 넷플릭스 SVD 추천시스템
작업3. 캐글에서 추천시스템으로 검색하여서 다양한 추천시스템 코드를 확인함 검색어 ‘Recommender System’
작업4. SVD 알고리즘을 날코딩으로, 수학적으로 해석해봄
선생님 1:1 보충수업
오차항 y=wx+b+ϵ
여기서 ϵ은 오차(term)로, 데이터와 모델 간의 차이를 설명하는 데 사용된다.
중심점에 가깝게 만들기 위해 데이터를 전체적으로 끌어당길 때.
중요한 것은 wx+b에서
1. x가 좋은 데이터인지 확인하려면
- x와 y간 상관관계가 있는지 (P-value가 0.05이하)
- 데이터가 충분히 다양한 정보를 제공할 수 있도록 적절한 분산을 가지고 있는지
- 모델의 잔차가 정규분포를 따르는지
2. w와 b 값이 유의미한지 확인하려면
- 각 계수의 p-value가 0.05이하인지
- 모델의 예측 y^와 실제 y의 차이가 적고, R2값이 높은지
<GPT 질문>
- wx+b 선형회귀에서 b의 역할은?
- bias는 꼭 있어야하나?
- w, b 구하는 공식
- w값과 b값의 유효성 평가는?
- x변수의 유효성 평가는?
- 사이킷런에서 선형회귀의 statmodels에 대한 설명과 필요성
- model.summary()를 출력하고 각 항목에 대해서 인사이트 도출해줘
- x변수에서 pvalue값이 0.5이상이 나오는 경우는?
- VIF 확인하는 방법
- 직장만족도 데이터를 이용한 선형회귀분석 OLS 코드를 제작해주고, 설명하고, 인사이트 도출까지
- 모델평가검증
- 이외에 선형회귀 다른 모델 2개만 더 추천해줘
'데이터 AI 인사이트 👩🏻💻 > KPMG 교육' 카테고리의 다른 글
비즈니스 애널리틱스 II (7) 분류 분석 및 평가 (0) | 2025.02.13 |
---|---|
비즈니스 애널리틱스 II (6) 회귀분석, XGBoost 등 최신 빅데이터 기법 (0) | 2025.02.13 |
비즈니스 애널리틱스 II (4) PCA와 차원축소, AutoML, 데이터스케일링, Fit & Transform (0) | 2025.02.10 |
비즈니스 애널리틱스 II (3) K-means, 유사도 계산, 단위 벡터 (0) | 2025.02.10 |
비즈니스 애널리틱스 II (2) 넘파이, 군집분석(K-means), 클러스터링 (0) | 2025.02.10 |