python数据挖掘是什么

Python010

python数据挖掘是什么,第1张

数据挖掘(data mining,简称DM),是指从大量的数据中,通过统计学、人工智能、机器学习等方法,挖掘出未知的、且有价值的信

息和知识的过程。

python数据挖掘常用模块

numpy模块:用于矩阵运算、随机数的生成等

pandas模块:用于数据的读取、清洗、整理、运算、可视化等

matplotlib模块:专用于数据可视化,当然含有统计类的seaborn模块

statsmodels模块:用于构建统计模型,如线性回归、岭回归、逻辑回归、主成分分析等

scipy模块:专用于统计中的各种假设检验,如卡方检验、相关系数检验、正态性检验、t检验、F检验等

sklearn模块:专用于机器学习,包含了常规的数据挖掘算法,如决策树、森林树、提升树、贝叶斯、K近邻、SVM、GBDT、Kmeans等

数据分析和挖掘推荐的入门方式是?小公司如何利用数据分析和挖掘?

关于数据分析与挖掘的入门方式是先实现代码和Python语法的落地(前期也需要你了解一些统计学知识、数学知识等),这个过程需要

你多阅读相关的数据和查阅社区、论坛。然后你在代码落地的过程中一定会对算法中的参数或结果产生疑问,此时再去查看统计学和数据

挖掘方面的理论知识。这样就形成了问题为导向的学习方法,如果将入门顺序搞反了,可能在硬着头皮研究理论算法的过程中就打退堂鼓

了。

对于小公司来说,你得清楚的知道自己的痛点是什么,这些痛点是否能够体现在数据上,公司内部的交易数据、营销数据、仓储数据等是

否比较齐全。在这些数据的基础上搭建核心KPI作为每日或每周的经营健康度衡量,数据分析侧重于历史的描述,数据挖掘则侧重于未来

的预测。

差异在于对数据的敏感度和对数据的个性化理解。换句话说,就是懂分析的人能够从数据中看出破绽,解决问题,甚至用数据创造价值;

不懂分析的人,做不到这些,更多的是描述数据。

更多技术请关注python视频教程。

集成学习: 构建并结合多个学习器来完成学习任务。

同质: 集成中只包含同种类型的个体学习器(基学习器);

异质: 集成中的个体学习器(组件学习器)由不同学习算法生成。

个体学习器的“准确性”和“多样性”很重要,且相互冲突。

分类: 个体学习器间存在强依赖关系,必须串行生成的序列化方法,eg,Boosting;个体学习器间不存在强依赖关系,可同时生成的并行化方法,eg,Bagging和随机森林。

工作机制: 先从初始训练集训练出一个基学习器1,根据基学习器误差率表现更新训练样本权重,使弱学习器1学习误差率高的训练样本权重变高,让这些点在弱学习器2中得到更多的重视,然后基于调整权重后的训练集训练学习器2,...重复进行,直至弱学习器数目达到指定的值T,最终将这T个基学习器进行加权结合。

Boosting族算法最著名的代表是AdaBoost,是“Adaptive Boosting(自适应增强)”的缩写。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

算法过程

优点:作为分类器时精度很高;在AdaBoost框架下,可使用各种回归分类模型来构建学习器;不易发生过拟合(会加入正则化项)。

缺点:对异常样本点敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

两者均是0/1误差的平滑近似:

梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的基函数集合,提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部最小值。

GB每一次建立模型 是在之前建立模型 损失函数的梯度下降方向。一般认为损失函数越小,性能越好,因此最好是使损失函数沿着梯度方向下降,模型得以不断改进提升性能。

GBDT是GB和DT的结合,是以决策树为基学习器的gb算法,此处的决策树是回归树。GBDT中的决策树深度一般不超过5,叶子结点数不超过10。GBDT核心在于: 每一棵树学得是之前所有树结论和的残差 ,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学习。

xgboost是在GBDT基本思路上改善而来,主要改变有

1) 在损失函数中加入防止过拟合的惩罚函数

T是叶子的个数,w是预测函数的参数,也就是决策树算法下叶子节点的权重值。可以控制γ和λ这两个超参数来调整正则化的惩罚力度。其实这里的惩罚函数也就定义了模型复杂度,比如γ越大,λ越大,复杂度越小越不易过拟合。

2) 用二阶泰勒展式将损失函数展开,同时用到了一阶和二阶导数

第t次的loss:

对上式做二阶泰勒展开:g为一阶导数,h为二阶导数

3)CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost 寻找分割点的标准是最大化 ,lamda,gama与正则化项相关

xgboost算法的步骤和GB基本相同,都是首先初始化为一个常数,gb是根据一阶导数ri,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。

https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

为得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立,考虑使用相互有交叠的采样子集。

并行式集成学习的最著名代表,基于自助采样法,算法流程如下:

优点:训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶;与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改的用于多分类、回归任务;初始训练集63.2%用于训练,36.8%用作验证集对泛化性能做“包外估计”。

但从偏差-方差分解角度看,Bagging主要关注降低方差。

随机森林是Bagging的一个扩展变体,在以决策树为基学习器构建Bagging集成的基础上,在决策树训练过程中引入了 随机属性选择 。即对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k(k<d,d为所有属性个数)个属性的子集,然后从中选一个最优属性用于划分。若k=d,则为传统决策树;k=1,则随机选择一个属性划分。一般推荐 。

https://blog.csdn.net/qq547276542/article/details/78304454

RF起始性能相对较差,但随着学习器数目的增加,会收敛到更低的泛化误差。另外RF的训练效率常优于Bagging,因为Bagging使用“确定型”决策树,选择划分属性时要对结点所有属性进行考察,而RF使用“随机型”决策树,只需考虑一个属性子集。

学习器结合可能会从三个方面带来好处:

1)统计方面:当多个假设达到同等性能时,可减小因误选单学习器导致泛化性能不佳的风险;

2)计算方面:降低陷入糟糕局部极小点的风险;

3)表示方面:扩大相应假设空间,学习更好的近似。

对数值型输出 ,最常见的结合策略是平均法。

简单平均:                    

(特殊的加权平均法,宜在个体学习器性能相近时使用)

加权平均法:                

其中 是个体学习器 的权重,一般从训练数据中学习而得,通常要求 ,宜在个体学习器相差较大时使用。

对分类任务,学习器从类别标记集合中预测出一个标记,最常见的结合策略是投票法。

绝大多数投票法:

相对多数投票法:

                             

预测为得票最多的标记,若同时有多个标记获得最高票,则从中随机选取一个。

加权投票法:

                         

与加权平均法类似, 是 的权重,通常 。

个体学习器的输出类型:

类标记: 硬投票。 ,若 将样本x预测为类别 则取值为1,否则为0。

类概率: 软投票。 ,相当于对后验概率 的一个估计。

不同类型的 值不能混用;对一些能在预测出类别标记的同时产生分类置信度的学习器,其分类置信度可转化为类概率使用;分类置信度应规范化后使用;基于类概率进行结合优于直接基于类标记进行结合;若基学习器类型不同,不能直接比较类概率值,应先将其转化为类标记输出(eg类概率输出最大的设为1,其他为0)再投票。

当训练数据很多时,常使用通过另一个学习器来进行结合的“学习法”,代表算法Stacking

第一阶段获得各个模型对样本x1的预测标签值;第二阶段将各个模型的预测标签值作为一个新的特征(x1的真实标签值还是标签值),再用某个算法进行训练,获得一个融合模型,用这个融合模型进行测试集的预测。

周志华《机器学习》

https://www.cnblogs.com/pinard/p/6131423.html

https://www.jianshu.com/p/470556a108e2

https://www.cnblogs.com/wxquare/p/5541414.html

https://zhuanlan.zhihu.com/p/34325706