# 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
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
Diabetes 데이터 회귀 분석 진행하기
Diabetes 데이터셋 이용
해당 데이터의 특징과 문제 해결 유형을 정리하라.
- Linear Regression 모델과 Polynomial Regression 모델을 학습한 후 MSE로 성능을 계산한 후 비교하라.
- 해당 문제에서는 Accuracy를 사용하면 어떻게 될지 고민 할 것.
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 비교
학습 데이터의 결과, 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를 사용했다면 이러한 과적합 문제를 제대로 감지하지 못했을 가능성이 크다.
AI로 생성된 콘텐츠의 저작권 문제는 매우 복잡하고 논의가 필요하다. 각국의 법과 규제는 AI가 생성한 작품에 대한 저작권을 다르게 적용하고 있다. 일부 국가는 AI가 만든 콘텐츠에 대해 저작권을 인정하지 않으며, 이는 창작자의 권리를 침해할 수 있다. 이러한 불확실성은 법적 분쟁과 갈등을 초래할 가능성이 높다. 또한, AI 기술의 발전으로 인해 콘텐츠 생성이 용이해지면서 저작권 문제가 더욱 중요해졌다. 따라서 AI 콘텐츠의 저작권에 대한 명확한 규정과 정책이 시급히 필요하다. 이를 통해 창작자와 AI 시스템 간의 권리와 책임을 명확히 하고, 공정한 환경을 조성할 수 있을 것이다.
C. 핵심 포인트
AI 저작권 문제를 어떻게 해결해야할지, 관련 법규가 있는지, 해외에서는 어떻게 다루고 있는지에 대해 정리하였다.
1. 대한민국 - 저작권 인정 사례: AI가 제작한 영화 'AI수로부인'에서 저작권이 부분적으로 인정되었다. 그러나 이는 '편집저작물'로서, AI가 만든 이미지나 영상 자체에 대한 저작권이 아니라, 인간이 배열한 부분에 대해서만 인정되었다. - 저작권 가이드라인: 한국저작권위원회에 따르면 저작물은 '인간의 사상 또는 감정을 표현한 창작물'로 정의되며, AI가 만든 산출물에 대한 저작권은 인정되지 않는다. 인간의 추가 작업이 있어야 저작물성이 인정되며, 창작성이 포함된 요소의 배열만 저작권 등록이 가능하다.
2. 미국 - 저작권 인정 사례: 그래픽노블 '새벽의 자리아'에서 미드저니를 사용한 부분에 대해 제한적으로 저작권이 인정되었다. AI로 만든 이미지나 텍스트의 선택 및 배열에 대해서만 저작권을 인정하고, 작품 자체에 대해서는 저작권이 인정되지 않는다. - 전반적인 경향: 대부분의 AI 작품에 대해 저작권을 인정하지 않는 것이 일반적이며, 제한적인 인정 사례가 나타나고 있다.
3. 중국 - 저작권 인정 사례: 베이징 인터넷 법원에서 AI가 만든 이미지에 대해 저작권을 인정하였다. 이는 AI툴을 활용하여 생성된 이미지가 독창성을 가진 창작물로 판단되었다는 의미이다.
<추가설명: 중국의 블로거가 콘텐츠 공유 플랫폼에서 무단으로 사진을 가져온 후 AI툴을 활용해 여성 이미지 제작하였으나, 사진 속 여성이 이를 발견하고 중국 블로거를 고소함.>
- 판결 내용: 피고(블로거)에게 소유권을 인정하되, 무단 사용에 대한 손해배상금 지급을 명령하였다. 인간의 개입(프롬프트 작성, 매개변수 설정 등)이 독창성에 기여했다고 판단하였기 때문이다.
4. 마무리 대체로 AI 작품에 대한 저작권을 제한적으로 인정하며, 대부분의 국가들은 저작권을 인정하지 않았다. 그러나 중국의
AI 작품에 대해 저작권 인정 사례가 있어 향후 국제적인 저작권 기준에 영향을 미칠 가능성이 존재한다. AI 저작권 문제는 지속적으로 논의되고 있으며, 각국의 법적 기준과 판례에 따라 다르게 나타날 수 있다.
생성형 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 프레임워크
기업이 비즈니스의 환경, 사회 및 거버넌스 측면과 관련된 비즈니스 운영 및 기회와 위험을 다루는 데이터를 공개하는데 사용된다. 즉 기업이 비재무 정보를 투명하고 신뢰성 있게 공시하고, 지속가능성을 증진하는데 필요한 지침을 말한다.
처음 만난 상대에게 광범위하고 객관적인 주장을 합리적으로 전달할 수 있는 효과적인 도구가 바로 데이터이다. 절대적인 정답이 존재하지 않을 때, 당신은 어떻게 자신이 생각하는 바를 상대에게 전달하고 이해시킬 수 있을까요? 데이터에서 찾아낸 인사이트를 자신의 결론을 이끄는 이야기로 만드는 능력이 바로 데이터 문해력이다. 목적과 문제를 올바른 데이터와 연결해서 가치있는 결론을 낼 수 있도록 하는 사고방식과 기술을 안내한다.
위 글은 책 뒤에 적혀있는 내용으로 이보다 더 이 책을 잘 설명할 수 없다 생각하여 그대로 인용한다.
C. 느낀 점
'올바른 목적을 설정하고 그 목적에 따라 데이터를 활용해서, 적절히 제시한 결과를 결론으로 이끌어간다'는 본질적인 흐름을 중시하고, 과정 하나하나 신중히 밟아가야 한다. 그것이 바로 가치 있는 성과를 창출하기위한 필수 조건
저자가 글을 끝마치며 잘막하게 작성했던 내용이다. 그 앞에 데이터를 잘 이해하고 해석하는지에 대해 수 많은 이야기들을 다뤘는데 이 두 문장이 작가가 하고 싶은 말을 가장 잘 표현하였다고 생각한다.
'데이터 분석' , 'Data Analyst' 단어 그 자체로도 멋있다. 주어진 것들을 살펴보고, 추론하고, 이리 저리 맞춰보는 것들이 마치 프로파일링과 비슷해 보였다. 학부 연구실에서 공부하면서 데이터 수집에서부터 전처리, 시각화 그리고 그 결과를 통해 얻은 결론이 내었다. 그 결론은 책임자의 최종 결정의 근거가 된다는 사실이 설레었다. 그래서 데이터분석가가 되고 싶었다. 있는 그대로의 데이터를 읽는 것은 결과를 내는 것이지 결론을 도출하는 것이 아니다. 나는 유능한 분석가가 되고 싶다. 그런데 표와 그래프를 보고 해석하고 결론을 내는 방법을 모르겠어서 해당 책을 읽게 되었다.
1. 정의를 정의하다
가장 초반에 작가가 중요하게 이야기하는 부분 중 하나이다. 정의를 명확하게 하는 것. 그리고 문제 원인이 무엇인지 정확하게 파악하는 것. 해결해야하는 것이 명확해야하는 것. 즉 이 사건을 명확히하는 것에서 부터 시작해야한다는 것이다.
이 이야기를 하면서 대학 발표시간이 생각났다. 전공 과목 프레젠테이션를 시작하자마자 교수님께서 말씀하셨다.
정의부터 잘못되어 있어. 자율주행차량의 뜻이 level 몇 단계를 이야기하는것인지 너네가 진행한 실험은 어떤 것이지 프레젠테이션의 제목이라면 너네가 무슨 말을 할 것이라고 정확하게 말해줘야지. 두루뭉술하게 하나도 제대로 말하고 있는 것이 없잖아. 결국 사람들은 너희의 주장을 하나도 납득하지 못해.
그 때 내가 한 말은 단 한마디였다. "안녕하세요 journal201 입니다." 그리고 그 말이 나의 마지막 말이었다. 그 뒤로 모든 것에 대해서 육하원칙 방식으로 한 번 생각하고, '왜?', '이게 뭔데' 라는 두 마디를 입에 달고 살았다. 모든 것에 정의를 내리고, 무엇인지 제대로 파악하여 어떤 방식으로 어떤 이유로 사용하는지에 대해 고민한 결과들을 내었다. 그 시간들이 결코 쉬웠던 것은 아니었다. 왜 이 정도까지 해야할까 하는 생각도 많이 들었다. 하지만 이 책을 읽고 나니 내가 잘 한 것이구나 하는 안도감이 들었다. 같은 수업을 들었던 친구들 말에 많이 흔들렸었다. 이 정도로 하지 않아도 되는 일에 너무 많은 에너지를 쏟는 것은 아닐까 하는 생각이 문득문득 들었기 때문이다. 그러나 이 습관이 데이터 분석에 있어 매우 도움이 된다니 믿기지 않았고, 괜찮은 길을 걷고 있었던 것 같아 뿌듯했다.
2. 논리적인 과정을 따라가자.
본질을 흐리지 않고, 왜 이 과정을 따르는지에 대한 인식을 따라가며 지속적으로 의심하고 의심하는 과정을 가져야 한다. 원인부터 제대로 봐야한다는 점은 나도 신기했다. 어떤 현상에 대해 문제 해결방법을 도출하라 한다면 여전히 두리뭉실한 방법이 가장 먼저 떠오른다. 예를 들면 '매출이 줄어드는 문제가 발생했다. 이를 해결하라'라는 상황이 있다면 '가격 할인을 통한 고객의 소비 유도!' 혹은 '유명 모델과 함께 프로모션 상품 개발!' 이런 방식이 먼저 떠올랐을 것이다. 그러나 이제는 어떤 방식으로 상황을 바라보고 그에 대한 정의를 내리는 순간부터 명확한 원인분석을 통한 결과를 도출할 때까지 객관적이고 논리적인 과정을 따라가야 제대로된 문제점을 해소하고자 노력한다.
D. 마무리
나 자신을 설득할 수 없다면 타인 또한 설득할 수 없다. 타인을 설득할 수 있는 가장 좋은 방법은 눈에 보이는 데이터를 통해 인과관계, 상관관계를 명확히 하고 이에 대한 원인 분석, 그에 따른 해결 방안까지 논리적이고 객관적인 방법으로 설명하는 것이다. 유능한 분석가가 되고 싶다.