회사에서는 당장 필요한 기술을 만들다 보니 모델을 공부하는 일들이 적어져, 개별적으로 공부 겸 다양한 데이터 사례도 다뤄볼 겸 오픈 소스 데이터를 활용해보기로 하였다. 오늘은 ML 예측 모델을 활용하여 오픈소스를 활용한 사례를 소개하고자한다. 오늘의 주제는 리튬이온 배터리의 SoC를 예측하는 것이다. 데이터는 캐글(Kaggle)에서 발췌하였다.

 

원본 데이터 : Kaggle 활용하기

https://www.kaggle.com/code/dhakalamrit/lithium-ion-battery-state-of-charge-estimation

 

Lithium ion Battery State of Charge estimation

Explore and run machine learning code with Kaggle Notebooks | Using data from LG 18650HG2 Li-ion Battery Data

www.kaggle.com

관련 실험은 캐나다의 McMaster University 대학의 Dr. Phillip Kollmeyer가 수행해주셨다고한다. 감사합니다 :-)

 

데이터 대상 : LG 18650 HG2

LG 18650HG2

 

데이터 분석을 하기 위해서는 사전 데이터 정보의 파악이 중요하다. Kaggle에 따르면, 해당 데이터는 LG 18650HG2의 리튬이온 배터리 데이터라고 하는데, 아래 그림과 같이 원통형 배터리이다. (대개의 경우, 자동차 배터리는 테슬라를 제외하고는 파우치 배터리를 사용하고 원통형 배터리의 경우 소형 가전에 주로 사용된다. 테슬라의 경우에는 원통형 배터리를 사용하기도한다. 18650일 경우 앞의 두자리가 직경인 18mm, 높이가 65mm이다. 18650은 가장 흔하게 구할 수 있는 원통형 배터리 중 하나일 것이다.)

 

배터리를 실험하려면, Chamber라는 갇힌 박스 같은 공간에서 소위 전선을 연결하여 계측되는데, 해당 테스트 장비로는 (Digatron Firing Circuits Universal Battery Tester)로, 전압과 전류 정확도는 최대 값의 0.1%라고 한다. ML 모델을 만들어도 해당 오차는 감안해야한다는 의미이다.

 

데이터 구성

데이터 파일은 아래와 같이 구성되어 있는데, 온도에 따라 실험한 데이터가 개별적으로 수행되어있다. 오늘의 주제는 배터리의 SoC(State of Charge)인 즉 충전 상태를 예측하는 것인데, 쉽게 설명하자면 배터리 회사에서 제조한 초기 정격 용량 이 배터리에서는 3Ah (Nominal Capacity) 대비 충전이 얼마나 되어있는지를 나타내는 지표라고 할 수 있다.

이러한 SoC는 온도에 민감하게 반응하는데, 이유는 배터리는 아주 전기화학적인 장치라 반응 속도와 내부 저항에 큰 영향을 미쳐 전압 및 용량 특성이 변화하기 때문이다. 따라서, 저온에서는 전압이 더욱 낮게 나타날 수 있으며, SoC가 실제보다 낮게 측정될 가능성이 있고, 고온에서도 SoC가 더 높게 측정될 가능성이 있다.

따라서, 향후 온도는 SoC를 예측모델을 만들기 위한 입력 변수가 될 것이다.

 

Kaggle 데이터 구성

 

본격적으로 데이터에 들어가기에 앞서 Readme에 적힌 데이터 열 정보와 시간 간격, 테스트 정보를 파악해보자.

데이터의 시간 간격은 테스트 별로 상이한데, 드라이브 사이클 등 중요한 테스트는 0.1초 시간 간격으로, 충전 및 대기 등 비교적 중요하지 않은 테스트는 더 낮은 데이터 속도로 저장되었다고 한다. 데이터 속도의 차이를 고려해 필요시 업샘플링을 수행해아할 수 있으며, 파일의 샘플링 속도는 가변적이므로 매개변수에 따라 시간 축을 사전에 전처리해야할 필요가 있어보인다.

데이터 열의 정보는 아래와 같다.

Name Description Units
Time 시간
TimeStamp 타임스탬프 MM/DD/YYYY HH:MM:SS AM 형식
Voltage 셀 단자 전압(배터리 단자에 직접 연결된 센스 리드로 측정) V
Current 전류 A
Ah 용량 (충전, 테스트, 또는 드라이브 사이클 후 초기화) Ah 
Wh 와트-시간(충전, 테스트, 또는 드라이브 사이클 후 초기화) Wh
Power 전력 W
Batter_Temp_degC 배터리 중간 케이스 온도(AD592 온도 센서로 ±1℃ 정확도로 측정)

 

파일은 매트랩으로 구성된 파일 .mat과 .csv 파일 모두 동일한 형식이며, 파일명의 테스트 번호와 설명이 라벨링되어 있어 참조할 수 있다. 예시로 "555_Dis_2C.csv"는 테스트번호 555 이며 2C 방전(Discharge)을 의미한다고 한다.

 

여기서 2C는 방전 속도를 의미하는데, 배터리 용량을 한번 풀 충전하는 속도를 C-rate로 표기한다. 배터리의 정격 용량이 3Ah인 배터리의 경우, 1C로 방전한다고 하면 3A의 전류로 방전할때 1시간이 걸린다는 의미이다. 즉, 2C의 경우에는 6A로 방전한다는 의미이고, 2C 속도에서 배터리를 완전히 방전하려면 이론적으로 0.5시간(30분)이 걸린다는 의미이다.

 

테스트 설명

테스트는 서로 다른 온도 조건에서 수행되었으며, 펄스 방전 HPPC 테스트, C/20 충방전 테스트, 방전테스트, 드라이브 사이클테스트, 혼합 드라이브 사이클 테스트, 온도별 테스트 등 다양한 테스트가 반복되었다. 이는 탐색적 데이터 분석 EDA(Exploration Data Analysis) 을 수행하며 보다 자세하게 다뤄보기로 한다.

 

 

관련 일을 시작하면서, 경험들이 하나 둘 씩 누적되기 시작하였다.

학위를 졸업하고

첫 번째 회사에서 일하면서,

그리고 현 직장에 이직을 하면서,

 

나는 줄곧 현재 내가 서있는 위치가 어디인지 되돌아보면서

앞으로의 행동을 계획할 필요가 있다.

 

틈틈히 내가 했던 프로젝트를 정리하고 관련 기술들을 정리하면서

부족한 기술이 무엇이며 회고를 하곤하는데

최근에는 막연하게 떠오르지않는 키워드들을

ChatGPT를 통해 키워드를 모색하거나,

Naptune AI를 통해서 이미지 시각화를 통해 도움을 받았다.

 

https://neptune.ai/

 

neptune.ai | Experiment tracker purpose-built for foundation models

Monitor thousands of per-layer metrics—losses, gradients, and activations—at any scale. Visualize them with no lag and no missed spikes. Drill down into logs and debug training issues fast.

neptune.ai

 

간단하게 Request Trail을 눌러보면, 일부 이미지를 체험판으로 제공받을 수 있다.

 

Neptune.AI를 활용한 키워드 시각화 예시

 

Python으로 API를 받아, 학습용 이미지 생성에도 활용할 수 있을 것으로 보이는데, 유료 서비스도 매력적인 아이템이 될 수 있을 것으로 보인다.

빅데이터분석기사를 준비하면서, 새로워진 작업 3 유형의 t-test를 연습해보고자하였다.

작업 3유형을 공부한다면, 아래 데이터와 문제를 활용해서 한번 연습해보는 것을 추천한다.

기사를 공부하는 이들에게 도움이 되고자 작성한다. 아래는 예제와 풀이이다.

 

데이터 다운로드

blood_pressure.csv
0.00MB


 

 

문제

 

주어진 데이터(data/blood_pressure.csv)에 고혈압 환자 120명의 치료 전후의 혈압이 저장되어 있다. 
해당 치료가 효과가 있는지 (즉, 치료 후의 혈압이 감소했는지) 쌍체표본 t-검정(paried t-test)를 통해 답하고자 한다.

가설은 아래와 같다.
Ud (치료 후 혈압 – 치료 전 혈압)의 평균
H0 : Ud >=0
H1 : Ud < 0

bp_before : 치료전 혈압
bp_after : 치료 후 혈압

1) Ud의 표본 평균을 입력하시오. (반올림하여 소수점 둘째자리까지 계산)
2) 위의 가설을 검정하기 위한 검정통계량을 입력하시오. (반올림하여 소수 넷째자리까지 계산)
3) 위의 통계량에 대한 p-값을 구하여 입력하시오.(반올림하여 소수 넷째자리까지 계산)
4) 유의수준 0.05 하에서 가설검정의 결과를 (채택/기각) 중 하나를 선택하여 입력하시오.

 

 

풀이 방향

0) 귀무가설에서 확인해야할 점을 문제에 표시함

1) 가설 검정이에서 쌍체 표본 t-검정이 나오면 scipy.stats 내에있는 ttest_rel 함수로 풀수 있음

2) 귀무가설의 부호 방향을 확인할 것 : Ud가 0 이상이므로 좌측 검정을 실시해야함, 귀무가설의 부호로부터 검정방향을 확인할 수 있음, alternative='less'

3)  데이터 입력 순서 : 귀무가설 Ud >=0 이라는 것은 bp_after >= be_before 를 검정하는 것과 동일함

ttest_rel(bp_after,bp_before)  좌항부터 순차적으로 넣어줄 것

 

 

코드

import pandas as pd
import numpy as np
import scipy.stats as stats

df = pd.read_csv('data/blood_pressure.csv', index_col = 0)
# 데이터 정보 확인
print(df.info())

# 1. Ud 표본 평균 입력
d = df['bp_after']-df['bp_before']
ud = d.mean(axis=0)
ud = np.round(ud,2)
print(f"1) Ud의 표본 평균 : {ud}")

# 2. 검정통계량 계산
## 확인 필수! 귀무가설을 기준으로 결정하면됨, 귀무가설 부등호가 이상인 경우 좌측 검정
# alternative 'less' : 좌측검정
# alternative 'greatest' :우측검정
# alternative 'two-sided' : 양쪽검정

## 3. 쌍측 t-검정 : 두 집단이 변화하였는지
tstat, pval = stats.ttest_rel(df['bp_after'],df['bp_before'],alternative='less')
# 만약에 오류가 날 경우, 받아오는 변수 값이 4개인지 확인해보자. scipy 버전에 따라 상이함
# tstat, pval, _, _ = stats.ttest_rel(df['bp_after'],df['bp_before'],alternative='less')

tstat = np.round(tstat,4)
print(f"2) 검정통계량 : {tstat}")
pval = np.round(pval,4)
print(f"3) P-val : {pval}")

## 4. 가설검정
alpha = 0.05 #유의수준
if pval >=alpha :
	print("4) H0 Accepted - 귀무가설 채택")
else :
	print("4) H0 Reject - 귀무가설 기각")

 

답안)

1) Ud의 표본 평균 : -5.09
2) 검정통계량 : -3.3372
3) P-val : 0.0006
H0 Reject - 귀무가설 기각​

 

 

 

설명 가능한 인공지능(XAI)란?

eXplainable Artificial Intelligence의 약자로, 설명 가능한 인공지능(XAI)은 AI가 내린 판단의 이유와 과정을 사람이 이해할 수 있도록 설명하는 기술이다. 기존 인공지능은 딥러닝이나 머신러닝의 복잡한 알고리즘 속에서 작동하며 결과만 제공할 뿐, 그 과정은 알 수 없는 블랙박스 형태였다. XAI는 이러한 한계를 극복하고, AI의 결과를 사용자에게 투명하게 전달하기 위해 등장했다.

 

왜 XAI가 필요한가?

기존 AI는 뛰어난 성능을 제공하지만, 결과를 설명하지 못한다는 점에서 한계가 있었다. 특히 의료나 금융처럼 고객 신뢰가 중요한 분야에서는 결과를 왜곡 없이 이해시키지 못하면 사용자가 AI를 믿기 어렵다. 예를 들어, 의료 AI가 질병을 진단했을 때 "왜 이 질병이라고 판단했는가?"를 설명하지 못하면 사용자는 결과를 수용하기 어렵다. XAI는 판단 과정과 이유를 구체적으로 제시하여 AI를 더 안전하고 신뢰할 수 있는 기술로 만든다.

 

XAI는 어떻게 작동하는가?

XAI는 인공지능의 결과를 설명하기 위해 세 가지 주요 접근 방식을 사용한다.

  1. 기존 학습 모델 변형
    기존 학습 모델에 역산 과정을 추가하거나 모델 자체를 수정하여 결과를 설명한다. 예를 들어, 합성곱 신경망(CNN)의 결과를 설명하기 위해, 역합성곱 신경망(DeconvNet)을 추가해 이미지의 어떤 부분이 결과에 영향을 미쳤는지 시각적으로 보여주는 방식이다.
  2. 새로운 학습 모델 개발
    원인과 결과를 명확히 드러낼 수 있는 학습 모델을 설계한다. 예를 들어, 확률적 AND-OR 그래프 기반 학습 모델은 데이터 간의 논리를 구조적으로 표현해 결과를 쉽게 해석할 수 있다.
  3. 모델 간 비교
    다른 모델과의 비교를 통해 결과를 설명한다. 예를 들어, 이미지 분류 결과를 설명하기 위해 기존 모델과 픽셀 차이를 비교하거나 특정 특성을 기준으로 결과를 분석하는 방식이다.
XAI 기술 예시: 주요 알고리즘과 방법

XAI는 다양한 알고리즘과 기술을 활용해 AI의 판단 과정을 설명한다. 아래는 대표적인 XAI 기술과 그 특징이다. 세부 기술에 대해서는 향후 포스팅할 기회가 있으면 추가해보도록 하겠다.

  1. LIME (Local Interpretable Model-agnostic Explanations)
    • 특정 예측 결과에 대해, 입력 데이터의 작은 변화를 분석해 결과에 영향을 준 요소를 도출한다.
    • 예: 이미지 분류 모델에서 특정 픽셀이 결과에 얼마나 기여했는지를 색상으로 표시.
  2. SHAP (SHapley Additive exPlanations)
    • 게임 이론 기반으로 개발된 알고리즘으로, 각 특징값(feature)이 결과에 미친 영향을 수치화해 설명한다.
    • 예: 대출 승인 여부를 판단할 때, 소득, 나이, 신용 점수 각각의 기여도를 계산해 제시.
  3. Grad-CAM (Gradient-weighted Class Activation Mapping)
    • 합성곱 신경망(CNN) 모델에서 특정 분류 결과와 관련된 이미지 영역을 시각적으로 강조.
    • 예: 자율주행 자동차에서 도로 표지판을 감지했을 때, 감지에 영향을 준 이미지 부분을 하이라이트.
  4. Counterfactual Explanations
    • 현재의 예측 결과를 바꾸기 위해 입력 데이터를 어떻게 수정해야 하는지 설명한다.
    • 예: 대출이 거절된 고객에게 "소득이 X만큼 증가하면 대출이 승인될 수 있습니다"와 같은 구체적 피드백 제공.
  5. DeepLIFT (Deep Learning Important FeaTures)
    • 딥러닝 모델에서 입력값이 출력값에 미치는 영향을 효율적으로 계산해 결과를 설명한다.
    • 예: 의료 이미지 분석에서 특정 조직의 변화가 질병 판단에 얼마나 기여했는지 수치로 표현.
  6. Explainable Boosting Machines (EBM)
    • 복잡한 모델 대신 고해석성을 제공하는 기법으로, 선형성과 비선형성을 모두 고려해 데이터를 분석한다.
    • 예: 의료 AI가 특정 질병 발생 확률을 설명하며 환자의 나이, 병력 등 중요한 요인을 시각적으로 표시.
  7. Anchors
    • LIME에서 발전된 기술로, 특정 예측이 발생하기 위한 최소한의 조건(앵커)을 제공한다.
    • 예: 이미지 분류 모델에서 "꼬리가 X 모양인 경우 고양이로 판단"과 같은 규칙 제시.

 

XAI 기술의 실제 사례

  1. 의료 분야
    의료 AI는 XAI를 활용해 진단 과정에서 의사가 신뢰할 수 있는 판단 근거를 제공한다. 예를 들어, 폐 질환을 진단하는 AI는 CT 이미지에서 어떤 부분이 병변으로 판단되었는지를 강조 표시해준다. 이를 통해 의사가 AI의 판단 근거를 검토하고 활용할 수 있다.
  2. 금융 분야
    대출 심사 AI는 신청자의 대출 승인을 판단할 때, 어떤 정보(예: 소득, 신용 점수)가 결정에 가장 큰 영향을 미쳤는지 설명한다. 이는 고객에게 신뢰를 제공하고, AI 결과의 공정성을 검증하는 데 도움을 준다.
  3. 자율주행 자동차
    자율주행 차량은 주변 환경 데이터를 기반으로 판단을 내리는데, XAI는 특정 도로 상황에서 왜 정지했거나 특정 경로를 선택했는지 설명한다. 예를 들어, 차량이 정지 신호를 감지하고 멈춘 이유를 시각적으로 나타내는 방식이다.
  4. 이미지 분석
    XAI 기술은 이미지 분류에서 특정 픽셀이 결과에 미친 영향을 강조해 사용자가 결과를 이해할 수 있게 한다. 예를 들어, 고양이와 개를 구별하는 AI는 사진 속에서 귀나 털 색 같은 특징이 분류 기준이 되었음을 시각적으로 보여줄 수 있다.
XAI가 가져올 변화

XAI는 AI 기술의 신뢰성을 높이는 데 크게 기여할 것이다. 사용자가 AI의 판단 근거를 이해하면, 결과에 대한 공감대가 형성되고 신뢰가 강화된다. 이는 의료, 금융, 법률 등 신뢰가 중요한 분야에서 특히 중요한 역할을 한다. 또한, XAI는 AI 성능 향상에도 도움을 준다. 학습 모델의 최적화를 통해 정확도를 높이고, 법적 규제 준수를 지원함으로써 다양한 산업에서 AI 활용 가능성을 넓힐 것이다. XAI는 단순한 기술적 도구를 넘어, AI의 사회적 수용성을 높이는 중요한 기술로 자리 잡을 전망이다.

 

 

+ Recent posts