프로젝트 1주차 타임라인 (Mon Dec 29 2025)


OpenAI API와 LangChain 기초

LangChain: LLM 기반 애플리케이션을 쉽게 만들기 위한 프레임워크로 프롬프트, 모델, 출력 처리 등을 블록처럼 조합해서 사용함

                      LLM 파이프라인을 단순한 문법으로 구성, 다양한 LLM을 동일한 인터페이스로 사용, 빠른 프로토타이핑과 유지보수 용이

                      Chain = 입력 → 프롬프트 → 모델 → 출력 파싱                promt | model | parser

                      구성요소 (viz. PromptTemplate, LLM 모델, OutputParser)를 LCEL(|)로 연결

                      + CallbackHandler로 체인의 중간 과정에서 실행 흐름을 콘솔에서 확인 가능


RCF 기반 패턴 이상탐지와 예지 시스템

RCF (Random Cut Forest): 이상치는 정상보다 빨리 고립된다는 성질을 이용한 스트리밍 기반 이상탐지 알고리즘

                                                 Shingling으로 단순 값 이상이 아닌 추세 붕괴, 진통 패턴 변화, Shape 변화 탐지

                                                 단일 포인트가 아닌 연속 구간 벡터화

                                                 장점: 스트리밍 삽입, Sliding Window 효과, codisp 기반 점수 산출, 이상 구간 자동 분리

RCF 동작 흐름
(실내 내부 로직)
스트리밍 데이터 유입 → Shingling 으로 패턴 벡터 생성 → Reservoir Sampling 으로 대표 샘플 유지 
Forest(다수 트리) 지속 업데이트 
→ 각 트리에서 고립 난이도(codisp) 계산 → 평균을 활용해 최종 이상 점수

* 완전 온라인 학습, 과거 데이터 자동 망각, 환경 변화에 강함

탐지 설정 파라미터 의미
Interval 데이터 발생 주기
Frequency 모델 실행 주기
Window Delay 최신 데이터 안정화 대기
History 학습 시작 최소 데이터량

* 오탐의 80%는 이 설정 불량에서 발생

계층적 방어선 (Hierarchical Defence Line) 핵심 기법
1단 즉각 차단 Point Anomaly, Derivative
2단 공정 관리 SPC, CUSUM, Moving Avg
3단 예지 보전 RCF, IF, LSTM-AE

 

실전 파이프 라인:

  1. 변수 그룹화 - 센서별 X, 물리 장치 단위 O (e.g. 가열부 이상, 온도 + 전류 패턴 동시 이상)
  2. 데이터 성격별 알고리즘 배치 - [1] 안정적 수치: SPC+ Elliptic, [2] 큰 변동성: IF + CUSUM, [3] 주기성: Change Point
  3. 앙상블 점수 전략 - [1] Soft Voting: 안전성 중시, [2] Logic Gate: 현장 신뢰도 최고
  4. 동적 임계치 - 고정 Threshold X, Rolling / Tail Probability / BOCPD O

Early Warning: 고장 후 알림이 아니라 고장 직전의 미묘한 흔들림 포착 via Residual 증가, 기울기 비정상 가속, 분산(진동/전류) 확대

                                                                 예방 정비, 다운타임 감소, 불량률 감소

  • 알람 피로도 관리 - 순간 이상 X, 지속성 + 패턴 중심
  • 정상 기준 변동 - Rolling 재학습, 분기별 calibration
  • 현장 피드백 반영 - False Positive 학습 반영, 설명 가능한 알람만 살아남음
Note
센서는 물리 의미 기준으로 그룹화 → 1차 방어선은 기울기 분석과 SPC → 대부분 이상은 1차 단계에서 탐지 → 고급 모델은 의심 구간에만 적용 → RCF는 과거 고장 패턴 유사도 확인  IF는 다변량 조합 이상 탐지 → Change Detection은 분포 구조 변화 감지 → 모든 알람은 어디·왜·어떤 패턴인지 명시 알람은 현장이 이해할 수 있는 언어로 전달

문제 설명 solution.py
#110 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다.

큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 원소가 추가됩니다. 

길이가 같은 두 개의 큐를 나타내는 정수 배열 queue1, queue2가 매개변수로 주어집니다. 각 큐의 원소 합을 같게 만들기 위해 필요한 작업의 최소 횟수를 return 하도록 solution 함수를 완성해주세요. 단, 어떤 방법으로도 각 큐의 원소 합을 같게 만들 수 없는 경우, -1을 return 해주세요.
def solution(queue1, queue2):
     indicator2 = sum(queue1) - int(sum(queue1 + queue2) / 2)
     answer = 0
     sub_list = (queue1 + queue2 + queue1)[::-1]
     add_list = (queue2 + queue1 + queue2)[::-1]
     while indicator2 != 0:
          try:
               if indicator2 > 0:
                    indicator2 -= sub_list.pop()
               else:
                    indicator2 += add_list.pop()
               except:
                    return -1
               answer += 1
     return answer

 

+ Recent posts