数据算法基础与算法基础复习笔记
12: 精确率、准确率与召回率
TP: Ture Positive 把正的判断为正的数目 True Positive,判断正确,且判为了正,即正的预测为正的。
FN: False Negative 把正的错判为负的数目 False Negative,判断错误,且判为了负,即把正的判为了负的
FP: False Positive 把负的错判为正的数目 False Positive, 判断错误,且判为了正,即把负的判为了正的
TN: True Negative 把负的判为负的数目 True Negative,判断正确,且判为了负,即把负的判为了负的
1. 精确率(Precision)
精确率是相对于预测结果而言的,它表示的是预测为正的样本中有多少是对的;那么预测为正的样本就有两种可能来源,一种是把正的预测为正的,这类有TruePositive个, 另外一种是把负的错判为正的,这类有FalsePositive个,因此精确率即:P=TP/(TP+FP)
2. 准确率 (Accuracy)
准确率是指有在所有的判断中有多少判断正确的,即把正的判断为正的,还有把负的判断为负的;总共有 TP + FN + FP + TN 个,所以准确率:(TP+TN) / (TP+TN+FN+FP)
3. 召回率 (Recall)
召回率是相对于样本而言的,即样本中有多少正样本被预测正确了,这样的有TP个,所有的正样本有两个去向,一个是被判为正的,另一个是错判为负的,因此总共有TP+FN个,所以,召回率 R= TP / (TP+FN)
13:置信度与置信区间
置信度:以测量值为中心,在一定范围内,真值出现在该范围内的几率。一般设定在20 ,也就是95%, 95%是通常情况下置信度(置信水平)的设定值。
置信区间:在某一置信度下,以测量值为中心,真值出现的范围。
置信区间计算过程
现在我们要去调查某一地区男性的平均身高,通过抽样得到 100 人的身高样本,样本平均值为 170cm,样本标准差为 0.2cm。
如果我们现在要 95% 的置信度,我们就可以算出来置信区间在[169.9608,170.0392]之间,也就是说,我们用 100 个人去推测这个地区的男性平均身高,尽管我们只调研了 100 个人,但是我们有 95% 的这些男性的平均身高是在[169.9608,170.0392]之间。
计算过程如下。
1. 样本大小大于 30,符合正态分布,我们要通过样本的平均值来估计总体的平均值。
2. 标准误差:标准误差为 se=0.2/√100=0.02。
3. 置信度 95%,左右标准误差各 2.5%。
查正态分布表,标准分 z=-1.96;
置信区间下限 =170-1.96*0.02=169.9608;
置信区间下限 =170+1.96*0.02=170.0392。
因此,此区域男性平均身高在置信度 95% 情况下,置信区间为[169.9608,170.0392]。
14:回归
回归(Regression)是由英国生物学家弗朗西斯·高尔顿(FrancisGalton)提出来的。简单来讲,回归就是研究一个变量和另外一个变量的变化关系。其中一个变量我们叫做因变量,另外一个叫做自变量。多元的回归,就是研究一个因变量和多个自变量之间的关系。
根据回归使用场景的不同,可以分为线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归等等。
需要注意的是,相关性不等同于因果性。
“均值回归”:实际发生的数据比我们理论上的预测更加接近平均值,整体趋势上会慢慢向一个平均值发展。
用一颗平常心不断去提高自己的平均线水平才是正确选择。
15:聚类
聚类就是通过一些算法,把这些事物自动全都聚集起来,让这些聚好的类别(花类和叶子类)达到内聚和分离的特性。
聚类算法输入就是一群杂乱无章的数据,输出是若干个小组,并且这些小组里面会把数据都分门别类。组内的对象相互之间是相似的(内聚),而不同组中的对象是不同的(分离)。组内的相似性越大,组间差别越大,聚类就越好。
基本的步骤为:
step1:选定要聚类的类别数目k,选择k个中心点。
step2:针对每个样本点,找到距离其最近的中心点(寻找组织),距离同一中心点最近的点为一个类,这样完成了一次聚类。
step3:判断聚类前后的样本点的类别情况是否相同,如果相同,则算法终止,否则进入
step4:针对每个类别中的样本点,计算这些样本点的中心点,当做该类的新的中心点,继续step2。
上述步骤的关键两点是:
1. 找到距离自己最近的中心点。
2. 更新中心点。
K-Means 类似简化成三种问题:
1. 选大哥,找聚类中心的问题;
2. 找小弟,解决距离表示的问题;
3. 帮派会议,聚类收敛方法问题。
使用聚类算法的时候要先把一些异常点尽量剔除掉,或者单独把它们单独聚成一类。否则有一些很异常的数据就会影响我们聚类算法最终的准确性。
16:分类
常见的分类算法 C4.5——决策树
整体逻辑是一个
第 1 步,特征选择。决定使用哪些特征来做判断,筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。在特征选择中通常使用的准则是:信息增益。
第 2 步,选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。
第 3 步,决策树剪枝。剪枝的主要目的是对抗「过拟合」,通过主动去掉部分分支来降低过拟合的风险。
分类算法的核心就是在于经验不断积累,不断迭代自己的规则,从而得到最好的答案。
17:关联规则:啤酒与尿布
一般使用以下三个指标来衡量关联性:
1.支持度(Support)
支持度表示项集{X,Y}在总项集里出现的概率。表示A和B同时在总数I 中发生的概率,公式为:
Support(X→Y) = P(X,Y) / P(I) = P(X∩Y) / P(I) = num(X∩Y) / num(I)
其中,I表示总事务集。num()表示求事务集里特定项集出现的次数。
2.置信度 (Confidence)
置信度表示在先决条件X发生的情况下,由关联规则”X→Y“推出Y的概率。表示在发生X的项集中,同时会发生Y的可能性,即X和Y同时发生的个数占仅仅X发生个数的比例,公式为:
Confidence(X→Y) = P(Y|X) = P(X,Y) / P(X) = P(X∩Y) / P(X)
3.提升度(Lift)
提升度表示含有X的条件下,同时含有Y的概率,与只看Y发生的概率之比。提升度反映了关联规则中的X与Y的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性,即相互独立。
Lift(X→Y) = P(Y|X) / P(Y)
注意!在使用关联规则算法之前一定要通过业务的梳理,先规避掉有偏差的脏数据,选择最终真正对业务有用的规则。
关联规则挖掘出来的结果只是代表这两件事情有很强的相关性,但不能代表有因果关系,因果关系的确定要结合实际的业务经验。
18:蒙特卡洛算法和拉斯维加斯算法
蒙特卡罗算法原理就是每次计算都尽量尝试找更好的结果路径,但不保证是最好的结果路径。用这样寻找结果的方法,无论何时都会有结果出来,而且给的时间越多、尝试越多,最终会越近似最优解。
拉斯维加斯算法就是每次计算都尝试找到最好的答案,但不保证这次计算就能找到最好的答案,尝试次数越多,越有机会找到最优解。
蒙特卡罗算法的基本思想是精益迭代,进行多次求解,最终让最后结果成为正确结果的可能性变高。而拉斯维加斯的算法是不断进行尝试,直到某次尝试结果让你自己满意,当然这个过程中也会一直产生你无法满意的随机值。
所以拉斯维加斯的算法效率通常比蒙特卡罗的算法低,但是最终得出的解一定是这个问题的正确解,当然也有可能无法得到问题的解。
如何在这两类随机算法之间选择,那就要具体问题具体分析了。如果问题要求在有限时间和尝试次数内必须给出一个解,但不要求是最优解,那就用蒙特卡罗算法。反之,如果问题要求必须给出最优解,但对时间和尝试次数没有限制,那就用拉斯维加斯算法。
把这两种算法对应到工作和生活中,对拉斯维加斯算法来说,有些事情我们是需要精益求精,无论花多少时间都得把这件事情做细致做准确,否则后果可能会非常严重;有些地方反而是需要蒙特卡洛算法,在事情有大概比较清晰的方案的时候,要快速决策,否则如果把时间耽误了,反而最后获得的结果会更糟。
现在在工作上有一种创业方法叫做“精益”创业,其实核心思想就是和蒙特卡洛算法类似:在有限的时间和有限的资源情况下,不要一直思考或者规划找到“最优解”,而是通过快速迭代原型产品,通过用户的反馈不断地修正自己产品的方案,以达到在有限的时间和有限的资源情况下得到较为不错的结果。虽然这个结果不一定是最优的,但是总比使用拉斯维加斯算法创业,闷在家里闭门造车寻找最优解,直到耗尽了资源和时间要好。
对于管理企业来说,我们要高维度思考,不要把我们的有限的时间和精力浪费在不必要的事情上,整体的做事思路是抓大放小。而重要的事情要用拉斯维加斯算法一通到底,任何细节都不要放过,确保随机事件的正确性。
19:马尔科夫链
马尔可夫链专门研究在现实生活当中这一系列的事件,找到它们的内部运行规律,从而预测当这一系列事件达到平衡的时候,当前状态的下一步最可能发生的情况。
马尔可夫链蒙特卡罗算法(MCMC)
MCMC 由梅特罗波利斯于 1953 年在洛斯阿拉莫斯国家实验室提出,本质上是将马尔可夫链用于对蒙特卡洛方法的计算过程中。那时美国洛斯阿拉莫斯是当时少数几个拥有大规模计算机的城市,梅特罗波利斯利用这种计算优势,在蒙特卡洛方法的基础上引入马尔可夫链,用于模拟某种液体在气化之后的平衡状态。
马尔可夫链和其他数据算法联系非常紧密,它的预测结果好坏其实都依赖于概率转移矩阵是否准确,而这个概率转移矩阵的准确性最后又依赖于算法估算方法的合理性。
马尔可夫链的局限性。马尔可夫链的假设是后一个状态值和前一个状态相关,而和更靠前的状态无关。而这个假设在一些情况下是不太符合实际的。
其实,在我们工作和日常生活当中也有很多“马尔可夫链”:你现在的状态其实大部分都是由你上一个状态决定,没有人会走背字一直失败,也没有人能幸运到一直成功。真正的失败,很多时候都是自己遇到失败后从此一蹶不振,走不出来失败的这个状态才造成的。“没有迈不过去的坎”这句话用马尔可夫链的视角来看,那就是现在自己的状态,只和自己上一个状态相关,和整体无关。所以吸取完教训后,调整好现在的心态,用现在去影响你的未来。
“Tomorrow is another day”——你的未来只取决于你当下在做什么,而不是过去你曾经做过什么,毕竟“明天,是新的一天”。
20:协同过滤
协同过滤算法源于 1992 年,最早被施乐公司发明并用于个性化推送的邮件系统(施乐公司就是那个发明了 GUI 界面,被乔布斯发现并创造了 MAC OS 的公司)。最早这个算法是让用户从几十种主题里面去选 3~5 种自己感兴趣的主题,然后通过协同过滤算法,施乐就根据不同的主题来筛选人群发送邮件,最终达到个性化邮件的目的。到 1994 年的时候,协同过滤算法开始引入集体智慧的概念,也就是用更多的人群和数据去获取相关的知识。它允许用户贡献自己的一些行为和反馈,从而创造一个比任何个人和组织更强大机制,自动给用户发送喜欢的文章。基于这个思路,施乐发明了著名的 GroupLens 系统。在这个系统里面,用户每读完一条新闻都会给一个评分,系统会根据这些评分来确定这些新闻还可以推送给谁。(今日头条?)
推荐系统需要同时具备速度快和准确度高两个特点(需要在用户打开网站几秒钟就要推荐所感兴趣的内容或者物品),而协同过滤算法正好满足了这两点要求,这也是这个算法经久不衰。
三个最常见的协同算法:基于用户的协同过滤算法(User-based Collaborative Filtering)、基于物品的协同过滤算法(Item-based Collaborative Filtering)以及基于数据模型的协同过滤算法(Model-based Collaborative Filtering)。
基于用户的协同过滤算法
基于用户的协同过滤算法就是基于用户和用户之间的相似性,推荐你喜欢的东西,过滤你不喜欢的东西。
基于物品的协同过滤算法
这种算法就是根据用户群对于物品的购买或者评价发现物品和物品之间的相似程度,然后再根据具体用户历史使用的类似物品推荐给这个用户。
基于数据模型的协同过滤算法
先做模型,再进行相关的协同过滤。
使用协同过滤的算法最大的弊病在于,这个算法永远会给你想要的东西,它并没有价值观,你会被“惯”得越来越没有节制,把时间全都花费到各种各样的短视频、小文章、和你钟爱的小圈子里,但最终你并没有什么拓展和收获。它不能告诉你你应该去学什么、哪些价值观是对的,只有通过人的选择和经验才能告诉你,应该去学什么,而不是拼命满足自己的某些爱好。对于这方面的缺陷,现在有不少科学家尝试通过深度学习的方法模拟价值观、人类的思考来进行修正,这个算法会不断地精进。
21:深度学习
人类一直在寻求一套能够替代人类自身的机制。
RNN(Recurrent Neural Network)循环神经网络和 CNN(Convolutional Neural Network)卷积神经网络,它们都是模拟人脑的多个神经元多层次连接方式,通过大量反复的反馈和计算来实现最后效果。
任何一个算法在面对真正的实际问题时,都按三步走:
第 1 步,把问题抽象成计算机可以理解的问题。
第 2 步,设计和选择整体的算法组合和方案。
第 3 步,不断训练和调优。
我们遇到类似像围棋这种非常复杂的博弈类问题的时候,我们其实很难用单一的某种算法来解决。我们会做一个算法系统,发挥每一段不同算法的优势,最终得到我们想要的答案。
数据算法基础部分整合版思维导图
以上部分内容来自极客时间专栏,数据分析思维课。