2021년 8월 28일 토요일
[추천시스템] Rating Elicitation에 관하여
2021년 8월 27일 금요일
[논문 리뷰] 콘크리트 오토인코더(Concrete Autoencoders)
Concrete Auto-encoders for Differentiable Feature Selection and Reconstruction
Abstract
1. Introduction
2. Problem Formulation
3. Proposed method
3.1 Concrete Selector Layer
Conclusion
2021년 7월 28일 수요일
[포트폴리오] Resume
Updated on 2021-09-30
<학력사항>
동국대학교 (2011-03 ~ 2018-02)
산업시스템공학과 전공 • 학사 / 통계학과 복수전공
동국대학교 (2020-03 ~ 2022-02 졸업예정)
통계학전공 전공 • 석사,
<업무경험>
(주)오뚜기 (2017-12 ~ 2019-12)
품질보증실 식품안전센터 미생물팀 KOLAS 시험원,
SSG.COM (2022-02 ~ 현재)
DA(Data Analytics) 수습 입사
<개인 프로젝트 포트폴리오>
1) 동산 잔존가치 예측 모델링 프로젝트 (2020-05 ~ 2020-08)
- skill set : R
동산 가격 DB 데이터를 이용한 의사결정나무 가격 예측모델링
2) 2021 전형 요소 타당화를 위한 종단적 연구 (2020-10 ~ 2021-01)
- skill set : SAS, R
학적, 학업성취도 정량, 정성 데이터 분석
동국대학교 교내 연구과제로, 졸업생 중 2013, 2014학년도 신입생의 학적 및 학업성취도 데이터를 이용하여 입학 유형에 대한 세그먼트를 구성한 뒤 유형별 학생 군이 갖는 학점에 대한 진로 등에 대한 정량, 정성적 평가를 맡아 분석을 진행했습니다.
팀 구성 ― 동국대학교
동국대학교 교내 연구과제로, 졸업생 중 2013, 2014학년도 신입생의 학적 및 학업성취도 데이터를 이용하여 입학 유형에 대한 세그먼트를 구성한 뒤 유형별 학생 군이 갖는 학점에 대한 진로 등에 대한 정량, 정성적 평가를 맡아 분석을 진행했습니다.
팀 구성 ― 동국대학교
3) 2021 전형 요소 표준화를 위한 종단적 연구(시계열 연구) (2020-10 ~ 2021-01)
- skill set : SAS, R
학적, 학업성취도 시계열 데이터 분석
동국대학교 교내 연구과제로, 졸업생 중 2013, 2014학년도 신입생의 학적 및 학업성취도 데이터를 이용하여 입학 유형에 대한 세그먼트를 구성한 뒤 유형별 학생 군이 갖는 학점에 대한 시계열적 특성과 졸업 후 진로 등에 대한 정량, 정성적 평가를 맡아 분석을 진행했습니다.
팀 구성 ― 동국대학교
동국대학교 교내 연구과제로, 졸업생 중 2013, 2014학년도 신입생의 학적 및 학업성취도 데이터를 이용하여 입학 유형에 대한 세그먼트를 구성한 뒤 유형별 학생 군이 갖는 학점에 대한 시계열적 특성과 졸업 후 진로 등에 대한 정량, 정성적 평가를 맡아 분석을 진행했습니다.
팀 구성 ― 동국대학교
4) 동산 잔존가치 예측 모델링 고도화 프로젝트 (2021-04 ~ 2021-07)
- skill set : R
기존 프로젝트 모델링의 고도화, 신규 유형 동산에 대한 신규 모델링
현대자동차, 나이스디앤알 발주 프로젝트로, 특정 제품의 시장 가격 DB를 이용해 시점별 수요 및 가격 예측을 목적으로 한 기초 회귀모형을 개발하는 역할을 맡았습니다. 기존 유형의 제품군에 대한 모델링 최적화 및 신규 유형 제품군에 대한 랜덤포레스트 기반의 모델링을 진행했습니다.
현대자동차, 나이스디앤알 발주 프로젝트로, 특정 제품의 시장 가격 DB를 이용해 시점별 수요 및 가격 예측을 목적으로 한 기초 회귀모형을 개발하는 역할을 맡았습니다. 기존 유형의 제품군에 대한 모델링 최적화 및 신규 유형 제품군에 대한 랜덤포레스트 기반의 모델링을 진행했습니다.
팀 구성 ― 나이스디앤알, 현대자동차, 동국대학교
5) 스포츠 공정성 확보를 위한 인공지능 기반 실시간 승부 조작 위험성 경고 시스템 구현
- skill set : Python, R, SQL
웹 크롤링을 통한 스포츠 배팅 데이터 축적 및 LSTM, RNN 기반의 시계열 이상치 탐색 기법 연구
정보통신과학부 지원 사업으로, 웹 크롤링을 통해 스포츠 배팅 사이트의 DB를 구축하고 딥러닝 기법을 이용한 이상치 탐색 모델을 개발하는 역할을 맡았습니다.
정보통신과학부 지원 사업으로, 웹 크롤링을 통해 스포츠 배팅 사이트의 DB를 구축하고 딥러닝 기법을 이용한 이상치 탐색 모델을 개발하는 역할을 맡았습니다.
팀 구성 ― 한국체육대학교, 동국대학교
6) Intraday 일사량 예보 성능 개선을 위한 Model Output Statistics 최적화(2021-07~)
- skill set : Python, R, SQL
일사량 예측 MOS 개발
한국에너지기술연구원 발주 프로젝트로, 위성 관측 데이터와 수치예보모델 데이터를 이용한 다중회귀모형 개발을 통해 MOS를 개발하는 역할을 맡았습니다.
한국에너지기술연구원 발주 프로젝트로, 위성 관측 데이터와 수치예보모델 데이터를 이용한 다중회귀모형 개발을 통해 MOS를 개발하는 역할을 맡았습니다.
팀 구성 ― 한국에너지기술연구원, 동국대학교
7) Feature selecting Autoencoders based collaborative filtering
- skill set : Python
Feature selection을 수행하는 Autoencoders 기반의 새로운 협업필터링 모델 개발
Continuous relaxation을 원리로 하는 응용 autoencoders를 이용하여 seed itemset이 될 수 있는 feature selection을 수행하고, rating elicitation 효과를 얻을 수 있는 collaborative filtering 알고리즘을 개발. 논문 투고중.
<자격사항>
2021-07 빅데이터분석기사
2020-12 ADsP(데이터분석준전문가)
2019-03 식품기사
2018-10 SQLD
2018-05 품질경영기사
2017-11 사회조사분석사 2급
2017-08 정보처리기사
<게재 논문>
2021년 7월 1일 목요일
[포트폴리오] 응용통계연구 논문 게재 (Mann-Kendall 비모수 검정과 Sen's slope를 이용한 최근 40년 남한지역 계절별 평균기온의 경향성 분석)
논문제목 : Mann-Kendall 비모수 검정과 Sen's slope를 이용한 최근 40년 남한지역 계절별 평균기온의 경향성 분석
한국통계학회 응용통계연구에 논문게제가 완료되었다.
2021년 5월 13일 목요일
[논문 리뷰/추천시스템] Cold-start problem 완화 목적의 새로운 similarity measure 제안 논문
A new similarity measure for collaborative filtering to alleviate the new user cold-starting problem
때문에 본인도 딱히 의문을 품어본 적이 없었는데, 얼마전 연구실 세미나에서 measure에 따라 결과값에 영향이 있겠냐는 박사님 지적에 해당 논문을 찾아보게 되었다.
2008년에 출판된 논문이라 제법 오래된 논문이지만, 여러 measure 별로 성능 비교를 해둔 논문이기도 하고, 새로운 similarity를 제안했기 때문에 여러 논문에서 인용을 한 듯 하여 선택하게 되었다.
아직 논문 리뷰를 잘하는 편이 아니기 때문에, 리뷰 방식은 해오던 습관대로 각 절마다 그 내용을 소개하는 것으로 한다.
Abstract
논문이 써진 당시인 2008년에는 netflix prize에서 우승한 collaborative filtering(CF)이 추천시스템에서 갖게 된 위상이 매우 높았다. 저자는 CF가 갖고있는 위상을 소개하면서 동시에, CF의 주요한 특성인 similarity measure가 Pearson correlation이나 cosine 유사도에 머물러있음을 지적한다. 따라서 본 논문에서는 새롭게 heuristic similarity measure를 제안한 것이 학술적인 contribution이라할 것이고, 새로운 measure를 이용한 실험 결과 CF가 갖고있는 고질적인 문제인 cold-start problem을 가진 데이터셋에서 좀 더 나은 퍼포먼스를 보인다고 한다.
1. Introduction
저자는 e-commerce에서 CF가 갖는 위력에 대해 우선적으로 소개하고 있다. 추후 CF에 대해서만 포스팅을 하나 해야겠다.
간단히 CF에 대해서 공부했던 바를 정리해보면, CF는 기본적으로 취향이 비슷한 User의 집단이 존재한다고 가정한다. 추천의 대상이 되는 어떤 user가 있으면, 취향이 비슷한 neighbor가 존재할 것이고 이들이 공통적으로 긍정적인 rating을 한 item을 타겟이 되는 user에게 추천하는 방식이 기본적인 아이디어이다. 때문에 CF에서는 neighbor를 찾기위해 유사도 행렬을 이용한다는 점 정도만 짚고 넘어가면 될 것 같다.
다시 돌아와서, 이 논문에서도 CF의 위력은 similarity에 있음을 이야기하고 있고, Pearson 상관계수와 같은 전통적인 벡터 similarity measure가 주로 사용되고 있어 CF의 한계인 cold start problem에서 자유롭지 못함을 지적한다.
저자는 이러한 문제의식을 드러내며 본 논문의 취지를 밝히고 있으며 그 취지는 heuristic similarity measure의 제안으로 이어진다. 전형적이고 기본적인 골조지만 앞으로 논문 작성 시에 이러한 프레임워크를 적용한다면 좀 더 쉽게 작성할 수 있지 않을까 하는 감상이 든다. 저자는 새로 제안된 방식이 user의 item에 대한 co-ratings에 더욱 세밀하게 집중한 방식이므로, cold-start 문제를 가진 데이터에 대해 더욱 효과적인 measure가 될 수 있다고 주장한다.
2. Literature review
2절에서는 추천시스템 전반에 대한 overview와 CF에 대한 리뷰를 제공한다. 논문이 출판된지 제법 오래되었기 때문에 overview는 큰 의미 없으리라 생각하고, CF에서 사용되고 있는(또는 사용되었던) similarity measure를 정리하는 표(Table 1) 정도만 확인하고 넘어가면 될 것 같다.
Table 1의 measure들은 이후 4절의 experiment에서 비교 실험을 위해 사용된다. 본 논문은 기본적으로 cold start가 있는 신규 user의 진입 상황을 가정하므로, user-item matrix에 대해서 Table 1의 measure들은 다음의 식에 사용된다. :
\[\overline{r_{u_a}}+\frac{\sum_{h=1}^{m'}\mathrm{sim}(u_a, u_h)(r_{u_h,i_a}-\overline{r_{u_h}})}{\sum_{h=1}^{m'}|\mathrm{sim}(u_a,u_h)|}\]
저자에 따르면 당시에 존재하던 hybrid 방식의 추천시스템들은 기본적으로 cold start problem을 우회하기 위해 content information과 ratings data를 결합하여 사용했다. 즉, 새로 진입한 user나 item에 대해서는 rating-based의 measure는 계산할 수 없기 때문에 당시의 hybrid 추천시스템들은 그러한 방식을 채택했다는 것이다.
그런데 이러한 당시의 연구 목적과 달리 본 논문에서는 rating record가 '적은' 상황을 가정한 것이며, hybrid RS에서처럼 추가적인 information을 요구하지 않는다. 따라서 기존의 CF에 대해 measure만 변경하여 모델링하면 되기 때문에 저자는 이러한 효율적인 연구목표를 설정한 듯 하다.
3. A new similarity measure
3.1 Diagnosis of the limitations of existing similarity measure
새로운 제안에 앞서, 우선 저자는 기존 measure들이 갖고 있는 문제점을 지적한다. 우선 COR(Pearson's)과 COS(Cosine similarity)는 근본적으로 cold-start에 취약할 수 밖에 없음을 지적한다.
예컨대 데이터셋의 sparsity level이 0.90이라면, 그러니까 현존하는 <user-item> rating matrix R에 10% 수준의 rating만이 존재한다고 했을때 + 타겟 user가 고작 5개의 item만을 구매했다고하면(이 부분이 정확한지는 모르겠다. 단순히 a user라고 지칭하고 있는데, 아마도 추천을 타겟팅할 user를 이야기하는 것 같다.), COR이나 COS를 계산하는 것이 거의 불가능한 상황이 된다.
이러한 상황을 간략히 정리해보면 다음과 같다. :
(1) Sparse matrix에서는 co-ratings을 계산하는 것이 매우 제한적이다.
(2) user-user간에 co-rating한 item이 단지 1개에 불과하다면, 기본적으로 COR은 계산될수조차 없고, COS는 co-rating이 어떤 값을 취하든 1의 값을 갖는다.
(3) user에 의해 주어진 rating이 item 별로 모두 같은 경우(논문에서는 flat이라고 표현했음) COR은 계산될 수 없고, 그 외의 correlation formula들은 0으로 계산된다.
(4) 각 user-item rating vector가 평행한 경우(e.g. <2,2> and <3,3>) COS는 1의 값을 갖는다.
(5) 결론적으로 COR과 COS 모두 서로 성향이 완전히 다른 user를 neighbor로 잘못 계산할 수 있다.
또한 (1)~(5)의 문제점들은 dataset이 sparse할수록 더 심각한 문제를 야기한다. 개인적으로 이러한 COR과 COS에 대한 문제점을 단순한 plot(Fig. 1.)으로 표현하여 직관성을 높인 부분이 배울 점이라고 생각한다.
이후의 내용은 실험에 사용될 dataset들이 이러한 문제에 취약하다는 점을 지적하는 내용이므로, 리뷰에서는 생략한다.
3.2 A new similarity measure for CF systems : PIP measure
3.1절에서 COS, COR의 문제점을 짚었으므로, 본 논문이 제안하는 PIP measure는 다음의 목적을 만족할 수 있도록 설계되었다. :
(A) 제안된 measure는 cold-start recommendation 상황에서 data가 갖는 domain specific meanings를 단순히 전통적인 measure를 사용하는 것에 비해 더욱 잘 이용할 수 있어야 한다.
(B) 실용성을 위해, 제안된 measure는 쉽게 현존하는 CF system에 plug-in할 수 있어야 한다.
(C) 제안된 measure는 cold-start condition에 있는 new user에서만 향상된 결과를 보일 뿐 아니라, non-cold-start condition에 대해서도 기존의 measure에 대비하여 쓸만한 성능을 보여야 한다.
위와 같은 목적으로 제안된 PIP measure는 Proximity, Impact, Popularity 의 세가지 요소로 이루어지게 되었다.
PIP measure는 user \(i\)와 user \(j\)에 대한 similarity를 다음과 같이 계산한다. :
\[\mathrm{sim}(u_i,u_j) = \sum_{k\in C_{i,j}} \mathrm{PIP}(r_{ik}, r_{jk})\]
수식에서 \(r_{ik}\)는 user \(i\)의 item \(k\)에 대한 rating이고, \(C_{i,j}\)는 user 간의 co-rated item set이다.
이때, \(\mathrm{PIP}(r_1, r_2)=proximity(r_1, r_2) \times Impact(r_1, r_2) \times Polularity(r_1, r_2)\) 으로 계산된다.
각각의 요소를 Fig. 3.과 Table2에서 description 하고 있다. 결과적으로는 user가 item에 부여한 각각의 rating을 경우에 따라 penalization 하거나 advantage를 부여함으로써 similarity를 입체적으로 계산한다는 감상을 받게 되었다. 이런 점에서 제안된 PIP measure가 heuristic measure라고 저자는 주장하는 듯하다.
2021년 5월 9일 일요일
[미완성][추천시스템/기초] MovieLens 데이터셋에 대해.
Analysis of MovieLens dataset(begginers')
여러 추천시스템 관련 연구를 살펴보면, dataset으로 GroupLens에서 배포하는
MovieLens 데이터셋을 이용하는 경우가 대부분이다.
본 게시글에서는 추천시스템 연구에 앞서 MovieLens 데이터셋 중 가장 작은 데이터셋인
'ml-latest-small'에 대한 기초적인 수준의 EDA를 진행하고자 한다(데이터셋 다운로드 경로).
나중에 포트폴리오를 블로그에 천천히 작성할 예정이지만, 필자는 분석 경험이 매우 짧은 편이며 속해있는 연구실 또한 추천시스템을 전문적으로 다루는 연구실이 아니라 데이터마이닝 연구실이다.
혹시라도 전문적인 수준의 글을 접하고 싶어 찾아오셨다면 뒤로가기 해주셔도 좋고,
이녀석 어떤 실수를 했나 구경이나 해볼까 싶으셔서 읽게 되셨다면,
여러 지적해주시면 좋겠다.
Data EDA
분석 환경은 구글 Colab이다.
# 데이터 경로 설정 path = '/content/drive/MyDrive/ml-latest-small/' # ml-latest-small의 구성 os.listdir(path) ['ratings.csv', 'tags.csv', 'movies.csv', 'links.csv', 'README.txt']
ml-latest-small dataset은 총 4개의 csv 파일로 구성되어있다.
각 파일에 대한 shape와 head를 찍어보면 아래와 같다.
각 데이터에 대한 설명은 데이터셋의 zip파일에서 readme를 반드시 읽어보길 권한다.
print(ratings_df.shape) print(ratings_df.head()) (100836, 4) userId movieId rating timestamp 0 1 1 4.0 964982703 1 1 3 4.0 964981247 2 1 6 4.0 964982224 3 1 47 5.0 964983815 4 1 50 5.0 964982931 print(tags_df.shape) print(tags_df.head()) (3683, 4) userId movieId tag timestamp 0 2 60756 funny 1445714994 1 2 60756 Highly quotable 1445714996 2 2 60756 will ferrell 1445714992 3 2 89774 Boxing story 1445715207 4 2 89774 MMA 1445715200 print(movies_df.shape) print(movies_df.head()) (9742, 2) title genres movieId 1 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy 2 Jumanji (1995) Adventure|Children|Fantasy 3 Grumpier Old Men (1995) Comedy|Romance 4 Waiting to Exhale (1995) Comedy|Drama|Romance 5 Father of the Bride Part II (1995) Comedy print(links_df.shape) print(links_df.head()) (9742, 3) movieId imdbId tmdbId 0 1 114709 862.0 1 2 113497 8844.0 2 3 113228 15602.0 3 4 114885 31357.0 4 5 113041 11862.0
구체적인 EDA에 앞서 데이터셋의 구성 중 PK(Primary Key)가 될법한 변수명들이 눈에 띄어 다른이가 그려둔 ERD가 없을까 찾아보게 되었다.
사실, ERD를 그려보는 것이 데이터셋 각각에 대한 EDA를 진행하는 것에 도움이 될까 싶긴
하지만 내 기초지식의 일부가 산업시스템공학에 존재하므로 그냥 또 '츄라이' 해본다.
그 중 Github에 vivek-bombatkar란 유저가 ERD를 작성한 것을 보았다. (링크)
genom_tags와 genome_scores를 제외하고 바라보면, 현재 우리가 아무 모델링도 가하지
않은 상태의 데이터셋과 일치하는 ERD가 된다. EDA에 앞서 ERD를 수행하는 모습은 일전에 dacon 대회에 참여했을 때 어떤 유저가 사용하는 것을 보고 지금 여기서도 해보게 되었는데, 확실히 데이터셋에 대해서는 직관성을 더 해주는 것 같다. 앞으로도 애용해야 할 듯 하다.
ratings_df의 info를 살펴보면 아래와 같다. 결측값의 존재 여부도 확인한다.
ratings_df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 100836 entries, 0 to 100835 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 userId 100836 non-null int64 1 movieId 100836 non-null int64 2 rating 100836 non-null float64 3 timestamp 100836 non-null int64 dtypes: float64(1), int64(3) memory usage: 3.1 MB # 결측값의 수 확인 ratings_df.isnull().sum() userId 0 movieId 0 rating 0 timestamp 0 dtype: int64
다음으로 user의 movie에 대한 평가횟수 / rating의 평균 / rating의 편차를 확인한다.
movieid_user_df = pd.DataFrame({ 'no_user_wat': ratings_df.groupby('movieId')['userId'].count(), 'ratings_mean': ratings_df.groupby('movieId')['rating'].mean(), 'ratings_std': ratings_df.groupby('movieId')['rating'].std() }) movieid_user_df = movieid_user_df.reset_index() print(movieid_user_df.shape) print(movieid_user_df.head(10)) (9724, 4) movieId no_user_wat ratings_mean ratings_std 0 1 215 3.920930 0.834859 1 2 110 3.431818 0.881713 2 3 52 3.259615 1.054823 3 4 7 2.357143 0.852168 4 5 49 3.071429 0.907148 5 6 102 3.946078 0.817224 6 7 54 3.185185 0.977561 7 8 8 2.875000 1.125992 8 9 16 3.125000 0.974679 9 10 132 3.496212 0.859381
rating이 부여된 횟수(no_user_wat)를 x축으로 하여 분포를 확인하면 아래와 같다.
추천시스템 관련 연구에서는 sparse dataset의 형태를 거르고 넘어갈 수 없다.
(내용 추가 예정)
-------------------------------------
우선 여기까지 하고 게시글을 잠시 멈춘다.
분석 목표에 따라 EDA는 다르게 진행되어야 한다.
장르별 분석이 목표라면 링크의 kaggle 자료를 참고해도 좋을 듯 하다(링크).
2021년 5월 7일 금요일
[미완성][논문 리뷰] PSO(Particle Swarm Optimization)를 이용한 SVM parameter 튜닝 관련 논문
Support vector machine parameter tuning based on particle swarm optimization metaheuristic.
(Korovkinas K., Danėnas P. and Garšva G. (2020) “Support vector machine parameter tuning based on particle swarm optimization metaheuristic”, Nonlinear Analysis: Modelling and Control, 25(2), pp. 266–281. doi: 10.15388/namc.2020.25.16517.)
이 논문을 리뷰하게 된 까닭은, 현재 수강중인 비선형최적화 강의의 과제를 위해서이기도 하지만 좀 더 확장하여 modified SVM based RS를 구현하는 것에 그 목적이 있다. 논문 선정 기준은 우선 비선형최적화에 대한 주제를 담으면서도, RS에 적용가능한 모델에 적용가능하고, Q1, SCI급 논문인 것으로 선택했다.
기준은 교내 포탈에서 제공하는 JCR 랭킹,
검색엔진은 http://www.webofscience.com 를 이용했다.
(Abstract)
본 논문은 Particle swarm optimization metaheuristic을 이용한 linear SVM의 parameter tuning을 소개함. 해당 방법은 SVM을 이용한 텍스트 데이터의 분류 정확도 향상을 위해 최적 코스트의 parameter를 찾아줌. 추가적으로, majority voting based ensembling 방법이 제안된 방법의 효율성을 증가시키기위하여 적용되었음.
1 Introduction
SVM은 감성 분류 문제에 가장 자주 쓰이는 ML 알고리즘이며, 여러 고난도의 도메인에서 그 성능을 증명해왔음.
그러나, 현재 시류에서 사람이 그 수준을 결정하는 manual hyper-parameter selection을 위한 그 어떤 휴리스틱 규칙이나 SVM을 위한 rules of thumb도 제공되지 못했음.
대부분 이러한 hyper-parameter 튜닝에 있어서는, 대부분이 몇가지 휴리스틱 알고리즘을 이용하는데, 유전 알고리즘 또는 이 리뷰의 주제가 되는 PSO(Particle Swarm Optimization), colony optimization 등이 그러한 알고리즘임.
이 중 PSO는 다른 진화 알고리즘과 결합되었을 때 더 좋은 성능을 내는데, [47]의 경우가 좋은 예시임.
앙상블 분류 모형은 자주 쓰이지만, 단일 모형에 비해 오히려 성능이 떨어지는 경우가 많음. 저자는 [4]의 ensemble voting 알고리즘이 감성 분류 문제에서 좋은 성능을 보였다는 것에 동기를 부여받아 텍스트 데이터 분류 문제에서의 LSVM(Linear SVM) 성능을 단순한 방법을 이용해 개선코자 함.
2 Relevant algorithms
2.1 Support vector machines
SVM에 대해서는 다른 게시물에서 다루는 중이며 지속 업데이트 될 예정이다. 본 게시글에서는 간단히만 다루도록 한다.
본 논문의 linear SVM은 학습데이터가 매우 커다랄 때를 목적으로 최적화된다.
훈련 벡터집합 \(x_i\in\mathbb{R}^n\), \(i=1, ... , l\)이 2클래스 집합이고, 분류문제 \(y\in\mathbb{R}^l\)이 \(y_i=\{1,-1\}\)라고 했을 때, 결정 함수(결정 경계의 함수)는 다음과 같다:
\[sgn(w^Tx)\]
이후 논문에서는 L2 정규화된 L1 loss SVC(support vector classifier)가 해결하는 primal problem과 L2 정규화된 L2 loss SVC가 해결하는 primal problem의 dual representation 된 형태가 주어져 있다. 결과적으로는 L1-정규화가 sparse solution \(w\)를 generate한다. SVM은 기본적으로 결정경계를 찾는 것이 목표이므로, 본 논문에서의 linear SVM 또한 동일한 목적을 갖는다.
2.2 PSO(Particle Swarm Optimization) 알고리즘
PSO 자체는, 따로 게시글을 만들어 다뤄보아야 할 것 같다. 직관적인 이해는 어느정도 했으나, 역시나 수식이 문제다. 우선은 논문에서 다룬 수준에서 겉핥기라도 해보는 것이 좋겠다.
우선 PSO는 논문 reference의 [11]에서 소개된 이론이다. 주로 Genetic algorithm과 비교되는 편인데, 그 이유는 조금 더 찾아보아야겠다. 아마도, optimizer로 사용되는 메타휴리스틱 알고리즘 계열이지 않을까 싶다. NP-hard 문제들에도 제법 많이 사용되는 것으로 보았을 때 objective가 같기 때문일것도 같다.
PSO는 간단히 말해 개별 입자가 서로 다른 속도(방향의 개념이 포함)로 움직이면서, 개별 입자의 best fit을 찾아나가는 알고리즘이다.
\(t\)를 discrete time step이라고 할 때, \(a_i(t)\)는 i번째 입자의 위치이고, 이 때 i의 속도는 \(v_i(t)\)이다. 수식으로 나타내면 다음과 같다. :
\[a_i(t+1)=a_i(t)+v_i(t+1)\]
이때, \(a_i(0)\sim\mathrm{U}(a_{min}, a_{max})\)인데, 어떤 논문 중에서는 이 초기값의 위치를 K-means 등을 이용해 설정하기도 하는 듯하다. 그렇다면 아마도 GMM을 이용한 방법론을 소개한 논문도 있을 것이라 생각된다.
아무튼 이때 속도 \(v_i(t)\)는 개별 입자에 대한 경험적 지식과 그 입자 주변의 이웃 입자의 정보 변화에 모두 영향을 받는다는 가정을 한다. 때문에 Global Best PSO에서 입자 i의 속도는 다음과 같이 계산되고, 앞선 가정은 \(c_1\), \(c_2\)를 통해 수식에서 구현된다. :
\[v_{ij}(t+1)=v_{ij}(t)+c_1r_{1j}(t)[b_{ij}(t)-a_{ij}(t)]+c_2r_{2j}(t)[\widehat{b}_{j}(t)-a_{ij}(t)]\]
수식에서 확인할 수 있듯이, 이때의 i번째 입자가 j번째 차원(\(j=1, ... , n_a\))에서 t-step에서 갖는 속도는 \(v_{ij}(t)\)로 나타낼 수 있다.
언급했듯이, \(c_1\), \(c_2\)는 속도에 영향을 주는 경험적 + 근접이웃에 의해 결정되는 상수이다. 이 부분도 사실 자세한 조사가 필요하다. 결국은 처음 PSO를 제안한 논문을 확인해야 할 것 같다. 당장에 드는 의문은 이러한 상수 또한 일종의 parameter로 보인다는 것이다.
\(r_{1j}(t), r_{2j}(t)\sim\mathrm{U}(0,1)\)는 stochastic element를 해당 수식에 부여하는 역할이다.
그리고, \(b_i\)는 personal best position이라 명명된 것으로, 최초의 t-step으로부터 마지막 t-step까지 i번째 입자가 방문했던 모든 position 중 가장 best 인 position을 일컫는다. \(t+1\) 단계에서의 personal best position은 다음과 같이 계산된다. :
\[\begin{cases}b_i(t) & \text{if } f(a_i(t+1)) \geq f(b_i(t)) \\ a_i(t+1) &\text{if } f(a_i(t+1)) < f(b_i(t))\end{cases}\]
이때의 함수 \(f : \mathbb{R}^n_{a} \to \mathbb{R}\)는 fitness function으로, 진화 알고리즘과 같이 사용되는 경우에는 이 함수가 현재의 해가 최적해에 얼마나 근접했는지를 나타낸다. 그러니까, 이 함수가 particle의 퍼포먼스 또는 품질을 measure한다. 관련 reference가 논문의 [12]이다.
결과적으로 global best position인 \(\widehat{b}(t)\)는 t-step에서 다음과 같이 정의된다 :
\[\widehat{b}(t)\in\{b_0(t), ... , b_{n_s}(t)\}, f(\widehat{b}(t))=\min\{f(b_0(t)), ... , f(b_{n_x}(t))\}\]
이때, \(n_s\)는 swarm에 속한 particle의 총 갯수이다.
이상으로, 간단한 수준에서 PSO를 살펴보았다. 이론의 사상은 마치 새 떼나 정어리 떼에 비유할 수 있지 않을까 싶고, 수식화 되었다는 것이 흥미롭다. 특히 관심갖게 되는 속성으로는 개별 입자의 속도가 아닐까 싶은데, 매 시점마다 그 속도가 달라진다는 점에서 일반적으로의 속도에 빗대기는 어려워보인다. 허무맹랑한 상상일지 모르겠으나, 속도 외에 다른 물리적인 속성을 부여하면 또 완전히 다른 알고리즘이 탄생할 수 있지 않을까 싶기도 하다.
3 Proposed Method
(내용 추가 예정)
[Git] Trailing comma의 용도
현재 저는 사내에서 개발자 교육을 받고 있습니다. 오늘의 포스팅은 해당 교육 중 과제를 통해 알게 된 Trailing comma에 대한 내용입니다. 2022-04-03, SSG TECH101 과정 중 Git 수업 Title : About Trail...
-
Updated on 2021-09-30 NAME : DAE-HYUN JIN e-mail : daehyunjin.statistics@gmail.com <학력사항> 동국대학교 (2011-03 ~ 2018-02) 산업시스템공학과 전공 • 학...
-
Concrete Auto-encoders for Differentiable Feature Selection and Reconstruction (Abid, Abubakar et al. “Concrete Autoencoders for Differentia...
-
About Rating Elicitation Rating Elicitation은 추천시스템을 처음 이용하는 신규 User에게 Seed itemset을 전달하여 rating을 부여하도록 권유하는 전략이다. 이러한 전략을 사용하는 까닭은, 신규 User의...
