과 제 명 뇌파 감정분석 기반 인공지능 음악 치료
(AI music therapy based on EEG Emotional Analysis)
1. 과제 개요
. 과제 선정 배경 및 필요성
1) 정신 재활은 정신 질환을 앓고 있는 환자들이 치료를 받고 사회로 복귀하는 데 있어 필수
적인 과정이며, 암 환자 등 정신 질환과 직접적인 관련이 없는 환자들에게도 삶에 대한
의지를 찾고, 치료에 적극적으로 참여하도록 격려하는 매우 중요한 과정이다. 정신 재활의 방법 중, 음악 치료는 단순한 음악 감상이 아니라 음악을 매개로 하는 적극적인 심리 치료로서 음악 치료사가 치료 대상자의 상태를 확인하고, 심리적, 신체적, 정신적 상태를 향상시킬 목적으로 음악을 사용하는 치료 방법이다. 우리는 이러한 기존의 치료 방법론이 모두 음악 치료사개인의 판단 하에 이루어진다는 것, 한 번의 진단으로 이후의 모든 치료 계획이 결정된다는 점에 주목했다.

2) 우리는 새로운 정신 재활 음악 치료의 방법으로 온전한 사용자 맞춤형 음악치료를 제안한다. 기존에 타인의 평가에 맡기던 음악 치료의 방법에서 벗어나, 우리는 환자 개개인의 뇌파를 통해 환자의 감정을 실시간으로 분석하고, AI 인공지능 작곡 모듈을 이용해 환자의 감정 및 상황에 맞는 사용자 맞춤형 음악을 제공할 것이다. 이를 통해 환자는 과거 진단에 대한 치료보다 현재 진단에 대한 치료를 받을 수 있게 되며, 온전한 자신의 치료를 받을 수 있게 된다.


. 과제 주요 내용
1) EEG Dataset( DEAP, AMIGOS, SEED )을 수집한다.
2) 수집한 데이터를 여러 ML, DL 모델을 이용하여 환자의 감정을 분류한다.
3) 특정한 감정 상태에서 어떠한 유형의 음악으로 치료가 가능한 지 조사한다.
4) 기존 음악의 특징 요소(템포, 역동성 등)를 분석하여 감성 유형을 분류하고 3)의 결과를 바탕으로 감정 제어를 위한 음악을 작곡한다.
2. 과제의 목표
. 최종결과물의 목표 (정량적/정성적 목표를 정하되, 가능한한 정량적 목표로 설정)
1) Data set에 있는 subject들의 감정을 75% 이상의 정확도로 구분.
2) 환자의 감정을 효과적으로 치료할 수 있는 음악 작곡 모델 개발.

   3) 2)의 결과로 작곡한 음악이 실제 환자에게 도움이 되는지 판단.


. 최종결과물의 세부 내용 및 구성
1) EEG Data Set으로 학습한 감정 분류 모델
2) EEG Data Set으로 학습한 감정 분류 모델의 정확도

3) 환자의 감정 치료에 사용되는 음악 작곡 모델
4) 환자의 감정 치료 목적으로 작곡된 음악
5) 작곡한 음악을 들은 후의 EEG 데이터


3. 기대효과 및 활용방안
뇌파 측정기를 통해 환자의 뇌파를 분석하고, 환자의 감정을 판단하여 환자의 상태에 최적화된 음악을 제공한다. 환자는 실시간 진단을 통한 개인 맞춤형 음악 치료 활동에 참여하여 성공적인 음악 경험을 하게 되고, 자신의 감정을 확인하고 표현하며 자신의 행동을 조정하고 변형할 수 있게 된다. 또한, 정신 질환을 가지지 않은 환자들에게도 심리적 안정감을 제공하여 환자가 치료 및 삶의 의지를 가질 수 있도록 도움을 줄 수 있다. 이 외에도 무의식 환자의 뇌파가 일반인과 유사하며, 청각은 무의식 중 자극을 받아들일 수 있는 감각기관이라는 점을 이용하여, 뇌 손상으로 의식이 없는 환자에게도 청각 자극을 통해 의식 각성에 도움을 주는 것도 기대해 볼 수 있다.

 

4. 수행 방법
. 과제수행을 위한 도구적 방법 (활용 장비, 조사 방법론 등)
1) 뇌파를 통한 감정 분석

뇌파를 이용해 감정을 분류한 다양한 논문을 읽고, DEAP, SEED-IV 등의 Data set을 이용해 효율적인 감정분석을 위한 딥러닝 네트워크 개발
2) 인공지능 기반 음악 작곡

시중에 나와 있는 다양한 음악의 감성을 Mirtoolbox, ABC notation 등의 도구를 활용해 분석하고, 뇌파를 이용해 분석한 환자의 감정을 기반으로 이를 효과적으로 제어할 수 있는 감성을 가진 음 악을 JukeBox, pybrain 등의 라이브러리를 활용하여 작곡한다.


. 과제수행 계획
1) 뇌파를 통한 감정분석

) EEG 데이터 셋(DEAP, AMIGOSM, SEED )을 수집한다.
) EEG 데이터를 이용한 감정분석 방법을 다양한 논문을 읽으면서 습득한다.
) EEG 데이터 기반으로 효율적인 감정분석을 위한 딥러닝 네트워크에 대해 연구한다.


2) 음악의 감성 분류
) 다양한 장르의 음악 데이터 셋(kaggleABCnotation )을 수집한다.
) 각각의 음악의 감성을 분류한다.


3) 1)에서 분석한 환자의 감정을 어떤 음악의 감성으로 제어할 수 있을지에 대해 조사한다.
4) 3)에서 조사한 내용과 2)에서 감성을 기준으로 분류한 음악을 기반으로 인공지능 음악 작곡 모델 을 학습시키고, 학습시킨 모델을 바탕으로 새로운 음악을 작곡한다.
5) 4)에서 작곡한 음악을 바탕으로 정신적 치료에 효과가 있는지 확인한다.

5. 추진일정
순번 추진내용 9월 10월 11월 12월 비고
1 Data Set 수집 O







2 EEG, 인공지능 작곡 알고리즘 관련 논문 리뷰 O







3 EEG Data Set을
통한 감정 분석 및 평가


O O



4 환자의 정신 재활에 도움이 되는 음악 유형 연구 O O O



5 기존 음악의
특징 요소 분석


O O



6 AI 작곡 알고리즘에
분석 결과 적용




O O

7 실제 효과 확인 및 평가



O O

8 보고서 작성





O  

 

 

---> 그러나, 모델 평가를 위한 과정에서의 IRB 승인문제, 평가용 Dataset 수집을 위한 뇌파 탐지기 구매의 가용한 예산과 성능(채널 수)문제, 조사 결과 기존 주제와 흡사한 최신 논문의 발견 문제, 자신의 뇌파로 만든 음악을 듣고 개개인마다/상황에따라 니즈가 다른데 정말 '치료적인'목적이 달성될 수 있는가, '심리적 안정성'이 목표라면 스스로 노래를 듣거나 아무 클래식 음악을 틀어줘도 괜찮은 것이 아닌가 등등의 고민으로,

본 계획서의 주제와 세부 목표들을 대폭 수정하였다. (위에 올린건 수정 전 주제, 계획서)

수정 후 수행계획에 대한것은 추후 업로드 예정이다.

캡스톤디자인 수업이 시작된 후, 저희 팀의 주제는 2 가지로 추려졌는데요.

각 주제에 대해 자료조사 해온 것을 토대로 주제를 드디어 확정하였습니다.

저희 팀의 주제는 "뇌파 신호 데이터(EEG) 감성분석을 통한 감성 맞춤형 음악 작곡 시스템 개발" 입니다!

관련 주제가 재미있기도 하고, 데이터셋도 구할 수 있고, 다양한 시도를 해볼 수 있을 것 같아 선정하게 되었습니다. 

이에, 해당 주제에 대해 간략히 자료조사 해왔던 내용을 업로드 합니다.

팀원들이 소프트웨어융합학과이기도 하고, 다들 연구 경험이 있으며 열심히 하시는 분들같아 이번 연구 잘 마무리할 수 있을 것 같습니다. 가능하면 논문까지 작성해서, 학회에 등재해 상을 받을 수 있었으면 좋겠네요.

+ 팀명은 IDEA-M 로 정했습니다. ㅎㅎ (Insight of EEG data analysis-Music의 약자입니다) 

 

 

---- 아래는 참고자료 정리본 ---

 

본인작성

(논문1) 뇌파의 실용적 활용을 통한 감성분석 기반 음악추천 시스템

 

Dataset : 

음악코퍼스-2400여곡의 k-pop음원으로 구성된 KETIafa200, 

직접 뇌파 수집(우리도 예산으로 15~20만원대 뇌파 밴드 구입하여 평가할때 사용해도 괜찮을듯)

 

모델링과정:

EEG 신호의 특질 정보 추출. 1개의 신호를 5개 에너지 대역 간의 분포를 추출해 특질 정보로 활용->델타파,쎄타파,알파파,베타파,감마파로 분리.

 

EEG신호로 빠른 퓨리에 변환을 수행, 5개 밴드별 에너지 분포를 추출해 RBF(Radical Basis Function) 커널 함수를 적용한 SVM 이진분류기로 선호/비선호 학습(감정분석)

(이 부분은 본 프로젝트의 목적에 맞게 모델을 바꾸고 다중분류로 진행하여, 세부적인 감정을 파악하도록 바꾸면 될 것)

 

8초 단위의 subsample로 분리해, 학습기로 분류한뒤, ’선호/비선호’ 중 전체곡(1곡내)에서 많이 결정되는 분류로 해당 음악에 대한 사용자 선호도 결정.

높은성능신호:T7,T8,O1,AF3,F3 / 낮은성능신호:FC6,FC5,P8

 

의의:

뇌파분석을 통한 사용자의 감성을 자동적으로 분류하는 방식으로, 멀티태스킹 환경에 익숙한 사용자들의 음악청취를 위한 소모적인 상호작용을 없애는 새로운 방식의 인터페이스 환경 실험

 

(논문2) 딥러닝을 이용한 BGM 음원 작곡 서비스 설계 및 구현

Dataset : 

ABC notation 악보를 데이터로 사용. (악보를 A~G까지 문자 표기법을 사용하여 나타낸 것.)

아래의 링크에서 코드확인(3명) 및 데이터셋 다운 가능(추후 관련 데이터셋 및 코드를 더 찾아보겠음)

https://www.kaggle.com/raj5287/abc-notation-of-tunes/code

번호,제목,작곡가,음표,길이,음계등이포함되어있고각알파벳별로의미하는것이정해져있음.

 

모델링과정:

ABCnotation(곡)을 분위기 별로 분류,

TEXT 형태의 데이터로 저장이 되면, 전처리 과정에 들어감. (곡에 있는 모든 음은 사전 형태로 매핑됨)

이를 입력 데이터로 사용하기 위해 벡터화함 (원핫인코딩)

LSTM으로 학습 진행, 입력 데이터의 갯수 6개씩. (너무작으면오류,너무길면예측제대로안됨)

6개로 이루어진 하나의 데이터와, 이 데이터의 다음에 오는 하나의 데이터를 타겟으로하여 학습이 진행됨.

한 스텝씩 밀리면서 모든 데이터셋에 대한 학습과정 반복.

ModelSaving에서,생성된 모델을 사용자가 초기에 설정한 임의의 곡 분위기별로 저장.

 

의의:

본 논문은 ABC Notation을 분위기별로 분류하여 딥러닝으로 학습하고 여기서 만들어진 모델을 통해 기존에 없던 새로운 음악을 사용자가 이용할 수 있다. 이 사용자들은 음악적 지식 없이 작곡할 수 있 고 인공지능으로 작곡을 했기 때문에 기존의 작곡가 가 만드는 곡보다 시간·경제적인 소요를 줄일 수 있 다.

 

그외 :

pybrain을 이용해 작곡: https://github.com/robbiebarrat/Bach_AI

 

추가 데이터셋: http://www.eecs.qmul.ac.uk/mmv/datasets/amigos/ (해당 링크에서 다운로드가능)

Amigos(a dataset for affect, personality and mood research on individuals and group)

-->Deap, Amigos, kaggle 데이터셋 등 사용하면 될 듯.

 

감정에 따른 음악 매칭에 대해:

‘본 논문에서는 어떤 감정일때 어떤 장르/분위기의 음악을 들으면 스트레스가 완화된다고 가정한다’

등의 문구 삽입이 필요함. 해당 가정은 추후 팀원끼리 추가적인 논의를 거쳐 확정함.



팀원1

  1. Data 사이트에서 추가 데이터셋 서칭 및 가용한 자료인지 확인

 

  • 추가로 발견한 뇌파 관련 데이터셋
  1. 관련 논문 서칭, 방법론 확인

 

 

 

  • 총 4단계 구성으로 연구를 진행하면 좋을 것 같다는 생각을 함.

 

  • 챌린지한 부분이 될 수 있다고 생각하는 부분은 2와 3번. 1번의 경우, 위처럼 EEG 데이터를 통한 감정 분류를 위한 다양한 논문이 이미 나와 있기 때문에 논문을 재현하는 방식으로 공부와 연구를 진행하면 크게 어렵진 않을 것 같음. 다만, 2와 3번의 경우, 의학과 화성학에 대한 전문적인 지식이 없기 때문에 공부와 연구를 진행하면 다소 시간이 많이 걸릴 것으로 예상됨.

 

팀원2

뇌파 관련 데이터셋 조사
(주요 데이터셋만 적어놓았습니다.)

  • Psychophysics (700 Mb)단일 에포크 가져오기전체 주제 가져오기
    : 64 채널을 사용하여 기록된 122명의 피험자(비주얼 매칭 작업을 수행하는 알코올 및 컨트롤). 이 데이터의 한계는 데이터 에포크(자극 제시 후 0~1초)만 사용할 수 있다는 것입니다. Matlab 스크립트를 사용

  • DEAP 데이터 세트
    : 인간의 감정 상태 분석을 위한 다중 모드 데이터 세트. 32명의 참가자의 뇌파(EEG)와 말초 생리학적 신호는 각각 1분 길이의 뮤직 비디오 발췌문 40개를 시청할 때 기록. 참가자들은 각성, 관심도, 좋아함/싫어함, 지배력 및 친숙도의 측면에서 각 비디오를 평가.

  • 간질 데이터
    : 난치성 국소 간질 21명의 환자에 대한 EEG 기록을 포함. 수술 전 간질을 모니터링하는 동안 기록.
    "ictal" :  간질 발작이 있는 파일과 발작 전 최소 50분 데이터가 포함
    "interictal" :  발작 활동이 없는 약 24시간의 EEG 기록을 포함



DEAP Dataset을 활용한 뇌파 데이터 분석 방법에 관한 연구논문 분석 

DEAP

이 논문에서는 오픈 감정뇌파데이터인 DEAP Dataset을 활용. DEAP Dataset는 총 23개의 데이터, 32 채널로 구성. 남, 여 각각 16명. 총 32명의 사용자에게서 40편의 비디오를 시청한 뒤 감정상태를 기록. 레코딩 된 신호는 총 32개의 채널과 512Hz로 샘플링

전처리 과정 :

  • 디지털 필터인 IIR(Infinite Impulse Response) Filter를 사용하여 잡음 제거
  • Artifact인 안구잡파(EOG : Electrooculograms, 눈 깜빡임) 제거 : LMS(the Least Mean Sqaures) 알고리즘을 사용

(LMS → 비정상적인 생체신호를 제거하는 데에 유용)

감정 분류 : Valence-Arousal 평면을 사용하여 4개의 감정으로 구분. 분류 알고리즘으로는 Support Vector Machine을 사용.

LAHV(두려움), HAHV(행복), LALV(슬픔), HALV(고요)

 

뇌파의 분류

복잡하게 진동하는 형태. 저마다의 전위값이 다르다.

뇌파 관찰 시 → 주파수의 범위와 전압 값에 따라 인위적으로

  • Delta파 : 0.1 - 3Hz; 20-200uV
  • Theta파 : 4-7Hz; 20-100uV
  • Alpha파 : 8-12Hz; 20-60uV
  • Beta파 : 13-30Hz; 2-20uV
  • Gamma파 : 30-50Hz

 

전처리가 끝나 잡음이 제거된 신호는 FFT 분석을 시행하여 주파수대 별로 Power Spectrum 분석을 하여 특징 추출을 하였다. 



퓨리에 변환

위의 논문에서는 FFT(Fast Fourier Transform), 빠른 퓨리에 변환 사용.
빠른 Fourier 변환(FFT)은 오디오 및 음향 측정 과학 분야에서 중요한 측정 방법 . 신호를 개별 스펙트럼 구성 요소로 변환하여 신호에 대한 주파수 정보를 제공. FFT는 기계 또는 시스템의 결함 분석, 품질 관리 및 상태 모니터링에 사용.
(출처 : https://www.nti-audio.com/ko/지-원/know-how/빠른-fourier-변환-fft)

변환한 주파수 범위에 따라 Theta(4-7Hz), Alpha(8-12Hz), Beta(13-30Hz), Gamma(30-40Hz)로 분석. FFT분석은 Matlba을 사용. FFT를 통한 각각의 주파수 대역별 값은 배열로 저장 분석 (Fourier 변환이 중요한 개념으로 사용되는 듯)



MNE-Python (http://martinos.org)

기능적 신경 영상 데이터(functional neuroimaging data) → EEG, MEG, sEEG, ECoG, and fNIRS 데이터들을 처리, 분석 및 시각화를 위한 오픈소스 Python 모듈. 

해당 모듈을 이용하여 EEG 데이터와 MEG데이터를 분석할 수 있다.
(MEG 데이터의 경우, EEG는 전기적 신호인 반면, MEG는 자기적 신호로 수집한 뇌파 데이터를 의미한다. 해당 데이터셋이 EEG데이터보다 Noise가 더 적으므로, 만약 두 데이터를 통해서 분석할 수 있는 대상이 비슷하다면, MEG 데이터를 이용하는 것도 좋은 방법일 듯 싶다.)




댓글분석 웹페이지 개발 프로젝트와는 달리, 주가예측 프로그램 개발 프로젝트의 경우 모델링에 대한 고민이 꾸준히 필요하기 때문에, 모델에 대한 변동이 발생할때마다 추가적인 게시글을 업로드 할 예정입니다.
 
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개정도,재량적으로)

요 약 본
작품 정보
프로젝트명 국문 빅데이터를 이용한 주식 가격 예측 시스템 만들기
영문 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. 작품의 활용분야

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

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

 

 

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

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

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

 

 안녕하세요. 저는 최근 대외활동으로 알게된 팀원들과 함께 ICT프로젝트를 하고 있습니다. 빅데이터를 이용해 주식 가격을 예측하는 프로그램을 만드는 프로젝트인데요, 이번에는 그 중간보고까지의 과정을 올려보려 합니다. 처음 프로젝트를 기획할때는 주식 가격을 예측하는 알고리즘을 더 개선시키는 방법을 연구하고, 관련 논문을 작성해보는 방향으로 하려고했으나 점차 논의를 통해, 논문이 아닌 PyQt를 GUI로 하는 프로그램을 만드는 방향을 선택하게 되었습니다. 이에따라 주식 가격 예측 시스템 뿐 아니라, 보다 사용자가 실용적으로 사용할 수 있는 기능들을 추가하게 되었습니다.  

사실 저는 Tensorflow 자격증을 공부할때 LSTM을 이용한 예측 모델을 공부해본적이 있는데요, 그 때 간단하게 기본적인 모델만 배웠던것에 비해 앞으로는 관련 논문을 찾아보고, 좀더 깊이 인공지능 모델링을 학습하며 제 역량을 키울 수 있을것이라 생각합니다. 또한, SQLite, PyQt, Python, 금융권의API 등을 서로 상호작용시켜 사용하고, 하나의 완성된 프로그램을 만드는 것은 제게 귀중한 경험이 될 것이라 생각합니다.

개발 초기인 지금의 단계에서, SW에 대해 잘 모르니 많이 우당탕하며 하나씩 배워나가고 있는데요, 그 과정에서 제가 배운것이 꽤 많다는 것을 느낍니다. 예로 사소한걸 하나 말하자면 API를 다룰때 금융권은 대개의 경우 64BIT가 아닌 32BIT 프로그램을 써야하는데, 기존에 쓰던 파이썬(과 그외 프로그램)은 64BIT 였습니다. 이에 어떻게해야하나 고민하다가, 가상환경을 만들어서 그곳에 분리하여 저장을 해두고 필요할때마다 변경한다던가.., 이런 저런 오류가 날 때, 어떻게 대처해야 한다던가.. 말입니다. SW를 공부하는 사람들은 구글 검색에 익숙해져야 하며, 프로그램 설치를 어떻게 할 것인지에도 익숙해져야하고, 새로운것을 배우고 찾아보는데 익숙해져야 한다고 배웠는데 그 과정을 이번 프로젝트를 통해 몸소 겪어보고 있는 것 같습니다.

이제 설계 단계가 완성이 되었을 뿐, 개발 단계까지 끝내지는 못한 상황입니다. 9월 말 안으로 개발을 완료하고, 공모전에 제출하는것을 목표로 잡고 있습니다. 앞으로도 팀원들과 함께 으쌰으쌰하며 개발을 해보도록 하겠습니다. 파이팅!

+ 중간보고/개발설계서 뿐 아니라, 회의록을 올릴지 말지 고민이네요.. 이후 최종보고는 한번 블로그에 올릴 예정이고 개발 결과는 제 Github에 올리도록 하겠습니다. (개발 과정은 별도 계정으로 GitLab을 이용하는 중입니다) 

 

 

1학년때 했던거라 부족함이 있을수 있습니다.

PLM data 활용한 질병 예측 시스템 연구
Final Report
질병 예측을 위해 사용할 data set에 대한 Modeling Evaluation

0.Decision Tree Modeling을 위한 기초작업 Dataset Target Attribute가 특정 Class에 편향되어 있음을 확인. Class (0or1)의 비율을 조절하여 dataset을 추출해, 더 나은 decision tree Modeling.

I. 상관계수의 절댓값을 바탕으로 Modeling에 사용할 Attribute 선정 : 1차 선정 Modeling에 사용할 Attribute들을 선정함에 있어, 몇 가지의 방법 중 ‘Filter Approach’중 하나인 상관계수를 사용. 상관계수 중 Pearson 방식을 사용, 그 절댓값의 순위를 바탕으로 5개의 Attribute를 선정.

II. Entropy, Information Gain 바탕으로 Node 순서 결정 및 1 Modeling (Training : Test = 5:5) 선정한 5개의 Attribute가 적어도 한 번씩 분류 기준으로 쓰일 수 있는 최소 깊이인 Depth5 1차 모델링. 이때, Attribute들의 Entropy Information Gain을 비교. (Training Set : Test Set= 5 : 5)

Ⅲ. Decision Tree accuracy를 바탕으로 sweet spot 찾기 Training set을 바탕으로 수립한 decision tree accuracy를 각 depth 별로 계산. 이후, 같은 model test set을 넣어 각 depth accuracy를 계산. accuracy를 표로 작성하여 이 표를 x축이 depth, y축이 accuracy인 직선그래프로 나타내어 decision tree sweet spot을 찾음.

Ⅳ-1. 모델&그래프 해석Fitting Graph를 보면 Training & Test dataset 모두 Node depth <=2일 때 일정한 Accuracy를 갖는데 그 이유는 수립된 1차 모델이 Node depth <=2에서 leaf node 가 모두 0으로 labeled되기 때문. 이후, 모델 복잡도가 높아질수록 모델이 Training set을 잘 반영하는 반면, Node depth = 3을 기점으로 Test set Accuracy 증감이 변함. 본 보고서에서는 그 기점인 node depth = 3 SweetSpot이라 간주하고 가지치기를 실시.

Ⅳ-2. 과적합 판단 후 조정 모델링 초기 단계에서 기준에 따라 사전 가지치기를 진행한 모델을, 파악한SweetSpot을 토대로 node를 제한하여 1차 가지치기를 진행. 성능을 향상시키지 않는 불필요한 node에 대해 2차 가지치기를 진행하여leaf node 수를 줄임으로써 유용성을 키움.

.  Class label 및 모델 확률화 앞가지치기를 통해 완성된 모델의 각 leaf node에서 '심장병에 걸림' (TenYearCHD = 1) probability를 구하고 그 probability 0.5를 기준으로 class label을 분류함.

Ⅵ. Model Evaluaion 1)예측 값과 실제 값을 비교해 record 4가지 경우로 나누어 confusion matrix를 구함. 각각의 비율을 계산하여 예측의 정확성을 판단. 2) precision Recall 값을 구해 F-measure을 계산. 여기서 recall Precision을 동일하게 중요하다고 판단하여 β의 값을 1로 설정. 3) Patientslikeme는 심장병에 걸릴 것이라고 예측한 고객에 대해, 제약회사, 병원 등과 협력하여, 낮은 가격으로 심장병 예방 및 체질 개선에 대한 서비스 또는 운동 및 식습관 개선 프로그램을 제공. 이를 바탕으로 서비스의 가격과 cost를 책정해 cost-benefit matrix를 구하고, 각 확률과 값을 곱해 더해주어 기댓값을 구함.

. ‘질병코드 data set’을 이용한 연관성 분석 앞서 추출한 '심장병 환자 data set'에 대한 decision tree를 통해 심장병 여부를 예측에 더 나아가 '질병코드 data set'을 연관성 분석을 통해 여러 종류의 질병을 예측 모델링을 실시.

0. Decision Tree Modeling 을 위한 기초작업

우리의 데이터에 “Class Imbalance Problem”이 있음을 발견하였고 불균형을 해소하여 보다 나은 의사결정나무를 만들기 위해 전체 데이터셋 중 “Target attribute(10년이내 심장병 발병여부) = 1”의 비율을 적절히 맞추어 추출해냈다. Target Attribute 비율 : 517/3850 = 0.134286 (추출 전) , 517/1577 = 0.327838 (추출 후)

I. Pearson 상관계수 절댓값을 바탕으로 Feature Attribute 선정 : 1차 선정

<Target Attribute에 대한 나머지 15 Attribute Pearson 상관계수 절댓값>

II. Entropy, Information gain* 바탕으로 Node 순서 선정 및 1 Modeling(Training : Test = 5:5)

분기마다 5개의 Attribute에 대한 Information Gain을 구해서 1순위 Attribute를 분류기준으로 사용. ( I,II :각각의 분류 기준은 데이터분석 툴(Brightics Studio)Best Split 기준을 참고하여 결정함.)

 

결정함.)

* 계산 예시) <1Age”> ChildNode1 Entropy : -(73/373)*LOG(73/373,2)-(300/373)*LOG(300/373,2) = 0.713 /// ChildNode 가중 Entropy(가중평균) : (373/788)*0.713 + (415/788)*0.996 = 0.862042 /// Information Gain = 0.921 – 0.862042 = 0.058958

의사결정나무 1차 모델

III. Decision Treeaccuracy를 바탕으로 sweet spot 찾기

Training set으로 만든 의사결정나무의 accuracy를 측정하였다. 예를 들면, 5-11 node ‘sysBP<=169.25’이다. node로 나눈 결과 전체 140개의 data sysBP169.25 이하인 사람은 125, 그 중 10년 뒤 심장병을 앓은 사람은 42, 그렇지 않은 사람은83명이었다. sysBP169.25 초과인 사람은 15, 그 중 심장병을 앓은 사람은 11, 그렇지 않은 사람은 4명이었다. 이를 바탕으로 sysBP169.25 이하일 경우, 심장병을 앓지 않을 것이고, sysBP169.25초과일 경우에 심장병을 앓을 것이라고 예측할 수 이는데 이것만 가지고 accuracy를 계산하면 (83+11)/140=0.6714이다. 위와 같은 방식으로 depth5일 때의 모든 node에 대한 accuracy를 계산하면 0.7398이 나온다. 다른 depth accuracy를 계산한 과정은 다음과 같다.

그 후 의사결정나무에 holdout data, test set을 넣어 다시 accuracy를 측정하였다. 마찬가지로 5-11로 예를 들면, training set을 가지고 예측한 model에서는 sysBP169.25 이하일 경우, 심장병을 앓지 않을 것이고, sysBP169.25초과일 경우에 심장병을 앓을 것이라고 예측했지만 test set을 넣었을 때는 sysBP169.25 초과일 경우 심장병을 앓는 사람이 더 많음을 볼 수 있다. 이 때의 accuracy(83+8)/141=0.6454이고 같은 방식으로 depth=5 accuracy를 계산하면 0.6865가 나온다. 다른 depthaccuracy를 계산한 과정은 다음과 같다. (자세한 사항은 첨부 파일 참고)

위에서 계산한 결과를 표로 정리하면 다음과 같다.

Depth Accuracy on Training set Accuracy on Test set
1 0.6637 0.6810
2 0.6637 0.6810
3 0.7030 0.7089
4 0.7239 0.6956
5 0.7398 0.6865

x축을 depth(모델 복잡도), y축을 accuracy라 하고 training settest set accuracy를 그래프로 나타내면 다음과 같고, over-fitting이 시작되는 sweet spot depth3일 때라는 것을 알 수 있다.

. 모델 & 그래프 해석 / 과적합 판단 후 조정하기

 그래프를 보면 Training & Test dataset 모두 Node depth <=2 일때 일정한 Accuracy를 갖는데, 그 이유는 1차적으로 수립된 모델이 Node depth <=2 에서 leaf node 가 모두 0 으로 labeled 되었기 때문이다. , Target 값을 모두 0으로 예측하니 동일한 accuracy를 얻게 된 것이다. 다음으로, 모델 복잡도가 높아질수록 모델이 Training dataset을 잘 반영하는 것을 볼 수 있는 반면, Node depth = 3 을 기점으로 Testdataset Accuracy 증감이 변하는 것을 볼 수 있다. 이는 모델이 Training dataset에 과적합되어 Test dataset의 유의미한 분류 예측이 방해되었다는 의미로, 본 보고서에서는 그 기점인 node depth = 3 SweetSpot이라 간주하여 가지치기를 실시하였다.

모델 1
모델 2

적절한 node depth와 그 자료의 수가 정해졌을때 주로 사용되는 기법 중 하나인 'Cost-Complexity pruning(사후 가지치기의 일종)'의 개념은 다음과 같다.

이를 통해 모델 수립에는 정확도&불순도 뿐 아니라 구조의 복잡도도 중요한 요소임을 다시금 확인할 수 있다. 모델 2의 예측 정확도는 약 0.7085 로, Min Sample Splits, Min Sample leafs, Max leaf nodes, Min Impurity Decrease 등의 요소를 고려해 추가적인 가지치기를 해도 예측 정확도가 더 향상되지는 않지만 (오히려 감소한다.) 모델의 단순화를 통해 그 유용성을 더욱 확보할 수 있을 것으로 보인다. 다음은 한번 더 가지치기하여 단순화한 모델이다.

모델 3) 최종

알파를 0.05 로 두고 모델3 과 모델2 CC를 비교해보면,

CC(모델3) - CC(모델2) = 0.05 (4-8) = -0.2

, 0.2 만큼 모델의 비용 복잡도가 감소했음을 알 수 있다.  

최종 모델의 Max depth = 3, Max Leaf node = 4, Min impurity Decrease = 0.09 이며, 모델 수립에 사용된 설명 Attribute [ Age, SysBP, Male ] 이다. Attribute Feature Importance age = 0.74, sysBP = 0.15, male = 0.12 이다.

.  Class label 및 모델 확률화

전체 training data set (788) 10년 후심장병에 걸리지 않음’ (TenYearCHD = 0) 523, ‘심장병에 걸림’ (TenYearCHD = 1) 265.

* Majority class는 심장병에 걸릴지를 예측하는 모델이므로 TenYearCHD = 1 으로 설정.

1-1.        전체 중 Age ≤ 48.5 로 분류된 data set ‘0’값은 300, ‘1’ 값은 73.

Probability = 73/(300+73) = 0.1957

P(TenYearCHD = 1) 0.5 이므로 leaf node class label TenYearCHD = 0

1-2.        전체 중 Age 로 분류된 data set sysBP≤122.75 로 분류.

2-1.        sysBP≤122.75 로 분류된 data set ‘0’값은 72, ‘1’ 값은 33.

Probability=33/(72+33) = 0.31430.5이므로 leaf node class label TenYearCHD = 0

2-2.        sysBP≥122.75 로 분류된 data set male=0 으로 분류.

3-1.        male=0으로 분류된 data set ‘0’값은 72, ‘1’ 값은 33.

Probability=77/(100+77)=0.4350≤0.5이므로 leaf node class label TenYearCHD = 0

3-2.        male=1로 분류된 data set ‘0’값은 51, ‘1’값은 82.

Probability=82/(51+82)=0.6165 0.5이므로 leaf node class label TenYearCHD = 1

Ⅵ. Model Evaluation

(1) Confusion matrix

True positive: 심장병에 걸릴 것이라고 예측, 실제로도 걸린 경우 -> 88

False positive: 심장병에 걸릴 것이라고 예측, 실제로는 아닌 경우 -> 66

False negative: 심장병에 걸리지 않을 것이라고 예측, 실제로는 걸린 경우 ->164

True negative: 심장병에 걸리지 않을 것이라고 예측, 실제로도 걸리지 않은 경우 -> 471

  positive Negative Total
Yes 88 66 154
No 164 471 635
Total 252 537 789

각각의 비율을 구해보면 다음과 같다.

Tp rate= 88/(88+164)= 0.35 = Recall  

Fp rate= 66/537 =0.12

Fn rate= 164/252 =0.65   

Tn rate= 471/537 =0.88 = Specificity

(2) F-measure계산

Precision=TP/(TP+FP)=88/(88+66)=0.57

F=measure=2*precision*recall/(precision+recall)=2*0.57*0.35/(0.57+0.35)=0.43

(Recall Precision이 동일하게 중요하다고 판단하였음)

Expected value 계산

Patientslikeme는 심장병에 걸릴 것이라고 예측한 고객에 대해, 제약회사, 병원 등과 협력하여, 낮은 가격으로 심장병 예방 및 체질 개선에 대한 서비스 또는 운동 및 식습관 개선 프로그램을 제공한다. 이 서비스의 가격은 $200이고, 서비스를 준비하는 cost$100으로 한다. , 분석한 결과를 토대로 해당 회원에게 전화해, 심장병에 걸릴 확률을 말해주고 서비스를 소개하고 구매에 이르는 데 필요한 전화, 이메일의 비용을 $1이라고 한다. (서비스는 매우 합리적인 조건이므로, 심장병에 걸릴 것이라고 예측한 사람은 모두 받아들이는 것으로 가정한다.) 따라서 cost-benefit matrix는 다음과 같다.

. ‘질병코드 data set’을 이용한 연관성 분석

 앞서 진행한 심장병 환자 data set’을 통해 의사 결정 나무를 추출하였다. 의사 결정 나무를 통하여 한가지 질병에 대한 질병 여부를 예측하였고 이에 더 나아가 연관성 분석을 통해 여러가지 질병에 대한 질병 여부를 예측할 수 있다.

질병코드 data set’은 가입자 일련번호를 통해 한 명의 사람이 어떤 질병에 대해 진료를 받았는 지에 대한 정보를 알 수 있다. 동일한 가입자 일련번호 내에서, 주상병코드와 부상병코드를 통해 질병A와 질병B가 동시에 발생할 확률인 지지도, 질병A가 발생한 사람 중에서 질병B가 발생한 사람의 비율인 신뢰도, 질병A와 질병B가 동시에 발생할 확률과 독립적으로 발생하는 확률을 비교하는 향상도를 통해 질병 간 연관성을 분석하여 앞으로의 질병을 예측할 수 있는 모델을 구축한다.

References (no limit)

 


해당 과정은 수업때 교수님께서 Entropy를 엑셀로 직접 계산해 풀 것, 그리고 모델은 의사결정나무로 할 것이라는 제한을 두셔서 Accuracy가 높게 나오진 못한 것 같습니다.

다음번에는 같은 주제에 대해 이러한 제한을 두지 않고 더 많은 방법으로, 다양한 모델을 비교해가며 Accuracy를 높이는것만을 위해서도 프로젝트를 진행해보도록 해보겠습니다.

 

+ 내용추가)

 

아래 링크는 본문의 내용과 같은 주제로 진행한 프로젝트 결과인데요, (=만성질환 =>당뇨병)

* 주제만 같을뿐 사용한 툴, 데이터의 전처리방식, 사용된 모델 등 프로젝트의 내용은 전혀 다릅니다!

제약이 많았던 2학년때의 프로젝트 이후, 제약 없이 진행한 3학년때의 프로젝트 결과입니다!

✨A.I.D.D, 최우수상 수상! 2021, AI 당뇨병 발병 예측 데이터톤 참여, 시상식 후기 <전국구 132팀중 최종 2등>✨

 

✨A.I.D.D, 최우수상 수상! 2021, AI 당뇨병 발병 예측 데이터톤 참여, 시상식 후기 <전국구 132팀중 최

안녕하세요! 시험기간이기도 하고, 이래저래 진행되는 프로젝트나 일정이 많아 오랜만에 인사드리게 되었네요. 오늘의 소식은 전국구 데이터톤! Artificial Intelligence Diabetes Datathon, AIDD -인공지능

checherry.tistory.com

 

+ Recent posts