데이터사이언스 21

과적합(Overfitting) 방지하기

과적합(Overfitting) 과적합이란 모델이 학습 데이터에 대해서만 좋은 성능을 발휘하는 것을 의미합니다. 학습 데이터를 불필요할 정도로 과하게 암기하여 훈련용 데이터의 노이즈까지 학습한 상태입니다. 따라서 모델 학습 시 오버피팅을 방지하기 위한 노력이 필요합니다. 과적합을 방지하기 위한 방법은 다음과 같습니다. 1. 데이터 양 확대 데이터가 부족할 경우 오버피팅 확률이 증가하므로 데이터 양을 늘리면 데이터의 일반적인 규칙을 학습할 확률이 증가합니다. 데이터가 부족하지만 추가 수집이 어려울 경우 데이터 증강(Data Augmentation)을 통해 확장할 수 있습니다. 특히 이미지의 경우 이미지에 노이즈를 조금씩 추가하여 데이터를 증가시키는 것이 가능합니다. ex) 모의고사 문제를 전부 암기만 한 학..

맥주 추천시스템 구현 - 3. 탐색적데이터분석

탐색적데이터분석 수집한 맥주 리뷰 데이터를 관찰하며 다각도로 시각화해보았습니다. 우선 필요한 라이브러리들을 import합니다. import pandas as pd import plotly.express as px import plotly.graph_objects as go import plotly.figure_factory as ff pd.set_option('display.max_rows', 100) beer = pd.read_csv('전처리후데이터.csv', encoding='utf-8', index_col=0) beer.head(3) 살펴 볼 데이터의 개략적인 정보들입니다. beer.info() 다음은 맥주 평점에 대한 히스토그램입니다. label = ['distplot'] hist_data = [..

Visualization 코로나 데이터 분석하기

📌First Topic 코로나 종식? 줄어든 관심, 그러나 늘어나는 해외발 확진자 https://dacon.io/competitions/official/235590/codeshare/934?page=1&dtype=recent&ptype=personal 📌Second Topic "인구"관점 시각화 업데이트 https://dacon.io/competitions/official/235590/codeshare/959 📌Third Topic 코로나 정책은 과연 효과가 있었을까? https://dacon.io/competitions/official/235590/codeshare/1003 by Team Signal-9

활성함수의 역할과 종류 이해하기

📈활성 함수의 역할 activation function은 출력값을 변환해주는 역할을 하는 함수입니다. 이렇게 할 경우 input에 대한 결과값을 얼마나 출력할 지를 조절할 수 있습니다. 또한 비선형 함수를 사용하여 여러 개의 층을 쌓을 수 있도록 만들어 줍니다. 📌왜 비선형함수일까? 선형 함수를 사용할 경우 층을 쌓는 의미가 사라집니다. 그 이유를 예를 들어 보겠습니다. $h(x)=cx$라는 선형함수 식을 활성함수로 사용할 경우 $y(x)=h(h(h(x)))$로 여러 층을 쌓은 결과가 $y=c^3x$가 됩니다. $c^3$을 $a$로 치환하면 $y=ax$인 선형 함수로 돌아와 버립니다. 따라서 층을 구성하는 의미가 없게 되므로 반드시 비선형함수를 사용해야 합니다. 📈활성 함수의 종류 activation f..

Logistic Regression - 당뇨병예측

로지스틱 회귀를 활용해 피마 인디언 당뇨병을 예측해보려고 합니다. UCI Machine Learning에서 제공하는 피마 인디언 당뇨병 데이터를 갖고 Classfication 실습을 해보았습니다. https://archive.ics.uci.edu/ml/index.php 📌데이터 수집 및 전처리 코드는 Colab에서 작성하였고 Drive에 csv파일을 올려두었습니다. 필요한 라이브러리들을 모두 불러와줍니다. 데이터 처리를 위한 Pandas, Numpy 시각화 라이브러리 plotly 머신러닝 프레임워크인 sklearn 교차 검증을 위한 cross_val_score, KFold 평가를 위한 accuracy_score, precision_score, recall_score import pandas as pd i..

맥주 추천시스템 구현 - 8. 웹 배포하기(Pythonanywhere)

✅git repository 만들기 git repository를 생성합니다. 생성한 후 화면입니다. 파이참에서 작업한 디렉토리를 이 repository에 올리겠습니다. ✅github push하기 git에 올리려는 디렉토리에서 다음 순서로 명령어를 실행합니다. 주의할 점은 .gitinit 파일을 생성한 뒤, 올리지 말아야 할 파일들은 제외합니다. 이것을 언어나 환경에 맞게 자동으로 맞추어주는 사이트도 있습니다. https://www.toptal.com/developers/gitignore 위 사이트에서 나온 텍스트 내용을 .gitignore에 Copy & Paste합니다. 추가로 Django의 settings.py에서 Debug모드를 False로 바꾸고, ALLOWED_HOSTS = ['*']로 변경합니다..

맥주 추천시스템 구현 - 7. 웹 구현하기(Django)

🔨URL 설정하기 우선 프로젝트 폴더의 urls.py를 수정합니다. 현재 프로젝트 이름은 myproject입니다. ''로 경로가 없으면 beer 앱의 경로로 넘어갑니다. from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('beer.urls')), ] 이번엔 beer 앱의 urls.py를 수정합니다. '' 경로로 접근 시 views.py의 index 함수를 실행합니다. ver1, ver2 역시 마찬가지로 views.py의 ver1, ver2 함수를 실행합니다. from django.urls import path fr..

맥주 추천시스템 구현 - 6. 웹 설정하기(Django)

🔨패키지 설치 및 환경설정 구현한 추천시스템을 웹으로 구현하고 배포까지 진행해보려고 합니다. 에디터는 Pycharm을 사용했고 Django로 구현할 예정입니다. New project 선택 후 새로운 프로젝트를 생성합니다. Django와 Pandas, scikit-learn 패키지를 가상환경에 설치합니다. 명령어를 터미널에서 실행합니다. pip install django pip install pandas pip install scikit-learn 그리고 새로운 프로젝트를 생성합니다. 프로젝트 이름은 myproject로 지었습니다. 디렉토리에 myproject 폴더가 추가되었습니다. 프로젝트를 처음 생성했으므로 다음 명령어로 database를 초기화 시켜주겠습니다. manage.py 파일을 사용하기 위해 ..

맥주 추천시스템 구현 - 5. CF 기반 추천시스템 구현

🔗아이템 기반 협업필터링(CF) 추천시스템 구현에 사용할 알고리즘은 아이템기반 CF입니다. 협업필터링(CF)은 최근접 이웃 협업필터링과 잠재 요인 협업필터링으로 나뉩니다. 그리고 최근접 이웃 협업필터링은 다시 유저 기반과 아이템 기반으로 나뉩니다. 그 중에서도 아이템 기반을 선택한 이유는 다음과 같습니다. 유저 개인의 취향이 너무 다양하다. 그에 반해 리뷰를 남기는 맥주 수는 한정적이다. 따라서 아이템 기반으로 추천하는 것이 적절하다고 판단했습니다. 🎇데이터 정제하기 수집한 맥주 데이터에는 리뷰가 1개인 맥주들이 있습니다. 리뷰를 남긴 유저들도 마찬가지입니다. 이는 추천시스템의 성능을 저하시킬 수 있으므로 최소 10개 이상의 리뷰를 가진 맥주와 유저들만으로 이루어진 데이터셋을 구성합니다. import p..

맥주 추천시스템 구현 - 4. 클러스터링

📊맥주별 클러스터링 시각화 이번엔 맥주 데이터를 5가지 평가 요소를 기준으로 클러스터링 해보았습니다. 향, 외관, 맛 등의 요소에 따라 서로 다른 군집들이 나타날 것 같았기 때문입니다. 우선 필요한 라이브러리들을 import하고 데이터도 불러오겠습니다. 시각화 라이브러리로는 📊plotly를 사용했습니다. import pandas as pd import numpy as np import plotly.express as px import plotly.graph_objects as go import plotly.io as po from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler, MinMaxScaler impor..