一.走进数据科学
1.从数据到知识
数据公开:数据孤岛→公开数据(标准格式)
数据挖掘:从大量、不完整、嘈杂的数据中提取有趣、有用、隐藏模式的过程
从数据到智能过程:Data(Database)→Information(Preprocessing)→Knowledge(Data Mining)→Decision Support(Decision Models)
ETL(提取、转换、装载)
数据挖掘过程:Define Problem→Data Collection→Data Preparation→Data Modeling→Interpretation Evaluation→Implement Deply Model
数据挖掘工具:SPSS
2.分类问题
分类:通过训练集得出模型,来判断/预测下一个object的性质,存在标签
有监督的学习和无监督的学习的根本区别在于:学习样本是否需要人工标记
算法:决策树、KNN、神经网络、支持向量机等
应用:医学诊断和预测客户是否会流失
分类界面:选择合适的分类界面进行分类
注意:需要形成合力的分界面,避免过拟合学习
Cross Validation:
避免训练集与测试集重复,避免过拟合
评价指标:
1.Confusion Matrix和Accuracy
2.Receiver Operating Characteristic(ROC曲线)
3.AUC(Area Under Curve)
3.聚类问题
聚类:将objects聚集成一个个group,在聚类中没有标签(无监督学习)
关联规则算法:itemsA与itemsB间的关系(行为关联趋向)
线性回归算法:参数和变量之间是线性的,而非最终表达为线性
衡量两个点距离远近或是否相似:欧氏距离,曼哈顿距离,马氏距离
算法:K-Means,Sequential Leader,Affinity Propagation
二.数据预处理
1.数据清洗
数据清洗:数据在获得时可能并不可用,缺数据,数据错误,噪音等问题都会导致程序无法运行。因此在处理之前要进行清洗等操作
数据预处理:将无法直接使用的数据经过处理后使之能够使用
数据预处理中遇到的问题:缺失数据
可能的原因:设备故障 ,不提供数据,不适用
不同的类型:完全随机缺失,条件随机缺失非随机缺失
处理方法:
忽视(缺失的数量较少时)
填充缺失值/手工:再采集、猜测
填充缺失值/自动:常值、均值(可加入高斯分布)、最可能的值
离群点和异常点是有区别的,要谨慎的区分两者。
2.异常值与重复数据检测
异常是相对的,在计算异常值时要考虑相对性,可以尝试与近邻值相比较
Local Outlier Factor:
LOF值越大,离群点的可能性越大
相同的信息可以用不同的形式来表示。而计算机可能无法识别这些重复
我们可以尝试使用滑动窗口,将某数据与部分之前的数据进行比
3.类型转换与采样
数据转换:类型转换,标准化,采样
数据类型:连续型、离散型、序数型、标称型、文本型
类型转换:定序(可排序不可加减),定类(不可排序)
采样:
1.聚集:根据需要将数据进行聚集,不需要知道最底层的数据,可以大大减少数据量,数据也可以更加平稳
2.不平衡数据(整体的准确率不适用于不平衡数据)
G-mean:正、负类最大为1,若有一类全分错,则G-mean是0,。因此要求不能分错很多
F-measure:与G-mean类似,需要考虑一个问题的两个方面,用于信息检索(准确率,召回率)
向上采样:对少数类样本通过插值进行上采样
边缘采样:中间的数据可能并不参与数据挖掘中,边缘的数据可能价值更大,能够节省大量计算资源
4.数据描述与可视化
标准化:Min-max标准化和Z-score标准化
数据描述:均值,中位数,频率,方差
数据相关性:
rAB > 0,则A、B正相关
rAB < 0,则A、B负相关
rAB = 0,代表A、B之间没有线性相关,而非不相关
卡方检验(Chi-Square Test):卡方值越大,说明相关性越大
数据可视化:
1D:饼图、柱状图、曲线图
2D:二维坐标轴
3D:三维坐标轴
高维:箱型图(Box Plots)(丧失了维度之间的关联)、平行坐标(Parrallel Coordinates)(图形复杂)
可视化软件:CiteSpace、Gephi
5.特征选择
目的:需要挑选最相关的属性,将问题的难度降低
判断指标(属性的好坏:理论上的好属性是能够百分百的区分开):
熵(Entropy):衡量系统的不确定性
熵越趋于中间,不确定性越高;概率为0或1的时候,熵是最小的(不确定性最低)。
信息增益:
当知道一些额外属性后,对这个系统的不确定性降低多少,即这个属性的价值。信息增益越大越好,即该属性的效能越高,越有区分度。
如何选择特征组合:
排列组合、近似解
分支定界(全局最优):
剪枝,简化搜索空间,可以找到最优解(不是近似解或启发式的解)
贪心算法:
Top K Individual Features:由于有些属性间存在相关性,因此并不是把所有的好属性聚集在一起就是一个好的属性集
Sequential Forward Selection:假设现有两个最好,加入一个后寻找三个最好,逐渐扩张属性集
Sequential Backward Selection:假设现有十个属性,每次删掉一个,寻找最好的属性集,逐渐缩小属性集
优化算法:
Simulated Annealing
Tabu Search
Genetic Algorithms
6.主成分分析(PCA)
特征提取:
特征选择与特征提取的区别:前者指从n个属性中选择最优的m个属性,后者指对原始特征进行线性变换产生新的特征
主成分分析:
同样的物体从不同角度看,差别很大(信息损失不同)
原理:选择适合的方向,将两个类区分开
PCA做的事:将原始数据投影到具有最大特征值的特征向量
7.线性判别分析(LDA)
主成分分析法PCA:无监督学习,不考虑类信息(class information)。因此,可能会把原来能分开的数据,投影后无法分开
线性判别分析法LDA:保留类的区分信息,能够保证不同的类能够区分开
基本思路:选择合适的投影方向(可以对坐标进行旋转),能够将两个类区分开。因此,选择不同的投影方向非常重要
LDA与PCA区别:
LDA容易拓展到多个分类,C类问题和2分类问题(C=2)是一样的算出来的特征向量不一定正交
LDA的局限性:
Sb矩阵的秩最大为C-1
Sw可能是奇异矩阵,因此可能先要使用PCA降维,再使用LDA
LDA可能无效,即找不到投影方向(均值不能相等)
三.从贝叶斯到决策树
分类:有监督学习(有输入,有输出)
有监督的学习和无监督的学习的根本区别在于:学习样本是否需要人工标记
训练分类器:需要大量有标签的样本,通过训练形成抽象的表达形式,再对测试集进行判断
1.贝叶斯
贝叶斯公式(后验概率):
P(A)、P(B)为先验概率
朴素贝叶斯分类器:
即看哪一个ωi大就是哪个,即后验概率。
算法:
用贝叶斯公式展开
由于仅仅比较大小,分母可以省略
理论上:
实际上:
但由于前半部分无法通过计算得出,因此实际应用中使用以下公式,
(需要条件独立)
独立:
条件独立: 或
例子:假设抽烟是造成肺癌的唯一因素,则
因此,是否得肺癌与性别无关,这就是条件独立
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法
原理:根据特征的先验概率(训练样本分析得到的概率),利用贝叶斯公式计算出其后验概率(要分类对象特征的条件概率),选择概率值最大的类作为该特征所属的类
拉普拉斯平滑:
为了避免其他属性携带的信息被其他未出现过的属性值“抹去”,在估计概率值时通常要进行平滑。具体的说,令N表示训练集D中的类别数,Ni表示第i个属性可能的取值数,则:
朴素贝叶斯分类器的用途:给出发生某事的概率、本文分类、文章推荐
2.决策树
决策树:自顶而下的树形结构,符合人的思考过程,形成清晰易懂的规则
决策树的注意点:能够提取规则、一个数据集建立树的数量庞大(通常来说在效果相同的情况下,倾向于选择简单的树)
如何建造最短、最小的决策树:算法ID3
思路为:将比较强大的属性向上层放
如何选择属性:
熵 ,越小越好
信息增益 ,越大越好
当数据的不确定性越大时,信息熵也就越大
如何建树:
递归,从属性中挑选对当前数据集分类情况最好的属性。直到纯类,则不用再分类;若不纯,则继续分类,且一个属性用过则不能再用。若属性全用完,数据集仍然不纯,那么少数服从多数。
过拟合(overfitting):
为了得到一致假设而使假设变得过度复杂,过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差。
如何防止过学习:设置树的高度、数据集扩增、改进模型、正则化、对决策树剪枝
如何剪枝:预剪枝策略、后剪枝策略
预剪枝:边构造边剪枝。预剪枝指在每个结点划分前就进行估计,考虑结点对于整体划分效果是否有提升。如果当前结点的划分不能对决策树泛化性能有提高吗,则停止划分并将当前结点标记为叶结点。
后剪枝:构造完再剪枝。后剪枝则是先从训练集中生成一棵完整的决策树,然后自底向上的考察每一个非叶结点,和预剪枝相反,如果将该结点对应的子树替换为叶结点能给决策树带来性能上的提升,则将该子树替换为叶结点。
四.神经网络
神经元,又被称为感知机 一个神经元包含很多输入+激活函数+输出
单个的神经元,n个输入,n+1个权重(w0 ,避免所有点都过原点),输出0或1。
如果没有w0,则判决平面会一直经过原点
如何设置权重:梯度下降法
误差:
随着w的增加,误差会增加,但目的是减小误差,所以要减小权重,因此是-η
wi←wi+∆wi才真正做了一次更新
感知机的缺陷:不能解决线性不可分问题,因此提出多层感知机(Mutilayer Perceptron)
多层感知机在单层神经网络的基础上引入了一到多个隐藏层,位于输入和输出层之间
在解决线性不可分的问题时,将其映射到隐含层变为线性可分的问题
误差逆传播算法(Backpropagation Rule):
类似于感知机,用误差对某个权重的输入求偏导。但在多层感知机网络中,由于隐层的期望值不知道,所以没法得知隐层的误差,因此输出 后根据结果加权反向反馈,修改参数
对于隐含层,难以直接计算误差,而是通过逆传播,根据权重分配误差
最终结果为:
输出层:δk=-∂Ed∂netk
隐藏层:δj=Oj(1-Oj)k∈Downstream(j)δkwkj
∆wji=ηδjxji
对于BP算法,求导较多,因此最怕遇到局部最优点,而使得误差曲线可能不再降低。解决办法:从不同的初始点权重。
神经网络也存在过学习问题解决办法:在训练的过程中设置验证集
实际需要考虑的问题:初动量;学习率
其他网络
Elman Network:此算法有一定的记忆性,通过之前的输入推出答案,输出不仅仅取决于当前的输入,还取决于之前的输入
Hopfield Network:是一个全连接神经网络。类似于人大脑的记忆功能,利用收敛到局部最小值,实现联想记忆
五.聚类
1.无监督学习
分割型聚类:K-Means、Sequential Leader、Model Based Methods、Density Based Mthods
层次性聚类:Hierarchical Methods
聚类分析:寻找一组相似的目标
同一个簇的目标特征更接近,簇间特征差异大
无标签、数据驱动
没有严格的对错之分
聚类分析过程:
数据预处理(特征选择、数据降维等)
选择度量
分组(如果聚类结果好就直接输出,反之,则反馈到前面,执行一二步)
聚类应用:市场营销(划分客户)、地震研究、社交网络、图像分割
一般性要求:能够发现具有任意形状的集群、要求能够处理噪声和异常值等
2.K-Means
评估标准:假设聚成c类,Jc理论上能够达到0,说明聚类效果很好
算法过程:
- 决定K值
- 随机生成K个簇的中心点
- 将每一个样本点分配到与其最近的中心点上
- 使用每一个簇的均值更新原始中心点
- 重复3、4步骤,直到不再更新
- 返回K个中心点
优势:对于球形/似球形,收敛快;简单,适用于规则的不相交集群; 相对高效和可扩展O(t-k-n)t:迭代;K:质心数;N:数据点个数
劣势:如何确定K值;收敛至局部最优点;对噪声和离群点比较敏感
3.Sequential Leader Clustering
一个非常高效的聚类算法
不需要提前指定K
选择集群阈值。对于每一个新的数据点:计算新数据点到每个集群中心之间的距离。如果最小距离小于所选阈值,则将新的数据点分配到相应的集群,并重新计算集群中心。否则,创建一个以新数据点为中心的新集群
聚类结果可能受到数据点序列的影响
4.期望最大法
基于模型聚类:如高斯混合模型(用一组高斯函数逼近数据)
高斯函数:
混合高斯:
Expectation-Maximization (最大期望算法 EM):
通过迭代进行极大似然估计的优化算法,分为E步和M步,算法的收敛性可以确保迭代至少逼近局部极大值
5.密度与层次
基于密度方法:能够聚成任意形状、对噪点鲁棒性强、不需要确定K值、与人类视觉相似
DBSCAN
将数据划分成三类:
Core Point:核心点
Border Point:边缘点(在核心点周围)
Noise Point:噪点(需要消除)
DBSCAN中的簇:从核心点开始不断向外膨胀,将所有连通的点收起来
算法:
1.随机从未选择的点P除法
2.如果P是核心点,逐步进行所有点对该点密度可达的扩展从而形成簇
3.忽视噪点
基于层次聚类:根据需要对聚类结果进行划分、无需配置K、可能形成有意义的分类
生成一组嵌套的树状集群
Agglomerative:自底向上的迭代过程,重复直到仅剩一个簇(矩阵中数值合并)
如何计算簇间的距离:两点最近距离或两点最远距离
六.SVM
原理:
输入维度向高维映射并进行分类(升维),仍然 是线性分类器的一种,真正有效的点只有 support vector
如何选择超平面
间隔(Margins):超平面能够上下平移的距离
正好在虚线上的点称为支持向量(Support Vectors),支持向量规定了超平面的移动范围(该范围称为Margins)
margin越大,错误越不会影响结果,参数越好
1.线性SVM
本质:线性分类器
Soft Margin:在实际情况中,不能在一个超平面能完全将两类分开,所以放宽条件(Soft Margin),允许少数 点可以不满足约束条件
缺点:线性不可分的问题仍无法解决
2.非线性SVM
非线性SVM:在原始空间上无法用线性SVM进行分类,可以映射到另一个空间或高维空间中再进行分类。
目的:弥补线性SVM不能解决线性不可分问题的缺陷
3.SVM发展历程
SVM发展历程:
1.线性分类器——需要最大化Margin
2.线性SVM——需要处理噪点
3.Soft Margin——线性不可分问题
4.进行空间变换——计算复杂度高
5.Kernel Trick
VC Dimension:
模型能力指数。存在h个点,不论h个点如何打标签,该模型都能将这h个点分开,那么该模型的VC Dimension值为h
七.关联规则
1.项集与规则
频繁集(Frequent Itemsets):两件商品经常被同时购买,被称为Frequent Itemsets问题
关联规则(Association Rules):买了这本书的人会买另外一本书,被称为Association Rules
序列模式(Sequential Patterns)
Market-Based Problems:
Items:商品
Transaction:所有商品的非空子集,即购物小票
Cross Selling:交叉销售。当买一件商品时,会推荐买另一件商品(Up Selling:当买车时,会推荐各种配置,加大了价格)
Bundle Discount:捆绑打折
Shop Layout Design:Min Dis vs. Max Dis
可以抽象为:Sentences & words
Transaction:一组商品(items),即交易记录,且是非空子集
数据库(D):Transaction的集合
关联规则形式: P→Q where P⊂I,Q⊂I and P∩Q=∅
Itemset:即买的一组东西,k-itemset即有k件商品
2.支持度与置信度
支持度
,
即频率(多少客户买了某样商品,即比例)。通常来说,当Itemset越来越大时,支持度Support会越来越小,即单调不增。
关联规则的支持度Support,X→Y,即同时购买X和Y的频率(比例):
关联规则的置信度,即条件概率P(Y|X):
也可以表示为:
频繁集的支持度要大于设置的最小阈值Min Support σ
强关联规则的置信度Confidence要大于设置的最小阈值Min Confidence Φ
因此,关联规则问题,当给定I(所有商品)、D(数据库)、σ与Φ后,寻找满足条件的所有X→Y
3.误区
误区1:一个规则具有强置信度,但不一定有意义;
误区2:当两个商品出现的概率差距非常大时,有时没有意义;
误区3:两件事情相关,不一定有因果关系,仅仅是条件概率。
4.Apriori
Apriori算法:不需要数学公式
关键点:
任何一个频繁项,其所有非空子集都必须是频繁的。若有任意一个子集不频繁,则该项不频繁
若任意一个项集不频繁,其超集一定不频繁、
算法流程:
1.生成大小为1的各项
2.扫描数据库寻找频繁项
3.将频繁项合并生成候选项,大小是原大小+1
4.迭代2、3寻找频繁项,从1至k
5.避免产生已知不频繁的项集
6.需要多次扫描数据库
7.高效的索引技术如哈希、位图能够提高运行速度
Apriori的关键:如何从Lk生成Ck+1,不能生成太多,否则会冗余
5.序列模式
八.推荐算法
算法:TF-IDF、Vector Space Model、Latent Semantic Analysis、PageRank、Collaborative Filtering
推荐算法:帮助用户寻找用户所需要的信息。当信息不被推荐给用户,用户可能不知道该信息时,是好的推荐算法。是应用最广的数据挖掘技术
推荐算法分类:
基于内容推荐:例推荐同一作者的书
基于协同过滤推荐:询问朋友的意见
应用:
垃圾广告:垃圾广告因人而异,因此需要精准投放,而非撒网式投放
精准广告营销:Targeted Advertisement(Ads Engine),通过查看的新闻内容,推荐相关的广告
音乐推荐:通过听的时长对一首歌的喜欢程度,来推荐与用户爱好贴近的音乐
1.隐含语义分析
Tf-idf
TF-IDF:给定文档集和一系列单词,量化文档与单词的关联程度(一些单词的出现频率大于其他单词)
TF:Term Frequency, 单词在特定文档的出现频率
IDF:Inverse Document Frequency,例如a、the在所有文档都出现,因此没有意义,即这个单词是否在其他文档也出现,此时idf趋于0
Vector Space Model
使用数学模型将文档表达成向量
那么文档的相似度可有向量余弦夹角表示
将文本转为向量的问题:
1.Synonymy:同样的含义可能会使用不同的单词,导致不相关
2.Polysemy:多义词,导致精度很差
解决方案:
将维度压缩:Latent Sematic Analysis
2.PageRank
一个网页的PageRank越高,其重要性越高。通过指向我的网页的水平高低,以及指向网页的数量
3.协同过滤
Collaborative Filting:通过相似用户的喜好来判断是否推荐。
类别: Memory-Based CF(User-Based vs. Item-Based)、Model-Based CF
需要关注的问题:Gray Sheep(没有商品购买资料)、Shilling Attack(恶意好评、差评)、Cold Start(从来没买过商品,无法推荐)
User-Based:按行计算,通过别的用户对商品的打分,预测该用户对该商品的打分
Item-Based:按列计算,通过别的商品的分数,乘上相似性后预测该商品分数
Model-Based:通过朴素贝叶斯计算
九.进化计算
特点:
能适应不同的环境不同的问题,而且在大多数情况下都能得到比较满意的有效解
可并行性
Objective Function:
初探:
遗传算法基于达尔文进化论,但并不是完全相同的
在设置权重的时候,可以用原始值比例确定,也可以用序号确定
在选择时,可以两两PK选择,可以精英选择,可 以用百分率选择
选择策略 哪些染色体应该参与繁殖? 哪些后代能够存活下来?
策略1: 轮盘赌轮的选择 策略2: 等级的选择 策略3: 通过决斗选择 策略4: 精英主义选择,后代选择
进阶:
Crossover:
遗传算子: 杂交 在两条染色体之间交换遗传物质。
One Point Crossover
1.一点杂交 选择一个位置,后面的进行交换,前面的保持不变
Two Point Crossover
2.二点杂交 对两个位置之间的进行互换,其他的保持不变
Uniform Crossover
3.各个点进行杂交
遗传算子: 杂交在两条染色体之间交换遗传物质。
Mutation:
基因突变 在选定的位置随机修改基因值
区别:
GA遗传算法
框架:
参数:
遗传算法应用: 特征选择 聚类 参数控制 约束处理 多目标优化
GP遗传编程:
十.集成学习
集成学习(Ensemble Learning):能够使用许多学习算法(如决策树、神经网络、SVM),但需要有策略地将多个模型结合在一起从而更好地处理特定的机器学习问题
动机:1.提高单一模型的表现;2.减少选择到坏模型的可能性
方法:包括Bagging类、Boosting类
算法阶级:
1.Bagging
Combiners:
1.平均
2.投票:Majority Voting(Random Forest)、Weighted Majority Voting(AdaBoost)
Diversity多样性:
1. 使用不同的分类器
2. 使用相同分类器的情况下:使用不同训练集/不同参数/不同特征
3. 使用弱分类器:易于创建(如决策树只用树桩)。组合后能够形成强大的分类器
Bootstrap Samples:即有放回采样,得到不同的训练集,这样就能获得不太一样的模型
Bagging算法:
并行运行,通过Bootstrap对数据集采样,在每一个独立的分类器上训练。将未知样本输入,通过每一个分类器结果投票从而获得最终结果
Random Forests:Bagging经典算法,多棵CART。由于是有放回采样,因此会存在没有被选择过的数据。即2/3的原始数据会被选择,而剩下没被选择的数据被用作测试集。
优势:所有数据都能充分利用;调参少,精确度高;不太需要担心过学习;不需要特征选择
2.Boosting
Stacking:
并行运行,假设训练过程与Bagging相同,获得k个分类器。将k个输出按不同权重(通过分类器表现分配权重)重新作为输入再次进行训练(可用NN等,没有特别要求),通过训练对权重进行学习。
Boosting:
串行运行,会根据前者性能决定后者如何训练。后一项分类器会针对前一项分类器分类错误的样本进行重点学习。第三个分类器会将前两个分类器不一致的结果作为输入,生成第三个分类器
优势:能够减小方差;基础分类器可以很弱;训练样本具有权重;聚焦于被错误分类的样本
3.AdaBoost
AdaBoost是Adaptive Boosting(自适应增强)的缩写,它的自适应在于:被前一个基本分类器误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或预先指定的最大迭代次数再确定最后的强分类器
理论1:误差可以通过减小Zt而减少
误差上界:
优势:执行简单;几乎无需调参;能够证明有误差上界;免疫过拟合
劣势:α局部最优;陡然下降;噪点敏感
未来工作:理论深究;可解释性研究
4.RegionBoost
Adaboost并不是万能的,分配给每一个分类器的权重是固定的,因此可以在此基础上进行改进
动态权重模式:从α转变为α(x)
使用动态权重的算法称为RegionBoost。利用不同区域分类正确率的信息,调整分类器的权重
AdaBoost为模型分配固定的权重。 然而,不同的模型强调不同的地区。模型的权重应该依赖于输入。给定一个输入,只调用适当的模型。为每个模型训练一个能力预测器。估计模型是否可能做出正确的决定。用这个信息作为权重