[책] 파이썬 데이터 분석 실무 테크닉 100 - 최적화, 시뮬레이션 부분 요약


이젠 데이터분석가가 물류 최적화까지 알아야하는가?
파이썬 데이터 분석 실무 테크닉 100 - 최적화, 시뮬레이션 부분만 빠르게 요약해본다.


page 269

  • 최적화문제
    • 선형 최적화 : 덧셈으로 이뤄진거
    • 비선형 최적화 : 행렬 연산으로 할수 없는 함수 형태
    • 조합 최적화 : 외판원문제같은거
  • 푸는 과정 : 초깃값에서 출발해서 최적값을 찾는거(=미분값이 0이되는곳, 여러곳이면 그중에 최적인것)
    • 선형 최적화 : 심플렉스법
      • 제약조건의 ‘끝점’을 찾아가는 방법
      • 참고 <- 여기서 slack 내용도 나옴
    • 비선형 최적화 : 라그랑주 미정계수법
      • 미분값이 0이 되는 지점을 찾는방법
  • ‘조합 폭발’이 발생시(=모든 조합 패턴을 계산하는것이 원리적으로 불가능시)
    • ‘휴리스틱’을 써야함(경험적으로 최적해를 푸는 방법)
    • 문제 복잡도는 4개의 클라스로 나뉨
      • P
      • NP
      • NP-완전
      • NP-난해

Tech 51~52

  • 물류문제들
    • 어떤 물품을 얼마나 생산하는 것이 효율적인가?
    • 어느 창고에 얼마만큼의 재고를 보관하는 것이 효율적인가?
    • 어느 창고에서 대리점까지 몇 개의 상품을 운송하는 것이 효율적인가?
  • 최적화 문제란
    • 정해진 제약조건 아래 목적함수를 최소화(또는 최대화)하는 문제
    • 회귀분석이랑 비슷하다
      • 회귀분석에서 coefficient값을 찾을때 경사하강법을 쓴다(=최소제곱법)
      • 여기서 ‘잔차제곱합(RSS)’을 최소화 하는 회귀계수를 찾는것이 목표
  • 실무에서 만날수 있는 최적화문제
    • 머신러닝 : 고객 이탈 예측 등
    • 최적화 : 지하철 운행 스케쥴, 물류창고 최적경로, 모빌리티 차량 재배치
  • 고객의 소리
    • 물류비용을 줄이고 효율화하고 싶다. 제품의 부품을 보관하는 창고에서 생산 공장까지 운송 비용을 낮출 수 있는지 검토(=운송 비용 최적화)
  • 분석 요약
    • 남부/북부 실제 데이터 운송비용이 차이가 났고
    • 남부/북부 운송비 테이블은 운송비용이 차이가 안났다
    • 그러므로 비효율적으로 운송되고있다고 판단

Tech 53~57

  • 그래프로 어디 경로가 운송량이 많은지 이런거 볼수있다.

Tech 58~60

  • 어떤 경로만 살리고 어떤 경로는 버릴지는 “운송비용”이 적은 경로를 선택하는 것 뿐만 아니라 “제품의 수요와 공급”에 대해서도 생각해봐야 한다.
  • 가짜 데이터로 수요 공급 만들었는데, 최대 공급한거보다 더 크게 만들어서 최적경로 만들수없음

Tech 61

  • 논리 순서
    • 수리모델을 작성 : 목적함수 m1 정의, 제약조건 추가(최소 수요량 이상, 최대 생산량 이하 만족)
    • 최적해(optimal solution)인 v1 만들기 : 최적의 운송 경로(운송량)을 의미
    • 최적값(optimal value) 구하기 : 최소화된 운송 비용
  • 코드
    • m1 , v1 정의 하고 model 정의하고
    • 목적함수 식 넣고, 제약조건식 넣고
    • solve로 계산

Tech 62

  • 시각화하고 제약조건도 만족하는지 확인

Tech 64~67

  • 목적 : “생산 계획 최적화”, “어떤 제품을 얼마나 만들것인가?”
  • 데이터
    • 제품에 원료 비중
    • 제품마다 이익
    • 원료 재고
    • 제품 생산량(얼마나 만들것인가?)
  • 총이익(목적함수) = 제품별이익(변동불가) x 생산량(조정가능, 최적해 v2)의 합
  • 제약조건 : 원료의 양 제한
  • 논리순서
    • 목적함수 m2를 만들고, 제약조건 추가
    • 최적해 v2만들기
    • 최적값(최대화된 총이익) 구하기
  • 코드
    • m2 모델만들고, v2만들고
    • m2 (이익x생산량) 만들기
    • 제약조건 만들기
    • solve (최적화 구하기)
    • 제약조건 만족하는지 보기
    • 이전 최적해, 최적값과 비교해보기

Tech 68~70

  • 앞에서 배운 운송 경로최적화/생산계획 최적화를 합친다.(둘다 만족하는 네트워크를 만든다)
  • 코드 스토리 순서
    • 대리점<->공장 운송비
    • 대리점<->제품 수요량
    • 공장에서의 제품 생산비용과 생산량(하한:최소생산량, 상한:최대생산량)
    • 운송비용, 생산비용, 수요량은 변동불가
    • 생산량과 운송량은 바꿀수 있다.
    • logistics_network쓰면 바로된다.(각각정보를 집어넣으면 쉬움)
    • 제약조건 잘 맞는지 확인
    • 최적값 확인

Tech 71 (시뮬레이션)

  • 고객의 소리 : SNS를 통해 입소문을 타고 퍼지고 있다. 재구매 고객은 SNS로 연결되어 있어 파악이 가능하다. 매출을 예측해달라
  • 제품이 입소문을 타고 어느정도의 시정 이후에 몇개나 팔리게 되는지 예측(시뮬레이션)해보자
  • 데이터
    • 재구매 고객 20명의 SNS 연결상태 데이터(연결 1, 아니면 0)
    • 모든 재구매 고객 540명 SNS 연결상태
    • 모든 재구매 고객 540명의 2년간 매월 이용 현황
  • 시뮬레이션이란?
    • 실제로 일어나지 않은 일을 미리 실험해보는것
  • 확률을 이용하여 실제로 홍보가 일어나기 전에 “이 정도의 입소문 확률을 가정한다면 고객에게 전파되는 데 얼마나 걸릴까?”를 구해본다.
  • 미래를 미리 예측해볼 수 있다면, 제품이 널리 퍼지는데 걸리는 시간을 알 수 있고, 제품을 출시할지, 아님 어떤 시점에 프로모션을 진행할지 등의 의사 결정을 하는데 큰 도움이 될것이다.
  • 의식 흐름
    • 연결되어있는 데이터를 가지고 있으니까,
    • 한명한테 10프로 확률로 퍼트린다고 하면 몇개월후에 어떻게 될까?를 시각화

Tech 73

  • 앞에서는 ‘전파’만 생각했는데, ‘탈퇴’도 고려해보자
  • 전파확률 10%, 탈퇴(소멸)확률 5%로 잡아보자
  • 코드도 이거와 같이 짜면 됨.
  • 전파확률보다 탈퇴확률이 높으면 금방 전파가 꺼짐

Tech74

  • 확산확률과 소멸확률의 임계점을 구하기
  • 숫자 조금씩 바꾸면서 그래프화

Tech 76 ~78

  • 큰 데이터로 시뮬레이션 해본다
  • 시각화도 노드로 못보여주기때문에 히스토그램으로
  • 소멸확률 추정
    • 잔존율 처럼 계산
  • 확산확률 추정
    • 전파가 된 이유는 다른 고객과 연결되기 때문으로만 한정 한다는 가정
    • 계산 코드는 필요할때 쓰면될듯

Tech 79~80

  • 실제 데이터와 비교하고 미래를 예측






© 2018. by statssy

Powered by statssy