A. Confirmation Rate

1. 논리 펼치기 

1) signups를 기준으로 confirmations left join

2) singups의 user_id 별로 그룹 묶기

3) action이 confirmed인 것을 평균 구하기

4) round처리하기

 

2. 첫 번째 코드

# Write your MySQL query statement below
select distinct s.user_id
        , sum(if c.action = "confirmed " then 1 else 0)/count(s.user_id)
from signups s
left join confirmations c
on s.user_id = c.user_id

결과 : Runtime Error

You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax 
to use near 'c.action = "confirmed " then 1 else 0)/count(s.user_id)
from signups s
left join' at line 3

 

2. 두 번째 코드

# Write your MySQL query statement below
select distinct s.user_id
        ,round(avg(if(c.action = "confirmed ",1,0)),2) as confirmation_rate
from signups s
left join confirmations c
on s.user_id = c.user_id
group by s.user_id

결과: Accepted

 

B. 주의할 점

SQL 은 Python과 달리 if문을 사용하는 방법이 다르다.

A. 금일 학습내용

1. Tableau 실습하기

1) 선 그래프

 

2) 막대그래프

\

- 태블로 막대 그래프 필터 및 행렬 데이터 셋

 

- 맵 그래프

4) 하이라이트 그래프

'Today I Learned' 카테고리의 다른 글

[TIL] 시계열 데이터  (2) 2024.09.25
[TIL] 메모리 관리  (1) 2024.09.24
[TIL] BI (Tableau 기초)  (6) 2024.09.02
[TIL] 데이터베이스 구축  (0) 2024.08.23
[TIL] 군집분석(과제)  (0) 2024.08.21

A. 금일 학습 내용

비즈니스 인텔리전스를 통해 데이터 분석 및 시각화 서비스를 제공하는 Tableau 툴에 대해 학습하였다.

1주차

  1. BI 소개
    1. 지표를 선택하는데 매우 깊은 고민이 필요하다.
    2. 대시보드 구축에 필요한 업무 미팅
    3. Ad-hoc 업무 발생 → 다양한 팀들의 의사결정을 서포트하는 역할
    4. 전사 지표를 취합한 하나의 대시보드를 만들기도 함
  2. BI 워크 프로우
    1. 데이터 레이크 → 데이터 웨어하우스 → 데이터 마트 → BI 툴
      1. 데이터 레이크: 모든 raw data(정형 데이터, 로그 데이터, 테이블 등) 저장할 수 있는 스토리지
      2. 데이터 웨어하우스: 데이터를 장기적인 보존용으로 통합, 정제, 분석하여 정리한 저장소 (AWS Redshift, Snowflake, Google Bigquery
      3. 데이터 마트: 부서별, 목적별 분석용으로 만든 데이터 웨어하우스의 데이터 일부분
    2. 왜 Tableau 일까?
      1. 장점
        1. 다양한 형식의 파일을 대시보드로 만들어 쉽게 공유 가능
        2. 손쉬운 Drag & Drop으로 인터랙티브한 대시보드와 그래프 시각화 가능
        3. 최근 가장 많으 회사가 사용함
        4. 무료로 활발한 글로벌 커뮤니티, 템플릿, 강의를 참고 가능
      2. 단점
        1. 데이터 용량이 크거나 개발된 대시보드의 양이 많아지면 대시보드 로딩 속도가 느려짐
        2. 비쌈

2주차

  1. 데이터 원본 연결 형태
    1. 라이브 VS 추출
      1. 라이브: 원본 파일이 바뀌면 연동이 됨. 새로 고침 버튼을 클릭하면 실시간으로 데이터가 업데이트할 수 있음
      2. 추출: 라이브 연결을 끊고 현재 데이터만 로컬로 가져오는 형태로, 원본 데이터 파일이 클 때 사용하기 좋음
  2. 병합 방식
    1. 관계: 하나의 테이블로 병합x, 관계를 설정해서 뷰에서 필드를 사용할 수 있다. 조인보다 유연하고 동적인 방법, 효율적, 실무에서 조인보다 많이 사용
    2. 유니온: SQL의 UNION과 비슷한 개념, 테이블 구조가 같은 형식인 경우
    3. 조인: SQL 조인과 비슷함, 테이블은 항상 하나의 테이블로 병합
    4. 블랜딩: 물리적으로 테이블을 병합하지 않고, 워크시트 화면에 두 테이블이 같이 있음, 하나의 테이블을 병합하는 것이 아니라 서로 다른 데이터 베이스에서 데이터를 불러오고 임시로 분석할 때 사용함
    5. 관계와 조인의 차이점: https://help.tableau.com/current/online/ko-kr/datasource_relationships_learnmorepage.htm?source=productlink
  3. 커넥터 연동: 구글 빅쿼리 → 이런 것도 있다.
  4. 차원 VS 측정값
    1. 차원(dimension): 측정 기준 또는 분석의 기준
    2. 측정값(metric): 측정하는 값 또는 항목 → agg함수로 통계함수 사용
  5. 연속형 vs 불연속형
    1. 연속형: 하나로 연결되어 이어진 데이터
    2. 불연속형: 이어지지 않고 각각 구분되는 개별적인 데이터
  6. 계산된 필드
    1. 기존 컬럼을 계산해서 새로운 컬럼 생성, 계산된 필드를 사용하면 대이터 워본에 있는 데이터에서 새로운 필드를 만들 수 있음
    2. 지표에 대한 작업을 하기에 잘 알아두기!!!

3주차

  1. 데이터 시각화: 데이터를 그래프 형식으로 나타내어 직관적으로 이해하기 쉽게 만든다. 그래프를 활용하여 데이터의 추세, 분포, 상관 관계 등을 시각적으로 표현할 수 있음
  2. 효과적인 차트 고르기
    1. 비교
      1. 막대, 선 차트
    2. 관계
      1. 스케터 차트
      2. 버블 차트
    3. 분포
      1. 히스토그램
    4. 구성
      1. 스택 플랏
      2. 파이차트, 워터풀 차트
  3. 데이터 시각화의 장점
    1. 데이터를 빠르게 이해하고 의사결정 가능
    2. 실무에서 협업할 때, 효과적으로 커뮤니케이션 할 수 있음
    3. 직관적인 데이터의 이해를 통해 인사이트를 도출 가능
  4. 기본 그래프
    1. 선 그래프(LINE PLOT)
      1. 간단하고 사용하기 쉬움
      2. 시계열 데이터를 시각화할 경우, 변화량과 트랜드를 한눈에 보기에 용이함
      3. 연속적 데이터에 사용하기 적합, 연속형 데이터: 온도, 시간 등
    2. 막대 그래프(BAR PLOT)
      1. 간단하고 사용하기 쉬움
      2. 범주 간의 차이나 분포를 시각적으로 이해하기 쉬움
      3. 범주형 데이터에 사용하기 적합함
    3. 맵 차트(MAP CHART)
      1. 지도를 활용해서 지리적 위치를 살펴볼 수 있음
      2. 각 지역별 데이터의 분포 및 비중을 한 눈에 확인할 때 주로 사용
      3. 기능
        1. 뷰 툴바: 확대 축소
        2. 백그라운드 레이어: 투명도설정, 해안선, 건물 표시 등 지도 배경에 대한 다양한 기능이 있음
    4. 파이 차트(PIE CHART)
      1. 각 부분의 크기가 상대적인 비율이기 때문에 각 부분이 전체에서 차지하는 비중을 쉽게 이해할 수 있음
      2. 데이터의 구성 비율과 분포를 한눈에 파악할 수 있음
      3. 다양한 변수를 다루기에는 적합하지 않을 수 있음. 변수가 적을 때 직관적으로 사용하기 용이함
    5. 트리맵 차트(TREEMAP CHART)
      1. 데이터를 계층적으로 표현하는데 사용
      2. 카테고리별로 특정 데이터 집합이 전체 데이터에서 차지하는 비율을 면적으로 표현하여 카테고리별 구성 요소를 한눈에 파악할 수 있음
  5. 심화 그래프
    1. 도넛 차트(DONUT CHART)
      1. 파이 차트와 비슷한 형태로 가운데 구멍이 뚫린 경우를 도넛 차트라고 부름
      2. 각 부분의 크기가 상대적인 비율이기 때문에 각 부분이 전체에서 차지하는 비중을 쉽게 이해할 수 있음
      3. 태블로에서는 대시보드의 KPI 카드로 많이 활용함
    2. 히트맵 차트(HEATMAP CHART)
      1. 태블로에서 하이라이트 테이블이라고도 부름
      2. 색상을 활용해서 데이터 값을 시각적으로 강조할 수 있음. 색상의 그라데이션을 통해 측정값을 한 눈에 비교할 수 있음
    3. 영역 차트(AREA CHART)
      1. 영역 차트는 선 아래 영역을 색을 채워서 데이터의 영역 크기를 파악
      2. 시간에 따른 데이터 추이를 시각적으로 나타냄
      3. 데이터의 변화 및 흐름을 쉽게 파악할 수 있음.
    4. 스택 플랏(STACKED PLOT)
      1. 100% 누적 그래프: 기준을 비교하기 쉬움
      2. 단순 누적 그래프: 기준선이 일정하지 않기 때문에 비교하기가 어려움
      3. 상대적인 비율을 직관적으로 시각화 가능
      4. 시간에 따라 데이터가 어떻게 변하는지 시각적으로 알 수 있음
  6. 시각화 레벨업
    1. 이중 축(콤보차트)
      1. 하나의 차원을 두 개 이상의 측정값으로 동시에 파악하고 싶을 때 활용
      2. 두 가지 서로 다른 데이터 집합을 한 번에 비교 가능
      3. 축에 서로 다른 단위나 기준을 가지고 있는 경우, 그래프를 볼 때 한눈에 알아보기 어려움
    2. 평균선/참조선
      1. 분석 패널에서 평균선 라인/상수라인/참조선을 추가해서 의사결정을 빠르게 할 수 있음
  7. 데이터 분석하기
    1. 박스 플랏(BOX PLOT)
      1. 데이터의 분포와 이상치를 시각적으로 파악할 때 사용하는 그래프
    2. 파레토 차트(PARETO CHART)
      1. 파레토 법칙: 전체 결과의 80%가 전체 원인의 20%에서 일어난다는 마케팅 기법 (다수의 결과는 소수의 원인에 의해 생겨남)
    3. 상관관계(SCATTER PLOT)
      1. 지표간 어떤 선형적인 관계가 있는지 알아보기 위해 상관분석을 자주 활용함
      2. 피어슨 상관관계
    4. 시계열 예측
      1. 태블로에서 지수 평활법을 활용해서 예측 모델링을 함.
      2. 과거 데이터에 기반하여 미래를 예측하는 시계열 예측

4주차

  1. 텍스트 레이블
    1. 데이터 형태
      1. 행과 열로 이루어짐
      2. 데이터 구조화 형식에는 대표적으로 2가지 형식의 WIDE FORMAT TABLE과 LONG FORMAT TABLE이 있다.
      3. 태블로의 표현 방식에서 텍스트 테이블로 표현해 활용 가능
      4. WIDE FORMAT TABLE
        1. 옆으로 넓은 형태로 데이터가 쌓임. 하나의 열에 여러 개의 데이터를 나란히 나열하는 형태
        2. 데이터 분석을 할 경우 많이 사용되는 형태로 표를 비교하거나 그래프 시각화 하기 쉬움.
        3. 상관관계를 분석하거나 각 변수의 분포를 비교할 때 적합
      5. LONG FORMAT TABLE
        1. 아래로 쌓이는 긴 데이터 셋
        2. 한 개의 특성을 나타내는 열을 가진 여러 개의 행
        3. 시간에 따른 변화와 카테고리 간 비교를 시각화하기에 적합함
      6. 총계
        1. 분석탭에서 열과 행의 총합계 계산 가능
    2. 태블로 작동 원리
      1. 필터별 작동원리 (순서 중요함)
        1. 추출 필터 : 데이터 소스에서 추출된 데이터 필터링(데이터 연결을 추출로 선택했을때만 사용가능)
        2. 데이터 원본 필터: 데이터 원본 소스에서 일부 데이터만 필터링
        3. 컨텍스트 필터: 특정값에 대한 데이터만 필터링
        4. 차원 필터: 차원을 기준으로 데이터 필터링
        5. 측정값 필터: 측정값을 기준으로 데이터 필터링
        6. 테이블 계산 필터: 특정 계산 결과를 기준으로 데이터 필터링
      2. 계산과 필터의 작동 순서
        1. 쿼리 파이프 라인: 계산과 필터의 태블로 작업 순서
        2. 필터를 추가할 때 해당 필터가 항상 작업 순서에 따라 설정된 순서대론 실행
      3. 필터 활용법
        1. Top N : 컨텍스트 필터를 활용하여 작동 순서를 바꿀 수 있음
      4. 기본 계산식 활용
        1. 계층과 드릴 업다운
          1. 날짜 형태는 자동으로 되어 있음
        2. 퀵테이블 계산
      5. 태블로 함수 (SQL과 대강 비슷함)
  2. LOD 식 (세분 수준 식)
    1. 계산할 세분 수준을 제어할 수 있음
    2. LOD식은 세분화된 수준(INCLUDE), 덜 세분화 된 수준(EXCLUDE), 완전히 독립적인 수준(FIXED)로 나뉨
    3. 구조
      1. {[FIXED | INCLUDE | EXCLUDE] [ 차원1], [차원2] : AVG([측정값])}
    4. FIXED
      1. 뷰에 있는 차원과 상관없이 계산된 필드에서 FIXED 계산식을 고정시켜 지정된 차원 계산
    5. INCLUDE
      1. 뷰에 지정된 차원 뿐만 아니라 모든 차원을 포함해서 계산
    6. EXCLUDE
      1. 차원을 제거해서 계산
  3. 대시보드 설계와 구성
    1. 대시보드 구축 프로세스
      1. 대시보드 뷰어 및 목적 선정
      2. 문제 정의
      3. 필요한 데이터 선정 및 데이터 마트 구축 (실무)
      4. 지표 선정
      5. 스케치
      6. 시각화
      7. 대시보드 완성
      8. 대시보드에서 이끌어내는 액션
      9. 완성된 대시보드 게시 또는 대시보드팀 뷰어 권한 부여
      10. 실무에 필요한 지표 정의 및 선정 (실무)
    2. 지표 정의 및 선정
      1. 비즈니스별 지표 선정 : 메트릭 하이라키
    3. 대시보드 기능
      1. 컨테이너(가로, 세로)와 뷰가 있음
      2. 바둑판식 기능과 부동 기능으로 구성됨
        1. 바둑판식 기능 : 컨테이너와 뷰가 서로 겹치지 않으며, 전체 대시보드 크기에 따라 크기가 자동 조정이 됨
        2. 부동 기능: 시계열 예측처럼 다른 뷰와 겹칠 수 있음
        3. 피그마와 부동기능
          1. 피그마 툴과 태블로 부동기능을 활용하면 조금 더 전문적이고 깔끔한 대시보드를 만들 수 있음
        4. 대시보드 레이아웃
          1. 일관된 레이아웃
            1. 그리드 표시
          2. 레이아웃 크기 설정
            1. 뷰어 유형에 따라 3가지 버전 중 크기 선택 가능
              1. 데스크톱 버전, 태블릿 버전, 모바일 전화 버전
    4. 대시보드 설계
      1. 대시보드 구성
        1. 대시보드 게층 구조화
          1. 상단: 주요 지표
          2. 하단: 그래프 시각화
        2. 대시보드 스케치
          1. 스케치와 디자인 구성이 중요함
        3. 전주의적 속성
          1. 어떤 것을 보자마자 뇌에서 바로 알아차릴 수 있도록 강조하기 위한 시각화 속성으로 이를 활용하면 대시보드 사용자가 인사이트를 발굴할 수 있도록 함
          2. 핵심정보가 한눈에 파악할 수 있도록 방향, 길이, 너비, 색상 요소들을 활용해서 강조할 수 있음
        4. 컬러 선정
          1. RGB 색상 및 컬러 조합을 맞춰 시각화하면 뷰어 관점에서 직관적으로 한눈에 들어옴
    5. 대시보드 만들기

 Tableau의 기초 내용에 대하여 알아보았다.

 

B. 마무리

지금까지 공부한 EDA, 머신러닝과 달리 드래그앤드롭 방식의 툴로 코딩을 하지 않아도 된다.

지금까지 배운 내용만으로도 충분히 데이터 시각화를 할 수 있다 생각할 수 있지만 해당 툴을 이용하면 데이터에 관심이 없는 사람이어도 한눈에 정보를 파악하고 이해할 수 있다. 

이는 데이터분석가가 궁극적으로 추구하는 목표이다. 정보의 효과적인 전달이 가능하고 의사결정에 더욱 큰 도움이 된다는데 사용하지 않을 이유가 무엇인가.

비록 처음 사용하는 툴이라 어색하기는 하지만 잘 사용하고 싶다. 

'Today I Learned' 카테고리의 다른 글

[TIL] 메모리 관리  (1) 2024.09.24
[TIL] Tableau 실습  (0) 2024.09.03
[TIL] 데이터베이스 구축  (0) 2024.08.23
[TIL] 군집분석(과제)  (0) 2024.08.21
[TIL] 선형회귀분석(과제)  (0) 2024.08.20

A. 금일 학습 내용

프로젝트를 시작했다.

데이터 웨어하우스를 만들게 되었다.

데이터 병합 순서에 따라 얼마나 많은 시간과 비용이 변할 수 있는가에 대해 뼈져리게 느꼈다.

 

B. 데이터베이스 구축

여러 테이블을 merge해서 하나의 큰 테이블을 만들어야 할 때가 생긴다. 하나의 기준에 맞춰서 계속 left join을 해서 하나의 테이블을 구축하였다고 하더라도, 그 테이블이 제대로 만들어진 것인지 확인해야할 필요가 있다.

 

관계를 갖는 테이블끼리 join 후 전체 데이터에 merge 하는 방법을 추천한다.

'Today I Learned' 카테고리의 다른 글

[TIL] Tableau 실습  (0) 2024.09.03
[TIL] BI (Tableau 기초)  (6) 2024.09.02
[TIL] 군집분석(과제)  (0) 2024.08.21
[TIL] 선형회귀분석(과제)  (0) 2024.08.20
[TIL] 로지스틱 회귀분석(분류분석)  (0) 2024.08.16

A. 금일 학습 내용

1. iris 데이터 불러오기

import pandas as pd
from sklearn.datasets import load_iris
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score,silhouette_samples
# 전체 데이터의 평균 실루엣 계수 : silhouette_score  
# silhouette_samples의 평균과 같음

iris = load_iris()
X, y = iris.data, iris.target

- scikit-learn에서 iris dataset를 가져온다.

 

2. k-means clustering 학습하기

kmeans = KMeans(n_clusters = 2, init = 'k-means++', max_iter = 300, random_state = 42)
kmeans.fit(iris_df)

- 2개의 군집으로 나누어 k-means clustering 학습한다.

 

3. 산점도 확인하기

kmeans.labels_
iris_df['target'] = df['species']
iris_df['cluster'] = kmeans.labels_

plt.figure(figsize=(9,6))
sns.scatterplot(data=iris_df, x='sepal_length', y='sepal_width', hue = 'cluster', palette='viridis')
plt.title('Clustering')
plt.show

4. 평균 실루엣 계수 확인하기

silhouette_score(iris_df, labels)

 

5. 최적의 군집 개수 시각화

from kmeans_visaul import visualize_silhouette
visualize_silhouette([2,3,4,5], iris_df) #k=3

 

6-1. 실루엣 분석을 통한 최적의 k찾기

silhouette_scores = []
for k in range(2,11):
    kmeans = KMeans(n_clusters=k, random_state=42)
    kmeans.fit(iris_df)
    score = silhouette_score(iris_df, kmeans.labels_)
    silhouette_scores.append(score)

 

6-2. 실루엣 분석 시각화

plt.plot(range(2,11), silhouette_scores, marker='o')

 

7-1. 엘보우 방법을 통한 최적의 k 찾기

sse = []
for k in range(1, 11):
    kmeans = KMeans(n_clusters=k, random_state=43)
    kmeans.fit(iris_df)
    sse.append(kmeans.inertia_)

- 엘보우 방법은 SSE 값을 통해 최적의 군집 개수를 구하는 방법이다.

- inertia_ 속성을 활용하여 SSE 값을 구한다.

 

7-2. 엘보우 방법의 시각화

plt.plot(range(1,11), sse, marker='o')
plt.show()

- 엘보우처럼 꺾이는 부분이 최적의 군집 개수이다.

 

8. 결과

- iris 데이터의 경우, 다양한 방법을 통해 최적의 군집 개수가 3개임을 알 수 있다.

'Today I Learned' 카테고리의 다른 글

[TIL] BI (Tableau 기초)  (6) 2024.09.02
[TIL] 데이터베이스 구축  (0) 2024.08.23
[TIL] 선형회귀분석(과제)  (0) 2024.08.20
[TIL] 로지스틱 회귀분석(분류분석)  (0) 2024.08.16
[TIL] map( ), 문자열 나누기  (0) 2024.08.14

A. 금일 학습 내용

Diabetes 데이터 회귀 분석 진행하기

Diabetes 데이터셋 이용
해당 데이터의 특징과 문제 해결 유형을 정리하라.
- Linear Regression 모델과 Polynomial Regression 모델을 학습한 후 MSE로 성능을 계산한 후 비교하라.

- 해당 문제에서는 Accuracy를 사용하면 어떻게 될지 고민 할 것.

 

1. 데이터 불러오기

import pandas as pd
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()

X1, y1 = diabetes.data, diabetes.target
diabetes_df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)

diabetes_df['target'] = diabetes.target
diabetes_df.head(3)

-  scikit-learn(일명 사이킷런)에서 diabetes dataset를 불러온다.

 

2. LinearRegression 모델 생성 및 훈련

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

- 필요 라이브러리 불러오기

# LinearRegression 모델 생성
model_lr = LinearRegression()
X = diabetes_df[['bmi']]
y = diabetes_df[['target']]

# train data, test data 분리
X_train, X_test, y_train, y_test = train_test_split(diabetes.data,diabetes.target, random_state=42,test_size=0.3)

# LinearRegression 모델 훈련
model_lr.fit(X=X_train, y=y_train)

# 예측값 구하기
y_pred =model_lr.predict(X_test)
y_train_pred = model_lr.predict(X_train)

# mse 평가
train_mse = mean_squared_error(y_train, y_train_pred)
test_mse = mean_squared_error(y_test,y_pred)  
print(train_mse)
print(test_mse)

MSE 결과

3. Polynomial Regression 모델 생성 및 훈련

import pandas as pd
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

- 필요한 라이브러리 불러오기 (앞서 불러온 것은 다시 불러올 필요 없다.)

# 데이터 불러오기
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target
diabetes_df = pd.DataFrame(data=X, columns=diabetes.feature_names)
diabetes_df['target'] = diabetes.target

# train data, test data 분리
X_train, X_test, y_train, y_test = train_test_split(diabetes.data,diabetes.target, random_state=42,test_size=0.3)

# 다항회귀분석 모델 생성
poly = PolynomialFeatures(degree=2)

# 다항식 특성을 갖는 x값 변환
X_poly_train = poly.fit_transform(X_train) #train 용 데이터 변환
X_poly_test = poly.transform(X_test) # test용 데이터 변환

# PolynomialFeatures을 LinearRegression 모델 훈련
model_lr2 = LinearRegression()
model_lr2.fit(X_poly_train,y_train)

# 예측값 구하기
y_pred =model_lr2.predict(X_poly_test)
y_train_pred = model_lr2.predict(X_poly_train)

# mse 평가
train_mse2 = mean_squared_error(y_train, y_train_pred)
test_mse2 = mean_squared_error(y_test,y_pred)  
print(train_mse2)
print(test_mse2)

 

4. Linear Regression 모델과 Polynomial Regression 모델의 MSE 비교

print('LinearRegression_train_mse: ',train_mse)
print('PolynomialFeatures_train_mse: ',train_mse2)

print('LinearRegression_test_mse: ',test_mse)
print('PolynomialFeatures_test_mse: ',test_mse2)

 

 

5. 결과

 학습 데이터의 결과, Polynomial Regression의 학습 데이터에 대한 MSE가 Linear Regression보다 낮다. 이는 Polynomial Regression  이 학습 데이터에 더 잘 맞추어져 있다는 것을 의미한다.

 테스트 데이터의 결과, Polynomial Regression 의 MSE가 Linear Regression의 MSE보다 높다. 즉, 학습 데이터의 결과와 반대되는 결과가 도출된다. 이는 Polynomial Regression이 학습데이터에는 잘 맞았지만 테스트 데이터에 대해서는 성능이 떨어진다는 것을 의미한다.

 두 데이터를 바탕으로 Polynomial Regression의 경우 학습데이터가 과적합되었음을 유추할 수 있다. 학습데이터에서는 더 복잡한 Polynomial Regression이 잘 작동하지만, 테스트 데이터에서는 일반화가 잘 되지 않으며 성능이 떨어짐을 알 수 있다. 그러나 Linear Regression은 학습데이터와 테스트 데이터 간의 MSE 차이가 크지 않아 비교적 안정적인 성능을 보인다.

 

6. Accuracy 사용에 대한 고민

 회귀 문제에서 Accuracy 지표를 사용하는 것은 적절하지 않을 수 있다고 생각한다. Accuracy는 주로 분류 문제에서 예측의 정확성을 비율로 나타내며, 이산적인 결과를 다루기 때문에 중요한 역할을 한다. 그러나 회귀 문제는 결과가 연속적이므로 Accuracy가 회귀 문제의 특성을 충분히 반영하지 못할 가능성이 있다. 임의의 기준을 설정하여 Accuracy를 계산하는 경우, 이는 주관적일 수 있으며 모델의 성능을 왜곡할 위험이 존재한다. 회귀 모델은 예측값이 실제값에 얼마나 근접하는지를 평가하고, 이 차이를 최소화하는 것을 목표로 한다. 예측값이 실제값에서 크게 벗어난 경우에도 Accuracy 계산에서는 이러한 차이가 반영되지 않을 수 있다. 따라서 회귀 문제에서는 MSE(Mean Squared Error)나 MAE(Mean Absolute Error)와 같은 연속형 평가 지표를 사용하는 것이 더 합리적이고 정확할 것으로 보인다. 이 실험에서도 MSE를 사용하여 두 모델을 비교했으며, 그 결과 Polynomial Regression 모델이 학습 데이터에서는 과적합되었지만 테스트 데이터에서는 성능이 떨어졌다는 것을 정확히 파악할 수 있었다. 만약 Accuracy를 사용했다면 이러한 과적합 문제를 제대로 감지하지 못했을 가능성이 크다. 

A. 주제

AI 작품, 어디까지 저작권을 인정받을 수 있을까?, 장종원, 2024.08.13, SAMSUNG SDS

AI 작품, 어디까지 저작권을 인정받을 수 있을까? | 인사이트리포트 | 삼성SDS (samsungsds.com)

 

AI 작품, 어디까지 저작권을 인정받을 수 있을까? | 인사이트리포트 | 삼성SDS

AI가 만든 콘텐츠에 대해 한 가지 해결하기 어려운 논란이 존재합니다. 바로 ‘저작권’입니다. AI가 만든 콘텐츠에는 어떻게 저작권을 적용해야 할까요?

www.samsungsds.com

 

B. 요약

AI로 생성된 콘텐츠의 저작권 문제는 매우 복잡하고 논의가 필요하다. 각국의 법과 규제는 AI가 생성한 작품에 대한 저작권을 다르게 적용하고 있다. 일부 국가는 AI가 만든 콘텐츠에 대해 저작권을 인정하지 않으며, 이는 창작자의 권리를 침해할 수 있다. 이러한 불확실성은 법적 분쟁과 갈등을 초래할 가능성이 높다. 또한, AI 기술의 발전으로 인해 콘텐츠 생성이 용이해지면서 저작권 문제가 더욱 중요해졌다. 따라서 AI 콘텐츠의 저작권에 대한 명확한 규정과 정책이 시급히 필요하다. 이를 통해 창작자와 AI 시스템 간의 권리와 책임을 명확히 하고, 공정한 환경을 조성할 수 있을 것이다. 
 

C. 핵심 포인트

AI 저작권 문제를 어떻게 해결해야할지, 관련 법규가 있는지, 해외에서는 어떻게 다루고 있는지에 대해 정리하였다.

 

1. 대한민국
- 저작권 인정 사례: AI가 제작한 영화 'AI수로부인'에서 저작권이 부분적으로 인정되었다. 그러나 이는 '편집저작물'로서, AI가 만든 이미지나 영상 자체에 대한 저작권이 아니라, 인간이 배열한 부분에 대해서만 인정되었다.
- 저작권 가이드라인: 한국저작권위원회에 따르면 저작물은 '인간의 사상 또는 감정을 표현한 창작물'로 정의되며, AI가 만든 산출물에 대한 저작권은 인정되지 않는다. 인간의 추가 작업이 있어야 저작물성이 인정되며, 창작성이 포함된 요소의 배열만 저작권 등록이 가능하다.

 

2. 미국
- 저작권 인정 사례: 그래픽노블 '새벽의 자리아'에서 미드저니를 사용한 부분에 대해 제한적으로 저작권이 인정되었다. AI로 만든 이미지나 텍스트의 선택 및 배열에 대해서만 저작권을 인정하고, 작품 자체에 대해서는 저작권이 인정되지 않는다.
- 전반적인 경향: 대부분의 AI 작품에 대해 저작권을 인정하지 않는 것이 일반적이며, 제한적인 인정 사례가 나타나고 있다.

 

3. 중국
- 저작권 인정 사례: 베이징 인터넷 법원에서 AI가 만든 이미지에 대해 저작권을 인정하였다. 이는 AI툴을 활용하여 생성된 이미지가 독창성을 가진 창작물로 판단되었다는 의미이다. 

<추가설명: 중국의 블로거가 콘텐츠 공유 플랫폼에서 무단으로 사진을 가져온 후 AI툴을 활용해 여성 이미지 제작하였으나, 사진 속 여성이 이를 발견하고 중국 블로거를 고소함.>

- 판결 내용: 피고(블로거)에게 소유권을 인정하되, 무단 사용에 대한 손해배상금 지급을 명령하였다. 인간의 개입(프롬프트 작성, 매개변수 설정 등)이 독창성에 기여했다고 판단하였기 때문이다.

 

4. 마무리
대체로 AI 작품에 대한 저작권을 제한적으로 인정하며, 대부분의 국가들은 저작권을 인정하지 않았다. 그러나 중국의 

AI 작품에 대해 저작권 인정 사례가 있어 향후 국제적인 저작권 기준에 영향을 미칠 가능성이 존재한다. AI 저작권 문제는 지속적으로 논의되고 있으며, 각국의 법적 기준과 판례에 따라 다르게 나타날 수 있다.

 

D. AI 작품

1. 나라지식정보에서 제작한 AI 수로 부인

https://www.youtube.com/watch?v=K61g6Rtyx90

 

 

2. 미국 그래픽노블의 '새벽의 자리아' (코믹북)

새벽의 자리야 이미지 (출처: AI코믹북스 - ‘https://aicomicbooks.com/book/zarya-of-the-dawn-by-kristina-kashtanova-download-now/’)

E. 용어정리

- 저작권: 저작권법 제2조 1항 "저작물"은 인간의 사상 또는 감정을 표현한 창작물을 말한다.

- 저작자: 저작권법 제2조 2항 "저작자"는 저작물을 창작한 자를 말한다.

F. 마무리

해당 아티클에서 다룬 것과 같이 AI 생성 콘텐츠의 저작권 문제에 대한 논의가 있으나, AI 저작권의 정의 모호성, 인간 기여도의 기준 부족, 국제적 차이 반영 부족, AI 독창성에 대한 논의 부족, 법적 구속력의 한계 등의 문제점이 존재한다. 

AI 기술이 빠르게 발전하는만큼 그에 대한 법적 및 사회적 논의도 함께 발전해야한다. 명확한 기준과 규제는 더 나은 창작 환경을 만들 수 있을 것이라 생각한다.

 

A. 금일 학습 내용

1. 타이타닉 데이터 확인하기

import pandas as pd
titaninc_df = pd.read_csv('D:/BootCamp/machine_learning/ML/titanic/train.csv')
titaninc_df.head(3)
titaninc_df.info()
titaninc_df.describe()

- 데이터 모양 확인하기

- 데이터 타입 및 결측치 등 정보 확인하기

- 타이타닉 데이터의 기술 통계 확인하기(수치형만 사용하기로 한다.)

 

2. 가설 세우기

- 정확도(Accuracy) = 맞춘 개수 / 전체 데이터

- 생존을 맞추고자 한다.

 

2-1. 첫 번째 예측

- 여성은 모두 살았을 것이고, 남성은 모두 죽었을 것이다 라고 가정한다면 아래와 같은 계산을 할 수 있다.

(233+468)/891*100

- 값: 78.67564534231201

 

2-2. 두 번째 예측

- 가설: 비상 상황 특성 상 여성을 우선 배려하여 남성보다 많이 살아남음

- 수치형 변수: Age, SibSp, Parch, Fare

- 범주형 변수: Pclass, Sex, Cabin, Embarked

 

3. x변수 설정하기

- 로지스틱 선형회귀 모델을 사용할 예정이므로 수치형 변수인 Fare 값 1개만 x값으로 설정한다.

# x변수: Fare, y변수: Survived
X_1 = titaninc_df[['Fare']]
y_true = titaninc_df[['Survived']]

sns.histplot(titaninc_df, x='Fare')
sns.scatterplot(titaninc_df, x='Fare', y='Survived')

Fare의 분포를 나타내는 히스토그램

- 500이 넘어가는 수치가 있음을 알 수 있다.

- 해당 값을 어떻게 처리할지 고민해 보아야 한다.

Fare 와 Survived 간의 산점도 그래프

 

from sklearn.linear_model import LogisticRegression
model_lor = LogisticRegression()
model_lor.fit(X_1, y_true)

 

4. 모델 분석하기

def get_att(x):
    # x모델을 넣기
    print('클래스 종류', x.classes_)
    print('독립변수 갯수', x.n_features_in_)
    print('들어간 독립변수(x)의 이름', x.feature_names_in_)
    print('가중치',x.coef_)
    print('바이어스',x.intercept_)
    
get_att(model_lor)

결과

5. 모델의 정확도, 정밀도, 재현율 평가지표 확인하기 [머신러닝 분류모델 평가]

from sklearn.metrics import accuracy_score, f1_score

def get_metrics(true, pred):
    print('정확도',accuracy_score(true,pred))
    print('f1-score',f1_score(true,pred))

- accuracy_score 은 모델의 정확도를 평가하는 지표이다.

- f1-score 은 모델의 정밀도와 재현율의 기하평균 값으로, 모델의 정밀도와 재현율을 모두 고려한 평가 지표이다.

- f1-score 점수는 최소 0, 최대 1의 값을 가지고 높을 수록 좋은 성능을 나타낸다.

 

6. 데이터 넣어 예측값 확인하기

y_pred_1 = model_lor.predict(X_1)
get_metrics(y_true, y_pred_1)

- predict 메소드는 학습한 데이터를 바탕으로 새로운 데이터가 입력되면 그에 맞는 결과를 예측한다.

 

 

model_lor.predict_proba(X_1)

 

- predict_proba 메소드는 확률을 반환한다.

- 각 클래스에 대해 [살아남을 확률, 죽을 확률] 값을 array 형식으로 나타낸다.

 

B. 마무리

- 간단한로지스틱 회귀분석에 대해 알아보았다.

- 다음은 이상치, 결측치 처리 및 범주형 데이터를 인코딩하는 등 데이터 전처리 등의 방법을 이용하는 좀 더 복잡한 머신러닝 모델을 보고자 한다.

'Today I Learned' 카테고리의 다른 글

[TIL] 군집분석(과제)  (0) 2024.08.21
[TIL] 선형회귀분석(과제)  (0) 2024.08.20
[TIL] map( ), 문자열 나누기  (0) 2024.08.14
[TIL] 단순선형회귀모형 식 구하기  (0) 2024.08.13
[TIL] 알고리즘 코드카타_행렬  (0) 2024.08.12

A. 주제

지속 가능한 AI 비즈니스를 위한 ESG 프레임워크, 김영욱, 2024.02.28

지속 가능한 AI 비즈니스를 위한 ESG 프레임워크 | 인사이트리포트 | 삼성SDS (samsungsds.com)

 

B. 요약

생성형 AI는 기업의 비즈니스 전략에서 필수적인 요소로 자리잡고 있다. 이를 통해 데이터 분석과 예측 능력을 강화하여 시장 변화에 신속히 대응할 수 있다. ESG 프레임워크는 기업이 지속 가능한 발전을 도모하고 리스크 관리 체계를 강화하는 데 중요한 역할을 한다. 두 요소의 융합은 기업의 혁신적이고 책임있는 경영을 실현하는데 기여한다.

 

C. 핵심 내용

생성형 AI는 기업 비즈니스 전략에서 필수적인 요소로 자리잡고 있으나 동시에 리스크를 동반하기도 한다. 저작권, 규제 및 데이터 관리와 관련된 다양한 리스크로 확대될 수 있으며 기업의 평판 및 가치 하락으로 이어질 가능성이 있다. 따라서 ESG 프레임워크의 도입이 강조되고 있다.

 

1. E (Environment, 환경적 요소) 

알고리즘이 제대로 동작할 때까지 엄청난 양의 데이터를 학습하며, 에너지를 소모하기에 큰 탄소 발자국을 남긴다.ESG 는 환경의 지속 가능성을 강조하므로 AI 산업이 이 원칙을 따를 수 있을지 고민해야하며, 탄소배출을 줄이고자 하는 노력이 필요하다.

 

2. S(Social, 사회적 요소)

사회적 평등과 다양성은 ESG관점에서 중요한 가치이다. 그러나 AI는 훈련 데이터에서 나온 편견 및 편향을 결과에 제한 없이 반영할 수 있다. 개인 정보 보호 및 데이터 보안을 강조하는 면에서 AI를 살펴보면 데이터 처리 및 저장에 있어 개인 정보 노출과 관련된 문제가 있다. 

 

3.G(Governance, 거버넌스적 요소)

법적 규제 및 준수와 의사결정 과정의 투명성에 대한 리스크가 발생할 수도 있다. 투명한 의사결정은 ESG원칙 준수에 따른 신뢰를 증진시키는 요소로, 거버넌스 영역에서 매우 중요한 요소이다. 투명성을 감소시키면 이와 관련된 의사결정이나 관리,감독이 어려워 진다. 

 

4. ESG 리포트

기업의 역할, 책임, 운영 방식을 체계화하여 AI 기술이 ESG 목표에 부합하도록 관리해야 한다. AI 거버넌스를 구축하고 운영하며, 이해관계자와 협력하는 정책과 절차 설정은 필수적이다. AI의 개발 라이프 사이클에 맞춘 End-to-end 거버넌스를 통해 각 단계별 책임과 평가 기준을 정립하여, 지속적인 모니터링과 성과 개선이 이루어져야 한다.

 

AI 기술은 ESG 관련 문제 해결의 잠재력을 가지고 있다. 에너지 사용을 최적화하거나 의료 접근성을 높이는 등 다양한 분야에서 긍정적인 변화를 이끌어낼 수 있다. 그러므로 기업은 AI기술의 리스크를 통제하고 ESG 원칙을 준수함으로써 지속 가능한 비즈니스를 발전시켜 나가야 한다.

 

D. 용어정리

1. ESG: Environment, Social, Governance의 약자로, 이해관계자가 기업의 3가지 비재무적 요소를 평가하기 위한 도구로 등장하였다. 최근에는 기업 관점에서 지속가능성을 달성하기 위한 핵심 요소를 의미하는 단어로 활용되고 있다.

- 지속가능성: 현재의 필요를 충족시키는 동시에, 미래 세대의 필요도 충족시키기 위한 발전 모델을 의미한다. 지속가능성은 자연환경, 사회, 경제 측면에서 발전이 지속 가능한 상태를 유지하는 것을 목표로 한다.

▷  중요도 : 기업목적, 자본조달, 지속가능

- 기업 목적: 미래 기업 가치를 제고하기 위해 추구해야할 사회적 가치로 보고 있으며 기업의 존립 목적에 내재화되어야 하는 필수적 요소로 자리 잡았다.

- 자본조달: 투자의사결정 과정에 영향력을 미치는 핵심요소로 부각되고 있으므로 자본조달 측면에서 필수적으로 관리되어야 하는 요소이다.

- 지속가능: 지속가능한 발전에 관한 국제사회 합의를 지지하는 개념으로서, 현재와 미래세대를 위해 추구해야하는 요소이다.

출처: ESG 공급망 지원센터 ESG란? 중

 

2. ESG 프레임워크

기업이 비즈니스의 환경, 사회 및 거버넌스 측면과 관련된 비즈니스 운영 및 기회와 위험을 다루는 데이터를 공개하는데 사용된다. 즉 기업이 비재무 정보를 투명하고 신뢰성 있게 공시하고, 지속가능성을 증진하는데 필요한 지침을 말한다.

참고: https://www.net-zero.kr/news/articleView.html?idxno=1171

 

한눈에 보는 글로벌 ESG 공시 표준과 프레임워크 - 탄소중립투데이

환경, 사회, 거버넌스(ESG) 문제는 기업의 핵심 의제로 부상하고 있습니다. 기업이 지속가능성 목표를 달성하고 책임 있는 경영을 실천하기 위해서는 다양한 글로벌 ESG 공시 표준과 프레임워크를

www.net-zero.kr

 

E. 사례

1. 네이버

▶ 더 나은 가치를 위한 네이버의 ESG 추진 전략

- 다양한 이해관계자와 올바른 관계를 형성하고 더 큰 가치를 제공하기 위해 빠르게 변화하는 사업 환경 및 ESG 규제 강화동향을 반영해 지속가능 경영 7대 전략을 수립하고 실천한다.

- 더보기: https://www.navercorp.com/esg/sustainability

 

지속가능경영 Sustainability Management

ESG 경영으로 완성하는 지속가능한 미래 Sustainability Management Strategies

www.navercorp.com

- 지속가능경영 7대 전략

네이버의 지속가능경영 7대 전략

 

A. 책 이름

빅데이터 시대, 성과를 이끌어 내는 데이터 문해력, 카시와기 요시키 지음, 프리렉

 

B. 주요 내용

처음 만난 상대에게 광범위하고 객관적인 주장을 합리적으로 전달할 수 있는 효과적인 도구가 바로 데이터이다. 절대적인 정답이 존재하지 않을 때, 당신은 어떻게 자신이 생각하는 바를 상대에게 전달하고 이해시킬 수 있을까요? 데이터에서 찾아낸 인사이트를 자신의 결론을 이끄는 이야기로 만드는 능력이 바로 데이터 문해력이다. 목적과 문제를 올바른 데이터와 연결해서 가치있는 결론을 낼 수 있도록 하는 사고방식과 기술을 안내한다.

 

위 글은 책 뒤에 적혀있는 내용으로 이보다 더 이 책을 잘 설명할 수 없다 생각하여 그대로 인용한다.

 

 C. 느낀 점

'올바른 목적을 설정하고 그 목적에 따라 데이터를 활용해서, 적절히 제시한 결과를 결론으로 이끌어간다'는 본질적인 흐름을 중시하고, 과정 하나하나 신중히 밟아가야 한다. 그것이 바로 가치 있는 성과를 창출하기위한 필수 조건

 

저자가 글을 끝마치며 잘막하게 작성했던 내용이다. 그 앞에 데이터를 잘 이해하고 해석하는지에 대해 수 많은 이야기들을 다뤘는데 이 두 문장이 작가가 하고 싶은 말을 가장 잘 표현하였다고 생각한다. 

 

'데이터 분석' , 'Data Analyst' 단어 그 자체로도 멋있다. 주어진 것들을 살펴보고, 추론하고, 이리 저리 맞춰보는 것들이 마치 프로파일링과 비슷해 보였다. 학부 연구실에서 공부하면서 데이터 수집에서부터 전처리, 시각화 그리고 그 결과를 통해 얻은 결론이 내었다. 그 결론은 책임자의 최종 결정의 근거가 된다는 사실이 설레었다. 그래서 데이터분석가가 되고 싶었다. 있는 그대로의 데이터를 읽는 것은 결과를 내는 것이지 결론을 도출하는 것이 아니다. 나는 유능한 분석가가 되고 싶다. 그런데 표와 그래프를 보고 해석하고 결론을 내는 방법을 모르겠어서 해당 책을 읽게 되었다.

 

1. 정의를 정의하다

가장 초반에 작가가 중요하게 이야기하는 부분 중 하나이다. 정의를 명확하게 하는 것. 그리고 문제 원인이 무엇인지 정확하게 파악하는 것. 해결해야하는 것이 명확해야하는 것. 즉 이 사건을 명확히하는 것에서 부터 시작해야한다는 것이다.

이 이야기를 하면서 대학 발표시간이 생각났다. 전공 과목 프레젠테이션를 시작하자마자 교수님께서 말씀하셨다.

정의부터 잘못되어 있어.
자율주행차량의 뜻이 level 몇 단계를 이야기하는것인지
너네가 진행한 실험은 어떤 것이지
프레젠테이션의 제목이라면 너네가 무슨 말을 할 것이라고 정확하게 말해줘야지.
두루뭉술하게 하나도 제대로 말하고 있는 것이 없잖아.
결국 사람들은 너희의 주장을 하나도 납득하지 못해.

 

그 때 내가 한 말은 단 한마디였다. "안녕하세요 journal201 입니다." 그리고 그 말이 나의 마지막 말이었다. 그 뒤로 모든 것에 대해서 육하원칙 방식으로 한 번 생각하고, '왜?', '이게 뭔데' 라는 두 마디를 입에 달고 살았다. 모든 것에 정의를 내리고, 무엇인지 제대로 파악하여 어떤 방식으로 어떤 이유로 사용하는지에 대해 고민한 결과들을 내었다. 그 시간들이 결코 쉬웠던 것은 아니었다. 왜 이 정도까지 해야할까 하는 생각도 많이 들었다. 하지만 이 책을 읽고 나니 내가 잘 한 것이구나 하는 안도감이 들었다. 같은 수업을 들었던 친구들 말에 많이 흔들렸었다. 이 정도로 하지 않아도 되는 일에 너무 많은 에너지를 쏟는 것은 아닐까 하는 생각이 문득문득 들었기 때문이다. 그러나 이 습관이 데이터 분석에 있어 매우 도움이 된다니 믿기지 않았고, 괜찮은 길을 걷고 있었던 것 같아 뿌듯했다.

 

2. 논리적인 과정을 따라가자.

본질을 흐리지 않고, 왜 이 과정을 따르는지에 대한 인식을 따라가며 지속적으로 의심하고 의심하는 과정을 가져야 한다. 원인부터 제대로 봐야한다는 점은 나도 신기했다. 어떤 현상에 대해 문제 해결방법을 도출하라 한다면 여전히 두리뭉실한 방법이 가장 먼저 떠오른다. 예를 들면 '매출이 줄어드는 문제가 발생했다. 이를 해결하라'라는 상황이 있다면 '가격 할인을 통한 고객의 소비 유도!' 혹은 '유명 모델과 함께 프로모션 상품 개발!' 이런 방식이 먼저 떠올랐을 것이다. 그러나 이제는 어떤 방식으로 상황을 바라보고 그에 대한 정의를 내리는 순간부터 명확한 원인분석을 통한 결과를 도출할 때까지 객관적이고 논리적인 과정을 따라가야 제대로된 문제점을 해소하고자 노력한다. 

 

D. 마무리

나 자신을 설득할 수 없다면 타인 또한 설득할 수 없다. 타인을 설득할 수 있는 가장 좋은 방법은 눈에 보이는 데이터를 통해 인과관계, 상관관계를 명확히 하고 이에 대한 원인 분석, 그에 따른 해결 방안까지 논리적이고 객관적인 방법으로 설명하는 것이다. 유능한 분석가가 되고 싶다.

 

+ Recent posts