Programming & Machine Learning
-
[추천시스템과 통계 모델 1] - 다양성 지수(Diversity Index)Programming & Machine Learning/Mathematics & Statistics 2024. 2. 27. 14:55
추천시스템을 고도화 할 때 필요한 것 중 하나는, 유저 단위, 혹은 아이템 단위의 적절한 Index를 만들어내는 것이다. 이를테면 어떤 유저는 다양한 아이템을 소비하는 것을 좋아하고, 어떤 유저는 새로운 아이템을 소비하는 것을 좋아하고, 어떤 유저는 자신이 선호하는 카테고리의 아이템만 선호할 수도 있다. 이런 것들을 하나의 Index로 점수화 하여 사용하는 것은 큰 의미가 있다. 물론 Neural Network 구조의 Deep Learning이 보편화 된 이후부터는 Index를 만들어내는 것 자체가 이론적으로는 무의미 해지긴 했지만, 실제 서비스에서는 그렇지 않다. 모델이 Feature Engineering을 아무리 잘 해낸다고 해도, 결국 Binary Task 혹은 지정된 Task에만 활용될 수 있을 ..
-
XGBoost 알고리즘의 간단한 이해Programming & Machine Learning/풀어쓰는 머신러닝 2023. 7. 6. 20:45
캐글에서 가장 유명한 알고리즘은 XGBoost이다. 웬만한 대회의 리더보드에는 XGBoost가 최상단에 위치해 있다. 이가 시사하는 바는, Vision 이나 NLP 등의 Specific한 Task를 제외한 일반적인 ML Task에서 가장 범용적으로 잘 동작하는 알고리즘이 XGBoost라는 것이다. 이런 기법은 아직 문제의 해결법이 미숙하거나 숙련도가 높지 않은 도메인의 새로운 문제를 풀 때 가장 먼저 고려되어야 하는 방법이 될 수 있다. 일반적으로 어떤 도메인의 ML 문제를 해결할 때 가장 중요한 것은 정확한 피쳐 엔지니어링을 통한 모델링이다. 또는 샘플링이나 파라미터 튜닝 같은 ML 테크닉이 중요할 수도 있고, 어떤 알고리즘을 사용하느냐가 중요할 수도 있다. 하지만 오늘 소개할 XGBoost는 데이터 ..
-
[CS224W: Machine Learning with Graphs 강의 내용 요약 - 2]Programming & Machine Learning/CS224W 강의요약 2021. 6. 1. 16:49
http://web.stanford.edu/class/cs224w/ CS224W | Home Content What is this course about? Complex data can be represented as a graph of relationships between objects. Such networks are a fundamental tool for modeling social, technological, and biological systems. This course focuses on the computational, algor web.stanford.edu 본 포스팅은 CSS224W 강의를 들으며 필요한 내용을 요약한 것이다. 필자 주관적으로 필요한 부분만 요약되어 있으니, 참고하길 ..
-
[CS224W: Machine Learning with Graphs 강의 내용 요약 - 1]Programming & Machine Learning/CS224W 강의요약 2021. 6. 1. 16:42
http://web.stanford.edu/class/cs224w/ CS224W | Home Content What is this course about? Complex data can be represented as a graph of relationships between objects. Such networks are a fundamental tool for modeling social, technological, and biological systems. This course focuses on the computational, algor web.stanford.edu 본 포스팅은 CSS224W 강의를 들으며 필요한 내용을 요약한 것이다. 필자 주관적으로 필요한 부분만 요약되어 있으니, 참고하길 ..
-
시계열 분석 이론의 기초 - 2Programming & Machine Learning/풀어쓰는 머신러닝 2020. 7. 24. 16:08
이전 포스팅 : https://yamalab.tistory.com/112 시계열 분석 이론의 기초 시계열 분석은 크게 규칙적 시계열 분석과 불규칙적 시계열 분석으로 나뉜다. 여기서 규칙적 시계열이란 트렌드와 분산이 불변하는 시계열 데이터를 말하고, 불규칙적 시계열이란 트렌드 혹은 yamalab.tistory.com 지난 포스팅에서는 시계열 분석의 종류, 그리고 알고리즘과 패키지의 활용 방법에 대해 정리했었다. 학교나 회사에서 시계열 분석을 제대로 해볼 기회가 없었기 때문에, 간단한 철학과 활용 정도만 이해하는 수준에서 그쳤었다. 언젠가 쓸 수도 있으니, 대충 뭔지 정도만 알자는 마인드. 그러다 최근에 시계열 분석을 작게나마 제대로 해 볼 기회가 있었는데, 그 과정에서 공부한 내용들을 뒤늦게 정리하려고 한..
-
행렬 분해와 차원 축소의 기법들 - [2]Programming & Machine Learning/풀어쓰는 머신러닝 2020. 6. 4. 16:02
지난 포스팅에서는 PCA, SVD를 위주로 한 행렬 분해 기법들에 대해 다루었고, 이어서 행렬 분해와 차원 축소의 기법들을 마저 알아보자. 본 포스팅에서는 확률적 차원축소 방법 중 가장 대표적인 알고리즘인 t-SNE, 그리고 행렬 분해를 기반으로 한 Matrix Factorization과 ALS(Alternating Least Squares)에 대해 서술하겠다. MF와 ALS의 경우 차원 축소에서 언급하기엔 조금 애매한 감이 있지만, 근본적으로 Latent factor를 분석하는 것과 차원 축소의 분석 방법이 크게 다르지 않기 때문에 이번 포스팅에 포함시켰다. 1. t-SNE를 이용한 차원 축소 머신 러닝에 대한 접근법은 전통적인 관점에서 두 가지로 나뉜다. 첫 번째는 행렬과 미분 등을 이용한 최적화로 ..
-
행렬 분해와 차원 축소의 기법들 - [1]Programming & Machine Learning/풀어쓰는 머신러닝 2020. 6. 3. 16:44
본 포스팅은 차원 축소 기법에 대해 조금 더 자세히 정리하는 차원의 글이다. 기존에도 SVD(링크), t-SNE(링크)에 대해 언급한 적은 있지만 intuitive한 정도로만 이해하고 넘어갔었다. 차원 축소는 가장 기본적인 방법인 행렬 분해를 이용하는 방법, 그리고 확률적 차이를 이용하는 방법, Neural Network를 활용하는 방법 등이 있다. 이번에는 행렬을 이용하는 방법과 확률적 차이를 이용하는 방법에 대해서 간단하게 정리하고자 한다. 1. 선행 개념 1) Eigen-decomposition PCA와 SVD를 이해하기 전에 선행 지식이 되는 개념이다. 고유 분해는 정방 행렬 A가 있을 때, 다음과 같은 성질을 만족하는 영벡터가 아닌 벡터 v와 실수 𝜆를 찾아내는 것이다. v는 eigen vect..
-
MNIST로 알아보는 비지도 학습 - [클러스터링과 차원 축소의 적용]Programming & Machine Learning/Python X 머신러닝 2019. 8. 6. 14:01
최근 클러스터링을 사용할 작업이 여기저기 많았다. 그래서 생각난김에 맨땅에 헤딩했던 관련 내용을 정리하고자 한다. 클러스터링 문제를 풀 때 마주치는 보통의 애로사항은 다음과 같다. 첫 번째, real-world 에서의 데이터 대부분은 극단적으로 skewed 하다는 것이다. 이는 모델이 군집을 잘 구분해내는 피처를 사용할 수 없다는 것을 의미한다. 이처럼 skewed한 분포의 데이터에서 군집을 발라내봤자, 기형적인 군집이 형성될 것이 뻔하기 때문이다. 만약 유클리드 거리로 데이터 포인트간의 거리를 계산하기라도 한다면, 사실상 군집 분석의 의미가 없어진다. 두 번째, 모델의 분류가 잘 되었는지를 평가할 방법이 불분명하다. 군집 분석을 하는 상황은 대부분 비지도 학습을 해야 하는 상황이다. 이 경우, 모델의 ..
-
시계열 분석 이론의 기초Programming & Machine Learning/풀어쓰는 머신러닝 2019. 1. 12. 20:42
시계열 분석은 크게 규칙적 시계열 분석과 불규칙적 시계열 분석으로 나뉜다. 여기서 규칙적 시계열이란 트렌드와 분산이 불변하는 시계열 데이터를 말하고, 불규칙적 시계열이란 트렌드 혹은 분산이 변화하는 시계열 데이터를 말하는 것이다. 시계열 데이터를 잘 분석한다는 것은, 불규칙성을 가지는 시계열 데이터에 특정한 기법이나 모델을 적용하여 규칙적 패턴을 적용하거나, 혹은 예측할 수 있도록 하는 것을 의미한다. 아래의 이미지를 보면 직관적으로 이해할 수 있다. (출처 : https://www.analyticsvidhya.com/) 불규칙성을 띠는 시계열 데이터에 규칙성을 부여하는 방법으로는 AR, MA, ARMA, ARIMA 모델 등의 분석 방법을 적용하는 것이 가장 널리 알려져 있다. 이러한 모델을 기반으로 도..
-
Python으로 Custom Sparse Matrix 생성하기Programming & Machine Learning/Python X 머신러닝 2018. 12. 8. 17:28
파이썬은 sparse-matrix를 만들기 위한 훌륭한 라이브러리들을 가지고 있다. one-hot encoding 역시 코드 1~2줄이면 간단하게 사용이 가능하다. 하지만 추천 시스템과 같이 대용량의 sparse-matrix를 처리하거나, Factorization Machine 같은 알고리즘을 사용하는 경우, scikit-learn이나 pandas가 제공하는 dummy encoder 만으로는 부족한 경우가 많다. 모델의 Input 타입이 idx:value 와 같은 text file로 구성되어 있는 경우에 해당한다. 추천 시스템의 경우는 대부분 extreme-sparse matrix를 생성하기 때문에, 학습의 batch시에 hashing으로 idx:value를 지정해 주는 것이 일반적이다. 이렇게 구조를 ..