본문 바로가기

728x90
반응형
728x90
반응형
분류 전체보기 319

요인분석(Factor Analysis) with R 요인분석도 역시 지난번 포스트 2020/09/09 - [머신러닝 with R/데이터마이닝 with R] - 주성분분석(PCA) with R 에서 다룬 주성분분석과 마찬가지로 설명변수의 차원을 축소하기 위한 방법론 중의 하나로 샘플에 포함되어 있는 잠재적 요인을 추출하는데 사용한다. 다만 주성분 분석의 경우 주성분으로 압축하기 위한 선형결합에서 오차항을 무시하지만(혹은 내포) 요인분석은 오차항을 독립적인 요인으로 간주하는 통계처리 방법이다. 즉 주성분 분석의 경우에는 총 분산 = 공통 분산이라고 간주하고 분석을 수행하고 요인분석에서는 총 분산 = 공통 분산 + 개별 분산이라는 가정하에서 분석을 수행한다. 여기서 에러텀은 개별 분산이라고 간주할 수 있다. https://leenaissance.site/리네상.. 2020. 9. 9.
주성분분석(PCA) with R 우리는 지금까지 회귀식을 만들기 위해서 최적의 변수조합이 무엇인가에 대해서 쭉 알아봤다. backward, forward, vif 등을 통해서 핵심변수들을 추출해봤고 이외에도 능형회귀, 라쏘회귀 등의 방법(변수선택)도 있다. 자 그렇다면 이렇게 자꾸 변수를 줄여나가는 이유가 뭘까? 그렇다. 앞서 언급한 것처럼 공선성으로 인한 회귀계수를 변동성이 커지고 그에 따라 모델의 신뢰도가 낮아진다는 점이다. 다시 말해 과대적합과 과소적합 사이의 딜레마를 어떻게 효율적으로 해결할 것인가가 가장 큰 관심이라는 점이다. 지금까지는 종속변수(결과변수)를 설명하기에 가장 적합한 변수조합을 찾아내는데 중점을 두었다면 이번에는 n 개의 변수를 n 보다 적은 m개의 상호독립적인 변수로 요약(여기서 요약된 변수는 기존 변수의 선형.. 2020. 9. 9.
중회귀분석의 변수선정 with R 지난번 포스트(2020/09/07 - [데이터마이닝 with R] - 삼성전자 중회귀분석 with R - 심화편)에서처럼 중회귀분석의 최적변수를 선정하기 위해 진행한 방법에 대해 엄밀히 따지자면 backward 방식이라고 볼 수 있다. 다만 지난 번처럼 변수의 유의성과 vif값을 통해서 임의로 진행하는 것은 상당히 효율적이지만 직관적 추론에 근거한 방식이라고 볼 수가 있다. 따라서 지난번에는 가정하기를 모델의 설명력이 다소 떨어지더라도(즉, 정보의 손실을 어느 정도 감수하더라도) 공선성만 줄일 수 있다면 과감하게 버렸다. 그러나 R function 중에는 이렇게 용감하지만 무식하게 변수들을 날려버릴 것을 염려하여 AIC에 기반한 stepwise 분석기법을 제공하고 있다. 자 이번 포스트에서는 forwar.. 2020. 9. 8.
삼성전자 중회귀분석 with R - 심화편 이전 포스트(2020/09/02 - [데이터마이닝 with R] - 삼성전자의 중회귀분석 with R)에서 우리는 상당히 만족스럽지 못한 결과치를 얻었다. 그 원인을 다시 한번 반복하면 우선 단위가 너무 천차만별이라는 점, 유의마한 변수를 고려하지 않고 수집한 모든 변수를 독립변수로 사용한 점 등이 있다. 자 그렇다면 이제부터는 단위를 표준화하는 방법에 대해 알아보자. 방법은 여러가지가 있을 수 있다. 예를 들어 변수들의 단위를 표준화하는 방법, 아니면 회귀계수의 단위를 표준화하는 방법(표준화 회귀계수) 혹은 우리가 다루는 자료는 시계열데이터의 형태이므로 로그차분 데이터를 이용하는 방법도 쓸 수 있다. 자 여러가지 방법 중에 우리는 가장 마지막 방법을 이용해보자. 지난 포스트에서 업종별지수 데이터와 삼성.. 2020. 9. 7.
Keras 를 이용한 텍스트마이닝 with Python 지난 포스트(2020/09/04 - [텍스트마이닝 with R & Python] - MySQL 데이터베이스 연동하기 with Python)에 이어서 지금부터는 데이터베이스에 저장된 종목코드와 종목을 불러와서 모든 종목들의 뉴스를 크롤링한 뒤 이를 토대로 텍스트마이닝을 수행해보자. 아래의 코드를 살펴보면 데이터베이스에 저장된 종목명을 가져와서 뒤에 주가전망이라는 키워드를 조합한다. 예를 들면 "삼성전자 주가전망"에 대해서 뉴스를 크롤링하고 정렬은 유사도순으로, 한번에 100건의 검색을 수행해준다. 다만 유의할 점은 종목이 대략 2천여개 정도 되기 때문에 그냥 경로에 집어넣으면 폴더가 상당히 지저분해진다. 따라서 파이썬 파일이 있는 경로에 textfile 이라는 새로운 폴더를 하나 생성해주고 거기다가 데이터.. 2020. 9. 4.
MySQL 데이터베이스 연동하기 with Python 지난 포스트에서는 삼성전자 한 종목에 대해서 뉴스크롤링을 하는 방법을 알아봤다. 그러나 우리가 필요한 건 뭐다? 그렇다. 빅데이터이다. 네이버에서 25,000건/일 사용량에 대해서는 특별히 제약도 두지 않는데 1건만 쓰기 아깝다. 그러니 이제부터는 MySQL(세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다. 위키백과)에 종목마스터(코스피, 코스닥 전체 유니버스)를 저장하고 해당 유니버스 전체를 크롤링하는 방법에 대해서 한번 알아보자. 그럼 첫 째, MySQL(dev.mysql.com/downloads/mysql/) 홈페이지에 .. 2020. 9. 4.
뉴스 크롤링 with Python 매번 느끼는거지만 테마주, 급등주 등 시장은 참 요란도 하다. 어닝서프라이즈(호실적)라고 해서 반드시 호재로 작용하는 것도 아니고 어닝쇼크(실적악화)라고 해서 또 악재로만 작용하는 것도 아니다. 증시격언에 소문에 사서 뉴스에 팔라는 말이 어떤 경우에는 정확히 들어맞기도 한다. 그래서 한 때는 텍스트마이닝 따위는 엄청 쓸모없는 짓이라 생각했었다. 비록 무쓸모일지도 모르지만 시장이 하락한다면 왜 하락하는지를 알아야 그나마 마음이 좀 진정되는 우리는 감정의 동물이다. 이미 벌어진 결과는 어쩔 수 없다고 하더라도 왜? 라는 질문에 대한 답이 없을 경우 더 불안해하는 것이 사람인지라 그런 의미에서는 뉴스를 분석해보는 것도 나쁘진 않을 것 같다. 그리고 드물기는 하지만 뉴스가 선행성 시그널로 작용할때도 있기에 뉴스.. 2020. 9. 3.
삼성전자의 중회귀분석 with R 단순회귀분석과 달리 중회귀분석(다변수)에 있어서 독립변수들 사이에 높은 상관성이 있거나 선형적으로 종속성이 존재할 경우(y=ax+bx1+c 와 같은 회귀식에서 독립변수 x, x1 사이에 높은 상관관계가 있거나 혹은 x=d+ex1 과 같은 관계식이 존재할 경우) 최소자승법에 의한 회귀계수의 분산이 커지고 그에 따라 추정값(예측값)의 정확도가 낮아지게 된다. 이러한 오류를 방지하기 위한 분석법으로 VIF(variance Inflation Factor)라는 것이 있는데 이 값이 통상 10 이상이면 다중공선성이 존재한다고 판단하고 주성분분석과 같은 방법을 통해 정보손실을 최소화하면서 부적절한 변수를 제거해서 모델을 더욱 정교하게 만드는 방법이 있다. 추후 머신러닝 편에서도 다루겠지만 PCA(Principal C.. 2020. 9. 2.
코스피지수의 회귀분석 with R 회귀분석이란? 어떠한 사건 (가), (나)의 발생이 서로 연관이 있고(비독립적이며) 상호간의 방향성이 있을 때 변수들의 인과관계를 가정한 수학적 모델링과 측정자료를 통해 계수를 추정, 미래를 예측하는 과정이다. (더 멋진 말이 있을 수 있다. 항상 정답은 아닐 수도 있다는 점 명심.) 머신러닝에서도 다루게 될 내용이지만 대부분의 supervised learning 에서는 iid(independent, identical distribute 즉 상호독립적이고 균일한 분포를 확률분포를 가정)를 가정으로 한다. 이와 유사하게 회귀분석에서 몇 가지 가정을 만족할 때 분석을 수행할 수 있다. 회귀분석의 선행조건(가정) : 원래는 측정자료의 검토 및 잔차의 검토 등을 통해 적합성검증을 수행하여야 하나 이번 포스트에서.. 2020. 9. 2.
R 통계분석 통계분석이란 그 목적과 방법에 따라 위와 같이 구분할 수 있다. (정답은 아닐 수도 있다. 통상적으로 그러하다는 뜻.) 자, 그러면 우리가 얻고자 하는 직관이나 통찰 즉 미래의 예측값을 구할 수 있는 방법들은 위의 표에서 노란색 회귀분석의 영역에 속한다. 그렇다면 적어도 이러한 회귀분석이 통계학에서 어떠한 목적과 방법에 의해 분석되는지 정도는 짚고 넘어가보자. 우선 첫 번째 카테고리를 보면 차이검정과 관계검정으로 구분이 된다. 차이검정이란 쉽게 말해서 두 표본집단간의 유의미한 차이가 있는가를 알아보는 방법이다. 집단의 갯수가 2개인가 혹은 그 이상인가에 따라 t검정과 분산분석으로 접근법이 달라지기는 하지만 결과적으로 보면 표본집단간의 차이를 알아보는 방법이다. 자 그러면 어떠한 경우에 이러한 차이검정이 .. 2020. 9. 1.
R 데이터 가져오기 요즈음 대부분의 증권사 HTS에서는 차트데이터를 Excel 로 보내는 기능을 제공하고 있다. 그렇게 해서 데이터를 컴에 저장을 해도 되긴 한데 이거 상당히 번거로운 작업이다. 자 이런 노가다가 하기싫어서 우리는 이베스트에서 제공하는 XingAPI를 구현했었다. 응? 뭔 소리지? 하는 분들은 오른쪽 카테고리에서 증권사API를 살펴보기를 바란다. 여기 첨부파일에도 저장되어 있으니 궁금한 사람은 다운받으면 OK! 자 api를 이용해서 우리는 클릭 몇 번에 지수데이터를 다 받았다. 그러면 우선 업종시계열 자료를 복사해서 새로운 excel 파일에 복사해서 붙여넣고 다른 이름으로 저장 -> 텍스트(탭으로분리), 텍스트(쉼표로분리), 엑셀저장 옵션을 이용해서 각 각 다른 확장자로 저장한 뒤 아래의 코드를 통해서 데이.. 2020. 9. 1.
R 기초문법을 배워보자 자, 우리가 하고자 하는 것이 뭐다? 그렇다 데이터 분석이다. 그렇다면 R 프로그램에서 데이터를 어떻게 인식하고 어떻게 처리하는지 아래의 코드를 통해서 알아보자. 변수와 데이터의 타입, 그리고 데이터의 구조 및 데이터프레임 추가적으로 리스트 정도만 알면 어지간한 통계분석에 있어서 막힐 일은 없다고 보면 된다. 아래의 코드를 복사해서 설치한 R에 붙여넣어도 되고 아니면 첨부된 r script 파일을 직접 열어도 상관없다. 2020. 9. 1.