HEaaN Homomorphic Analytics 활용 예제
    • PDF

    HEaaN Homomorphic Analytics 활용 예제

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    가상의 고객 개인 정보를 바탕으로 네이버 클라우드 HEaaN Homomorphic Analytics을 사용하여 각종 통계 분석과 머신러닝을 수행하는 예제입니다.

    참고

    예제 데이터의 모든 정보는 허구이며, 실존 인물 및 단체와는 관련이 없습니다.

    예제 데이터 준비

    예제에서 사용하는 데이터는 가상의 기업이 보유한 가상 고객 100명의 개인 정보로, 각 고객의 세부 정보를 12개의 컬럼(열)으로 구분하여 구성한 자료입니다.

    아래에서 예제 데이터를 다운로드한 후 sample_data_raw.csv 파일을 열어 주십시오.

    sample_data_raw.csv 파일의 각 컬럼에 대한 설명은 다음과 같습니다.
    heaan-example_sampleRaw_vpc_ko

    컬럼 번호컬럼명유형설명
    1name문자가상 고객명
    2gender문자가상 고객의 성별
    3phone_number문자가상 고객의 휴대전화 번호
    4age실수형가상 고객의 나이
    5address문자가상 고객의 주소
    6housing문자가상 고객의 주거 형태
    7card_expense실수형가상 고객의 월 카드 사용액
    8income실수형가상 고객의 연봉
    9credit_ranking범주형가상 고객의 신용 등급을 1등급부터 7등급까지 7개의 범주로 구분
    10bank문자가상 고객의 주 거래 은행
    11loan실수형가상 고객의 대출 금액
    12asset실수형가상 고객의 보유 재산

    평문 데이터 전처리 예제

    준비한 데이터로 동형암호화 연산을 수행하여 의미 있는 결과를 얻기 위해서는 먼저 연산에 적합한 형태로 평문 데이터를 가공해야 합니다. 이 예제에서는 네이버 클라우드 플랫폼 콘솔에서 연산 및 머신러닝을 수행할 수 있도록 불필요한 정보를 삭제하고 각 컬럼을 실수형 또는 범주형으로 변환합니다.

    예제 데이터를 전처리하는 과정은 다음과 같습니다. 예제에서는 컬럼을 변환한 후 컬럼 이름 뒤에 encoded 문구를 추가하여 변환된 컬럼임을 표시합니다.

    참고

    전처리 과정을 건너뛰려면 sample_data_preprocessed.csv 파일을 사용해 주십시오.

    1. 데이터 분석에 영향을 미치지 않는 name, phone_number 컬럼을 삭제해 주십시오.
      heaan-example_1deleteColumns_vpc_ko
    2. address 컬럼은 서울 시 내 20개의 구를 포함하고 있으므로 0부터 19까지의 숫자를 각 구마다 부여하여 해당 컬럼을 범주형 컬럼으로 변환해 주십시오.
      heaan-example_2convertStrings_vpc_ko
    3. gender, housing, bank 컬럼은 각각 2, 3, 5개의 범주로 분류할 수 있으므로 각 컬럼의 범주에 숫자를 부여하여 모두 범주형 컬럼으로 변환해 주십시오.
      • credit_ranking 컬럼은 범주형 컬럼이므로 그대로 유지해 주십시오. credit_ranking 컬럼의 정보는 분석 목적에 따라서 실수형 자료로도 간주할 수 있습니다.
        heaan-example_3labelCategories_vpc_ko
    4. 연령대별 특성을 파악하기 위해 age 컬럼의 각 나이를 20대부터 60대까지의 범주로 분류한 후 숫자를 부여하여 해당 컬럼을 범주형 컬럼으로 변환해 주십시오.
      • 직관적인 분류를 위해 각 나이대에 20, 30, 40, 50, 60 숫자를 부여합니다.
        heaan-example_4categorizeNumbers_vpc_ko
    5. card_expense, income, loan, asset 컬럼에 각각 밑이 10인 로그를 취한 후 그 값을 각 칼럼 옆에 새로운 컬럼을 생성하여 입력해 주십시오.
      • 금융 데이터는 단위가 크며 한 방향으로 분포가 치우치기 쉬우므로 로그를 취하면 값을 간소화하고 데이터를 정규화할 수 있습니다.
        heaan-example_5takeLog_vpc_ko
    6. 아래 표와 같이 전처리가 완료되었는지 확인한 후 클라우드에 업로드 및 암호화를 참조하여 데이터를 네이버 클라우드 콘솔에 업로드해 주십시오.
      컬럼 번호컬럼명유형설명
      1gender_encoded범주형성별을 변환한 2개 범주 0, 1
      2age_encoded범주형연령대로 분류한 5개 범주 20, 30, 40, 50, 60
      3address_encoded범주형구 단위로 분류한 20개 범주 0~19
      4housing_encoded범주형주거 형태를 변환한 3개 범주 0, 1, 2
      5card_expense실수형가상 고객의 월 카드 사용액을 나타내는 숫자
      6card_expense_log실수형월 카드 사용액에 밑이 10인 로그를 취한 값
      7income실수형가상 고객의 연봉을 나타내는 숫자
      8income_log실수형연봉에 밑이 10인 로그를 취한 값
      9credit_ranking범주형가상 고객의 신용 등급을 1등급부터 7등급까지 7개의 범주로 구분
      10bank_encoded범주형가상 고객의 주 거래 은행을 변환한 5개 범주 0, 1, 2, 3, 4
      11loan실수형가상 고객의 대출 금액을 나타내는 숫자
      12loan_log실수형대출 금액에 밑이 10인 로그를 취한 값
      13asset실수형가상 고객의 보유 재산을 나타내는 숫자
      14asset_log실수형보유 재산에 밑이 10인 로그를 취한 값

    암호화 연산 예제

    네이버 클라우드 플랫폼 콘솔에 업로드한 예제 데이터를 사용하여 각종 암호화 연산을 수행한 후 결과를 분석하는 방법을 설명합니다.

    이 암호화 연산 예제에서는 개인별 순 자산액, 평균 대출 금액, 연령대별 연봉 등 다양한 통계분석 결과를 얻기 위해 컬럼 삭제, 컬럼 간 뺄셈, 평균, 표준편차, 범주별 평균 연산을 수행합니다.

    주의

    암호문 상태에서의 근사 계산으로 인해 3.28938×10-6의 오차율로 차이가 발생할 수 있습니다.

    참고

    연산 작업 생성, 실행, 결과 확인에 대한 일반적인 설명은 데이터 연산을 참조해 주십시오.

    예제 1. 컬럼 삭제 - 불필요한 정보 제거

    예제에서 수행하려는 통계분석에서 주 거래 은행 정보는 필요하지 않으므로 Column 삭제를 통해 삭제합니다.

    예제 데이터에서 주 거래 은행 정보를 삭제하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_extask1_vpc_ko
      • 구분: 컬럼 관리
      • 연산 이름: 컬럼 삭제
      • 연산 데이터: 업로드한 전처리 데이터
      • 대상 Column: bank_encoded
      • 결과 데이터 복호화(연산 추가 후 표시됨): 사용
    2. 작업을 실행한 후 연산이 끝나면 복호화된 결과를 확인해 주십시오.
      • 데이터에서 주 거래 은행 정보가 삭제되었습니다.

    예제 2. 컬럼 간 뺄셈 - 개인 순 자산액

    각 가상 고객의 순 자산액을 확인하기 위해 컬럼 간 뺄셈 연산을 수행하여 보유 자산 컬럼에서 대출 금액 컬럼을 뺍니다.

    예제 데이터의 보유 자산 컬럼에서 대출 금액 컬럼을 빼는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_extask2_vpc_ko
      • 구분: 통계분석
      • 연산 이름: 컬럼 간 뺄셈
      • 연산 데이터: 업로드한 전처리 데이터
      • Column 1: asset
      • Column 2: loan
      • 결과 데이터 복호화(연산 추가 후 표시됨): 사용
    2. 작업을 실행한 후 연산이 끝나면 복호화된 결과를 확인해 주십시오.
      • 각 가상 고객의 보유 자산 중 대출 금액을 제외한 순 자산액이 새로 생성된 결과 컬럼에 나타납니다.
        heaan-example_extask2result_vpc_ko

    예제 3. 평균 - 인당 평균 대출 금액

    인당 평균 대출 금액을 계산하기 위해 평균 연산을 수행하여 대출금액 컬럼으로부터 평균값을 구합니다.

    예제 데이터의 대출 금액 컬럼으로부터 평균값을 구하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_extask3_vpc_ko
      • 구분: 통계분석
      • 연산 이름: 평균
      • 연산 데이터: 업로드한 전처리 데이터
      • 대상 Column: loan
      • 결과 데이터 복호화(연산 추가 후 표시됨): 사용
    2. 작업을 실행한 후 연산이 끝나면 복호화된 결과를 확인해 주십시오.
      • 인당 대출 금액의 평균이 새로 생성된 결과 컬럼에 나타납니다.
        heaan-example_extask3result_vpc_ko

    예제 4. 표준 편차 - 연봉 표준 편차

    연봉 표준 편차를 계산하기 위해 표준 편차 연산을 수행하여 연봉 컬럼으로부터 표준 편차 값을 구합니다.

    예제 데이터의 연봉 컬럼에서 표준 편차를 구하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_extask4_vpc_ko
      • 구분: 통계분석
      • 연산 이름: 표준 편차
      • 연산 데이터: 업로드한 전처리 데이터
      • 대상 Column: income
      • 결과 데이터 복호화(연산 추가 후 표시됨): 사용
    2. 작업을 실행한 후 연산이 끝나면 복호화된 결과를 확인해 주십시오.
      • 연봉의 표준 편차가 새로 생성된 결과 컬럼에 나타납니다. 예제 3에서 구한 연봉 평균을 기준으로 ±1 표준 편차 내에 68%의 연봉 금액이 분포하고 있음을 알 수 있습니다.
        heaan-example_extask4_vpc_ko

    예제 5. 범주별 평균 - 고객 유형에 따른 각종 평균

    성별에 따른 월 카드 사용액 평균과 연령대에 따른 연봉 평균을 계산하기 위해 범주별 평균 연산을 수행하여 범주를 선택하고 해당하는 값의 평균을 구합니다.

    예제 데이터에서 범주를 선택하여 월 카드 사용액과 연봉 평균을 구하는 방법은 다음과 같습니다.

    주의

    범주별 평균 연산 작업을 생성할 때 하나의 범주에 대한 연산을 하나의 세부 작업으로 추가해 주십시오. 여러 개의 범주에 대한 연산을 하나의 세부 작업으로 추가하면 올바른 범주별 평균을 구할 수 없습니다.

    성별에 따른 월 카드 사용액 평균

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_extask5-1_vpc_ko
      • 구분: 통계분석
      • 연산 이름: 범주별 평균
      • 연산 데이터: 업로드한 전처리 데이터
      • 대상 Column: card_expense
      • 범주 Column: gender_encoded
      • 범주 값: 0, 1 (각각 별개의 연산으로 추가)
      • 결과 데이터 복호화(연산 추가 후 표시됨): 사용
    2. 작업을 실행한 후 연산이 끝나면 복호화된 결과를 확인해 주십시오.
      • 성별에 따른 월 카드 사용액 평균이 새로 생성된 각각의 결과 컬럼에 나타납니다. 일반적으로 여성의 카드 지출이 남성의 카드 지출보다 조금 더 큰 것을 알 수 있습니다.
        heaan-example_extask5-1genderResult_vpc_ko

    연령대에 따른 연봉 평균

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_extask5-2_vpc_ko
      • 구분: 통계분석
      • 연산 이름: 범주별 평균
      • 연산 데이터: 업로드한 전처리 데이터
      • 대상 Column: income
      • 범주 Column: age_encoded
      • 범주 값: 20, 30, 40, 50, 60
      • 결과 데이터 복호화(연산 추가 후 표시됨): 사용
    2. 작업을 실행한 후 연산이 끝나면 복호화된 결과를 확인해 주십시오.
      • 연령대에 따른 연봉 평균이 새로 생성된 각각의 결과 컬럼에 나타납니다. 일반적으로 60대 고객의 연봉이 가장 낮은 것을 알 수 있습니다.
        heaan-example_extask5-2_vpc_ko

    머신러닝 예제

    예제 데이터를 가공하고 업로드한 후 HEaaN Homomorphic Analytics를 통해 머신러닝을 수행하는 방법을 설명합니다.

    이 머신러닝 예제에서는 로지스틱 회귀 학습, 추론, 결과 복호화를 수행하여 각 가상 고객의 개인 정보를 바탕으로 해당 고객의 주거 형태가 세입 또는 자가일 확률을 예측합니다.

    머신러닝 데이터 준비 예제

    머신러닝을 수행하기 위해서는 학습용 데이터와 추론용 데이터를 각각 준비해야 합니다. 이 예제에서는 전처리가 완료된 예제 데이터를 분리하여 일부를 학습용 데이터로, 나머지 일부를 추론용 데이터로 활용합니다.

    각 가상 고객의 주거 형태가 세입 또는 자가일 확률을 예측할 수 있도록 학습용 데이터에 있는 주거 형태 정보를 세입과 자가의 두 개 범주로 이진(binary) 분류하고, 추론용 데이터에 있는 주거 형태 정보를 삭제합니다.

    로지스틱 회귀 학습용 데이터와 추론용 데이터를 준비하는 과정은 다음과 같습니다.

    참고

    예제 데이터의 전처리에 대한 설명은 평문 데이터 전처리 예제를 참조해 주십시오.

    1. 전처리된 예제 데이터의 위에서부터 70개 행을 복사한 후 새로운 .csv 형식 파일로 저장해 주십시오.
      • 학습용 데이터로 활용됩니다.
    2. 전처리된 예제 데이터에서 나머지 30개 행을 복사한 후 새로운 .csv 파일로 저장해 주십시오.
      • 추론용 데이터로 활용됩니다.
    3. 학습용 데이터의 housing_encoded 컬럼의 범주를 아래와 같이 이진(바이너리) 형태로 재분류한 후 해당 컬럼의 이름을 변경하여 가장 오른쪽 열로 옮겨 주십시오.
      heaan-example_MLdataprep1_vpc_ko
      • 새 컬럼명: my_house_encoded
      • 0, 1: 월세와 전세에 해당하는 범주를 '세입'을 의미하는 0으로 변환
      • 2: 자가에 해당하는 범주를 '자가'를 의미하는 1로 변환
    4. 추론용 데이터에서 housing_encoded 컬럼을 삭제해 주십시오.
    5. 학습용 데이터와 추론용 데이터를 각각 아래와 같이 네이버 클라우드 플랫폼 콘솔에 업로드해 주십시오.
      • 학습용 데이터: 머신 러닝 학습용 선택 후 클래스 수 항목에 '2' 입력
      • 추론용 데이터: 머신 러닝 추론용 선택
      • 학습용 데이터를 업로드하면 학습에 사용되는 데이터인 '_train'과 초기화된 추론 모델 데이터인 '_model'이 생성됩니다.

    예제 1. 학습 - 로지스틱 회귀

    주거 형태를 세입과 자가로 이진 분류한 학습용 데이터를 사용하여 네이버 클라우드 플랫폼 콘솔에서 로지스틱 회귀 학습을 수행합니다.

    로지스틱 회귀 학습을 수행하려면 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 작업을 생성하고 실행해 주십시오.
    heaan-example_ML1_vpc_ko

    • 구분: 머신러닝
    • 연산 이름: 학습 - 로지스틱 회귀
    • 학습용 데이터: '_train' 데이터
    • 학습률(Learning Rate): 0.1
    • 학습 횟수: 10
    • 미니 배치: 1

    네이버 클라우드 플랫폼의 HEaaN이 각 가상 고객의 다른 개인 정보가 해당 고객의 주거 형태에 어떤 영향을 미치는지 학습하여 '_model' 추론 모델 데이터에 반영합니다.

    예제 2. 추론 - 로지스틱 회귀

    로지스틱 회귀 학습이 완료된 추론 모델을 추론용 데이터에 적용하여 추론을 수행합니다.

    로지스틱 회귀 추론을 수행하려면 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 작업을 생성하고 실행해 주십시오.
    heaan-example_ML2_vpc_ko

    • 구분: 머신러닝
    • 연산 이름: 추론 - 로지스틱 회귀
    • 추론 모델: 학습이 완료된 '_model' 데이터
    • 추론용 데이터: 업로드한 추론용 데이터

    네이버 클라우드 플랫폼의 HEaaN이 추론용 데이터에 있는 각 가상 고객의 주거 형태가 세입 또는 자가일 확률이 얼마인지 추론하여 '_predict' 데이터로 저장합니다. 이 결과 데이터는 머신러닝의 복호화 연산을 통해 복호화할 수 있습니다.

    예제 3. 추론 결과 복호화 및 해석

    추론을 완료한 데이터를 복호화한 후 해석합니다.

    추론 결과 데이터를 복호화한 후 분석하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 HEaaN 콘솔에서 아래와 같이 설정을 입력하여 작업을 생성해 주십시오.
      heaan-example_ML3_vpc_ko
      • 구분: 머신러닝
      • 연산 이름: 복호화
      • 연산 데이터: 추론 결과 데이터
    2. 작업을 실행한 후 복호화된 결과를 확인해 주십시오.
      • 월 카드 사용액, 연봉, 신용등급, 자산 등 여러 개인 정보를 바탕으로 추론했을 때 해당 고객의 주거 형태가 세입 또는 자가일 확률을 각각 0 컬럼, 1 컬럼에 표시합니다.
        heaan-example_ML3result_vpc_ko

    연산 소요 시간

    각 연산에 소요된 시간은 다음과 같습니다.

    • 부트스트랩 가능한 키 생성: 37 secs (6.6gb)
    • 데이터 암호화: 6.27 secs (8kb > 654.3mb) / preprocessed
    • 통계 분석: 141.81 secs
      • 통계 연산
        연산데이터수행시간(Sec)
        컬럼 삭제은행1.08
        컬럼 간 뺄셈자산-대출6.34
        컬럼 평균대출15.37
        표준 편차연봉29.25
      • 범주형 연산
        연산데이터수행시간(Sec)
        범주별 평균카드 사용액-여성12.00
        범주별 평균카드 사용액-남성9.63
        범주별 평균카드 사용액-20대13.62
        범주별 평균카드 사용액-30대13.51
        범주별 평균카드 사용액-40대13.86
        범주별 평균카드 사용액-50대13.45
        범주별 평균카드 사용액-60대13.70
    • 머신 러닝(로지스틱 회귀): 89 secs
      연산수행시간(Sec)
      학습74
      추론15
      추론결과 복호화1

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.