建模分析的步骤
1 确定需求,提取数据
2 数据预处理(异常值,缺失值)
3 特征选择
4 对离散数据编码(哑变量,虚拟变量)
3 拆分训练集,测试集
4 选择并训练模型(多个备选模型)
5 模型评估
6 保存模型
7 投入生产

数据预处理
1 异常值
离散型(定性): value_counts(),unique() 方法: 改为缺失
连续型(定量): 箱型图原则(1.5IQR),3西格玛(3倍标准差) 方法:改为缺失,盖帽法

2 缺失值
1. 小于15%可以补充
2. 15% `50% : 离散化为多取值 , 缺失值自成一类.
3. 大于50%: 离散化为二值,填写和未填写
补充缺失值方法:
离散型(定性): 众数,模型预测补充(分类器),临近插值(KNN)
连续型(定量): 均值,中位数,模型预测补充(回归),临近插值

3 判断是否要标准化并进行标准化(标准化方式 Z , 0-1)
1. 聚类 2. KNN 3.失衡数据 过采样smote

自变量(特征)的选择
直接选择法
1 自变量为分类型,如果某一取值90%以上,不考虑此变量
2 自变量为数值型,如果此组数据离散程度小,就没有差异性,不考虑此变量
单元选择法(单变量选择)
如果因变量为数值型,自变量的选择:
方差分析:H0:无影响(u1=u2=…,无差异) p< α(α自定,多数为0.05)时 进入模型
相关系数(x为数值型,自由度多时,相关小于0.3的也可能相关) : H0: 相关系数为0,两变量不相关
协方差(x为数值型):H0: 协方差为0,两变量不相关

如果因变量为分类型,自变量的选择:
列联分析_独立性检验(卡方检验):(X为离散型) H0:独立(无影响)
信息熵 (X为离散型)-( 小好) #无p值,无经验解释, 只能排序选择
gini指数 (X为离散型)-( 小好) #无p值,无经验解释, 只能排序选择
IV信息价值(X为离散型)-(大好) #无P值,大于0.02表示对Y有影响

   X为连续型:1.离散后用以上方式( 若离散的不好,就可能失去一个特征)2.方差分析

分类器(因变量分类型):
KNN, 朴素贝叶斯,决策树(ID3,C4.5,Cart),随机森林,逻辑回归,SVM(支持向量机),xgboost,gbdt,adaboost,stacking

KNN (K近邻)
注意: 因为计算的是距离为了不让某个特征起到决定性作用所以一定要进行标准化
原理:
1 找到与要预测的记录最近的K个
2 对K个记录的分类的众数,以此众数为预测结果

朴素贝叶斯
在特征条件独立的基础上计算逆概率(贝叶斯)
比较适合做二分类
贝叶斯公式里的概念(先验,后验,似然,证据)
1.多项式 (特征都为离散的,数据不能为负) 先验概率为0时解决办法(拉普拉斯平滑)
2.高斯(特征为正态分布)
3.伯努利(特征为二项分布)

优点:简单,概率问题, 效果好些
缺点:特征很难完全相互独立

决策树
ID3原理(通过信息熵来度量信息的不纯度,信息增益大的为跟节点或分支节点)
1,计算整个数据集信息熵(期望信息)-》 -sum(先验概率*log2(先验概率))
2,计算各特征信息熵(期望信息),与数据集信息熵求差值(信息增益)
3,信息增益最大的为跟节点或分支节点
4,循环2,3直到所有记录归类完,达到指定的树深度或其他的预剪枝条件为止。

优点: 规则特别清晰, 只用少数特征
缺点: 只能计算离散型, 信息增益偏向于分类多的特征,多叉并有log运算速度慢

C4.5原理(通过信息熵来度量信息的不纯度,信息增益比大的为跟节点或分支节点)
1,计算整个数据集信息熵(期望信息) -sum(先验概率*log2(先验概率))
2,计算各特征信息熵(期望信息),与数据集信息熵求差值(信息增益)
计算各特征分裂信息,求信息增益比= 信息增益/分裂信息

     如果为连续数据,先排序,求其分隔点(临近两个数的均值),分隔成<= 和 > 两组数据并对其每个分隔点求其信息增益比,选信息增益比最大的分隔点为最佳分割点。与其他特征的信息增益比进行比较,确定根节点或分支节点3,信息增益比最大的为跟节点或分支节点4,循环2,3直到所有记录归类完,达到指定的树深度或其他的预剪枝条件为止。优点: 规则特别清晰, 只用少数特征缺点: 偏向于分隔不均的(少数部分数据纯度大),多叉并有log运算速度慢

cart分类树原理(通过Gini指数来度量信息的不纯度,Gini指数最小为跟节点或分支节点,Gini取值范围0~1
创建的是二叉树,预测时速度快)
1,计算各特征Gini指数,选择最小特征为根节点或分支节点
1) 如果为连续数据,先排序,求其分隔点(临近两个数的均值),分隔成<= 和 > 两组数据
并对其每个分隔点求其Gini指数,选Gini指数最小的分隔点为最佳分割点。
与其他特征的Gini指数进行比较,确定根节点或分支节点
2) 如果分类特征取值个数大于2的,分组成值1,非值1计算Gini指数,选择Gini指数最小的分组方式。
2,Gini指数最小的为跟节点或分支节点
3,循环1,2直到所有记录归类完,达到指定的树深度或其他的预剪枝条件为止。

  优点: 规则特别清晰, 只用少数特征,速度快缺点: 过拟合

决策树优缺点
优点:规则特别清晰, 只用少数特征,特征重要性,适合多分类
缺点: 过拟合(受极值影响)

决策树容易发生过拟合——采取剪枝处理

预剪枝
1,minsplit 最小分裂数
2, maxdepth 最大深度
3, minbucket 叶子节点最小样本数

后剪枝
REP:错误率降低剪枝(剪枝过度。)
PEP:悲观错误剪枝法是根据剪枝前后的错误率来判定子树的修剪(剪枝过度)
CCP:代价复杂度剪枝 (常用,模型cp值)

逻辑回归
模型:h(x) = exp(y)/(1+exp(y)) = 1/(1+exp(-y))
损失函数: L(x) = h(x) ^yi * (1-h(x))^(1-yi)
目标函数——(实现算法,最大似然法–对数似然)
Odds: 比值 p/(1-p)
Or: exp(回归系数) odds1/odds2

 比较适合做二分类优点: 解释性强(特征前的系数 OR) 缺点: 容易受极值影响

svm
原理(最小距离最大的一条线或面)
1 所有样本点到直线或面的距离
2 找到最小的距离
3 循环1-2步,找到最大距离的直线或面做为分割线

svm有三宝:间隔 对偶 核函数(核技巧)

线性可分  硬间隔目标函数软间隔目标函数——引入松弛变量和惩罚因子线性不可分(核函数——高斯核——多项式核)

优点:精准
缺点:维度灾难,矩阵运算占空间

分类器模型的评估指标
1 准确率 混淆矩阵对角线相加除以总数(TP+TN)/(TP+FN+FP+TN)
2 精准率(差准率)TP/(TP+FP) =A 和 #在所有预测为真的样本中,实际为真的占比
3 召回率(覆盖率,查全率) TP/(FN+TP) =CR #在所有实际为真的样本中,预测为真的占比

     预测1       0

真 1 TP FN

实 0 FP  TN

3 F1 或 F 值 2精准率召回率/(召回率+精准率)
4 AUC(ROC 曲线下的面积,X轴 为 1-FPR=1 - FP/(FP+TN) ,Y轴 为 TPR = TP/(FN+TP))
AUC = 1 完美
AUC >0.85 优秀
0.7<AUC <0.85 一般
0.5<AUC< 0.7 较差
AUC=0.5 无效
4 KS max(TPR-FPR)

5 Roc 曲线,做二分类时,可以通过ROC 曲线调最优阈值

数值型预测: (cart分类回归树,线性回归,岭回归_Ridge,lasso)
cart回归树原理(用Y取值离散情况小的)
1.计算每个变量的误差平方和
1 分类型 sum(每个叶子的误差平方和开方)
2 连续型 排序,分隔,计算各分隔点的误差平方和,选择最小误差平方和的分隔点
2,叶子节点的值为包含的样本点的均值

 优点:规则特别清晰, 只用少数特征,特征重要性缺点:过拟合,Y的值个数受叶子个数限制线性回归模型:y=a+b1x1+b2bx2...
损失函数:sum((y^-y)^2)
目标函数:min sum((y^-y)^2)
解决目标函数方法: 最小二乘法, 梯度下降,  矩阵计算优点:解释性好,选择特征
缺点:多重共线性,受极值影响,对因变量有正态性要求。lasso回归的
模型: y=a+b1x1+b2bx2...
损失函数:sum((y^-y)^2) + alpha *sum(|偏回归系数|)
目标函数 min sum((y^-y)^2) + alpha *|偏回归系数|
解决目标函数方法: 最小二乘法, 梯度下降,  矩阵计算优点:解释性好,去掉不显著特征(系数为0)
缺点:多重共线性,受极值影响,对因变量有正态性要求岭回归
模型: y=a+b1x1+b2bx2...
损失函数:sum((y^-y)^2) + alpha * sum(偏回归系数^2)
目标函数: min sum((y^-y)^2) + alpha * sum(偏回归系数^2)
解决目标函数方法:最小二乘法, 梯度小将,矩阵计算优点:解释性好,消除了多重共线性(系数接近于0)
缺点:受极值影响,对因变量有正态性要求

数值型预测评估指标
PPE10>80% 误差范围小于10% 的记录在80%以上
误差:(y^-y) /y<=10% 算对,
对的概率在80%以上

R^2= SSR/SST= 1-SSE/SST

集成算法典型的三类模型
1 Bagging(并行):训练多个分类器取平均值,众数。 典型的代表就是随机森林
2 Boosting(串行):从弱学习器开始加强,通过加权来进行训练
3 Stacking:聚合多个分类或回归模型(第一层弱学习器的输出作为最终学习器的输入)

随机森林(分类,回归)
数据输入双重随机性(使得每棵树构造是有差异的)
1 记录随机 可重复的抽样
2 特征随机(特征数的1/3,特征数的开方)

数据输出
平均法 (回归预测)
投票法_众数 (分类预测)
优点 :抗过拟合, 稳定, 不需要降维, 输出特征重要性
缺点: 计算成本更高

损失函数:

t是树的叶节点,Nt表示该叶节点的样本数量,Ht(T)表示结点t上的信息熵,所以右边第一项相当于对决策树的所有叶节点求熵,并以每个叶节点包含的样本数量为权重
T表示树的叶节点个数,即表示树的复杂度,a为参数,相当于a越大,叶节点的个数对损失函数的影响越大 AdaBoost “Adaptive Boosting(自适应增强) ——(分类,回归)
有两类权重:
1记录权重
Wmi为上一次迭代的权重,αm为上次迭代函数的权重,yi为真实标签,Gm(Xi)为上一次迭代的结果,记得计算完一定要归一化。

2.弱分类器权重: 1/2*ln((1-错误率)/错误率)
错误率 = 错分记录的权重之和

算法输出

回归问题:

  1. 记录权重
    第一次迭代为1/N
    第二次迭代:最大误差
    相对误差:
    记录权重为

     Wki为上次迭代的记录权重,αki为上次迭代的相对误差
    

    误差率:

    学习器权重

算法输出

优点 :

  1. Adaboost是一种有很高精度的分类器
  2. 可以使用各种方法构建子分类器,Adaboost算法提供的是框架
    缺点:
  3. 容易受到噪声干扰,这也是大部分算法的缺点
  4. 训练时间过长
  5. 执行效果依赖于弱分类器的选择

Xgboost(分类 ,回归)

  1. 定义损失函数
  2. 二阶泰勒展开
  3. 叶子节点是叶子权重
  4. 第T树预测的是前t-1棵树的残差
  5. 弱学习器根节点,分支节点(增益Gain)
  6. 损失函数正则L2 (经验风险)
  7. 特征并行
  8. 存在Base_ score(分类时0.5, 回归均值)

优点 :
正则化项防止过拟合
xgboost不仅使用到了一阶导数,还使用二阶导数,损失更精确,还可以自定义损失
XGBoost的并行优化,XGBoost的并行是在特征粒度上的
可以有缺失值
支持列抽样,不仅能降低过拟合,还能减少计算

缺点:

  1. 串行慢

Stacking

优点:
1、 采用交叉验证方法构造,稳健性强;
2、 可以结合多个模型判断结果,进行次级训练,效果好;
缺点:
1、构造复杂,难以得到相应规则,商用上难以解释。

聚类: K_means 系统聚类(合并,分裂),
聚类注意事项: 因为计算距离要消除量纲(每一列数据的差异不要太大)
划分法
K-means
K-means 原理:
1,确定K个簇,并随机选择K个中心点
2,遍历所有样本点与K个中心点的距离并且划分
3,对第二步的结果,计算平均值,并作为簇的中心点
4,重复2,3步,直到最后两遍结果相同或达到指定的迭代次数

 K-means 的优点速度快,容易理解K-means 的缺点1, K 数不好确定(肘点法则,CH指标 ,轮廓系数)2, 只能对连续型变量进行聚类3,平均值容易受极值影响4,起始随机K个中心点影响聚类结果5,比较适合于球型簇

层次法(系统聚类):
合并agnes,分裂diana
合并的原理:
1 把每个样本作为单独的一个簇
2 根据准则将簇进行合并
3 直到到不能合并 或 达到指定的簇数

 准则: 簇与簇的距离1 最远的两个样本点的距离作为两个簇的距离 2 最近的两个样本点的距离作为两个簇的距离3 所有样本点的平均距离作为两个簇的距离分裂的原理1 把所有样本点作为一个簇2 找到簇直径最大的簇进行分裂(簇直径——簇中最远两个样本点的距离)3 在簇中找到平均距离最大的样本点作为新簇4 从旧簇中找到离新簇近旧簇远所有的样本点( 样本点到簇的距离_最远,最近,平均 )5 重复2,3,4 直到每个样本点为一个簇 或 达到指定的簇数缺点: 速度慢优点: 每次结果都一样

聚类调优(选择最优簇数)

通过图——主观选择最优簇数1,冰柱图(白柱子从高到低(2——多))2,谱系图(切线)通过指标(肘点法则,CH指标, 轮廓系数)1. 肘点法则:SSE(簇内差异)——越小越好 SSE=sum_簇(sum_样本(x-簇中心点)^2)2. CH指标: VRC=MSA(簇间差异)/MSE(簇内差异)=F ----越大越好3. 轮廓系数: Si=(bi-ai)/max(bi,ai) ——越大越好bi: 分离度,样本点与其他簇平均距离的最小值ai: 凝聚度,样本点与簇内其他元素的平均距离对每个样本的si 平均值

密度聚类(SCAN):
重要参数: 半径 , 数量 (刻画单位面积内)
优点:每次结果一样,可以发现不规则形状,发现异常点 速度中等

聚类缺点:
(聚类处理的数据量有限)
无监督模型还有一个缺点就是不学习,每次都要重新算

样本点距离
1, 连续型
欧氏距离 sqrt(sum_特征(xi-yi)^2)
曼哈顿 sum_特征(abs(xi-yi))

 2. 二值型table(x=c(1,0,1,1,0,1),y=c(1,1,0,0,1,0))a,b,c,d来自于混淆矩阵对称  SMC=(b+c)/(a+b+c+d)非对称 JC=(b+c)/(a+b+c)非对称: 数量差异大,关心程度有差异3. 多值型1 简单匹配d(x,y) = (d-u)/dd: 特征数 ,u:特征取值相同的个数2 转化为二值型(通常用JC)4. 混合型(daisy)1,连续型数据 0-1 标准化2,多值型数据二值化d(x,y)=sum(距离*重要程度)/sum(重要程度)距离 = abs(xi-yi)重要程度
  1. 有缺失值,重要程度为0
    2,取值都为0,并且非对称 重要程度为0
    3,除1,2 外重要程度都为1

关联规则(apriori)推荐算法:找最大频繁项集的过程
支持度:商品的重要性(商品在订单中出现的概率)sum(A)
最小支持度:只有支持度大于指定的最小支持度叫频繁项集

可信度:商品之间的关联强度(P(商品B|商品A)) conf(A->B)
最小可信度:只有可信度大于指定的最小可信度叫强关联频繁项集提升度:是否为有效的强关联频繁项集( conf(A->B)/sup(B))

提升度>1 为有效的强关联频繁项集

注意:Apriori 包并没有对提升度>1进行过滤,

协同过滤(itemCF, userCF)
itemCF:
A对X的喜欢程度-》A对Y的喜好 * X 与Y的同现矩阵 + A对Z的喜好 * X与Z的同现矩阵 +....
A对Y的喜好(与业务结合)

userCF
A对X的喜欢程度-》B对X的喜好 * A与B的相似度 + C对X的喜好 * A与C的相似度. + ..
用户的相似度 根据对 X,Y,Z 的喜好程度计算
用户的相似度计算 = 1/(1+ d(A,B))

冷启动问题(半结构化问题):

  1. 用户选择标签
  2. 平台热销的
  3. 朋友圈热销(根据好友)

#评分卡模型 分数Y= A + B*ln(odds)
#参与评分卡的指标在15个左右

#步骤
#1 用ols,RF,DT, lasso, xgboost 找出显著影响的指标
#2 显著影响的指标多于15,计算各指标的IV,选择IV高的15个
IV=(p(好)-p(坏))*WOE

#用证据权重(WOE)标识每个指标的具体取值
WOE = ln(p/(1-p)) = ln(p(好)/p(坏)) =ln[(具体取值中好用户数/好用户数的总数)/(具体取值中坏用户数/坏用户数的总数)]

#WOE 编码(进行平滑————解决0的问题)
#1 分类型数据 直接计算WOE
#2 数值型数据 先分箱,再计算WOE

用WOE编码映射原数据代入LR,获得特征系数

#解评分卡模型
#1 计算初始的odds = 好用户数的总数/坏用户数的总数,并且估计初始分数
#得方程 初始分数 = A + Bln(初始的odds)
#2 指定odds 变化对分数的影响(odds翻一倍,分数加40分)
#得方程 初始分数+40 = A + B
ln(初始的odds*2)

因为ln(odds) = 逻辑回归的a+bx

分数=A+B*(a+bx)=A+Ba+Bbx

真正的基本分数 = A + B*a
各指标每个取值的得分= B * b * WOE值
各指标每个取值的得分就是我们的评分字典

机器学习篇-船长总结(hsrjdz01)相关推荐

  1. 国内首本数据竞赛图书《阿里云天池大赛赛题解析——机器学习篇》今日开启预售!

    天池平台已经举办了超过 200 场来自真实业务场景的竞赛,每场赛事沉淀的课题和数据集,将在天池保留和开放.天池平台已成为在校学生踏入职场前的虚拟实践基地,也成为聚集40万数据人才,孵化2000余家数据 ...

  2. 阿里云天池大赛赛题解析——机器学习篇 | 留言赠书

    国内第一本针对竞赛实操的图书:<阿里云天池大赛赛题解析--机器学习篇>,正式发售. 阿里云天池7年200多场数据大赛精华提取录 为什么写这本书 七年前,天池团队的几名创始成员带着" ...

  3. 阿里云天池大赛赛题解析——机器学习篇

    阿里云天池大赛赛题解析--机器学习篇 (豆瓣)图书阿里云天池大赛赛题解析--机器学习篇 介绍.书评.论坛及推荐 https://book.douban.com/subject/35192976/ 阿里 ...

  4. 深度学习导论与应用实践(机器学习篇)

    深度学习导论与应用实践(机器学习篇) 前言 机器学习概述 机器学习基本定义和基本术语 数据预处理 数据清洗 数据集拆分 机器学习三要素 1.模型 判别模型和生成模型 概率模型和非概率模型 机器学习方法 ...

  5. Flink on Zeppelin (4) - 机器学习篇

    今天我来讲下如何在 Zeppelin 里做机器学习.机器学习的重要性我就不多说了,我们直奔主题. Flink 在机器学习这个领域发力较晚,社区版没有一个完整的机器学习算法库可以用,Alink[1]是目 ...

  6. 从1到无穷大—机器学习篇

    0x01 上一篇中已经提到了机器学习的相关概念,从0到1:学安全的你不该懂点AI?这一篇按照计划聊一聊机器学习与网络安全. 本系列主要以理论为主,觉得枯燥的话就去看兜哥的三部曲吧,网络安全结合我上篇提 ...

  7. 个人面试问答题知识库(一)百面机器学习篇

    第二篇(基础模型篇)已更新!        在前段时间的校招应聘经历中,我发现有时候即使面试官问的问题基本都回答上来了,最后还是没有通过面试,这固然跟自己是非科班.没有论文和相关实习经历有关,但自己的 ...

  8. 我的2017年文章汇总——机器学习篇

    2018,你跟自己做了约定了吗?为了遇见更好的自己. 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:"分布式"."机器学习"."深度学习& ...

  9. 问题1 机器学习篇 如何解决过拟合(overfiting)?

    向自己提问题是一个很好的学习方式. 问题: 如何解决过拟合(overfiting)? 在解决这个问题之前先明确问题是什么.这涉及到另外一些问题,什么是过拟合?过拟合与什么因素有关?等等 答: 1)直观 ...

最新文章

  1. 把一个人的特点写具体作文_部编版五年级下册语文习作把一个人的特点写具体教案课件+范文...
  2. vim代码格式化自动加空格_vim格式化代码实际上就是 缩进代码, 命令是等号=
  3. python银行系统-Python实现银行账户资金交易管理系统
  4. python服务端多进程压测工具
  5. IOS15全屏滑动返回
  6. python表格写操作单元格合并
  7. MongoDB 快速入门实战教程最新版
  8. Chapter 8 Document Management(第8章 文档管理)—1 【中英文对照】
  9. r求矩阵某一列的标准偏差_如何在R中找到标准偏差?
  10. 【渝粤教育】国家开放大学2018年秋季 0690-22T化工原理及实验 参考试题
  11. EDSR dataloader.py代码问题
  12. 互联网晚报 | 7月15日 星期五 | 苹果开始试产iPhone 14;银保监会回应“停贷”事件;抖音否认屏蔽词语致谐音梗大流行...
  13. Python爬取淘宝商品附加cookie修改
  14. js实现双人对战五子棋
  15. 如何编写一份高质量的测试报告
  16. unity3d 反射获取面板的Rotation的值
  17. 【随机过程】马尔可夫链(1)
  18. java中时区的时令问题
  19. [USACO Mar08] 游荡的奶牛
  20. 【嵌入式学习笔记】2016年8月6日

热门文章

  1. java bt下载_bt: Java种子下载程序
  2. Android开发效率提升利器-ButterKnife最全使用详解及ButterKnife插件的使用
  3. 生活都不容易,如果你感觉生活很苦,那就说明你在吃苦,同样,如果你感觉生活有奔头,那就是在努力。
  4. Landsat 行列号与经纬度在线转换
  5. 搭建 lepus 监控
  6. 服务器微信发送图片困难是什么原因导致的,微信接受的图片不清楚的原因是什么?怎么发清楚?...
  7. IOS 5 拦截手机短信(需越狱)
  8. 一起来捉妖找不到服务器,一起来捉妖妖怪分布大全 所有妖灵不同地点位置详解...
  9. (小米系统系列三)刷机成功后卡在开机引导页,将电脑设置成热点,给手机提供验证网络的方法
  10. 归并排序,快速排序为什么快