五、AI编程(二)
本文介绍了AI编程与机器学习核心知识,涵盖数据可视化、机器学习七步法、经典模型及寿险续保预测案例。首先以香港疫情数据可视化为例,展示趋势、分布等核心维度及七日平均新增计算逻辑。其次讲解机器学习基础,包括七步法(收集数据至评估)、线性模型公式、分类与回归问题区分,以及过拟合/欠拟合判断。接着列举十大经典模型,强调逻辑回归(63.5%)和随机森林的业界高占比。决策树基于信息增益选择特征,随机森林通过bagging集成多棵树提升准确率。最后以寿险客户续保预测为实战案例,应用逻辑回归等模型进行预测与评估。
# AI编程(二) ## 一、课程核心主题 Cursor 数据可视化与洞察、机器学习七步法实践、寿险客户续保预测案例、经典数据分析模型应用、模型洞察与解读 ## 二、开篇案例:香港疫情数据可视化大屏 ### 2.1 可视化核心维度 1. **趋势类**:新增确诊病例趋势、累计确诊病例趋势、七日平均新增(874.86,↓10.01%) 2. **分布类**:香港各区累计确诊分布、地区分布图 3. **变化类**:每日增长率变化(区间 - 60%~80%) 4. **对比类**:疫情指标对比(现存确诊、已康复、死亡)、新增确诊与新增康复对比 5. **核心指标**:累计确诊 21466、现存确诊 8751、累计康复 20184、累计死亡 136、今日新增确诊 1002、当前活跃病例 1146 ### 2.2 可视化时间范围 核心数据更新至 2022-06-29,时间跨度覆盖 2022-05-31 至 2022-06-21 ### 思考疑问 疫情数据可视化中,七日平均新增的计算逻辑是什么?如何选择合适的时间粒度平衡数据波动性和趋势性? ## 三、人工智能与机器学习基础 ### 3.1 核心定义 1. **人工智能(Oxford Dictionary)**:能执行通常需要人类智能完成任务的计算机系统的理论与发展 2. **AI 的本质**:利用数据解决问题(Using data to solve problems) 3. **机器学习核心流程**:Data(数据)→ Training(训练)→ Model(模型)→ Prediction(预测)→ Solve problems(解决问题) ### 3.2 机器学习七步法(核心框架) 1. 收集数据 2. 准备数据:数据预处理(缺失值、异常值、分类变量编码等) 3. 选择模型:根据问题类型(分类 / 回归)选择适配模型 4. 训练模型:迭代更新参数,拟合数据规律 5. 超参数调整:如 epoch 次数、学习率等,实验性优化过程 6. 预测:利用训练好的模型对新数据做预测 7. 评估:通过测试集验证模型有效性,选择合适评估指标 ### 思考疑问 超参数调整被描述为 “更像艺术而非科学”,是否有标准化的方法或工具提升超参数调整的效率和科学性? ## 四、机器学习核心概念与原理 ### 4.1 训练过程核心逻辑 1. **核心目标**:在搜索空间中寻找最优权重(w)和偏差(b),使模型准确率达到既定标准 2. **迭代**:一次训练步骤即为一次迭代,目的是更新权重和变量,多次迭代实现数据拟合 3. **线性模型基础公式** - 单特征:y=w∗x+b - 多特征:f(x)=w1x1+w2x2+...+wdxd+b=wTx+b - 特征矩阵:由多个特征值构成的**权重矩阵(weights)** + 偏差(biases) ### 4.2 问题类型与模型选择 #### 4.2.1 问题类型判断标准 输出数据类型:**离散型→分类问题**、**连续型→回归问题** #### 4.2.2 经典模型公式与适用场景 表格 | **模型** | **公式** | **适用问题** | **核心特点** | | --- | --- | --- | --- | | 线性回归 | f(x)=wTx+b | 回归 | 拟合连续值,可解释性强 | | 逻辑回归 | y=1+e−(wTx+b)1 | 分类 | 基于 Sigmoid 函数,输出概率值 | ### 4.3 非线性关系拟合 线性回归模型可通过**特征构造**拟合非线性关系,如引入特征的高次项:0+01x+02x2、0+01x+02x2+03x3等 ### 4.4 模型评估与数据划分 1. **数据划分**:通常按 80% 训练集 + 20% 测试集划分,也可使用 10% 测试集 2. **评估核心**:通过测试集验证模型泛化能力,避免过拟合 / 欠拟合 ### 思考疑问 如何判断模型是过拟合还是欠拟合?针对两种情况分别有哪些有效的解决方法? ## 五、经典数据分析模型 ### 5.1 十大经典模型分类 1. **分类算法**:C4.5、朴素贝叶斯(Naive Bayes)、SVM、KNN、Adaboost、CART 2. **聚类算法**:K-Means、EM 3. **关联分析**:Apriori 4. **连接分析**:PageRank ### 5.2 业界主流模型占比(基于 7301 份调研) 1. 逻辑回归(Logistic Regression):63.5%(占比最高) 2. 决策树(Decision Trees):49.9% 3. 随机森林(Random Forests):46.3% 4. 神经网络(Neural Networks):37.6% 5. 贝叶斯技术(Bayesian Techniques):30.6% 6. 集成方法(Ensemble Methods):28.5% 7. SVMs:26.7% 8. 梯度提升机(Gradient Boosted Machines):23.9% ### 思考疑问 逻辑回归在业界占比最高的核心原因是什么?在什么场景下会优先选择随机森林而非逻辑回归? ## 六、决策树与随机森林 ### 6.1 决策树 1. **核心本质**:总结人类经验,通过特征节点分裂实现分类 / 回归 2. **常见算法**:C4.5、ID3、CART 3. **关键问题**:选择最优特征作为根节点 / 中间节点,依赖**信息增益**指标 4. **信息论核心概念** - **信息**:消除随机不确定性的东西 - **熵**:信息的期望值,度量不确定性,熵越大则类别不确定性越高,公式:H(X)=−∑i=1np(xi)logp(xi) - **信息增益**:选择特征的核心指标,增益越大特征区分性越好,公式:信息增益 ### 6.2 随机森林 1. **核心思想**:基于**bagging 思想**,将多个弱分类器(决策树)的结果投票,组成强分类器 2. **生成特点**:森林中每棵树相互独立 3. **模型优势**:相比单棵决策树,预测准确率更高、不易过拟合、减少预测方差 4. **投票规则**:少数服从多数,得票最多的类别为最终预测结果 ### 思考疑问 决策树中 ID3、C4.5、CART 算法的核心区别是什么?分别适用于什么类型的数据集? ## 七、实战案例:寿险客户续保预测 ### 7.1 案例背景 寿险行业高度依赖客户忠诚度,精准预测续保可降低流失率,支持个性化服务和产品优化 ### 7.2 数据集信息 1. **训练集**:train.csv,1000 条数据 2. **测试集**:test.csv,200 条数据 3. **提交要求**:policy_result.csv(含 policy_id、renewal 两列),以**accuracy**为核心评价标准,工作中可结合 F1 值 ### 7.3 数据字段说明 表格 | **英文名称** | **含义描述** | | --- | --- | | policy_id | 保单唯一标识符 | | age | 客户年龄(18-70 岁) | | gender | 性别(男 / 女) | | birth_region | 客户出生地 | | insurance_region | 客户投保地区 | | income_level | 收入水平(低 / 中 / 高) | | education_level | 教育程度(高中 / 本科 / 硕士 / 博士) | | occupation | 职业(销售 / 经理 / 设计师 / 工程师 / 医生等) | | marital_status | 婚姻状况(单身 / 已婚 / 离异) | | family_members | 家庭成员数量(单身 1-2 人,已婚 3-6 人) | | policy_type | 保单类型(平安六福保 / 盛世福尊悦版 / 优悦版等) | | policy_term | 保单期限(1 年 / 5 年 / 10 年 / 20 年) | | premium_amount | 年保费金额 | | policy_start_date | 保单生效日期 | | policy_end_date | 保单到期日期(由生效日期 + 期限计算) | | claim_history | 理赔记录(是 / 否) | | renewal | 是否续保(Yes/No,目标变量) | ### 7.4 评估指标拓展 1. **精确率(Precision)**:p=tp+fptp(预测为正的样本中实际为正的比例) 2. **召回率(Recall)**:r=tp+fntp(实际为正的样本中被预测为正的比例) 3. **F1 值**:平衡精确率和召回率,F1=2p+rp⋅r ### 思考疑问 在寿险续保预测场景中,为什么有时需要优先关注 F1 值而非单纯的准确率?该场景下精确率和召回率哪个更重要? ## 八、寿险续保预测:完整实战步骤 ### 8.1 Step1:数据预处理与探索 #### 8.1.1 数据探索维度 从**基本人口统计特征、经济状况、家庭结构、保单详情、时间和地域因素**5 个维度展开,核心探索代码基于 Python 的 pandas、seaborn、matplotlib 实现 #### 8.1.2 核心探索内容 1. 人口特征:年龄分布、性别续保差异、出生地与投保地关联(热力图) 2. 经济状况:收入水平、教育背景、职业类型与续保的关系(柱状图) 3. 家庭结构:婚姻状况、家庭成员数量对续保的影响 4. 保单详情:保费金额分布、保单期限、理赔历史与续保的关系 5. 时间 / 地域:投保地区续保差异、保单生效 / 到期时间的影响 #### 8.1.3 数据预处理操作 1. **分类变量识别**:筛选 object 类型字段,包括 gender、birth_region、insurance_region 等 11 个字段 2. **数值转换**:保单期限(policy_term)去掉 “年” 字并转为整数 3. **手动编码**:对有序分类变量进行映射编码 - 收入水平:低 = 0、中 = 1、高 = 2 - 教育程度:高中 = 0、本科 = 1、硕士 = 2、博士 = 3 - 婚姻状况:单身 = 0、已婚 = 1、离异 = 2 - 性别:女 = 0、男 = 1 - 目标变量:Yes=1、No=0 4. **标签编码(LabelEncoder)**:对无序分类变量编码(birth_region、insurance_region、occupation、policy_type) 5. **时间特征工程**:将保单生效 / 到期日期转换为距离 2010-01-01 的天数,消除日期格式影响 ### 8.2 Step2:模型选择、训练与评估 选择**随机森林、决策树、逻辑回归**三种模型对比训练,核心基于 sklearn 库实现,统一数据处理流程:特征与目标变量分离→标准化→8:2 划分训练集 / 测试集 #### 8.2.1 模型训练核心代码逻辑 ``` # 通用步骤 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 数据读取与预处理 df = pd.read_excel('./policy_clean.xlsx') X = df.drop(['renewal', 'policy_start_date', 'policy_end_date'], axis=1) y = df['renewal'] scaler = StandardScaler() X_scaler = scaler.fit_transform(X) X_train, X_test, y_train, y_test = train_test_split(X_scaler, y, test_size=0.2, random_state=42) # 模型训练与评估(以随机森林为例) from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report, accuracy_score, confusion_matrix clf = RandomForestClassifier(n_estimators=100, random_state=42) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) # 评估 print("Accuracy:", accuracy_score(y_test, y_pred)) print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred)) print("Classification Report:\n", classification_report(y_test, y_pred)) ``` #### 8.2.2 各模型评估结果 表格 | **模型** | **准确率(Accuracy)** | **核心特点** | | --- | --- | --- | | 随机森林 | 0.925 | 准确率高,鲁棒性好 | | 决策树 | 0.93(max_depth=4) | 可解释性强,调参后准确率最优 | | 逻辑回归 | 0.835 | 可解释性强,准确率较低 | #### 8.2.3 模型可视化与解读 1. **决策树**:可通过 export_graphviz 生成可视化图,export_text 输出文本规则 2. **逻辑回归**:通过系数绝对值分析**特征重要性**,绘制水平柱状图展示 ### 8.3 Step3:模型预测与结果提交 1. 利用训练好的模型对测试集(test.csv)进行预测 2. 整理预测结果为**policy_id + renewal**的 CSV 格式,命名为 policy_result.csv 提交 ### 思考疑问 决策树中设置 max_depth=4 后准确率提升,如何确定最优的树深度?过深 / 过浅分别会导致什么问题? ## 九、模型洞察与对比分析 ### 9.1 主流模型优劣势对比 表格 | **模型** | **优势** | **劣势** | | --- | --- | --- | | 逻辑回归 | 简单稳定、可解释性强、易于检测和部署 | 不适用于非线性问题、准确率相对较低 | | 决策树 | 对数据质量要求低、可解释性强 | 易于过拟合、单棵树准确度有限 | | 集成模型(RF/GBDT) | 准确度高、鲁棒性好、泛化能力强 | 可解释性差、计算量大、部署较困难 | ### 9.2 寿险续保预测:决策树模型深度解读 以 max_depth=4 的决策树为核心,**年龄(age)** 是根节点,为续保预测的第一核心特征,后续节点依次为家庭成员数量、保单时间、婚姻状况、职业、教育水平等,核心结论如下: 1. **年轻客户(age≤29.5)** - 家庭成员≤2.5:保单生效时间≤703 天的,19.5 岁以下不续保、19.5 岁以上续保;生效时间 > 703 天的均不续保 - 家庭成员 > 2.5:单身 / 已婚的,医生 / 工程师 / 律师续保、其他职业不续保;离异的,保单到期≤8918.5 天不续保、反之续保 2. **中年客户(29.5 5506.00 天:无论职业如何,均续保 3. **老年客户(age>60.5)** - 家庭成员≤3.5:高中及以下学历不续保、本科及以上续保 - 家庭成员 > 3.5:单身 / 已婚续保、离异不续保 ### 9.3 续保用户核心特征总结 1. **年龄**:年轻客户中 19.5 岁以上群体、中年客户(29.5-60.5 岁)且保单到期时间晚的、老年客户中高学历 / 家庭成员多且非离异的群体续保意愿高 2. **家庭结构**:家庭成员数量适中 / 偏多的客户、单身 / 已婚状态的客户续保意愿显著高于离异客户 3. **职业**:年轻客户中医生、工程师、律师等专业 / 高收入职业续保意愿高;中年客户职业对续保无显著影响 4. **保单特征**:保单到期时间晚、无不良理赔历史的客户续保意愿高 5. **教育与收入**:高学历、高收入水平的客户续保意愿更高 ### 9.4 评分卡模型(拓展) 1. **核心应用**:逻辑回归是评分卡模型最常用算法 2. **评分公式**:单个分箱分数 =−B∗θi∗wij,基准分 + 各变量分箱分数为最终评分 3. **核心影响因素**:参数 B、模型系数θi、分箱 WOE 值wij ### 思考疑问 评分卡模型中 WOE 值的计算逻辑是什么?如何对特征进行合理分箱以提升评分卡模型的效果? ## 十、课程核心总结 1. **AI 核心**:利用数据解决问题,机器学习是实现 AI 的核心方法之一 2. **机器学习核心**:七步法是通用框架,数据预处理是基础,模型选择需匹配问题类型,超参数调整和模型评估是提升效果的关键 3. **模型选择原则**:追求可解释性选逻辑回归 / 决策树,追求准确率选集成模型(随机森林、GBDT 等) 4. **实战关键**:特征工程是提升模型效果的核心,需结合业务场景对数据进行探索和预处理;模型洞察需结合业务知识,将模型规则转化为可落地的业务策略 5. **业务落地**:机器学习模型的价值在于将预测结果转化为业务行动,如寿险续保预测中,针对高流失风险客户提供个性化服务以提升续保率