댓글분석 웹페이지 개발 프로젝트와는 달리, 주가예측 프로그램 개발 프로젝트의 경우 모델링에 대한 고민이 꾸준히 필요하기 때문에, 모델에 대한 변동이 발생할때마다 추가적인 게시글을 업로드 할 예정입니다.
 
1.  현재 문제점
LSTM 모델을 사용하기 때문에, 전날의 데이터가 영향을 크게 끼쳐서 실제 종가의 증감과 거의 무관하게 전날과 비슷한 값이 모델의 예측 결과값이 됨. (즉,  loss가 가장 작아지는 값이 전날의 값이라고 계산하는 것) 따라서 모델의 정확도는 높지만(loss=0.01미만,R^2=0.98이상), 실제 데이터로 예측 시 증가하다 감소하는 구간,  감소하다 증가하는 구간을 판별하지 못하는 크게 유의미하지 않은 모델이 된 것으로 판단됨. 이에 대해 고민이 필요함.


2.  해결 방안 및 추가 기능
1)기존의 input값(시가, 고가, 저가, MSCI, KOSPI,  KOSDAQ 등)들을 모두 Stationary하게 변환(‘오늘 값-전날 값’  으로, 변동 값을 볼 수 있도록) -> 평균, 분산, 공분산이 비교적 일정한 데이터로 전처리
2)기존에 학습시키던 예측 값을 ‘종가’값이 아닌 +(전날보다 증가), -(전날보다 감소)로 Binary 한 항목 값으로 변환해 학습시켜서, 더 유의미한 모델이 될 수 있도록 함. 이후 모델 평가시에도 +로 예측하여 +인 것, -로 예측하여 -인 것의 Accuracy 확인(지금의 loss보다 더 의미 있는 지표가 될 것)  결과는 +or-로 반환(추후 오를 확률/내릴 확률 계산하여 반환)
3)input종목에 대한 SNS언급량(네이버금융_종목토론방)을 가져와 긍정 부정을 판별하고, 결과에 대해 가중치를 두어 추후 모델의 output값과 더해 최종 예측 결과의 정확도를 높임.
4)기본 데이터의 기본 모델에 대한 정확도, 상관 계수 추세로 구분된 각 군집 데이터를 각 군집에 최적화된 모델에 넣은 정확도의 평균, 종가 추세로 구분된 각 군집의 데이터를 각 군집에 최적화된 모델에 넣은 정확도의 평균을 구해 비교 후 의사결정
추후)  노이즈 제거 관련 논의하기
 

3.  역할 분담(~9.26(일))
1)한 종목에 대해 SNS언급량 긁어와서 데이터를 쌓은 후,  긍정/부정 판별(네이버금융-종목토론방-글 댓글-최근1000개)
2) input값을 stationary하게,  output값을 binary하게 변환해서 학습시킨 후,  Accuracy/loss확인 및 개선시키기
3) 모델 개선에 도움이 될 만한 추가 외부변수를 생각하고, 해당 변수의 10년치 데이터 가져오기(약5개정도,재량적으로)

9.6일,

일전에 면접을 본 이후로는 처음으로 교수님과 미팅을 했다.

방학동안 연구 주제를 세부적으로 구상해가려고 했었는데, 교수님께서도 따로 생각해두신 연구 주제가 있으시다고 하셔서 간략하게만 조사해갔다. 대강 말하자면, 이번에 하고싶던 분야가

"종양미세환경에서의 면역항암 치료예측 인공지능 바이오마커(조직 분석 시스템) 연구 : 데이터 기반의 이미징 바이오마커를 통해 의사의 진단 및 치료과정의 정확성과 효율성 향상"

이었다. 교수님께서는 데이터 수집이 다소 어려워보일뿐 충분히 할수있는 분야라고 하시며 교수님께서 생각해두신 주제와 고민해보라고 하셨다. 교수님께서 생각해두신 주제는,

"뉴로 사이언스 분야 논문들을 분석해 향후 영향력이 클 논문을 판별/예측 하는것"

이었다. 그래프역학/네트워크 분석 등을 사용하는 연구인데, 이미 '생명공학'분야의 논문을 대상으로 같은 주제를 분석한 연구가 있어, 그 연구를 벤치마킹하자는 것이었다. 주제를 내가 원하는 주제인 '뉴로 사이언스'분야로 변경하고, 모델 알고리즘을 뜯어보며 이해한 후 모델을 개선시키고, 기존 모델과 내 모델의 기존 데이터를 넣었을때의 정확도와, 뉴로 사이언스 분야의 논문들을 넣었을때의 정확도를 비교하려하였다. 해당 연구에서는 데이터셋 수집 및 저장 툴, 코드가 저장되어 있는 깃허브 등을 모두 제공하기에 가능한 것이었다.

그런데, 막상 깃허브의 폴더 및 파일들을 확인하니.... 중요한 코드들이 다 빠져있었다. 해당 연구를 진행하며 만든 사이트의 프론트엔드에 쓰이는 파일들만 개방되어있고, 모델의 코드를 포함해 중요한 내용이 없었다. 또, 시범을 돌려볼 수 있도록 제공한다는 예시 데이터셋과 예시 모델, 파라미터들도 전송 기간이 만료되었다며 받을 수 없었다. 무슨 일인지 만들어둔 사이트는 정상적인 작동이 되고 있지 않았다. 아마 연구 논문을 게재한 후 일정 기간이 지나 내린것 같았다.

 

9.10일,

기존 논문 벤치마킹의 문제점을 포함한 기존 연구에서 쓰인 분석 기법, 데이터 수집 및 저장 툴 등등을 더 세부적으로 조사해서 교수님께 보여드리니 교수님께선 핵심 코드가 없다면 굳이 우리가 이걸 할 필요가 없을것 같다며, 좀 더 생각해보신다고 하셨다. 아마 이 주제는 폐기하고 다른 주제를 생각해봐야할 것 같다. 캡스톤 디자인 주제도 마침 생각해둬야하니, 내일 오래간만에 도서관에 가려한다. 도서관에서 책도 읽고, 인터넷으로 관련 저널 및 논문 서칭도 하고, 마침 알고있는 인공지능 관련 연구 업무를 하시는 멘토님께 조언도 구해봐야겠다. 다음주 월요일까지 캡스톤 디자인 주제 후보 2개, 다음주 목요일까지 개인 연구 주제 후보 2개정도 생각해 둘 생각이다.

연구 주제 선정과 함께 교수님께서 내게 주문하신 당분관의 활동은 다음과 같다.

1. 도메인 지식 습득

2. 최근버전 리뷰 페이퍼 작성 

3. 맡은 주제 연구 진행--->  주제 고민으로 변경

4. 각종 뇌영상 데이터 이해 후 전처리 과정을 위한 각종 SW 학습

최신 버전 리뷰 페이퍼를 작성하다보면 자연히 도메인 지식은 습득될 수 밖에 없고, 주로 분석에 사용되는 각종 SW의 명칭 정도는 익힐 수 있을테니 리뷰 페이퍼 작성먼저 할 생각이다. 주제 고민과 함께 기존에 발행된 리뷰 페이퍼부터 예시로 읽고, 주제 선정 및 리뷰페이퍼 작성 완료 후 뇌영상 데이터 이해 및 각종 SW 학습을 하며 연구를 진행해야겠다.

이번주의 나와 저번주의 나는 달라야한다. 파이팅.

 

 

---> 논문이 출판되기전까지 학부연구 카테고리는 당분간 게시를 중단합니다!! <---

 

I. Data 수집 관련

* collected In Neo4j 3.5 database

그래프 데이터베이스 관리 시스템. 그래프 저장 처리기능을 갖춤. 활용을 위해서는 HTTP 엔드포인트를 사용하거나 바이너리 볼트 프로토콜을 사용. Cypher Query Language사용. Cypher언어 공부필요

* The data analyzed in study :  https://www.lens.org/, https://docs.api.lens.org

여기서 API 통해 데이터 수집 가능. 검색된 메타 데이터를 사용해 구성함. Lens API PubMed, Crossref, Microsoft Academic, Core, Pubmed Central 에서 제공.

42개의 biomedicine 저널의 3백만개의dataè 1980~2020 범위 -> 160만개의 data 사용.

* The data generated during study : scalingscience.ai 

저널 작성자가 실제로 원하는 토픽에 대한 결과를 있게끔 만들어둔 웹페이지.

현재 어떤 토픽을 입력해도 Database Timeout 이라며 분석이 되지 않음.

 

II. Code확인 관련

conducted using node2vec, custom code

*Link : https://github.com/jameswweis/delphi    

approach on a sample set of data via an Jupyter Notebook provided in a Docker container

전반적이면서 간단한 분석 예시 notebook 폴더에서 확인가능. 폴더는 scalingscience.ai 웹페이지를 만들기위한 프론트엔트 파일들이며, 실제 모델에 사용된 분석 코드가 없음. 시범용으로 올려뒀다는 Dataset, 모델과 파라미터값들은 전송 기한이 만료되어 받을 없음.

시각화 application : Node.js npm 사용해 Google Firebase 배포되도록 구성되어 제공. 필요한 종속성은 해당 버전의 번호와 함께 package.json 나열되며, 분석할 메트릭과 설명은 config.json에서 찾을 있음

----->연구를 진행한다면 분석 모델의 실제 코드에 대한 참고를 없어 모델 코드를 완전히 새롭게 만들어야함. 기존의 논문에 적용된 모델과 데이터를 받을 없기때문에 성능 비교또한 불가능.. (한다면 논문에 기재된 정확도를 기준으로 해야하겠지만 같은 데이터셋으로 비교할 없기때문에 의미가 없어보임 그러나 사용할 데이터 수집 저장 전반적인 연구의 '흐름' 대해서는 도움을 받을 있음.

 

III. Analyze 관련

Dataset)

Data Lens API에서 가져오기 때문에 이미 명확하다고 있으나, 추가적으로 명확하게끔 하는 기법 도입. 가령 node 저자라면, Microsoft Academic ID ORCID id 등으로 hash. 이러한 해시맵을 사용해 중복 ID 없는지 모든 저자의 노드를 식별하고 병합함. , 모든 edge 대해 인용된 논문이 인용한 논문 전에 발행된게 맞는지 재확인함. 모든 저널의 노드에 대해 중복이나 복제가 존재하지 않는지 확인함.

Graph)

Heterogeneous knowledge graph network. 그래프에서 논문은 노드로, 인용은 노드 사이의 directed edges 표현됨. 저널과 연도는 노드로 표시되며, 발행 장소와 발행 연도는 edges 표현. 저자도 노드로 표현. 추가적인 entity-level 메타데이터들은 corresponding node 저장됨.

Metric)

Biotechnology knowledge graph를 사용해 기계학습 파이프라인의 기능으로 사용하는 출판, 저자 매트릭의 시계열을 계산함. 메트릭은 1)논문 수준 메트릭, 2)저자 수준 메트릭, , 3)저널 수준 메트릭, 4)네트워크 수준 메트릭의 4가지 기본 범주로 나뉨. 각 메트릭에 대해 그래프의 구조를 사용하여 원하는 값을 계산하는 알고리즘 구현. (일반적으로 사용되는 메트릭과, 강조 표시된 작업에서 사용된 기능에서 수집된 메트릭을 통해 구현함)

1)    논문 수준. : 각 논문에 대해 1980~2020 사이 출판된 데이터세트의 논문에서 인용한 논문 수를 계산. 이 계산을 이용해 각 논문의 다른 인용 기반 속성을 계산함. (총 논문 수, 총 인용 수, 연간 인용 수 등)

2)    저자 수준 : 각 저자에 대해 이전예 계산한 논문 수준 메트릭을 집계해 관심 있는 추가 저자 수준 메트릭 도출. 저자의 h-index, 첫번째 논문의 출판 이후 연도, 총 논문 수, 인용 횟수 등이 포함됨.

3)    저널 수준 : 그 후 논문수준, 저자 수준 측정항목을 모두 사용해 각 저널에 대한 집계된 측정 항목 계산. 저널의 논문 수, 최대 인용 횟수와 같은 측정항목 포함. 각 저자에 대해 각 저널 수준 매트릭에 대해 해당 저자가 출판한 모든 저널의 최대값, 평균값, 최소값이 저자에게 다시 집계됨.

4)    네트워크 수준 : 위의 인용 및 문헌 기반 메트릭은 그래프의 구조와 관계의 다양성을 포착하기에 충분하지 않을 수 있음. 따라서 비지도 방식을 이용해, 해당 논문이 존재하는 각 연도에 대해 방향성 설정 및 80단계 랜덤 워크, node2vec알고리즘을 사용하는 로컬 인용 네트워크 구조를 기반으로 하는 각 논문에 대한 연속적인 특징 표현을 학습시킴.

위의 세부적인 내용은 아래의 테이블에서 확인 가능함.

 

 

Machine Learning)

위에서 나열된 metric을 입력data로 하는 기계학습 파이프라인 개발.

1-    네트워크 데이터베이스에서 데이터를 추출해 논문 수준으로 집계

2-    각 논문에 대해 출판 연도부터 출판 연도 5년후까지 최소 1번 이상 인용된 모든 논문에 대해 위에서 설명한 모든 메트릭을 계산함.

3-    저자 정보가 누락된 모든 논문을 제거해 약 150만개(원래 160만개였음)의 출판물을 남김

4-    영향력 있는논문 정의 : 출판 후 5년 후에 해당 연도의 전체 점수 중 상위 5%에 시간 환산된 pageRank 점수가 있는 경우

5-    추적할 특정 연도를 입력하면, 특정 연도로부터 5년 이후 까지의 모든 데이터를 불러와 훈련(75%) 및 테스트 데이터(25%)셋으로 분리. 이 때, 합성 소수 오버 샘플링을 적용해 균형 잡힌 훈련셋을 생성함.

6-    측정된 값을 직접적으로 비교할 수 있도록 계산된 메트릭에 대한 사전 처리를 수행함.

7-    Train data가 주어지면 가능한 모델 매개변수의 그리드에서, 훈련 데이터에 대한 교차검증을 수행해 최적화할 때 기계 학습 모델을 훈련함. 본 연구에서는 랜덤 포레스트 분류기를 사용함.(감소된 과적합 위험, 예측 분산의 잠재석 감소 및 비선형 관계를 캡쳐하는 능력 때문.)

8-    네트워크 수준 기능이 모델에 상당한 차원을 추가하기 때문에, 이러한 기능을 포함해 모델의 성능이 향상되거나 저하되는지의 여부를 검사하고 가장 성능이 좋은 모델을 선택

9-    보류 테스트 데이터에 대해 이전에 계산된 실제 영향 레이블과 영향 예측을 비교해 모델의 성능을 평가함.

 

->최종 모델 : 780만개 이상의 노드, 2 100만개 관계  38억개 계산된 매트릭

-> 과학 논문의 자금 조달 포트폴리오 구축을 지원하는 도구 개발. DELPHI(Dynamic Early-warning by Learning to Predict High Impact)

 

p.s. 분석방법요약

데이터수집/병합 -> 동적/이질적 그래프로 구조화 -> 다양한 정량적 매트릭 세트 그래프에서 계신 저장 -> 반복해 기계학습 파이프라인 매트릭 구조에서 차등패턴 학습 -> 결과확인(생명공학 연구의 가장 유망한 5% 분류기반 접근방식을 통해 채택(회귀기반 방법과 함께사용가능), 영향력 있는 연구에 대한 조기 경고 생성 모델), + 시간에 따른 논문 그래프의 저차원 표현을 결정하기위해 비지도학습 사용.

 

저널 링크 : https://www.nature.com/articles/s41587-021-00907-6#Abs1 (읽으려면 구매 혹은 대여 필요)

Learning on knowledge graph dynamics provides an early warning of impactful research

James W. Wei Joseph M. Jacobson / Nature Biotechnology (2021)


주제 :

생명공학 연구 저널들의 시계열 데이터를 그래프를 기반으로 머신러닝하여 미래에 영향력이 연구를 찾는 .(네트워크 구조/시간적 역학을 통합-- 그래프 역학에 대한 학습)

내용 :

데이터셋 :  40년간(1980 - 2019) 학습 데이터를 토대로 분석논문, 저자, 소속, 인용, 등을 포함한 29개의 feature사용(모두 반드시 사용X. 사용해 성능이 향상되는 경우에만 기계학습 파이프라인에서 사용). 780만개 이상의 노드, 2 100만개 관계  38억개 계산된 매트릭.

분석 방법 : 데이터수집/병합 -> 동적/이질적 그래프로 구조화 -> 다양한 정량적 매트릭 세트 그래프에서 계신 저장 -> 반복해 기계학습 파이프라인 매트릭 구조에서 차등패턴 학습 -> 결과확인(생명공학 연구의 가장 유망한 5% 분류기반 접근방식을 통해 채택(회귀기반 방법과 함께사용가능), 영향력 있는 연구에 대한 조기 경고 생성 모델).

+ 시간에 따른 논문 그래프의 저차원 표현을 결정하기위해 비지도학습 사용.

결과 :

과학 논문의 자금 조달 포트폴리오 구축을 지원하는 도구 개발. DELPHI(Dynamic Early-warning by Learning to Predict High Impact)

해당 저널의 목차 :

제목 – 저자 – 요약 - 실제 문제 현황 - 간략한 개선 방안 – 현행 연구의 비판점 – 새로 고안한 진화된 기법 소개(데이터세트구성분석기법분석 목적 결과기대효과 간략히) – 결과 소개(실제 모델 적용시의 결과소개 기존 모델과의 비교) – 논의 소개 (분석 기법의 추가적으로 논의해볼수있는 부분추가적인 활용 방안모델 개선 방안기대효과끝맺음말) – 참조 – 행동양식 (세부적인 분석 방법에 대한 설명

 


 

연구방법 관련

환자 대조군 연구 : subjects  질병 유무에 따라 분류해 배경인자나 위험요인에 대해 노출된 정도를 상호 비교

코호트 연구 : subjects  노출여부에 따라 분류하여 일정 기간 집단의 질병 발생 빈도를추적조사해 위험요인에 대한 노출과 특정 질병발생의 연관성을 규명하는

-      Follow-up period : 연구대상자를 follow up 하는 기간

-      Study period : 연구자가 연구를 수행하기 시작하는 시점

~>  시점의 선후관계에 따라 Prospective study retrospective study 나눔.

-      Prospective (전향적 연구) : Study period follow-up period 전에 위치.

-      Retrospective (후향적 연구) : study period follow-up period 이후에 위치.

 

Graph 관련

-      Homogeneous / Heterogeneous Graph
Homogeneous graph : 그래프의 모든 노드가 같은 성질을 갖고 있는 그래프예를 들어인물 관계도가 있다면 모든 노드는 사람을 의미하는 homogeneity 갖는다.
Heterogeneous graph : 위와 반대로 그래프의 노드가 여러 종류의 성질을 가지는 그래프예를 들어 영화-유저 그래프는 어떤 노드는 영화이고어떤 노드는 유저를 의미하는 heterogeneity 갖는다.

-      Dynamic Graph
Dynamic graph :
그래프의 구조는 같지만  node feature edge feature 정보가 시시각각 변화하며 들어오는 경우.  그래프의 구조는 동일한 시계열 데이터를 해석해야하는 경우를 말한다. Spatiotemporal analysis(시공간 분석) 해야한다.

요 약 본
작품 정보
프로젝트명 국문 빅데이터를 이용한 주식 가격 예측 시스템 만들기
영문 Stock prediction program using big data
작품 소개 - 빅데이터 처리기술과 인공지능 기술을 이용하여 주가를 예측 및 분석하는 시스템
대신증권 open API 데이터를 이용하여 시가총액, 영업이익률, 환산 주가, 외국인 보유 비율, 오늘의 유망주(거래량, PER) 상위 10위를 출력한다.
종목의 이름 혹은 코드를 입력하면 미리 구현된 모델에 input되어 주가를 예측해 출력한다. 해당 종목의 시가총액, 영업이익률 등 투자정보와 종가그래프를 출력한다.
작품
구성도
작품의
개발배경 및 필요성
기술적 분석, 기본적 분석, 데이터 분석, 통계 기반 분석 등 주식 가격을 예측하려는 움직임은 꾸준히 있었지만 예측의 정확도는 크게 높지 않았다. 최근의 인공지능 기술은 알고리즘의 개선, 빅데이터 처리기술의 발달, 하드웨어의 발달로 매우 빠른 속도로 발전하고 있다. 이에 본 프로젝트에서는 발전한 인공신경망 알고리즘과 최신 ICT 기술을 이용하여 주가를 예측하고, 최적의 수익 창출 알고리즘을 찾아 예측의 정확도를 보다 높이려 한다.
작품의
특장점
오늘의 유망주, 시가총액 등의 다양한 지표에 대한 상위 종목을 참고할 수 있어 매매/매도시 더 신중할 수 있다. 전 종목의 상관 관계분석 및 군집분석을 적용한 종가 데이터의 세분화, 각 군집에 최적화되어있는 각 모델, 체계적인 알고리즘으로 더 정확한 예측값을 출력할 수 있다.
작품
기능
- 최적의 주식 매매, 매도 시점 포착을 위한 데이터 분석 결과 출력
- 항목별 상위 10위 종목을 제시하여 희망하는 항목에 대한 직관적인 지표 제공
원하는 종목의 기대 주가 및 추가 투자정보 제공
- 실제 주가 데이터와 예측 데이터 간의 차이 분석 및 제시
작품의 기대효과 및 활용분야 - 사용자가 가장 집중적으로 보는 상위 기업 지표, 각 종목의 투자정보와 더불어 주가예측 서비스를 도입하여 매매전략 수립에 여러 시각의 도움을 줄 수 있다.
종목을 군집화하고 각 군집에 최적화된 예측모델을 만들어, 타 주가 예측 프로그램보다 더 높은 예측 정확성을 기대할 수 있다.
- 주식 매매 서비스 : 객관적 지표 외에 사용자가 선택적으로 열람할 수 있는 추가적인 정보로 주가예측 결과를 보여줄 수 있다.

 

본 문

I. 작품 개요

1. 작품 소개

1) 기획의도

- 주식 시장의 수치화된 정보, 지표를 분석하는 알고리즘을 설계, 구현하고 정보를 빅데이터 처리기술과 인공지능 기술을 이용해 주식가격 예측시스템을 구현한다.

- 지표들을 분석할 수 있게 설계한 알고리즘들을 실제로 테스트하고 성능을 비교 하여 최적의 알고리즘을 채택하여 적용한다.

- 분석한 주식가격정보를 쉽게 알아볼 수 있는 서버를 구축하여 사용자의 접근성 을 높인다.

2) 작품 내용

- 대신증권 open API를 통해 전 종목의 10년치 시가, 고가, 저가, 종가, 거래량, 시가총액, 외국인보유비율, 기관거래량, 코스피지수, 코스닥지수, MSCI, 다우존스지수, 나스닥, 항셍지수 데이터를 수집하고, SQLite를 이용해 DB를 구축한다.

- 종가 데이터에 대한 각 항목의 데이터를 상관관계 분석하고, 군집분석을 통해 종 가에 영향을 끼치는 요소가 비슷한 종목끼리 묶어 학습 데이터로 넣는다.

나눠진 5개의 군집에 대한 5개의 모델을 수립한다. 각 모델의 input data로는 군집 내 모든 종목에 대한 항목별 상관계수 평균이 일정값 이상인 항목만을 input 데이터로 선택한다.

군집 별 input데이터를 선정하고, 데이터 전처리 Tensorflow를 이용한 예측 모델 구현을 거쳐 주식 가격을 예측한다. 각 군집 별 최적의 알고리즘을 찾아 정확도를 높인다.

PyQt를 이용해 GUI 프로그램을 개발해내일의 주식프로그램을 만든다.

내일의 주식프로그램에 다양한 항목에 대한 상위 10위의 항목을 출력하고, 분석을 원하는 종목의 이름/코드를 입력시 예상 주식 가격 및 기본적인 투자정보를 제공한다.

3) 정의

- 시가총액, 영업이익률, 환산주가, 외국인 한도 소진율, 오늘의 유망주(거래량, PER 기준)에 대한 상위 10위 종목을 보여주어 사용자가 쉽게 유용한 정보를 얻을 수 있다.

- 기업명 혹은 기업코드를 입력했을 때 주가(종가) 그래프 및 예측된 주식 가격을 포함해 해당 종목의 거래량, 시가총액, 외국인 소진율, 환산주가, 영업이익률, PER 등의 투자 지표를 출력해주어 원하는 종목에 대한 다양한 투자정보를 얻을 수 있다.

 

2. 작품의 개발 배경 및 필요성

1) 작품 제작 동기

- 코로나로 인해 주식 시장이 위축되어있는만큼, 지금 우리에게는 다양한 변수 기반 분석과 신뢰할 수 있는 참고 지표가 필요하다.

- 인공지능의 강점은 방대한 데이터 세트 내 상관관계를 파악하는 능력이다. 이러한 상관관계는 시스템적 위험의 모니터링에 유용할 수 있다.

- 현4차산업혁명의 핵심기술인 빅데이터와 인공지능기술이 급격히 발전되었기 때문에, 이를 활용해 보다 발전된 알고리즘을 구현할 수 있다.

2) 작품 제작 목적

- 발전된 알고리즘을 이용한 예측 모델링을 통해 보다 정확한 예측결과를 얻을 수 있도록 한다.

- 투자자가 주목하는 여러 항목에 대한 상위 10위 종목 및 사용자가 분석을 원하는 종목에 대한 주가 그래프, 예측 주가, 그 외 여러 투자 정보들을 제공해 사용자가 더욱 쉽게 정보를 얻을 수 있도록 한다.

 

3. 작품의 특징 및 장점

1) 특징

- 단순히 예측모델만을 만드는 것이 아니라, 상관 관계분석-군집분석-군집별 예측 모델 수립을 통해 학습 데이터와 알고리즘을 최적화 함으로써 정확도를 높일 수 있다.

- CNN, LSTM, DNN 등의 알고리즘을 복합적으로 활용하며 모델을 개선시켜 예측 의 정확도를 높일 수 있다. 데이터 전처리, Early stopping, Model checkpoint 등 의 기법을 활용해 과적합을 피하고 가장 좋은 효과를 내는 모델을 얻을 수 있다.

- 단순하면서 깔끔한 UIPyQT 툴을 이용하여 프로그램을 만들고 필요한 정보만을 보여줌으로써 사용자의 접근성을 높여준다

 

II. 작품 내용

1. 작품 구성도

1) 서비스 구성도

2) 기능 흐름도

 

2. 작품 기능

1) 전체 기능 목록

구분 기능 설명 현재진척도(%)
S/W 데이터 수집 기능 대신증권 api(CybosPlus)를 이용해 KOSPI, KOSDAQ 전 종목의 주가 데이터를 수집한다. 100%
실시간 주가 정보 조회 실시간 주식 데이터를 가져와서 시시각각 동향을 출력하여 사용자에게 제공한다. 100%
항목별 상위 10위 제공 시가총액, 오늘의 유망주(거래량, PER 기준), 영업이익률, 환산주가, 외국인 한도 소진율에 대한 상위 10위 종목들을 한눈에 볼 수 있도록 한다. 100%
주식 가격 예측 및 투자정보 제공 종목명/종목코드를 사용자에게 입력받은 후 해당 종목의 분류를 확인하여, 각 군집에 해당하는 모델에 input해 주가를 예측한다. 해당 종목의 주가 그래프 및 세부 투자정보를 추가 제공한다.
- 완성 가능 시점 : 1030일 예상
40%
데이터 업데이트 및 모델 개선/평가 수집한 데이터 및 예측한 데이터를 저장해 모델의 정확도를 평가하고, 모델을 개선한다.
완성 가능 시점 : 1010일 예상
40%

2) S/W 주요 기능

기능 설명 작품실물사진
주요 항목에 대한 투자정보 제공



- 항목별 상위 10위의 종목을 제시하여 희망하는 항목에 대한 직관적인 지표를 제공함.


거레량, PER 지표를 활용 분석해 오늘의 유망주를 제공하는 등 투자 지표를 활용하여 제공함.



주가 예측 및 세부 투자정보 제공

- DNN, CNN, LSTM 등 다양한 알고리즘을 이용해 주가를 예측하고, 각 알고리즘의 정확도를 비교하여 가장 적합한 알고리즘을 채택함.


- 예측된 주식 가격을 출력하고, 해당 종목의 추가적인 투자정보와 그래프를 제공하여 사용자의 의사결정을 도움.

 

3. 주요 적용 기술

- 과거 내부 변수 데이터 수집 : 대신증권 Cybosplus API를 이용하여 모든 종목의 과거 10년 데이터 수집(시가, 고가, 저가, 종가, 거래량, 시가총액, 외국인보유비율, 기관거래량)

- 과거 외적 변수 데이터 수집 : Investing.com과 대신증권 API를 이용하여 모든 종목의 과거 외적 변수 10년 데이터 수집(코스피지수, 코스닥지수, MSCI, 다우존스지수, 나스닥, 항셍지수, 금리)

- 상관계수 (Correlation coefficient) 분석 : 수집한 주가 데이터와 외적변수 데이터를 바탕으로 종가에 대한 각 변수 데이터의 상관관계 분석 (pearson 상관계수 분석, kendall 상관계수 분석, spearman 상관계수 분석을 모두 진행하여 비교 분석)

- 군집(Clustering) 분석 : KMeans clustering을 이용하여 영향을 끼치는 상관계수 별 군집화 (해당 종목에 영향을 끼치는 상관계수 분류), KMeans clustering 및 시계열 군집 분석을 이용하여 상관계수 수치 동향 군집화 (군집 결과에 따라 각기 다른 주가 예측모델 도입) scikit learntslearn을 사용하여 KMeans clustering을 진행한다.

- 주가 예측 모델 {

데이터 노이즈 제거 : 전처리된 데이터를 Christian-Fitzgerald Band Pass Filter (이하 cf 필터를 이용하여 노이즈를 제거한 후, 주가 데이터를 3차원 shape으로 변환하여 CNN 모델에 입력하여 노이즈를 재차 제거

주가 예측 모델 : 양방향 LSTM 모델, GRU 모델을 이용하여 앞서 노이즈를 제거한 과거 주가데이터와 상관관계가 높은 외적변수 데이터를 함께 학습시킨다. (학습 과정에서의 과적합을 피하기 위해 dropoutdense를 이용한다.)이때 파라미터는 앞서 분류한 각 군집에 대해 최적화된 파라미터를 사용한다.

모든 예측 모델은 tensorflowscikit-learn의 모듈을 이용한다. }

 

4. 작품 개발 환경

구분 상세내용
S/W
개발환경
OS Windows
개발환경(IDE) Anaconda Sypder5 Pycharm
개발도구 python 3.9.6, QT designer
개발언어 Python
기타사항 open API를 통한 데이터 수집 (python 3.7 32bits), 데이터 전처리 및 예측모델 개발 (python 3.8 64bits)
프로젝트
관리환경
형상관리 GitLab
의사소통관리 GitLab, 카카오톡, Google meeting, 오프라인 미팅
기타사항 코로나 19에 따라 오프라인 미팅이 불가할때는 Google meet로 온라인 미팅 진행

 

5. 기타 사항 [본문에서 표현되지 못한 작품의 가치(Value)] 및 제작 노력

- 상관계수분석을 통해 각 종목에 과거 주가 데이터의 동향과 상관관계가 짙은 내적, 외적 변수를 파악하여 학습시킬 데이터셋을 각 종목마다 다르게 설정하고, 상관관계 동향에 따른 군집분석을 통해 다른 예측 알고리즘 모델로 해당 데이터를 학습시킴으로써 각 종목에 최적화된 예측을 하도록 한다.

- 상관계수 분석과 군집 분석은 최적화된 예측을 할 수 있도록 할 뿐만 아니라, 주가 동향이 비슷한 종목을 구분하고 그 상관관계를 알아볼 수 있다는 점에서 가치를 지니고 있다.

- 사용자의 매매전략에 도움을 주기 위해 주가 예측값을 비롯하여 대박주, 환산주가, 시가총액 등 여러 항목에 대한 상위 기업을 제공하고 검색한 기업에 대한 추가 투자정보를 제공한다. 이를 통해 사용자는 편리하게 다양한 정보를 접하여 매매전략을 세울 수 있게 된다.

 

III. 프로젝트 수행 내용

1. 프로젝트 추진 과정에서의 문제점 및 해결방안

1) 프로젝트 관리 측면

- 데이터베이스 관리 : 주식 데이터 용량의 문제로 데이터베이스 공유 및 공동 관리에 문제가 있었다. 이를 해결하기 위해 gitlab을 통해 코드를 공유하고 온라인 피드백을 통해 각자의 테스트 데이터베이스를 다듬을 수 있었다.

- 오프라인 미팅 제한 : 코로나19 상황으로 오프라인 미팅에 제약이 있었다. 카카오톡 채팅방을 통한 활발한 소통과 매주 온라인 화상 회의를 진행하여 진행상황을 공유하여 오프라인 미팅의 한계점을 극복하였다.

2) 작품 개발 측면

- 분석 모델의 한계 : 3000개의 종목에 대해 같은 분석 및 주가 예측 모델을 사용하니 training settest set의 설정에 따라 예측결과가 상이하게 도출되었다. 이를 해결하기 위해 training attribute 간의 상관계수를 분석하고 이를 토대로 군집화하여 군집에 따라 각기 다른 분석 모델을 사용하여 예측의 정확성을 높혔다.

- 다차원 데이터의 군집화 : 일반적인 군집분석의 방법인 KMeans clustering을 사용하여 데이터를 군집화하니 다차원 데이터의 군집화가 잘 이루어지지 않았다. 이를 해결하기 위해 시계열 군집화를 사용하여 다차원 데이터를 그래프화 시켜 군집화를 진행하였다.

- 과거 데이터 노이즈 문제 : 과거 10년의 종가 데이터를 학습시키는 과정에서 노이즈로 인한 후행성 문제가 발생하여 예측의 정확도가 떨어지는 결과를 가져오게 되었다. 이를 해결하기 위해 데이터 전처리 과정에서 CF filter를 사용하여 노이즈를 제거하였다.

- 수집 데이터 한계 : Dashin Cybosplus Open API를 이용하여 과거 주가데이터의 방대한 양을 수집하는 것에는 request의 한계가 있었다. 일반적인 종목의 주식 변동 주기를 기준으로 과거 10년의 데이터를 가져오도록 하였다.

 

2. 프로젝트를 통해 배우거나 느낀 점

- 방대한 양의 데이터를 수집 및 관리하고 전처리하는 과정에서 빅데이터를 효율적으로 다루는 방법을 터득할 수 있었다.

- 데이터간의 상관계수를 분석하고 군집화시켜 분석하는 과정에서 다양한 데이터 분석기법을 배울 수 있었으며 코드를 정리하는 과정에서 효율적인 알고리즘을 생각해볼 수 있었다.

- 편리한 프로그램 개발을 위해 사용자의 니즈를 생각해보고 사용자의 입장에서 서비스 시나리오를 기획해보며 좋은 소프트웨어 서비스에 대해 생각하는 계기가 되었다.

- 효율적인 분석모델을 설정하고 수립하는 과정에서 머신러닝 하이퍼파라미터 튜닝 과정을 비롯한 머신러닝의 여러 알고리즘에 대해 배울 수 있었으며 예측 정확도를 높힐 수 있는 방법을 고심해볼 수 있었다.

 

IV. 작품의 기대효과 및 활용분야

1. 작품의 기대효과

- 각 종목의 투자정보와 관련 뉴스 그리고 여러 지표를 기준으로 하여 상위 종목 정보를 제공하여 사용자가 매매전략을 세울 수 있도록 하는 기존 서비스와는 달리 사용자가 가장 집중적으로 보는 상위 기업 지표, 각 종목의 투자정보와 더불어 주가예측 서비스를 도입하여 매매전략 수립에 여러 시각의 도움을 줄 수 있다.

종목에 따라 해당 종목에 보다 효율적인 예측모델을 사용하여 타 주가 예측 프로그램보다 더 높은 예측 정확성을 기대할 수 있다.

 

2. 작품의 활용분야

- 주식 매매 서비스 : 객관적 지표 외에 사용자가 선택적으로 열람할 수 있는 추가적인 정보로 주가 예측 결과를 보여줄 수 있다. 이를 통해 주식 매매에 어려움을 느끼는 사람들의 매매전략 수립에 도움을 줄 수 있으며 해당 주식 매매 서비스 이용률을 증대시킬 수 있다.

 

 

요 약 본
작품 정보
프로젝트명 국문 빅데이터 댓글 분석 및 시각화(키바나), 댓글대시 서비스
영문 Big-data Analysis of Comments and Visualization
작품 소개 네이버 뉴스, 영화, 쇼핑몰의 URL을 받아 댓글 혹은 리뷰를 수집하여 분석하고 결과를 시각화해서 출력해 보여주는 웹 서비스
뉴스, 영화, 쇼핑몰 분석 결과는 사용자의 니즈를 고려하여 각 성향에 맞도록 분석을 진행하여 결과를 보여줌
사용자의 입력 URL을 누적하여 화제 토픽을 보여주며 실시간으로 댓글이 많은 기사 상위 5개를 출력하여 보여줌
작품
구성도
작품의
개발배경 및 필요성
악의적 댓글 혹은 여론 조작 등 거짓정보를 제공하는 댓글이 늘어남에 따라, 악의적 사용자의 댓글을 사전에 예방하여 올바른 정보를 취할 필요가 있음
정보과다 사회에 있어 필요한 정보만을 추출하여 선별적으로 정보에 접근할 수 있음
작품의
특장점
- 다양한 분야에 대해 댓글, 리뷰 분석 기능 제공 :각기 다른 분야에 대해서는 사용자의 니즈를 파악하여 각기 다른 분석 기법과 시각화 기법을 사용
- 분석 결과 시각화 :다양한 차트와 그래프를 통해 한 눈에 알아볼 수 있도록 시각화
- 필터링 여부 설정을 통한 자유로운 정보 접근 기회 제공
작품
기능
- 유효 URL 확인 기능
- 데이터 수집 기능
- 주요 뉴스 랭킹 기능
- 데이터 분석 기능
- 분석 결과 시각화 기능
- 악성 댓글 필터링 기능
작품의 기대효과 및 활용분야 - 뉴스 혹은 뉴스성 게시물의 댓글 분석을 통해 악의적 댓글을 사전에 예방하여 건강한 인터넷 문화를 만들 수 있다.
- 사용자들이 필요한 정보만을 선별적으로 수용함으로써 정보과다 사회에서 보다 효율적인 정보 접근이 가능
- 댓글 페이지의 추가 기능 : 댓글 페이지 자체의 추가 기능으로 해당 분석 기능을 제공

 

본 문

I. 작품 개요

1. 작품 소개

1) 댓글 분석 웹페이지

- 네이버 뉴스, 쇼핑몰, 영화의 url을 입력받아 해당 기사의 댓글, 쇼핑몰 후기, 영화 리뷰 정보를 분석하고 결과를 시각화하여 보여주는 웹페이지

- 기사의 댓글 여론, 영화와 쇼핑몰의 리뷰를 한 눈에 볼 수 있도록 함

[그림 1] 웹 초기 페이지, [그림2] 웹 분석 결과 페이지 

 

2) 기획 의도

- 인터넷상에서 많은 정보를 주고받는 현대사회에서 특히 댓글로 의견을 표출하거나 정보를 얻는 경우가 다분함. 하지만 그 양이 많아 모든 댓글을 읽고 적절한 정보를 취하기 쉽지 않음

- 본 프로젝트에서는 그러한 댓글 정보를 모아 분석 후 시각화해 출력해줌으로써 편향되지 않은 적절한 정보 수용에 도움을 줄 수 있음

- 더불어 뉴스에 대한 여론, 상품에 대한 장단점 등을 한눈에 볼 수 있도록 함

3) 작품 내용

- 인터넷 웹 서비스를 기본으로 함

- 입력받은 url의 기사, 영화, 쇼핑몰에 대하여 해당 댓글, 리뷰 정보를 수집하여 분석 결과를 웹 화면에 출력

- 악성 댓글 필터링 여부, 영화 스포일러 필터링 여부 설정

 

2. 작품의 개발 배경 및 필요성

- 오늘날 대다수의 정보전달 및 소통이 인터넷을 통해 이루어지고 있고, 특히 커 뮤니티나 인터넷 기사 혹은 블로그의 댓글의 형태로 활발한 소통이 이루어진다. 이러한 댓글의 양이 급속도로 증가하면서 소통의 질도 높아졌지만, 악의적 댓글 이나 허위정보 유포, 스팸 댓글이 새로운 사회적 문제로 대두되기 시작하였다.

- 댓글 혹은 리뷰는 보통 인기 댓글(리뷰), 최신 댓글(리뷰)의 순대로 나열되기 때 문에 많은 수의 댓글 중 사용자가 선별적으로 자신에게 필요한 정보를 가지고 있는 댓글을 찾기 힘들다.

- 악의적 댓글, 스팸 댓글, 허위사실을 유포하는 댓글은 네티즌이 자체적으로 선별하여 정보를 수용하기 어렵다.

- 뉴스, 영화, 쇼핑몰의 댓글을 분석하고 분류함으로써 악의적 댓글을 예방하여 건강한 인터넷 문화를 만들 수 있으며 올바른 정보 수용에 도움을 준다.

 

3. 작품의 특징 및 장점

1) 다양한 분야에 대해 댓글, 리뷰 분석 기능 제공

- 본 프로젝트에서는 뉴스, 영화 그리고 쇼핑몰의 댓글 및 리뷰에 대해 분석을 진행한다. 뉴스 분야에서는 사회 현상이나 사건에 대한 여론을 파악할 수 있도록 분석을 진행·제공하며, 쇼핑몰 분야에서는 상품 구매에 있어 합리적인 소비를 할 수 있도록 분석하고, 영화 분야에서는 단순 별점 리뷰에서 벗어나 여러 리뷰들과 그에 따라 취향에 맞는 영화인지를 파악할 수 있도록 정보를 제공한다. 각기 다른 분야에 대해서는 사용자의 니즈를 파악하여 각기 다른 분석 기법과 시각화 기법을 사용하여 결과를 출력한다.

2) 분석 결과 시각화

- 분석 결과를 텍스트로 단순히 보여주는 것이 아닌 다양한 차트와 그래프를 통해 한눈에 알아볼 수 있도록 시각화하여 결과를 제공한다.

3) 필터링 여부 설정을 통한 자유로운 정보 접근 기회

- 악플에 대한 필터링 여부 혹은 스포일러 포함에 대한 필터링 여부를 사용자의 설정으로 결정할 수 있도록 한다. 사용자가 수용할 정보의 범위를 자유롭게 설정할 수 있다.

 

II. 작품 내용

1. 작품 구성도

1) S/W 시스템 구성도

  [그림3] 시스템 구성도

웹 초기 페이지가 실행되면 flask framework를 사용하는 backend에서 자동으 로 네이버 뉴스 전체 기사 중 댓글이 가장 많은 기사 상위 5개를 스크래이핑을 통해 기사 제목과 URL 링크를 가져오도록 request를 보내고, 그 결과를 받아 frontend에 출력한다.

사용자가 분석을 원하는 URL을 입력했을 경우

-1. 입력된 URL이 유효하지 않은 URL이거나 분석기능을 제공하지 않는 사이 트의 URL일 경우, alert 창을 띄워 오류 메시지를 출력해준다.

-2. 입력된 URL이 유효한 url일 경우

입력된 URLmongodburl.db에 저장한다. 이때 과거에 저장되어있던 URL 정보는 drop 한다.

Rest API로 수집 모듈을 실행 시켜 데이터를 수집한다.

수집된 데이터에 대한 분석 모듈을 실행시킨 후 실행 결과를 mongodb에 저장 한다.

frontend에서 mongodb에 저장된 분석 결과 html, CSS, chart.js 등을 이용하여 시각화한다.

 

2. 작품 기능

1) 전체 기능 목록

구분 기능 설명 현재진척도(%)
S/W 유효 URL 확인 기능 사용자가 입력한 URL이 유효한 URL인지 체크하는 기능 100%
데이터 수집 기능 유효한 URL인 경우 해당 URL을 분석하여 뉴스, 쇼핑몰, 영화인지 알아보고 각 분류에 따라 필요한 데이터 (댓글, 성별 분포, 나이 분포 등)를 수집하여 데이터베이스에 저장하는 기능 100%
주요 뉴스 랭킹 기능 실시간으로 댓글이 많은 기사 상위 5개를 출력하여 보여주는 기능 100%
데이터 분석 기능 수집된 데이터를 기준으로 논란이 많은 댓글 분석, 댓글 주요 토픽 분석, 댓글 리스트의 감성 분석 등 댓글을 분석하는 기능
-완성 가능 시점(9/4)
80%
분석 결과 시각화 기능 분석된 정보를 서버에 보내고, 웹에서 각각 최적화된 그래프, 차트로 시각화하여 보여주는 기능 100%
악성 댓글 / 스포일러 필터링 기능 악성 댓글 / 스포일러 필터링을 설정 혹은 해제하는 기능
-완성 가능 시점 (9/7)
70%
사용자 피드백 사용자로부터 오류를 신고받고, 피드백 받는 기능
-완성 가능 시점 (8/31)
30%

2) S/W 주요 기능

 

기능 설명 작품실물사진
유효 URL 확인 기능 사용자가 입력한 URL이 유효한 URL인지 혹은 분석 서비스를 지원하는 UR:인지 체크한다.



[그림4] 분석을 지원하지 않거나 유효하지 않은 URL인 경우
데이터 수집 기능 유효한 URL인 경우 해당 URL을 분석하여 뉴스, 쇼핑몰, 영화인지 알아보고 각 분류에 따라 필요한 데이터 (댓글, 성별 분포, 나이 분포 등)를 수집하여 데이터베이스에 저장한다.

[
그림5] mongodb에 저장된 URL


[그림6] 필요한 데이터 수집
주요 뉴스 랭킹 기능 사이트를 새로 들어가거나, 새로 고침을 할 경우 실시간으로 댓글이 많은 기사 상위 5개를 가져와서 출력한다. 각 기사 제목을 클릭 시 해당 기사로 이동한다.

[그림7] 2021.08.28. 119분 기준 댓글 많은 기사 랭킹 5
데이터 분석 기능 수집한 데이터를 분석한다.
-뉴스 : 댓글 토픽 모델링, 댓글의 감성 분석을 통한 긍부정 척도, 기술통계 (성별 분포, 나이 분포, 작성 시간분포)
-영화 : 감성 분석을 통한 긍부정 리뷰 분석 및 긍정적 리뷰에 대한 토픽 모델링과 부정적 리뷰에 대한 토픽 모델링, 리뷰 분석을 통한 평점 재평가, 기술 통계 (작성 시간 분포, 리뷰 평점, 감상 포인트 등)
-쇼핑몰 : 상품 주제별 리뷰 토픽 분석, 옵션 제품별 평점, 감성분석을 통한 토픽별 평점, 기술통계 (사용자 총 평점, 재구매율, 옵션별 구매 순위, 작성 시간 분포 등)
[그림8] 데이터 분석 코드 (R)
분석 결과 시각화 기능 분석 결과를 받아 프론트엔드에서 바차트, 파이 차트, 라인 그래프, 워드 클라우드 등의 형식으로 분석 결과를 시각화한다.

[
그림9]


[그림10]
악성 댓글 필터링 기능 뉴스의 경우 악성댓글 필터링 여부를, 영화의 경우 스포일러 필터링 여부를 사용자가 설정한다. -
사용자 피드백 오류 신고나 QnA 등 사용자에게 피드백을 받아 서비스를 개선할 수 있도록 한다.
[그림11] 오류 신고 및 QnA 버튼

- 분석한 전체 글, 분석한 전체 댓글을 표현해줌으로써 사용자에게 시각적 즐거움 을 줄 수 있도록 한다.

- 스크래이핑이나 분석에 시간이 걸리는 경우에 로딩 중 표시를 띄워준다.

- 사용자들이 입력한 뉴스 기사를 바탕으로 누적 화제 토픽을 출력하여 보여준다.

 

3. 주요 적용 기술

1) 웹 동작에 대한 주요 적용 기술

- Frontend

- html, CSS, javascript를 이용하여 기본 화면을 구성하였고, 깔끔한 디자인을 위해 bootstrap을 사용하였으며 시각화를 위해 html5의 오픈 소스인 chart.js jqbar.css를 사용하여 디자인하였다.

- Backend

- frontend와의 통신을 위해 googleapiajax를 사용하였으며 backend frameworkflask를 이용하여 getpost를 컴포넌트화하기 쉽게 하였다.

- Database

- 수집 데이터의 범위가 분야에 따라 상이하므로 다양한 형태의 데이터베이스 구축을 위해 nonsql 데이터베이스를 사용하였고 주요 툴로 mongodb를 이용하였 .

2) 데이터 수집에 대한 주요 적용 기술

- 뉴스

- 댓글 작성 성별 분포와 나이대 분포는 seleniumbeautifulsoup4를 사용하여 스크래이핑하였다.

- 댓글 내용, 작성 시간, 공감수, 비공감수에 대해서는 네이버에서 제공하는 뉴스 api를 사용하여 스크래이핑하였다.

- 악성댓글 필터링 해제를 설정할 경우 selenium을 사용하여 동적 크롤링을 진행하였으며, 이 경우 댓글 내용 및 다른 요소에 대한 데이터를 모두 selenium으로 수집하였다.

- 영화

- 스포일러 필터링을 해제할 경우 selenium을 사용하여 동적 크롤링을 진행하였으며, 필터링 여부와 관계없이 seleniumbeautifulsoup4를 이용하여 데이터를 수집하였다.

- 쇼핑몰

- seleniumbeautifulsoup4를 이용하여 데이터를 수집하였다.

3) 데이터 분석에 대한 주요 적용 기술

- 수집된 텍스트에 대해 텍스트 전처리와 토큰화 그리고 형태소 분석기를 이용한 단어빈도 분석은 R을 사용하였으며 python에서 R 언어를 사용하기 위해 rpy2 사용하였다.

- 토픽모델링 알고리즘인 LDA 모델을 이용하여 토픽 모델링을 하였으며 LDA 델은 DTM (문서 단어 행렬)을 이용하여 만들었다.

- 긍부정 여론을 분석하기 위해 감성 사전을 이용한 감정 분석을 진행하였으며 감정을 긍정, 부정, 중립으로 나눠 감정 점수를 부여하여 긍부정 여부를 판단하 였다. 이와 더불어 LSTM, Convolution을 이용하여 긍부정 단어를 학습시키고 분 석 텍스트를 predict 하여 나온 결과를 가중치로 더하여 결과를 도출하였다.

 

4. 작품 개발 환경

구분 상세내용
S/W
개발환경
OS mac, windows10
개발환경(IDE) pycharm, visual studio code, jupyter notebook
개발도구 python 3.9.6, html5, css, javascript, jquery, flask
개발언어 python, R
기타사항  
H/W
구성장비
디바이스  
센서  
통신  
언어  
기타사항  
프로젝트
관리환경
형상관리 GitLab
의사소통관리 GitLab, kakaotalk, zoom, googlemeet, 오프라인 미팅
기타사항 코로나 19에 따라 오프라인 미팅이 불가할 때는 zoom meeting으로 온라인 미팅 진행

 

5. 기타 사항 [본문에서 표현되지 못한 작품의 가치(Value)] 및 제작 노력

- 본 프로젝트에서는 실제 사용자가 웹서비스를 사용할 때, 어떻게 하면 보다 유 익한 정보를 서비스할 수 있을지에 대한 많이 고민하였음. 이에 초기에 계획하 였던 네이버 뉴스 URL에서 확장해, 네이버 쇼핑/네이버 뉴스/네이버 영화 후기 URL까지 포괄하는 프로그램을 개발함.

- URL의 입력 시, 모두 동일한 분석이 진행되는 것이 아니라 각 주제에 적합 한 분석 기법이 적용되도록 하였고, 제공되는 기본 통계 정보 또한 각 페이지에 최적화된 통계를 제공할 수 있도록 세분화하였음. 사용자의 의도에 따라 네이버 영화에서는 스포일러 차단 후 분석, 뉴스에서는 악성 댓글 차단 후 분석 기능을 제공함.

- 간단하고 깔끔한 UI와 인터페이스로 누구든 쉽게 사용할 수 있게 만들었으며, 추후 주기적으로 기존 분석 기능의 보완 및 분석 기능의 추가가 이루어질 예정 .

 

III. 프로젝트 수행 내용

1. 프로젝트 수행일정

프로젝트 기간 2021.04.13. ~ 2021.11.30.

 

구분 추진내용
계획 프로젝트 기획 및 일정 계획 수립
분석 데이터 수집 및 모델링
설계 댓글 수집 시스템 설계
시각화 대시보드, 웹페이지 설계
개발 크롤링, 스크래핑 기반 댓글 수집 시스템 개발
자연어처리, 텍스트마이닝을 통한 분석
부트스트랩, DB, 웹 등을 활용한 시각화 개발
테스트 테스트 결과 분석 및 오류 수정
종료 한이음 공모전 출품, 결과 보고

 

2. 프로젝트 추진 과정에서의 문제점 및 해결방안

1) 프로젝트 관리 측면

- 오프라인 미팅 제한 : 코로나 19 상황으로 오프라인 미팅에 제약이 있었다. 카카 오톡 채팅방을 통한 활발한 소통과 매주 온라인 화상 회의를 진행하여 진행상 황을 공유하여 오프라인 미팅의 한계점을 극복하였다.

- 7월 전까지 수행 일정 계획과 비교해 프로젝트의 진척도가 다소 늦어졌으나 방 학을 이용하여 일주일에 한 번씩 미팅을 잡고 프로젝트를 진행하는 등 진척도 보완에 힘씀

2) 작품 개발 측면

- [크롤링] 스포일러 여부 선택 및 페이지 수 넘기기 작동을 위해 selenium을 사용 했으나 리뷰 데이터를 가져오는 데 시간이 많이 소요되어 beaitufulsoup 라이브 러리 하나만 사용하고 replace 함수를 이용하여 사이트 주소를 변경해가며 진행 한 결과 시간 단축에 성공함

- [토픽모델링] lda.collapsed.gibs.sampler 함수를 이용하여 토픽을 추출했을 때 제 대로 된 결과가 나오지 않아 최적의 토픽 수를 찾기 위해 perplexity coherence 기법으로 최적의 토픽 수와 파라미터값을 도출해 내 만족스러운 결 과를 얻음

 

IV. 작품의 기대효과 및 활용분야

1. 작품의 기대효과

- 다양한 분야(뉴스, 쇼핑몰, 영화)의 댓글 분석 결과를 제공한다는 점에서 여러 용도 (. 여론 분석, 제품 구매 여부 결정 등) 로 사용될 것으로 기대된다. 기 다른 분야에 대해 해당 분야에 최적화된 분석 모델을 사용하여 분석하고 결 과를 도출하므로 사용자의 니즈를 충족시킬 수 있는 서비스가 될 수 있다.

- 사용자가 입력한 URL 분석 결과를 누적하여 인기 토픽을 도출함으로써 사이트 이용자들의 관심 토픽을 확인할 수 있으며 이는 플랫폼에서 사라진 실시간 검색어와 유사한 기능을 할 수 있다.

- 사용자에게 댓글에 대한 종합적인 정보를 시각화하여 전달함으로써 적절한 정보 수용에 도움을 줄 뿐만 아니라 사용자의 흥미를 끌어 서비스 활용을 적극적으 로 끌어낼 것으로 기대된다.

 

2. 작품의 활용분야

- 댓글 페이지의 추가 기능 : 여론이나 상품 후기, 영화 후기가 궁금한 네티즌을 위해 댓글 페이지 자체의 추가 기능으로 해당 분석 기능을 제공하여 전반적인 댓글을 한눈에 보기 쉽도록 할 수 있다.

- 기타 활용 분야 : 뉴스 댓글 분석의 경우 해당 기사에 대한 여론을 파악할 수 있으며, 쇼핑몰의 경우 구매 여부를 결정하거나 옵션 선택에 도움을 줄 수 있 . 또한, 영화의 경우 취향에 맞는 영화를 결정할 기회를 제공한다. 이를 통해 댓글, 리뷰를 동반하는 여러 인터넷 사이트 활동을 보다 효율적으로 할 수 있.

 

 나는 산업경영공학과를 전공하고 있으며, 소프트웨어에 관심이 있는 학생이다. 특히 인공지능 및 데이터 분야에 관심이 많아 관련한 대학원에 진학할 계획을 세우고 있다. 대학원 진학 후에는, 의료 인공지능 기술을 다루는 회사에 취업하려 한다. 이런저런 고민 끝에, 의료인공지능/뉴로 데이터 분야를 연구하시는 교수님 아래서 학부연구생을 하게 되었다. 이에 해당 분야에 관심을 갖게 된 계기와, 교수님의 연구 분야, 학부연구생 관련 등의 주제에 대해 글을 써보려 한다.

 

# 관심을 갖게된 계기

산업경영공학에서도 데이터에 대해 다루지만, 크게 관심이 있던 주제는 아니었다. 관심을 갖게 된 계기는 2학년 2학기때 전공과목에서 했던 팀 프로젝트 였다. 개인 과제보다도 팀 프로젝트를 좋아하게 된 계기이기도 하다. 프로젝트의 주제는 기업의 서비스를 개선하라는 것이었는데, 우리 팀은 의료 데이터를 활용해 의사결정나무로 심장병 질환을 예측하는 모델링을 했었다. 잘 모르는 주제에 대해 공부하고, 팀원과 고민하며 프로젝트를 개선하는 과정에서 데이터를 다루고 분석하는게 재미있었고, SW쪽 직무가 잘 맞을 것 같다는 생각을 했다. 겨울방학쯤 좀 더 SW를 다루는 기술에 대해 알아보고 싶어 구글API를 이용해 인공지능 스피커를 직접 연동해보고, 원하는 데이터를 넣고 분석하여 사용자가 특정 질문을 하면 분석해 대답해주는 활동에 참여했었는데, 역시 재미있었다. 삶을 유용하게 해주고, 사람들을 도와주는 기술들을 직접 구현해보는 것은 신기하면서도 마음을 들뜨게 했다. 그때부터 데이터분석분야로 진로를 잡고 역량을 쌓을 수 있는 활동을 찾다가 국가에서 IT에 관심있는 대학생들을 위해 마련한 ICT 프로젝트를 발견했다. 그 중 웹서비스 기반의 댓글분석시스템, LSTM을 이용한 주가예측 프로그램 개발 프로젝트를 선택해 지금까지 참여하고 있다. 프로젝트를 위해 PyQt, 웹 프론트엔드, 서버, SQLite, Tensorflow의 자연어처리, 감성분석, 회귀분석 등의 내용을 학습했고, 그 외 이미 공부했던 크롤링, 파이썬 등의 기술을 이용해 프로젝트를 진행하는 중이다. 이 과정에서 Tensorflow Certificate 도 따게 되었고, 데이터 분석뿐 아니라 인공지능에까지 관심이 생기게 되었다.

 

# 교수님의 연구분야

앞으로 내게 많은 경험을 하게 해주실 교수님의 주 연구 분야는 뇌에서 발생하는 신호, 영상 데이터를 측정하고 획득해, 뉴로 데이터를 분석 및 처리 하고 가시화하는 소프트웨어를 개발하는 것이다. 상세하게는 의생명 데이터 분석, 인공지능, 전산 모델링 및 시뮬레이션, 네트워크 신경과학, 지능형 의료(헬스케어) 등으로 말할 수 있겠다. 다양한 연구 분야 중 나는 질환에 대한 초기 진단 분석 기술 개발 및 예측 시스템과, 신호 및 영상 데이터를 수집 및 처리해 시각화 소프트웨어를 개발하는 것에 관심이 있다. 아직은 상세한 연구분야를 정하지는 못했지만, 면접때 말씀해주신 다양한 연구 분야 및 주제를 고려하며 첫 연구 주제를 선정할 예정이다. 아직은 범위를 뇌로 특정하기 보다는, 전반적인 질환에 대해 다뤄보고 싶다. 

 

# 앞으로의 진로

앞서 잠시 언급했듯 나는 석사를 생각하고 있다. 그리고 석사를 마치고, 의료 인공지능 분야를 다루는 회사에 취업하는 것을 목표로 하고 있다. 내가 지금 가고싶다고 생각하는 곳은 '루닛'이라는 회사인데, 영상 및 신호 처리를 통한 조기 질환 예측 기술, 인공지능을 다루는 기술 등이 필요하다고 생각한다. 그래서 학부연구생 및 대학원 생활에서도 논문을 위한 연구보다는 실질적으로 데이터 분석을 해보고 프로그램을 개발해보는 것에 집중하려 한다. 내 스스로 연구에 대한 아이디어를 내고 실행하고, 결과를 분석하는 모든 과정이 내게 큰 도움을 줄 것이라 생각한다. 앞으로 교수님 아래서 학부 연구생으로, 그리고 대학원 생으로 공부하며 국제 학회에도 참석해보고 연구 과제도 해보며 역량을 쌓아가고 싶다. 아직은 많이 부족한 나이고, 연구를 해도 많이 미숙하겠지만.. 그 과정이 무언가를 배우는 경험이 될 수 있도록 노력할 것이다.

 

# 의료 인공지능 분야 (루닛?)

3학년 초, 인공지능 분야에 대해 찾아보다 좋은 기회로 의료 인공지능 분야 기업을 창업하신 대표님의 당연을 듣게되었다. (이 기업이 그 '루닛'이다.) 기업에서 하는 일은 의사가 진료를 볼때, 인공지능을 통해 보조하는 프로그램을 만드는 것이었다. 가령 암이 걸린 폐와 정상적인 폐의 MRI 데이터를 분석해, 새로운 데이터에서 암으로 의심되는 부분을 알려준다거나, 데이터 분석을 통해 치료가 시급한 순으로 환자 데이터를 나열해 보여준다거나, 세포를 분석하여 암세포와 일반세포를 구분한다던가 하는 것이었다. 실제로 의사를 돕고, 환자를 돕는 의료 인공지능의 긍정적인 영향을 들으니, 나도 의료 인공지능 분야로 진로를 잡고 사람들을 돕는 프로그램에 일부라도 기여하고 싶다는 생각이 들었다. 내가 기여한 프로그램으로 사람들을 돕고, 더 나은 세상이 될 수 있도록 사회에 기여할 수 있는 사람이 되고싶다는 생각에 더 노력해야 겠다고 생각했다. 

 

# 열심히하자!

나는 스스로 운이 좋지는 않다고 생각하지만, 이번만큼은 정말 운이 좋았다고 생각한다. 내가 원하는 시기에, 내가 원하는 분야를 연구하는, 내가 원하는 성격과 지도 스타일을 갖춘 좋은 교수님을 만나게 되다니. 학부연구생을 하고 싶어도 우리학과 교수님의 연구분야는 내가 원하는 부분과 살짝 벗어나있어 고민이 많았는데, 다른 학과에서 딱 알맞은 교수님을 컨택하게 되어 너무 너무 좋다. 이 기회를 유용히!! 사용해야겠다. 앞으로 열심히 해야지!!

 

 

 안녕하세요! 저번에 대외활동으로 주식 가격 예측 프로그램을 만드는 팀 프로젝트를 하고 있다고 글을 올렸었는데, 이번에도 그 대외활동에서 동시에 하고있는 팀 프로젝트에 관련해 글을 올려보려 합니다. 이번 주제는 빅데이터를 이용해 댓글 분석 및 시각화를 하는 웹 서비스를 개발하는 것입니다. 간단히 설명드리면 누리꾼이 네이버 쇼핑, 네이버 영화, 네이버 뉴스의 서비스를 이용하다보면 자연히 댓글을 읽게 될 텐데요, 이 댓글들에게서 얻을 수 있는 유익한 정보를 끌어내 분석해주는 웹 서비스 입니다. 상세하게는 저희가 만든 웹 사이트에 들어와, 사용자가 분석을 원하는 게시글의 URL을 입력하면, 댓글과 추가 정보들을 크롤링해 통계분석/기술분석을 통한 분석 정보를 시각화해 보여주는 기능입니다.

기존에 공부했었던 정적/동적 크롤링 기술과 텐서플로우를 이용한 감성분석에 더해 토픽 모델링, 감성사전, 간단한 데이터베이스 및 서버 다루기 등의 학습이 가능할 것으로 생각됩니다. 아직은 설계부분이 끝난 개발 초기 단계이며, 이번주는 각 팀원들이 각 분야에 맞춰 크롤링하는 코드를 짜고 있습니다. 주가예측 프로젝트와 마찬가지로 댓글분석 프로젝트도 9월 말까지는 끝낼 예정이고, 완성된 결과물을 공모전에 올리는 것을 목표로 하고 있답니다.

중간보고/개발설계서가 올라갈 예정이며, 개발이 끝난 후 최종보고가 Tistory에 업로드될 예정입니다. 개발된 코드는 Github에 올리도록 하겠습니다! (현재 개발 과정에서는 별도의 Gitlab 계정을 사용하고 있습니다)

 

+ Recent posts