목록전체 글 보기 (259)
귀퉁이 서재
이번 장에선 희소 행렬에 대해 알아보겠습니다. 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. 이전 장에서 배웠던 CountVectorizer, TfidfVectorizer를 이용해 피처 벡터화를 하면 상당히 많은 칼럼이 생깁니다. 모든 문서에 포함된 모든 고유 단어를 피처로 만들어주기 때문입니다. 모든 문서의 단어를 피처로 만들어주면 수만 개에서 수십만 개의 단어가 만들어집니다. 이렇게 대규모의 행렬이 생기더라도 각 문서에 포함된 단어의 수는 제한적이기 때문에 행렬의 대부분의 값은 0으로 채워집니다. 이렇듯 대부분 값이 0으로 채워진 행렬을 희소 행렬(Sparse Matrix)이라고 합니다. 아래는 희소 행렬의 예시입니다. 이와..
이전 장에서 BOW에 대해 알아봤고, BOW의 피처 벡터화는 카운트 기반 벡터화(CountVectorizer)와 TF-IDF(Term Frequency - Inverse Document Frequency) 기반 벡터화가 있다고 했습니다. 이번장에서는 CountVectorizer와 TF-IDF에 대해 알아보겠습니다. 이번 장 역시 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. 카운트 기반 벡터화 이전 장에서 BOW(Bag of Words) 모델에서의 피처 벡터화 수행 방법에 대해 설명했습니다. 그와 마찬가지로, 단어 피처에 값을 부여할 때, 각 문서에서 해당 단어가 나타나는 횟수, 즉 Count를 부여하는 경우를 카운트 벡터화라고 합니다. ..
이번 장에선 Bag of Words에 대해 알아보겠습니다. 이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. Bag of Words란 단어들의 문맥이나 순서를 무시하고, 단어들에 대해 빈도 값(frequency)을 부여해 피쳐 값을 만드는 모델입니다. Bag of Words는 직역하자면 단어들의 가방입니다. 문서 내 모든 단어를 한꺼번에 가방(Bag) 안에 넣은 뒤에 흔들어서 섞는다는 의미로 Bag of Words(BOW) 모델이라고 합니다. BOW를 기반으로 피처 추출하기 아래의 두 문장이 있다고 가정하고 이 문장을 BOW 기반으로 피처 추출해보겠습니다. 문장1: 'My wife likes to watch baseball ..
텍스트 전처리 세 번째 주제는 어간 추출(Stemming)과 표제어 추출(Lemmatization)입니다. 이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. 택스트 전처리의 목적은 말뭉치(Corpus)로부터 복잡성을 줄이는 것입니다. 어간 추출과 표제어 추출 역시 말뭉치의 복잡성을 줄여주는 텍스트 정규화 기법입니다. 텍스트 안에서 언어는 다양하게 변합니다. 영어를 예로 들면, 과거형, 현재 진행형, 미래형, 3인칭 단수 여부 등 많은 조건에 따라 원래 단어가 변화합니다. play를 예로 들면, plays, played, playing 등과 같이 조건에 따라 다양하게 달라집니다. 어간 추출(Stemming)과 표제어 추출(Le..
텍스트 전처리 두 번째 주제는 불용어(Stop word) 제거입니다. 불용어(Stop word)는 분석에 큰 의미가 없는 단어를 지칭합니다. 예를 들어 the, a, an, is, I, my 등과 같이 문장을 구성하는 필수 요소지만 문맥적으로 큰 의미가 없는 단어가 이에 속합니다. 이런 불용어는 텍스트에 빈번하게 나타나기 때문에 중요한 단어로 인지될 수 있습니다. 하지만 실질적으로는 중요한 단어가 아니므로 사전에 제거해줘야 합니다. 이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문 (유원주 저)을 요약정리했습니다. 불용어 확인하기 import nltk nltk.download('stopwords') print('영어 불용어 갯수:',len(nltk.corp..
NLP에서 텍스트 자체를 바로 피처로 사용할 수는 없습니다. 사전에 텍스트 전처리 작업이 반드시 필요합니다. 텍스트 전처리를 위해서는 클렌징, 토큰화, 불용어 제거, 정규화 등의 작업이 필요합니다. 텍스트 전처리 첫번째 시간으로 이번 장에서는 텍스트 토큰화에 대해 알아보겠습니다. (참고로, 파이썬 머신러닝 완벽 가이드(권철민 저)와 딥 러닝을 이용한 자연어 처리 입문(유원준 저)를 요약정리한 것입니다.) 그전에 말뭉치(Corpus, 코퍼스)의 뜻에 대해 먼저 알아보겠습니다. 말뭉치를 위키피디아에서 검색하면 아래와 같이 나옵니다. 말뭉치 또는 코퍼스(Corpus)는 자연언어 연구를 위해 특정한 목적을 가지고 언어의 표본을 추출한 집합이다. (Reference1) 어렵게 설명이 되어 있는데 그냥 우리가 사용..
자연어(Nautral Language)란 인간이 일상에서 사용하는 언어를 말합니다. 자연어 처리(Natural Laguage Processing)란 기계가 자연어를 이해하고 해석하여 처리할 수 있도록 하는 일을 말합니다. 자연어 처리(Natural Laguage Processing)는 줄여서 NLP라고 부릅니다. 자연어 처리(NLP)와 텍스트 분석(Text Mining)은 엄밀히 말하면 다른 개념입니다. 자연어 처리는 기계가 인간의 언어를 해석하는데 중점이 두어져 있다면, 텍스트 분석은 텍스트에서 의미 있는 정보를 추출하여 인사이트를 얻는데 더 중점이 두어져 있습니다. 다만, 머신러닝이 보편화되면서 자연어 처리와 텍스트 분석을 구분하는 것이 큰 의미가 없어졌습니다. NLP가 활용되는 분야 텍스트 분류(T..
7번째로 필사한 대회는 Statoil/C-CORE Iceberg Classifier Challenge입니다. 바다 위에 떠다니는 빙하는 위협적인 존재입니다. 타이나닉 호도 빙하에 부딪혀 침몰했으니 말이죠. 빙하가 어디에 위치해있는지 판단할 수 있다면 이런 사고를 막을 수 있을 겁니다. 본 대회는 위성으로 찍은 사진을 기반으로 그 물체가 빙하인지 배인지 분류하는 대회입니다. (Statoil과 C-CORE는 회사 이름입니다.) (Kaggle: Statoil/C-CORE Iceberg Classifier Challenge) 데이터의 속성(feature)는 band_1, band_2, inc_angle로 단 3가지입니다. band_1과 band_2 column은 한 element 당 75x75 = 5,625개의..
코엑스 영풍문고에서 책을 구경했을 때였다. 매번 서점에 가면 철학 섹션과 고전 섹션을 먼저 본다. 특히 철학 섹션에서 오랜 시간 머물며 시간을 보낸다. 하지만 그 넓은 코엑스 영풍문고에서 철학 섹션은 단 한 칸에 불과했고 그마저도 2단으로 되어있는 책꽂이의 뒤쪽에 있어 보기가 여간 불편했다. 게다가 철학자들이 쓴 원저가 아니라 그 원저를 설명해놓은 해설서나 철학 입문서들 위주였다. 문득 군 시절 휴가 나왔을 때가 생각이 났다. 특별한 일이 없으면 휴가 나올 때마다 천안 교보문고를 찾았다. 철학 섹션의 바닥에 아빠 다리를 하고 앉아 이 책 저책 구경하는 재미가 있었다. 인생에 무슨 도움이 되는지 잘 모르겠는 그런 책들을 보며 뭐가 그리 재밌었는지.. 그러나 코엑스 영풍문고에서는 그렇게 할 수가 없어 안타까..
6번째로 커널 필사를 한 대회는 Costa Rican Household Poverty Level Prediction입니다. 한 가정이 가지고 있는 140여 개의 속성을 기반으로 그 가정이 가난한 가정인지 부유한 가정인지 판단하는 대회입니다. 훈련 데이터 9,500개, 테스트 데이터 23,000개로 테스트 데이터가 더 많습니다. feature는 총 142개로 이루어져 있습니다. (Kaggle: Costa Rican Household Poverty Level Prediction) 다른 대회보다 재미있었습니다. 한 가정이 가지고 있는 다양한 속성을 기반으로 가난 여부를 판단하는 것이니 EDA를 하거나 새로운 feature를 만들 때 직관과 일치되는 부분이 많았기 때문입니다. 일련의 작업은 제 깃헙을 참고해주셔..
개인적으로 불교를 하나의 철학으로서 좋아한다. 종교로서는 그다지 믿지 않는 편이다. 절에 가서 108배를 한다고 나의 바람이 이루어질 거라 생각하지 않는다. 사실 과거 성인들은 모두 존경한다. 예수, 석가, 소크라테스, 공자, 노자 모두를 존경하고 그들의 철학 또한 존경한다. 이들 중 예수와 석가의 사상은 종교로까지 발전해 많은 사람들에게 영향을 끼쳤다. 하지만 개인적으로는 예수든 석가든 신으로서 우리를 보호해준다고 생각하지는 않는다. 즉, 종교로서는 믿지 않는다는 뜻이다. 다만 예수와 석가 모두 존경받아 마땅한 사람이고, 그들의 사상은 두말할 나위 없이 훌륭하다고 생각한다. 개인의 호불호가 있듯이 나는 그런 성인 중 석가와 노자를 좋아한다. 더 정확히 말하자면 석가와 노자의 철학을 좋아한다. 내가 평안..
각 고객의 정보를 기반으로 해당 고객이 대출한 돈을 갚을 수 있을지 없을지에 대한 확률을 예측하는 대회입니다. 본 대회는 다소 어려웠습니다. 우선, 주어진 데이터 파일이 워낙 많다 보니 어떤 것을 어떻게 활용해야 하는지 감이 잘 안 잡혔고, 금융에 대한 도메인 지식도 많이 없다 보니 Feature Engineering을 하는 것이 어려웠습니다. 제 깃헙은 https://github.com/BaekKyunShin/Kaggle/tree/master/Home_Credit_Default_Risk 입니다. A Gentle Introduction Home Credit Default Risk에 대해 전체적으로 훑어보는 커널입니다. EDA, 간단한 Feature Engineering을 통해 예측을 해봅니다. Encod..
선형판별분석(Linear Discriminant Analysis, LDA) 선형판별분석(Linear Discriminant Analysis, LDA)는 PCA와 마찬가지로 축소 방법 중 하나입니다. (구글에 LDA라고 치면 토픽 모델링 기법인 Latent Dirichlet Allocation이 주로 나올 겁니다. 이와는 다른 개념인 선형판별분석에 대한 글입니다.) LDA는 PCA와 유사하게 입력 데이터 세트를 저차원 공간으로 투영(project)해 차원을 축소하는 기법이지만, PCA와 다르게 LDA는 지도학습의 분류(Classification)에서 사용됩니다. LDA 원리 PCA는 데이터의 변동성이 최대가 되는 축을 찾아 주성분으로 정했지만, LDA는 데이터의 Target값 클래스끼리 최대한 분리할 수 ..
제3부: 지배하는 문명, 지배받는 문명 제11장: 가축의 치명적 대가, 세균이 준 사악한 선물 총과 쇠만으로 유럽인이 비유럽인을 정복할 수 있었던 것은 아니다. 병원균이라는 사악한 선물이 없었더라면 정복은 이루어지지 못했을 것이다. 11장에선 유럽인이 다양한 병원균을 가질 수 있었던 이유에 대해 설명한다. 유럽인이 다양한 병원균을 가질 수 있었던 원인 병원균은 궁극적으로 조밀한 인구와 가축화 때문에 많아졌다. 우선, 조밀한 인구와 병원균의 관계를 살펴보자. 앞서 살펴봤듯이 농경민은 수렵 채집민에 비해 인구 밀도가 높다. 인구 밀도가 높으면 그렇지 않은 것에 비해 전염병이 쉽게 퍼질 수 있다. 그리고 수렵 채집민은 자신의 분뇨를 방치한 채 다른 곳으로 떠날 수 있는 반면, 농경민은 정착 생활을 하기 때문에..
어떻게 하다 보니 공교롭게 2019년을 마무리하는 책으로 인류 대서사시인 총, 균, 쇠를 읽게 되었다. 2017년 마무리는 코스모스, 2018년 마무리는 사피엔스였고, 올해는 총, 균, 쇠로 마무리한다. 매년 말 인류 대서사시를 읽으며 마무리한다는 게 한편으론 뿌듯하다. 내년 말엔 어떤 책을 읽을지 벌써 궁금하다. 총, 균, 쇠의 주제는 간단하지만 내용이 워낙 방대하고 디테일하다 보니 1~2부와 3~4부로 나누어 정리하려고 한다. 그리고 다른 책과는 다르게 나의 생각을 최대한 배제하고 재레드 다이아몬드가 주장하는 바를 체계적으로 정리하는 것으로 서평을 갈음하고자 한다. 사실 서평이 아닌 책 요약이라고 보면 되겠다. 이렇게 요약하지 않고서는 책을 다 읽고 난 뒤 내용을 까먹을 것 같았다. 제1장을 읽고 요..
Porto Seguro는 브라질의 자동차 보험 회사입니다. 본 경진 대회의 목적은 어떤 차주가 내년에 보험 청구를 할 확률을 예측하는 겁니다. 데이터는 59만 개의 훈련 데이터와 89만 개의 테스트 데이터로 구성되어 있습니다. 테스트 데이터가 훈련 데이터보다 많습니다. 그리고 Null 값이 np.NaN이 아닌 -1로 되어있습니다. 또한, Feature가 무엇을 뜻하는지 제시하지 않았다는 것이 특징입니다. 보통은 특정 Feature가 무엇을 나타내는지 알려줍니다. 예를 들어 집 값을 예측하는 데이터에서 Feature 중 방 크기(Area)가 있습니다. 방 크기가 크면 집 값이 올라갈 것이라는 예상을 해볼 수 있습니다. 하지만 Porto Seguro 컴피티션에는 각 Feature가 무엇을 의미하는지 알 수 ..
회귀의 평가를 위한 지표는 실제 값과 회귀 예측값의 차이를 기반으로 합니다. 회귀 평가지표 MAE, MSE, RMSE, MSLE, RMSLE는 값이 작을수록 회귀 성능이 좋은 것입니다. 값이 작을수록 예측값과 실제값의 차이가 없다는 뜻이기 때문입니다. 반면, R² 는 값이 클수록 성능이 좋습니다. 각 회귀 평가지표 별 구하는 공식은 아래와 같습니다. 캐글 회귀 문제에서도 아래의 평가 지표가 자주 사용됩니다. MAE (Mean Absolue Error) 실제 값과 예측 값의 차이를 절댓값으로 변환해 평균한 것 MSE (Mean Squared Error) 실제 값과 예측 값의 차이를 제곱해 평균한 것 RMSE (Root Mean Squared Error) MSE 값은 오류의 제곱을 구하므로 실제 오류 평균보..
공룡책으로 유명한 '파이썬 머신러닝 완벽가이드' 스터디를 했습니다. 2019년 11월 7일에 강의와 교재를 구매하여, 11월 28일인 오늘 7장 군집화까지 모두 끝냈습니다. 퇴근 후 짬을 내어 공부를 하다 보니 3주 정도 걸렸습니다. '파이썬 머신러닝 완벽가이드'는 워낙 유명한 책이라 아시는 분들도 많을 겁니다. 웬만한 내용은 이미 공부했던 거라 할까 말까 처음엔 망설였지만 하기를 잘한 것 같습니다. 디테일한 부분까지 공부할 수 있었고, 비지도 학습까지도 체계적으로 배울 수 있었습니다. 책을 보면 저자가 얼마나 정성을 들여 집필했는지 알 수 있습니다. 스터디 방식은 각 챕터별로 먼저 강의를 듣고, 교재로 복습하고, 코드로 재차 복습을 했습니다. 코드나 스터디 히스토리가 궁금하신 분들은 제 깃헙을 참고해주..
지금 눈에 보이는 건물과 거리, 고원 가운데 80퍼센트가 지금보다 기능과 구조가 뛰어났다면 당신과 당신의 부모, 형제, 자녀의 삶은 어땠을까? 모든 동네가 활기 넘치고 주민들끼리 어울리기 쉬운 환경이었다면 어땠을까? 저렴하고 편리한 대중교통을 쉽게 이용할 수 있다면 어땠을까? 모든 주택과 아파트에서 걸어갈 수 있는 거리에 디자인이 뛰어나고 잘 관리된 공원이 있거나 집에서 공원이 보인다면? 모든 집과 직장, 교실에 자연광이 들어오는 커다란 창문이 있다면? 이 모든 게 가능했다면 당신과 당신이 사랑하는 사람들의 삶은 지금과 달랐을 것이다. 우리가 살아가는 데 있어서 '공간'이란 어떤 의미일까? '공간'이 우리에게 얼마나 많은 영향을 줄까? 사람을 행복하게 하는 '공간'은 어떤 형태일까? 어떤 '공간'을 만들..
앤드류 응 교수가 속해있는 스탠퍼드 ML Group에서 최근 새로운 부스팅 알고리즘을 발표했습니다. 머신러닝의 대가인 앤드류 응 교수의 연구소에서 발표한 것이라 더 신기하고 관심이 갔습니다. 2019년 10월 9일에 발표한 것으로 따끈따끈한 신작입니다. 이름은 NGBoost(Natural Gradient Boost)입니다. Natural Gradient이기 때문에 NGBoost지만 Andrew Ng의 NG를 따서 좀 노린 것 같기도 하네요.. 엔쥐부스트라 읽어야 하지만 많은 혹자들이 앤드류 응 교수의 이름을 따서 응부스트라 읽을 것 같기도 합니다. 어쨌든 다시 본론으로 넘어가면, 지금까지 부스팅 알고리즘은 XGBoost와 LightGBM이 주름잡았습니다. 캐글의 많은 Top Ranker들이 XGBoost..