전체 글 63

07. 웹 크롤링과 법적 문제

웹 크롤링 시 법적 권고안을 무시하면 법적인 문제가 발생할 수 있다. 웹 크롤링(Web Crawling)은 인터넷 서비스 '웹' 브라우저를 통해 인터넷을 돌아다니면서 인터넷 상의 정보를 가져가는 행위를 거미가 거미줄을 위를 기어다니는 것처럼 표현한 것이다. * 웹(Web)은 FTP처럼 대중적으로 사용되는 인터넷 서비스 또는 규약의 한 종류(웹 ≠ 인터넷) 웹 상의 정보에 대한 권리는 서비스 공급자에게 있다. 웹 크롤링을 수행하는 클라이언트는 정보 제공자의 요구를 반드시 받아들여야 할 의무는 없지만, 접근 금지를 요청하거나 법적인 문제를 제기하는 주체가 공급자이므로 받아들이는 것이 좋다. robot.txt는 관리자가 크롤링을 허용하는 정보와 허용하지 않는 정보를 명시해놓은 파일이다. 페이지 URL 주소 뒤..

06. 자동화 도구: Selenium

Selenium은 마우스나 키보드를 통한 브라우저 조작을 자동화하는 도구이다. Selenium은 사용자에 의해 이루어지는 웹 브라우저의 조작 및 제어를 자동화하는 도구이며, 사용자의 입력에 따라 동적으로 움직이는 페이지를 크롤링하는 동적 페이지 크롤링에 사용된다. Selenium 사용 시 웹 브라우저 제어 도구인 드라이버(Driver)로 별도의 창을 열게 되므로, 웹 브라우저를 실행하지 않고 페이지 소스만을 가져오는 requests 모듈에 비해 속도가 느리다. 그러나 requests 모듈의 경우 정적 웹 문서에 대한 크롤링만 가능한 반면, selenium은 마우스 클릭 및 스크롤링, 키보드 입력 등 모든 동적 활동에 대응할 수 있다. 따라서 동적 페이지의 비중이 커진 요즘의 웹 크롤링 작업에서 활용도가 ..

05. 데이터의 형태(2): HTML

HTML 데이터는 태그명이 태그 속 정보를 대표하지 않아 크롤링이 까다롭다. XML은 데이터 저장 및 정보 전달을 주된 목적으로 하는 언어이다. 따라서 각 태그가 별다른 기능을 제공하지 않고, 태그의 이름이 각 태그 안의 정보를 대표하는 역할을 한다. 즉, 태그의 이름으로부터 태그 속 정보의 내용을 유추할 수 있다. 반면, HTML은 클라이언트에게 보이는 화면을 디자인하기 위한 언어이다. 각 태그가 특정한 디자인 기능을 제공하는 것을 주된 목적으로 하기 때문에, HTML 태그의 이름에는 각 태그가 제공하는 기능이 반영된다. 태그의 이름이 태그 속 정보의 내용과 무관하므로 XML 데이터에 비해 크롤링이 까다롭다. 이번 포스팅에서는 HTML 형태의 데이터를 처리하는 방식에 대해 알아본다. 아래 링크에서 실시..

04. 데이터의 형태(1): XML

웹 상에서 가져올 수 있는 데이터의 형태에는 JSON, HTML, XML이 있다. (1) JSON(JavaScript Object Notation) JSON 표현식: 용량이 적고 사람과 기계가 모두 이해하기 쉬운 형태(JSON의 목적) {key:value} 쌍으로 이루어진 데이터를 저장하거나 전송할 때 사용하는 개방형 표준 포맷 Javascript에서 객체 생성 시 사용하는 표현식 (2) HTML(Hypertext Markup Language) 웹사이트에서 화면에 표시되는 정보를 약속한 것 Hypertext: 단순 텍스트 이상의 텍스트(링크 등의 개념이 포함된 텍스트) Markup: 꺾쇠()로 이루어진 태그를 사용하는 규격 (3) XML(eXtensible Markup Language) HTML의 한계를..

03. 데이터 프레임(Data Frame)

데이터 프레임은 행과 열로 이루어진 테이블 형태의 자료구조를 데이터 분석의 관점에서 부르는 말이다. 데이터 프레임(dataframe)은 테이블 형태로 데이터를 처리할 수 있어 데이터 분석에 용이하다. 웹 크롤링의 목적은 웹 상의 데이터를 분석에 용이한 dataframe 형태로 정리정돈하는 것이다. 앞선 포스팅에서 다룬 웹 페이지 요청 과정을 포함한 기본적인 웹 크롤링 절차는 다음과 같다. 웹 페이지에 요청할 요청문 준비(requests) get 요청을 보내고 요청에 대한 응답 수용 파싱(parsing): 응답의 종류(JSON, HTML, XML)에 따라 해석 도구(parser) 상이 해석 방식에 따라 데이터를 처리하는 프로세스 상이 프로세스에 맞게 데이터 정리정돈(dataframe 변환) 정리/가공한 데..

20. 군집 분석: K-Means Clustering

군집 분석은 알고리즘이 스스로 라벨링 되지 않은 데이터를 분류하고 유사한 데이터끼리 묶는 비지도 학습 방식이다. 머신러닝에는 두 가지 모델 학습 방식이 존재한다. 사전에 제공된 정답(레이블) 데이터를 바탕으로 학습하는 지도 학습(Supervised Learning)과, 정답이 없는 데이터의 패턴을 스스로 찾아 학습하는 비지도 학습(Unsupervised Learning)이다. 지도 학습에는 분류(Classification)와 회귀(Regression) 모델이 있다. 이번 포스팅에서 다루게 될 군집화(Clustering)는 비지도 학습에 해당한다. 군집화(Clustering) 군집 분석에서 동일한 군집에 소속된 관측치들은 서로 유사할수록, 다른 집단에 소속된 관측지들은 유사하지 않을수록 군집화 모델의 성능..

19. 차원 축소 및 주성분 분석(PCA)

차원을 축소하여 복잡도를 줄이면서 정보의 손실을 최소화할 수 있는 방법 변수(feature) 간의 독립성이 만족되면 이론적으로는 변수가 많아질수록 모델의 성능이 향상된다. 하지만 실제로는 변수들이 독립적이지 않고, 변수의 수가 일정 수준 이상이 되면 성능이 저하된다. 머신러닝에서 차원(Dimension)은 변수(feature) 하나하나를 의미한다. 독립변수가 한 개면 1차원, 두 개면 2차원, ... , n개면 n차원인 식이다. 차원의 저주(Curse of Dimensionality) 앞서 말했듯이 변수의 수, 즉 차원이 증가하면 모델의 복잡도가 높아지고 성능이 저하된다. 이처럼 차원이 커지면서 한정된 관측치로 증가하는 차원의 패턴을 잘 설명하지 못하게 되고, 모델의 성능이 저하되는 현상을 차원의 저주(..

18. Kaggle 프로젝트: 호텔 예약

호텔 예약 취소 여부(binary data)를 예측하는 모델링 머신러닝 플랫폼 캐글(Kaggle)의 호텔 예약 관련 데이터를 활용하여, 데이터 전처리 및 시각화와 로지스틱 회귀, 랜덤 포레스트, XGBoost 등의 모델을 실습한다. 프로젝트 실습 코드는 아래 링크에서 확인할 수 있다. https://github.com/tldnjs1231/data-analytics/blob/main/data-analytics-18-hotel_booking.ipynb GitHub - tldnjs1231/data-analytics Contribute to tldnjs1231/data-analytics development by creating an account on GitHub. github.com