
作者 | CDA數據分析師
業(yè)務背景——保險行業(yè)
業(yè)務環(huán)境
中國是世界第二大保險市場,但在保險密度上與世界平均水平仍有明顯差距
保險行業(yè)2018年保費規(guī)模為38萬億,同比增長不足4%,過去“短平快“的發(fā)展模式已經不能適應新時代的行業(yè)發(fā)展需求,行業(yè)及用戶長期存在難以解決的痛點,限制了行業(yè)發(fā)展發(fā)展環(huán)境。
互聯(lián)網經濟的發(fā)展,為保險行業(yè)帶來了增量市場,同時隨著網民規(guī)模的擴大,用戶的行為習慣已發(fā)生轉變,這些都需要互聯(lián)網的方式進行觸達。
保險科技:當前沿科技不斷應用于保險行業(yè),互聯(lián)網保險的概念將會與保險科技概念高度融合。
(資料來源: 艾瑞研究院自主研究及繪制C2019.6 iResearch)
中國保險市場持續(xù)高速增長。根據銀保監(jiān)會數據,2011~2018年,全國保費收入從1.4萬億增長至3.8萬億,年復合增長率17.2%。2014年,中國保費收入突破2萬億,成為全球僅次于美國、日本的第三大新興保險市場市場;2016年,中國整體保費收入突破3萬億,超過日本,成為全球第二大保險市場;2019年,中國保費收入有望突破4萬億。
發(fā)展現(xiàn)狀
受保險行業(yè)結構轉型時期影響,互聯(lián)網保險整體發(fā)展受阻,2018年行業(yè)保費收入為1889億元, 較去年基本持平,不同險種發(fā)展呈現(xiàn)分化格局,其中健康險增長迅猛,2018年同比增長108%,主要 由短期醫(yī)療險驅動
供給端專業(yè)互聯(lián)網保險公司增長迅速,但過高的固定成本及渠道費用使得其盈利問題凸顯,加 發(fā)展現(xiàn)狀強自營渠道建設及科技輸出是未來的破局方法,渠道端形成第三方平臺為主,官網為輔的格局,第三 方平臺逐漸發(fā)展出B2C、B2A、B2B2C等多種創(chuàng)新業(yè)務模式。
互聯(lián)網保險不僅僅局限于渠道創(chuàng)新,其核心優(yōu)勢同樣體現(xiàn)在產品設計的創(chuàng)新和服務體驗的提升 竟合格局:隨著入局企業(yè)増增多,流量爭奪更加激烈,最終保險公司與第三方平臺深度合作將成為常態(tài) 發(fā)展趨勢
發(fā)展趨勢
隨著入局企業(yè)增多,流量爭奪更加激烈,最終保險公司與第三方平臺深度合作將成為常態(tài)。 發(fā)展趨勢
當前沿科技不斷應用于保險行業(yè),互聯(lián)網保險的概念將會與保險科技概念高度融合。
衡量指標
圖片來源:《聚焦客戶體驗,數據驅動重塑保險行業(yè)》白皮書
業(yè)務目標
針對保險公司的健康險產品的用戶,制作用戶畫像,然后進行精準保險營銷。
數據分析
分析流程框架
本次案例的數據數據的字段含義如下:
導入數據
import pandas as pd
df = pd.read_csv(r'data.csv', sep=',', header = 0)
df.shape
(5000000, 50)
在這里我們可以看到我們的數據是有5000000條記錄和19個特征
數據探索性分析
描述性統(tǒng)計
在我們正式建模型之前,我們需要對我們的數據進行描述性統(tǒng)計,這樣我們就能知道整個數據的大致分布是什么樣的,做到心里有數,然后能夠數據大致的全貌有一定的了解。
type_0=df.dtypes
type_0.to_excel( 'original.xlsx')
#將 KBM_INDV_ID 的int64轉化為object
df['KBM_INDV_ID']=df['KBM_INDV_ID'].astype('object')
describe=df.describe().T
type(describe)
describe.to_excel( '../output/describe_var.xlsx')
# 引入畫圖模塊
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 為分類型變量:所處區(qū)的大小,創(chuàng)建直方圖
plt.subplot(1, 2, 1)
sns.countplot(x='N2NCY', hue='resp_flag', data=df); #設置 x,y 以及顏色控制的變量,以及畫圖的數據
plt.xlabel('N2NCY');
plt.ylabel('Frequency');
#了解因變量的分布
Resp_count=df['KBM_INDV_ID'].groupby(df['resp_flag']).count()
print(Resp_count)
str(round(Resp_count[1]/len(df)*100,2))+str('%') #查看購買了
從這個圖片我們可以看到,買了保險的用戶和未買保險的人所處縣的情況。
我們需要對數據進行缺失值檢查,先對每一條記錄查看是否有缺失,然后查看一下每一個特征是否有缺失,然后進行相應的缺失值處理。
Next Step:
# 檢查是否有缺失的行
df.shape[0]-df.dropna().shape[0] ###
# 檢查是否有缺失的列
len(df.columns)-df.dropna(axis =1).shape[1] #626
NA=df.isnull().sum()
print('orginal NA=',NA)
NA=NA.reset_index()
NA.columns=['Var','NA_count']
NA=NA[NA.NA_count>0].reset_index(drop=True)
print(NA)
NA.to_excel( '../output/var_incl_na.xls',index=False)
####處理缺失值
var_char_na=[]
# 我們對連續(xù)型數據進行中位數填補,然后對離散型數據進行特殊值填補,我們這里利用的是N
for i in range(len(NA)):
if NA['NA_count'][i]/len(df)>0.75 or len(df[NA['Var'][i]].unique())<=2 :
del df[NA['Var'][i]]
elif df[NA['Var'][i]].dtypes!="object":
# 填充缺失值-中位數
for_na_value = df[NA['Var'][i]].quantile(0.5)
# for_na_value
df[NA['Var'][i]] = df[NA['Var'][i]].fillna(for_na_value)
elif df[NA['Var'][i]].dtypes=="object" and len(df[NA['Var'][i]].unique())<=3:
df[NA['Var'][i]] = df[NA['Var'][i]].fillna('N', inplace=True)
else:
var_char_na.append(NA['Var'][i])
var_char_na
處理分類型變量
#Drop Variables that are not necessary
drop_list=['STATE_NAME','KBM_INDV_ID']
for var in drop_list:
del df[var]
## 檢查數據集中數值型變量和字符型變量
var_num = []
var_char_uniq2 = []
var_char_mul= []
for var in list(df):
if df[var].dtypes=="object" and len(df[var].unique())>2:
var_char_mul.append(var)
elif df[var].dtypes!="object" :
var_num.append(var)
else:
var_char_uniq2.append(var)
##處理多值型字符變量
for var in var_char_mul:
temp= pd.get_dummies(df[var], prefix=var, prefix_sep='_')
print(temp)
for var2 in list(temp):
if var2 in '_nan':
del temp[var2]
del df[var]
df = pd.concat([df,temp], axis=1)
del temp
len(df.columns) ##88
df.head(5)
df.to_excel( '../output/data.xls',index=False)
##處理二值型的字符變量
import numpy as np
from sklearn.preprocessing import LabelEncoder
def integer_encode(var):
values = np.array(df[var])
label_encoder = LabelEncoder()
df[var] = label_encoder.fit_transform(values)
for var in var_char_uniq2:
if len(df[var].unique())<2:
del df[var]
else: integer_encode(var)
建模
當我們發(fā)現(xiàn),我們的數據中分類變量比較多,我們嘗試采取決策樹進行建模,
具體理由:我們做出來的模型需要指導業(yè)務人員進行使用,那么要求做出來的模型的可解釋要高,而決策樹模型的解釋性就很強,那么業(yè)務人員理解起來就會很容易,那么之后進行應用就不用再專門進行對業(yè)務人員的培訓,直接讓他按照模型做出來的結果進行后續(xù)的業(yè)務,會提升效率。
# 引用sklearn 模塊
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
#from sklearn import cross_validation, metrics
from sklearn import metrics
from sklearn.model_selection import cross_val_score
#from sklearn.grid_search import GridSearchCV
from sklearn.model_selection import GridSearchCV
import matplotlib.pylab as plt
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 12, 4
##在模型樣本內將數據集7:3分,70%用來建模,30%用來測試
# 定義特征變量和目標變量
features= list(df.columns[1:])
X = df[features]
y = df['resp_flag']
# 將數據集7:3分,70%用來建模,30%用來測試
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3)
clf = tree.DecisionTreeClassifier()
param_test={'min_samples_leaf':list(range(1000,6000,100)),'min_samples_split':list(range(4000,6000,100))}
gsearch = GridSearchCV(estimator=clf,
param_grid = param_test, scoring='roc_auc',n_jobs=1,iid=False, cv=5)
gsearch.fit(X_train,y_train)
#gsearch.grid_scores_, gsearch.best_params_, gsearch.best_score_
gsearch.cv_results_, gsearch.best_params_, gsearch.best_score_
驗證輸出結果
clf = tree.DecisionTreeClassifier(
class_weight=None,
criterion='gini',
max_features=None,
max_leaf_nodes=8,
min_samples_leaf=2000,
min_samples_split=5000,
min_weight_fraction_leaf=0.0,
splitter='best' )
results=modelfit(clf, X_train, y_train, X_test,y_test)
畫出決策樹
import os
import pydotplus
from IPython.display import Image
from sklearn.externals.six import StringIO
#os.environ["PATH"] += os.pathsep + 'C:/Users/yacao/Downloads/graphviz-2.38/release/bin'
dot_data = StringIO()
tree.export_graphviz(clf, #決策樹分類器
out_file = dot_data)
輸出規(guī)則
if (df['meda'][i] <= 56.5 ):
if (df['age'][i] <= 70.5 ):
if (df['c210hva'][i] <= 312.5 ):
if (df['ilor'][i] <= 10.5 ):
temp=11
segment.append(temp)
else:
temp=12
segment.append(temp)
else:
temp=8
segment.append(temp)
else:
if (df['tins'][i] <= 5.5 ):
temp=9
segment.append(temp)
else:
temp=10
segment.append(temp)
else:
if (df['pdpe'][i] <= 46.5 ):
if (df['MOBPLUS_M'][i] <= 0.5 ):
temp=13
segment.append(temp)
else:
temp=14
segment.append(temp)
else:
temp=4
segment.append(temp)
業(yè)務應用
我們來看一下購買比例最高的兩類客戶的特征是什么:
第一類:
那么我們對業(yè)務人員進行建議的時候就是,建議他們在醫(yī)療險覆蓋率比例較低的區(qū)域進行宣傳推廣,然后重點關注那些剛到該區(qū)域且年齡65歲以上的老人,向這些人群進行保險營銷,成功率應該會更高。
第二類:
這一類人群,是區(qū)域內常住的高端小區(qū)的用戶。這些人群也同樣是我們需要重點進行保險營銷的對象。
除此之外,我們還可以做什么呢?
了解客戶需求
我們需要了解客戶的需求,并根據客戶的需求舉行保險營銷。PIOS數據:向客戶推薦產品,并利用個人的數據(個人特征)向客戶推薦保險產品。旅行者:根據他們自己的數據(家庭數據),生活階段信息推薦的是財務保險、人壽保險、保險、舊保險和用戶教育保險。外部數據、資產保險和人壽保險都提供給高層人士,利用外部數據,我們可以改進保險產品的管理,增加投資的收益和收益。
開發(fā)新的保險產品
保險公司還應協(xié)助外部渠道開發(fā)適合不同商業(yè)環(huán)境的保險產品,例如新的保險類型,如飛行延誤保險、旅行時間保險和電話盜竊保險。目的是提供其他保險產品,而不是從這些保險中受益,而是尋找潛在的客戶。此外,保險公司將通過數據分析與客戶聯(lián)系,了解客戶。外部因素將降低保險的營銷成本,并直接提高投資回報率。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數據庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數據分析師:表結構數據 “獲取 - 加工 - 使用” 全流程的賦能者 表結構數據(如數據庫表、Excel 表、CSV 文件)是企業(yè)數字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數據分析師:解鎖表結構數據特征價值的專業(yè)核心 表結構數據(以 “行 - 列” 規(guī)范存儲的結構化數據,如數據庫表、Excel 表、 ...
2025-09-17Excel 導入數據含缺失值?詳解 dropna 函數的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數據時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數據分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數據差異是否 “ ...
2025-09-16CDA 數據分析師:掌控表格結構數據全功能周期的專業(yè)操盤手 表格結構數據(以 “行 - 列” 存儲的結構化數據,如 Excel 表、數據 ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數據分析師:激活表格結構數據價值的核心操盤手 表格結構數據(如 Excel 表格、數據庫表)是企業(yè)最基礎、最核心的數據形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數據爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數據的科學計數法問題 為幫助 Python 數據從業(yè)者解決pd.read_csv讀取長浮點數據時的科學計數法問題 ...
2025-09-12CDA 數據分析師:業(yè)務數據分析步驟的落地者與價值優(yōu)化者 業(yè)務數據分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數據把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數據驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數據分析師與戰(zhàn)略 / 業(yè)務數據分析:概念辨析與協(xié)同價值 在數據驅動決策的體系中,“戰(zhàn)略數據分析”“業(yè)務數據分析” 是企業(yè) ...
2025-09-11Excel 數據聚類分析:從操作實踐到業(yè)務價值挖掘 在數據分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數據中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數據解讀到決策支撐的價值導向 統(tǒng)計模型作為數據分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10CDA 數據分析師:商業(yè)數據分析實踐的落地者與價值創(chuàng)造者 商業(yè)數據分析的價值,最終要在 “實踐” 中體現(xiàn) —— 脫離業(yè)務場景的分 ...
2025-09-10