인프런 커뮤니티 질문&답변

오레이달리님의 프로필 이미지
오레이달리

작성한 질문수

파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1

3.12 Pandas에서 연산의 기본 작동 원리

데이타 길이가 길면 생각보다 처리하기가 어렵네요.

작성

·

255

0

먼저 강의 감사합니다.

강사님 덕분에 날로 발전하여 드디어 원팩터가 아닌 쓰리팩터까지 코딩하는 단계에 들어갔는데요.

3 factor 모델링 코드를 만들어 보는데,

위와 같이 시리즈를 오른쪽에 하나씩 붙이는 방식으로 하면

어마어마하게 칼럼수(백만개?)가 늘어나면서 메모리 사용량이 늘어나더라고요

칼럼을 붙이면서 속도도 점점 느려지더라고요

그리고 엑셀처럼 칼럼수에 한계가 있다고 그러더라고요

이럴 경우, 어떤 식으로 해야 할까요?

1. 칼럼 붙이기 하지 말고 로우 붙이기 형태로 작업한다?

   이렇게 하면 칼럼수 한계는 극복가능한데, 속도 느려지는 건 해결 어려울 거 같고. 

2. 어딘가에 가상공간에 시리즈들을 묶음 형태로 저장하고 나중에 한 방에 합친다? ( 근데 이건 제가 어떻게 하는지 전혀 모르겠고)

3. 한방에 계산한다?(메모리 한계에 부딪힐 거 같고)

도와 주세용 ㅎㅎ 

답변 3

1

DeepingSauce님의 프로필 이미지
DeepingSauce
지식공유자

안녕하세요!

결국 factor를 백만개의 단위에 해당하는 feature로 하신다는 말씀이 맞다면,

해당 기술은 메모리 사이즈를 늘리거나 피지컬 컴퓨팅 수를 늘려 spark와 같은 분산 컴퓨팅을 사용하는 방법밖에는 없어보입니다.

참고적으로 말씀드리면, 딥러닝 분야에서도 이미지 자체의 각 픽셀을 feature로 보는 Vision 분야에서도, 이미지를 최대한 축소하거나 Pool해서 64x64 형태로 줄여서 4096개의 feature를 사용합니다. 근데 이것도 매우 많다고 생각해서 이를 효과적으로 학습 할수 있는 방법 (convolution 등)이 나왔구요.  이런것을 감안 해서 생각해보면 100만개를 하나의 데이터 feature로써 테스트하는 것 자체가 매우 무리가 있지않을까 싶습니다.

감사합니다.

0

DeepingSauce님의 프로필 이미지
DeepingSauce
지식공유자

안녕하세요!

혹시 onefactors의 길이와, df_데이타모음_정규화 의 shape이 어덯게 될까요?

아마도 onefactors의 길이가 n이라고 하면, n_C_3개의 column이 추가가 될건데.... 

참고로 "모든 조합을 다 고려"하기 위해 위의코드를 작성하시는 거라면 오버피팅의 위험성이 매우 큽니다 ㅠ 해당부분도 우선 고려를 하시면 좋을듯합니다.

원팩터에서

대분류 수준의 재무제표 계정과목 20여개 을 가지고

여러가지 정규화(증가율, 멀티플 등등) 계산해 보니, 2000개 정도의 팩터가 생성됐고요.

그걸로 pctrank로 오분위 분석해서 의미있는 팩터를 골라냈더니, 200개 정도 나오더라고요.

요걸로 200 C 3 을 하니 대략 백만개 경우의 수가 정도가 나옵니다.  

저도 아무생각 없이 오버피팅하는 거 쓰는 거 싫어해서 원팩터에서 나름대로 많이 걸러 냈고요.

과거에 엑셀을 한 10년 썼는데, 그걸로 VBA로 3팩터 이렇게 작업해 보는 거 엄두도 나지 않아서

처음부터 원팩터에서 제가 원하는 기준 통과한 몇천개 에서 그냥 제가 자의적으로 줄여서 

20개 가지고 1000개 조합으로 해 봤는데, 그것도 돌리면 거의 2~3주 걸리더라고요.

파이썬은 속도가 느려지더라도 어찌됐든 한계가 없어 보이니까

이번 기회에 미지의 세계를 좀 더 알고 싶다는 생각에 무리해서 백만개까지 하고 싶은데. 너무 느리네요.

제가 하는 insert 방식으로 팩터를 데이타프레임에 추가하는 방식으로 하면 한 1주에서 1달까지 컴퓨터 켜 놔야 하겠네요.(정확한 시간은 예측이 안되네요. 인서트를 하면서 점점 느려져서) 

그것도 모든 계산을 횡이 아니라 종으로 코드를 바꿔서 하면서 종으로 붙여 나가야 겠네요

맞나요? 뭔가 효율적인 방법은 없나요?

 

0

DeepingSauce님의 프로필 이미지
DeepingSauce
지식공유자

안녕하세요!

혹시 백만개의 컬럼이 어떤식으로 계산이 되는지 간단히 설명 부탁드려도 될까요?

df_데이타모음_정규화의 shape도 궁금합니다!

아마도, one_factors의 갯수가 10이라고 하면, 10_C_3 (combination)으로 계산될 것 같은데.. one_factors의 length가 어느정도 되길래 백만개까지 나오는지 궁금하네요 ㅎㅎ

(그리고 아마도 모든 factor의 조합을 다 고려해서 백테스팅을 하게되면 거의 백퍼센트의 확률로 오버피팅 될거에요 ㅠ)

오레이달리님의 프로필 이미지
오레이달리

작성한 질문수

질문하기