UCSD Qualcomm Institute AI Project 1주차
프로그램 시작했다!
사실 2주차긴 한데 앞에 1주차는 이틀밖에 안했고, 오티라 그냥 통째로 1주차라고 하려고 한다.
1월 10일
첫 등교! 모든게 신기했다.
소극장 같은 곳에 모여서 TA분들과 박사님이 자기소개 및 오티를 해주셨다.
학생들도 각자 자기소개를 했다(영어로ㅎㅎ)
내 취미는 요리라고 했는데, 이벤트 시간에 요리가 취미였던 사람 밥솥 준다고 챙겨주셨다.
한마디로 밥솥 벌기 성공!
그 다음 팀을 정했다.
팀은 같은 숙소 쓰는 사람들끼리 제비뽑기를 했다.
인공지능 무경험자만 있는 팀은 경험자를 넣어주는 등의 약간의 조정을 해주셨다.
우리 팀은 우리학교 사람들 셋, 타학교 사람들 둘로 구성되었다.
기수장 선정을 하고 간단하게 학교 투어를 했다.
1월 11일
이 날은 수업을 잠깐 하고 퀄컴본사와 torrey pines state beach를 갔다.
이제 프로젝트 시작이니까 필기 노션도 만들었다.
이 날은 knime에 대한 기본적인 소개와 데이터 전처리의 중요성, 지도학습, 비지도학습에 대해서 다뤄주셨다.
잠깐의 짬을 이용해서(점심 포기) 북스토어에 갔다!
여긴 금요일마다 UCSD 옷을 입고가면 10퍼센트 할인을 해준다. 친구가 입고있는 것도 인정해주셔서 나도 할인을 받았다!
나는 첫눈에 반한 언더아머 UCSD 가방을 샀다ㅎㅎ
가자마자 이름표를 나눠주셨고, 간단하게 기념사진을 찍었다.
그 다음 patent wall을 보여주셨다. 이는 퀄컴사의 특허들이라고 한다.
퀄컴 회사 내부의 세미나실로 가서 한국인 직원분들의 강연을 들었다.
박사 학위를 두개 가지신 분, 한국의 엄청 큰 회사를 다니다가 오신 분 등 대단하신 분들이 많았다.
torrey pines state beach로 이동했다.
우버 이슈로 늦게오는 팀이 좀 있었는데, 기다리는동안 TA 분께서 영어로 이런 저런 재미있는 이야기를 해주셨다!
등산을 많이 했다.
가방에 맥북도 있어서 너무 힘들었다
그래도 뷰는 너무 예뻤다.
1월 13일
수업
주말이 지나고,, 본격적인 수업 첫날!
하루종일 KNIME 사용법을 배웠다.
나는 인공지능을 처음해서 CSV파일이라는 것을 처음 다뤄봤는데 엑셀로 이 파일을 만들어야한다니.. 처음에는 조금 힘들었지만 생각보다 할만했다.
join등 데이터를 합치는 방법도 배우고 행, 열 바꾸기, 컬럼 명 바꾸기, 특정 컬럼 으로 데이터 만들기 등을 배웠다.
내용을 완전히 이해하고 외우진 못하더라도 나중에 데이터 전처리 할 때 원하는 기능이 있으면 구글링을 통해 구현할 수 있을 정도의 실력은 가진 것 같아 뿌듯했다!
팀플
이제 연구 주제를 정해야할 때가 왔다. 금요일에 발표가 예정되어있기 때문이다.
우리는 좋은 데이터로 프로젝트를 하는 것이 좋다고 생각해서 캐글이라는 사이트에서 데이터를 찾아보았다.
이 날은 각자 괜찮은 데이터를 찾고 이 데이터에서 나올 수 있는 주제가 무엇이 있을지를 고민해보는 시간을 가졌다.
아 팀원이 노션이 예뻤으면 좋겠다고 해서 꾸며봤다.
나름 괜찮은듯..??
1월 14일
수업
KNIME 수업에서는 데이터 정규화의 중요성, 데이터를 특정 범주로 나누기, 반복문 사용을 배웠다.
어려웠다..
그리고 프로젝트 가이드라인에 대해서 들었다.
오디오나 이미지, 텍스트는 하지 말고, cvs나 엑셀파일로 모델을 만들도록 한다.
데이터는 캐글, uci mechine learning report, data search engine 등에서 가져오라고 하셨고, 한국 데이터는 퀄리티가 안좋은 것이 많아서 웬만하면 쓰지 말라고 하셨다.
또한 대부분 이전 기수에서 쓴 논문들은 피하려고 하는 경우가 많은데 그걸 디벨롭 하는 논문을 만드는 것도 좋은 방법이라고 하셨다.
우리는 캐글에서 데이터를 찾았다!
https://www.kaggle.com/datasets/wordsforthewise/lending-club
All Lending Club loan data
2007 through current Lending Club accepted and rejected loan data
www.kaggle.com
이 데이터인데 피쳐수는 151개이고, row 수는 200만개가 넘는다.
이 데이터를 사용해서 사용자 별로 대출 이행 가능성을 알려주는 인공지능 모델을 만들고자 하였다.
선행 논문을 찾아보니 해당 내용을 주제로 한 논문이 매우 많았다. 교수님 말씀대로 이를 디벨롭하기에는 너무 난이도가 높았고, 완전히 같은 데이터를 찾기도 어려웠다.
그래서 우리만의 피쳐를 추가하기로 했다. 경제 논문을 찾아보니 인플레이션이 대출 이행률에 영향을 미친다는 것을 확인할 수 있었다.
따라서 우리는 인플레이션 피쳐를 추가하기로했고, 이로 인해 인공지능 성능이 좋아질 수 있는가?에 대한 연구를 진행하고자 한다.
The Impact of
Inflation on Loan Default Prediction:
A Comparative Study of Machine Learning Model Performance
우리의 최종 주제이다!
주제를 정하기까지 매우 오랜 시간 헤매서 아쉽긴 했지만 많은 데이터를 보면서 어떤 것이 좋은 데이터인지를 구별하는 능력이 생긴 것 같아서 뿌듯했다.
1월 15일
KNIME으로 통계를 내는 방법을 배웠다.
또한 앞으로 많이 사용할 pie chart사용법에 대해서도 배웠다. 은근 어려웠다.
선행논문 분석
사실 이제까지 컴공생활 하면서 논문을 볼 기회가 거의 없었다. 그래서 논문을 찾는 것도, 읽는 것도 상당히 어려웠지만, 팀원분들이 많이 도와주셨다.
우리는 해당 데이터에서 피쳐선정을 어떻게 했는지를 중심적으로 보았다.
다양한 논문이 있었지만, 그 중 한 논문은 여러 선행논문에 사용된 데이터 피쳐들을 분석하여 중요한 피쳐들을 선정하였다.
1월 16일
피쳐분석
교수님의 피드백을 받았을 때 우리의 피쳐가 상당히 많으니까 그 피쳐들을 분석해서 중요한 피쳐를 고르라고 하셨다. 우선 데이터에서 피쳐를 고르는 요인 중 당장 분석할 수 있는 결측값을 측정하기로 했다.
<KNIME에서 각 컬럼별 결측비율 구하는 방법>
1. group by 노드에서 pattern based affregation -> add 누르기 -> missing value count를 체크한다.
이걸 돌리면 한 row에 각 피쳐 별 결측값이 나온다. 이렇게하면 가독성도 안좋고 계산도 불편하기 때문에 Table Transposer을 사용했다.
최종적으로 이렇게 만들어졌다. 하지만 우리는 여기서 결측치의 비율도 정해야하므로
math formula 노드의 수식을 위와 같이 만들고, 실행하였다 여기서 sorter 노드를 사용하여 결측값이 작은 순서대로 정렬하여
이렇게 원하는 결과값을 만들어냈다.
데이터를 잘 관찰해보면 결측치가 30퍼센트가 넘는 컬럼들이 좀 있었고, 나머지는 거의 10프로 이하였다.
따라서 이 컬럼들을 제거한 결과, 93개의 피쳐가 남았다.
또한 비슷한 피쳐가 있어 모든 데이터에 있어 이 두 피쳐의 값이 일치할까를 보기 위해서 Rule-based row filter노드를 사용하였다.
박사님께 피드백을 받는 시간도 가졌는데, 선행 논문에서 한 방식과 우리들이 새로 피쳐를 분석하는 것 중 우리가 새로 하는 것이 더 좋은 방식일 것이라고 해주셨다.
그래서 일단 피쳐를 하나하나 분석하는 방식으로 가기로 했다.
1월 17일
발표준비를 하고 발표를 했다. 생각보다 피피티를 만드는 과정이 쉽지 않았다.
또한 발표를 영어로 해야한다는 것도 큰 부담이었다. 다행히 이번에는 스크립트를 볼 수 있게 해주셔서 원활하게..? 할 수 있었다.
이번 프레젠테이션에서는 별다른 질문을 받지 않았다.
인공지능을 처음 하는데 데이터 전처리가 이렇게 어렵고 중요한지 몰랐다.
남은 기간동안 열심히 정리해봐야겠다.