챗GPT 데이터 사이언스

전기차 충전소

이광춘

비영리법인 한국 R 사용자회

2023년 10월 27일

목차

  1. 강사 및 강의 소개

  2. 챗GPT 유닉스 쉘 (도서)

  3. 챗GPT 활용 (데이터 사이언스)

  4. 챗GPT 플러그인

  5. 생성형 AI 데이터 사이언스

  6. 공공데이터 전기차 충전소

  7. 광명시 어린이 교통사고

  8. 글쓰기와 오피스 전쟁

  9. 챗GPT 디지털 글쓰기

  10. 질의응답!

강사 & 강의 개요

AI 아바타

주요경력 및 학력

  • (현) 공익법인 한국 R 사용자회: 기술 이사

  • (현) 국가교육위원회 전문위원: 과학/기술 분과

  • (현) 건국대학교 챗GPT 데이터 사이언스 과정: 외래교수

  • (현) 경기도 빅데이터 위원회 자문위원

  • (전) TCS: GS 칼텍스 디지털 아카데미 강사

  • (전) 연세대학교 데이터 사이언스: 겸임교수

  • (전) 삼정 KPMG: Lighthouse AI 기술총괄

  • (전) 웹젠: 데이터 과학자 TD

  • (전) 현대모비스: 차량용 반도체 개발구매

  • (전) 현대자동차: VAATZ / FTA


  • KAIST, CMU, 연세대 응용통계 및 컴퓨터 과학 전공

  • RStudio Instructor - Tidyverse

  • Seoul R Meetup Organizer

강의상세

  • 날짜 : 2023. 10. 27.(금) 10:30~12:00
  • 장소 : 나이스디앤알
  • 대상 : 임직원
  • 내용
    • 챗GPT 유닉스 쉘 도서출판
    • 생성형 AI 데이터 사이언스
    • 사무환경과 오피스 전쟁
    • 오픈 소스 소프트웨어 생태계
    • 전기차 충전소
    • 지도 시각화

챗GPT 유닉스 쉘 (책)

챗GPT 유닉스 쉘 집필과정

교보문고

작업흐름

graph TB
    A[Greg Wilson] --> B[소프트웨어 카펜트리]
    B --> C["공동 저작"]
    C --> D["콘텐츠, 디자인, 교수방법, 경험, 네트워크"]
    D --> E["챗GPT(AI)"]
    
    style A fill:#f9d79c,stroke:#f39c12,stroke-width:2px
    style B fill:#aed6f1,stroke:#2e86c1,stroke-width:2px
    style C fill:#d7bde2,stroke:#884ea0,stroke-width:2px
    style D fill:#a2d9ce,stroke:#17a589,stroke-width:2px
    style E fill:#fcf3cf,stroke:#f1c40f,stroke-width:2px

챗GPT 도서 제작

챗GPT 플러그인

포스터 제작

API 프로그래밍

웹사이트를 읽고 다음 지령을 준비해 https://apis.map.kakao.com/web/documentation/

Kakao 지도 API 문서는 다양한 지도 관련 기능을 제공한다. 이 문서는 지도 객체 생성, 이벤트, 메서드 등에 대한 상세한 정보를 담고 있다. 아래는 주요 내용의 요약이다.

### 지도 객체 생성
- `kakao.maps.Map(container, options)`: 지도를 생성한다.
  - `container`: 지도가 표시될 HTML element
  - `options`: 중심 좌표, 확대 수준, 지도 종류 등을 설정할 수 있다.

### 주요 메서드
- `setCenter(latlng)`: 지도의 중심 좌표를 설정한다.
- `getCenter()`: 지도의 중심 좌표를 반환한다.
- `setLevel(level, options)`: 지도의 확대 수준을 설정한다.
- `getLevel()`: 지도의 확대 수준을 반환한다.
- `setMapTypeId(mapTypeId)`: 지도의 타입을 설정한다.
- `getMapTypeId()`: 지도의 타입을 반환한다.

### 이벤트
- `center_changed`: 중심 좌표가 변경되면 발생한다.
- `zoom_start`: 확대 수준이 변경되기 직전에 발생한다.
- `zoom_changed`: 확대 수준이 변경되면 발생한다.
- `click`: 지도를 클릭하면 발생한다.
- `dblclick`: 지도를 더블클릭하면 발생한다.

이 외에도 다양한 메서드와 이벤트가 있어, 개발자가 원하는 기능을 쉽게 구현할 수 있다.

주소를 넘기면 위경도 좌표를 반환하는 R 코드를 작성해줘.

R에서 주소를 위경도 좌표로 변환하기 위해 httr 패키지를 사용하여 Kakao API를 호출한 예시 코드이다.

# 필요한 패키지를 설치하고 불러온다
install.packages("httr")
install.packages("jsonlite")
library(httr)
library(jsonlite)

# 주소를 위경도로 변환하는 함수를 정의한다
get_latlng <- function(address) {
  # Kakao API 키를 설정한다 (본인의 API 키로 교체해야 한다)
  api_key <- "YOUR_KAKAO_API_KEY"
  
  # API URL과 파라미터를 설정한다
  url <- "https://dapi.kakao.com/v2/local/search/address.json"
  params <- list(query = address)
  headers <- add_headers("Authorization" = paste("KakaoAK", api_key))
  
  # API를 호출한다
  response <- GET(url, query = params, headers)
  
  # 응답을 확인하고 JSON을 파싱한다
  if (status_code(response) == 200) {
    content <- content(response, "text", encoding = "UTF-8")
    json_data <- fromJSON(content)
    
    # 위경도를 추출한다
    if (json_data$meta$total_count > 0) {
      lat <- json_data$documents[[1]]$y
      lng <- json_data$documents[[1]]$x
      return(list(lat = lat, lng = lng))
    } else {
      return(NULL)
    }
  } else {
    stop("API request failed")
  }
}

# 함수를 테스트한다
address <- "서울특별시 강남구 테헤란로 212"
result <- get_latlng(address)
print(paste("Latitude:", result$lat, "Longitude:", result$lng))
library(httr)
library(jsonlite)

# 주소를 위경도로 변환하는 함수를 정의한다
get_latlng <- function(address) {
  # Kakao API 키를 설정한다 (본인의 API 키로 교체해야 한다)
  api_key <- Sys.getenv("KAKAO_MAP_API_KEY")
  
  # API URL과 파라미터를 설정한다
  url <- "https://dapi.kakao.com/v2/local/search/address.json"
  params <- list(query = address)
  headers <- add_headers("Authorization" = paste("KakaoAK", api_key))
  
  # API를 호출한다
  response <- GET(url, query = params, headers)
  
  # 응답을 확인하고 JSON을 파싱한다
  if (status_code(response) == 200) {
    content <- content(response, "text", encoding = "UTF-8")
    json_data <- fromJSON(content)
    
    # 위경도를 추출한다
    if (json_data$meta$total_count > 0) {
      lat <- json_data$documents[[1]]$y
      lng <- json_data$documents[[1]]$x
      return(list(lat = lat, lng = lng))
    } else {
      return(NULL)
    }
  } else {
    stop("API request failed")
  }
}

# 가톨릭관동대학교 주소
address <- "강원도 강릉시 범일로579번길 24"
result <- get_latlng(address)
print(paste("Latitude:", result$lat, "Longitude:", result$lng))

사실확인 (Wolfram)

울프람 알파(Wolfram Alpha) 사용해서 사실관계를 확인해보자.

“지구는 평평하다”라는 주장을 검증해줘.

"지구는 평평하다"라는 주장에 대해 Wolfram Alpha를 이용해 검증해보았습니다.

### 입력 해석
- 질문: 지구는 평평하다?

### 결과
- 답변: 아니다.
  - 지역적으로만 그렇다. 그리고 그것도 특정 지역, 예를 들어 미국 중서부에서만 해당된다.

자세한 정보는 [Wolfram|Alpha 웹사이트](https://www6b3.wolframalpha.com/input?i=Is+the+Earth+flat%3F)에서 확인할 수 있다.

이처럼 Wolfram Alpha는 다양한 주장이나 정보에 대한 팩트체크를 할 수 있는 유용한 도구이다.

라면을 많이 먹으면 건강에 정말 안좋은가?

Wolfram Alpha에서는 “라면을 많이 먹으면 건강에 정말 안 좋은가?”에 대한 구체적인 답변을 제공하지 못했다. 그러나 일반적으로 라면은 높은 나트륨, 지방, 인공 첨가물 등을 포함하고 있어, 과도하게 섭취할 경우 다음과 같은 건강 문제가 발생할 수 있다:

  1. 고혈압: 라면에는 나트륨이 많이 들어있다. 나트륨 과다 섭취는 혈압을 높일 수 있다.

  2. 비만: 라면은 칼로리가 높고, 지방도 많이 들어있다. 지속적으로 라면을 많이 먹으면 체중 증가의 위험이 있다.

  3. 소화기 문제: 라면은 소화가 잘 되지 않는 식품 중 하나이다. 과도한 섭취는 소화기에 부담을 줄 수 있다.

  4. 영양 불균형: 라면은 영양소가 적고, 나트륨이나 지방 등의 불필요한 성분이 많다. 이로 인해 영양 불균형이 발생할 수 있다.

  5. 심혈관 질환: 고혈압, 높은 콜레스테롤 등은 심혈관 질환의 위험을 높인다.

라면을 즐길 때는 이러한 점들을 고려하여 적당한 양과 빈도로 섭취하는 것이 중요하다.

수능문제 풀이

2023학년도 대학수학능력시험 수학영역 문제를 풀어보자.

\(\left(\frac{4}{2^{\sqrt{2}}}\right)^{2+\sqrt{2}}\) 값은?

\[ \left(\frac{4}{2^{\sqrt{2}}}\right)^{2+\sqrt{2}} \] 의 값은 \(4\)입니다.

정확한 형태로는 \(2^{(2 - \sqrt{2}) (2 + \sqrt{2})}\)로 표현됩니다.

자세한 정보는 Wolfram|Alpha 웹사이트에서 확인할 수 있다.

과정도 설명해줘.

물론이다. 주어진 식은 \[ \left(\frac{4}{2^{\sqrt{2}}}\right)^{2+\sqrt{2}} \]이다. 이 식을 단계별로 분해해보자.

  • 단계 1: 분모를 간단하게 만들기
    먼저, 분모인 \(2^{\sqrt{2}}\)를 간단하게 만들기 위해 분자와 분모에 \(2^{\sqrt{2}}\)를 곱한다. 이렇게 하면:

\[ \left(\frac{4 \times 2^{\sqrt{2}}}{2^{\sqrt{2}} \times 2^{\sqrt{2}}}\right)^{2+\sqrt{2}} \]

  • 단계 2: 분모를 합치기
    이제 분모의 \(2^{\sqrt{2}} \times 2^{\sqrt{2}}\)를 합쳐 \(2^{2\sqrt{2}}\)로 만든다.

\[ \left(\frac{4 \times 2^{\sqrt{2}}}{2^{2\sqrt{2}}}\right)^{2+\sqrt{2}} \]

  • 단계 3: 분자를 합치기
    분자의 \(4 \times 2^{\sqrt{2}}\)를 합쳐 \(2^2 \times 2^{\sqrt{2}} = 2^{2+\sqrt{2}}\)로 만든다.

\[ \left(\frac{2^{2+\sqrt{2}}}{2^{2\sqrt{2}}}\right)^{2+\sqrt{2}} \]

  • 단계 4: 지수 법칙 적용
    지수 법칙에 따라 분자와 분모의 지수를 빼준다.

\[ \left(2^{(2+\sqrt{2}) - 2\sqrt{2}}\right)^{2+\sqrt{2}} = \left(2^{(2 - \sqrt{2})(2 + \sqrt{2})}\right)^{2+\sqrt{2}} \]

  • 단계 5: 최종 계산
    마지막으로, \((2 - \sqrt{2})(2 + \sqrt{2})\)를 계산하면 \(4 - 2 = 2\)가 된다. 따라서 최종 결과는 \(2^2 = 4\)이다.

이렇게 해서 \[ \left(\frac{4}{2^{\sqrt{2}}}\right)^{2+\sqrt{2}} = 4 \]임을 확인할 수 있다.

생성형 AI
데이터 사이언스

OpenAI Advanced Data Analysis


Open AI Code Interpreter → Advanced Data Analysis


RStudio Copilot

Tools -> Global Options -> Copilot -> Enable Github Copilot

웹앱(Shiny App) 개발 사례

광명시 보좌관

글쓰기
챗GPT 인터페이스 - 오피스 전쟁

구글 검색의 종말(?)

글쓰기 역사


오피스 전쟁

항목 MS 오피스 1 구글 오피스 2 리브레 오피스 3 한컴 오피스 4
문서 작성 및 편집 워드, 엑셀, 파워포인트 등의 데스크톱 및 웹 앱 제공 구글 문서, 스프레드시트, 프레젠테이션 등의 웹 앱 제공 라이터, 캘크, 임프레스 등의 데스크톱 앱 제공 한글, 한셀, 한쇼 등의 데스크톱 및 모바일 앱 제공
협업 및 공유 원드라이브를 통해 문서를 클라우드에 저장하고 공유 가능. 여러 사람이 동시에 문서를 수정할 수 있으나 실시간으로 보기 어려움 구글 드라이브를 통해 문서를 클라우드에 저장하고 공유 가능. 여러 사람이 동시에 문서를 수정하고 실시간으로 확인 가능 드롭박스나 구글 드라이브와 연동하여 문서를 클라우드에 저장하고 공유 가능. 여러 사람이 동시에 문서를 수정할 수 있으나 실시간으로 보기 어려움 넷프리즘을 통해 문서를 클라우드에 저장하고 공유 가능. 여러 사람이 동시에 문서를 수정할 수 있으나 실시간으로 보기 어려움
이메일 및 채팅 Outlook을 통해 비즈니스 메일 제공. Teams을 통해 채팅 및 화상 회의 가능 Gmail을 통해 비즈니스 메일 제공. Chat과 Meet을 통해 채팅 및 화상 회의 가능 이메일 및 채팅 기능 없음 이메일 및 채팅 기능 없음
가격 1인당 월 5~20달러 다양한 요금제 제공. 데스크톱 앱 사용 가능한 요금제는 12.5달러부터 시작 1인당 월 6~18달러까지 다양한 요금제 제공 완전 무료 개인용은 무료로 사용 가능하며 업무용은 별도로 견적 요청 필요

오피스 전쟁: 패러다임 충돌

챗GPT 시대 사무실

챗GPT가 이룬 대통합

인터페이스 (Interface)




flowchart TB
    
    subgraph A["사용자 인터페이스"]
    direction LR
        CLI["CLI<br>Command Line Interface<br> 1950~"]     --> GUI["GUI <br> Graphic User Inferface<br> 1970~"]
        GUI               --> WI["Web Interface <br> 1994~"]
        WI --> MI["Mobile Interface <br> 2007~"]
        MI --> NUI["LUI <br> Language User Interface <br> 2023~"]

    end


class A nodeStyle

classDef nodeStyle fill:#fcfbfa,stroke:#000000,stroke-width:0.7px,font-weight:bold,font-size:14px;



챗GPT NUI

  • 챗GPT (ChatGPT)

  • OpenAI Playground

Command Palette 역사

  • 60년대로 거슬러 올라가는 명령 팔레트는 최근 기술 업계에서 다시 인기를 얻고 있으며 사용자 중심 소프트웨어의 필수적인 부분으로 간주됨.
  • CLI는 개인용 컴퓨터가 대중화되기 전 초기 컴퓨팅을 지배했으며 사용자가 시스템을 작동하기 위해 특정 명령을 알아야 했다. 1984년 Apple의 매킨토시와 함께 도입된 그래픽 사용자 인터페이스(GUI)는 중요한 혁신으로 여겨졌지만, 소프트웨어의 복잡성이 증가함에 따라 GUI만으로는 탐색하기가 점점 더 어려워졌다.
  • 사용자가 항목 이름의 짧은 약어입력하여 앱과 파일을 검색할 수 있는 런처가 점점 더 보편화 되었다. 예를 들어 2001년에 출시된 Mac OS X용 LaunchBar, Quicksilver, 2005년에 출시된 Apple의 시스템 전체 Spotlight가 있다. 검색과 CLI의 결합은 Command Palette의 탄생으로 이어졌다.
  • 오늘날 우리가 알고 있는 현대식 명령 팔레트는 2011년 Sublime Text 2 베타 Joe Skinner가 처음 소개. 명령줄 사용에 익숙한 프로그래머들이 단축키를 모두 외울 필요 없이 더 빠르게 작업할 수 있어 중요한 발전이 됨.

도구(문서)의 인간
데이터 사이언스 글쓰기


데이터 과학 과거와 현재



과거


현재


글쓰기 진화

package1[패키지] –> product1[“제품(S/W)”] –> distribute1[배포] –> service1[“서비스
(앱)”] –>

package2[패키지] –> product2[“제품(문서)”] –> distribute2[배포] –> service2[“서비스
(출판)”] –>

데이터 과학 → 디지털 글쓰기

연도 도구 개발자
1978 TeX Donald Knuth
1984 Literate Programming Donald Knuth
1988 Mathematica Notebooks Stephen Wolfram
2001 IPython Fernando Perez
2003 Emacs org-mode Carsten Dominik
2004 Markdown John Gruber
2005 Sage Notebook William Stein
2006 Pandoc John MacFarlane
2009 GitHub Flavored Markdown Tom Preston-Werner
2011 iPython Notebook Fernando Perez
2012 knitr Yihui Xie
2014 Project Jupyter Fernando Perez
2020 Quarto J.J. Allaire

디지털 글쓰기

공공데이터
전기차 충전소

전기차 충전소

어린이 교통사고
광명시

보도자료

초등학교 주변 CCTV 현황

어린이 교통사고 통계

광명시 보행 어린이 교통사고
TAAS 교통사고분석시스템 (2014~2022)
사고유형 교통사고 어린이 구분 합계
사망자수 중상자수 경상자수
차대사람 - 기타 0 11 34 45
차대사람 - 길가장자리구역통행중 0 3 12 15
차대사람 - 보도통행중 0 2 5 7
차대사람 - 차도통행중 0 3 8 11
차대사람 - 횡단중 3 33 59 95
차대차 - 기타 0 1 2 3
차대차 - 측면충돌 0 3 0 3
합계 3 56 120 179

광명시 유동인구(KT)

참고문헌

Charles Frye, J. T., Sergey Karayev. (2023). LLM Bootcamp 2023. https://fullstackdeeplearning.com/llm-bootcamp/spring-2023/augmented-language-models/
Chiang, T. (2023). CHATGPT is a blurry JPEG of the web. In The New Yorker. https://www.newyorker.com/tech/annals-of-technology/chatgpt-is-a-blurry-jpeg-of-the-web
Cummings, M. M. (2014). Man versus machine or man+ machine? IEEE Intelligent Systems, 29(5), 62–69.
Fu, H., Yao; Peng, & Khot, T. (2022). How does GPT Obtain its Ability? Tracing Emergent Abilities of Language Models to their Sources. Yao Fu’s Notion. https://yaofu.notion.site/How-does-GPT-Obtain-its-Ability-Tracing-Emergent-Abilities-of-Language-Models-to-their-Sources-b9a57ac0fcf74f30a1ab9e3e36fa1dc1
Huben, R. (2023). How does GPT-3 spend its 175b parameters? In How does GPT-3 spend its 175B parameters? - by Robert Huben. From AI to ZI. https://aizi.substack.com/p/how-does-gpt-3-spend-its-175b-parameters
Merritt, R. (2023). Beyond words: Large language models expand Ai’s horizon. In NVIDIA Blog. https://blogs.nvidia.com/blog/2022/10/10/llms-ai-horizon/
이광춘. (2019). 데이터 사이언스 운영체제 - tidyverse. 한국통계학회 소식지, 10월호, 20–24.
이광춘. (2020). 디지털 뉴딜, 지역균형 문제 해결과 지역균형 발전방안. 지방자치이슈와 포럼, 33, 88–101.
이광춘, & 신종화. (2023). 챗GPT 유닉스 쉘: 데이터 과학 자동화 도구. 한국 R 사용자회.

(이광춘 & 신종화, 2023)

(이광춘, 2019)

(이광춘, 2020)

(Cummings, 2014)

(Chiang, 2023)

(Merritt, 2023)

(Huben, 2023)

(Fu & Khot, 2022)

(Charles Frye, 2023)