机器学习算法应用和学习1基础篇1.1机器学习框架everda

机器学习:从数据中获得决策(预测)函数,使得机器能从大量历史数据中学习规律从而对新的样本做决策。

监督学习与非监督学习:简单来说,监督学习可以分出训练集和测试集数据,训练集有因变量y,用训练集拟合模型后,再去预测测试集的y来评估模型效果,最后才投入使用预测新的数据;而非监督学习没有因变量y,也就不存在训练集,直接用。

模型分类(根据目的划分):

分类——指的是预测的y是离散的,比如二分类、多分类;

回归——指的是预测的y是连续的,比如线性回归预测房价;

聚类——指的是将数据集划分成几类数据,类内数据相近(距离近),类与类之间数据差异较大(距离远);

关联分析——指的是在一堆事务(一个事务由多个元素项组成,比如一台电脑搜索过的关键词)中发现x—>y(意思是,x和y都是元素项,x和y出现次数足够多,x出现时y也出现的比例足够大)的模式;

频繁项发掘(只是关联分析的前一部分)——指的是在一堆事务中发现某些元素一起出现次数足够多,称为频繁的元素项的集合;

降维——指的是在维度特别多时可能需要将一些不重要的维度去掉或融合成一个新的维度,比如某两个维度存在共线性问题(即变化完全相同,没必要都留下)。

“原理概述”栏目:

在学习机器学习的过程中发现,最难的就是理解算法原理。毕竟某些算法涉及的公式、概念是需要数学基础的。但在应用中又没必要知道那么多,知道那么多结果发现根本应用不了场景才是最可怜的(显然,基础算法本来就不能直接应用场景,需要根据业务进行改动或创造)。而sklearn里又包含了足够丰富的算法,所以有时候没太大必要重复造轮子,避免在最初因为造轮子湮灭了学习机器学习的兴趣。

而这个栏目,我会尽量尝试用不同角度、不同程度、不同完整度、不同叙述方法去阐述算法原理,所以里面会有很多种版本,其中最简单的阐述就是“一句话概述”。如果你能看懂其中某一种,那么就可以直接去用代码了。

“代码API”栏目:

这部分会尽量以API的概念提供直接可用的代码。代码可以有不同的设计方案,所以这里也会有不同版本,可以互相参考和理解。

其他栏目:

比如优缺点、应用范围等等,我不会写官方的那些内容。我只用简单的语言写我能理解、认可以及认为有意义的部分。

术语部分:

机器学习top10算法:

C4.5,k-Means,SVM,Apriori,EM,PageRank,AdaBoost,kNN,NaiveBayes,andCART,十大算法都有汇总到,第一个和最后一个是决策树模型的两种算法,基础都是ID3。

优点:简单好理解;

缺点:计算量大,预测慢。

标称型

(数值型数据需要先人为划分为几类成为标称型数据,比如数值型的年龄,需要先划分为类似“青年、中年、老年”这样)

1.这里涉及到信息混乱度,用一个称为“熵”的度量计算。

2.划分前与划分后混乱度的差越大,说明划分后的数据越不混乱,即达到想要的目的,称为“信息增益”。

3.如果特征值都用完了某块数据还不是同一类,可以将类别占比较多的作为该块的类别(即少数服从多少)。

4.特征太多,数据太乱,构建出来的决策树这颗数可能过于“枝繁叶茂”,就存在过拟合问题,泛化能力较差(说人话就是,由于某些少量样本导致了不必要的分支,使得进来的新数据容易被错分,这模型也就不够普适了——所谓的模型越简单越好泛化)。这就需要一个形象地称为“剪枝”的过程,有“先剪枝”和“后剪枝”两种。“先剪枝”就是设定一个阈值,在给树不断加枝干时判断是否小于阈值,小于阈值就不要继续直接按少数服从多少给这一块盖戳结束;“后剪枝”就是决策树构建好之后,再剪掉小于阈值的枝干。

度量:信息增益,目标函数:max(信息增益)

1.朴素贝叶斯,“贝叶斯”我们知道是算法里应用的是贝叶斯定理,“朴素”的由来是指假设每个词条(词汇)的出现互相独立,显然某些词条还是有关联的,但朴素贝叶斯在某些领域(例如垃圾邮件过滤)效果也不错。

2.根据贝叶斯定理,要计算给定Document属于某个Category,只需要算出P(Document|Category),P(Category),P(Document)即可;

3.在计算中,由于每个词条都是特征变量,计算量大,所以是采用向量化计算的,具体过程大致是:

a.将训练文档集按词条去重得到词条集合的列表(也称“词条字典”);

b.计算每个类别的概率P(Category1)=文档为1类别数/总文档数;

c.计算每个类别中各个词条的概率向量P(word1,word2,word3,...|Category),向量的每个元素是每个词条在该类别文档中出现的次数(一个文档出现多次算1次)/该类别文档总词条数。

d.那么,计算某个给定文档属于某个类别的条件概率,首先将该文档向量化Vectorized_Samples_list(既改成同字典长度的向量,在该文档出现的词条对应索引的值为1,其他为0),则P(Category_1|Document)=sum(Vectorized_Samples_list*P(word1,word2,word3,...|Category1))*P(Category1)。

4.上述由于小数乘以小数会导致数值太小python直接返回0(即"下溢出”问题),所以可以改成取对数,即P(Category_1|Document)=sum(Vectorized_Samples_list*log(P(word1,word2,word3,...|Category1)))+log(P(Category1))。

5.上面每个词条出现就记为1,不出现记为0的简单模式称为“词集模式”,但更好的可能还需要剔除重要性低没有意义的高频词和停用词(例如“I”,“am”这种),且同一个词条出现的频次也可能需要叠加,这样的模式称为“词袋模式”。

度量:条件概率

1.SVM是个二分类问题,要解决多分类问题,是需要建立多个SVM分类器,比如五个分类的,先建立第1分类还是第2至5分类这样二分类的SVM,再叠加是第2分类还是第3至5分类这样二分类的SVM,以此类推。

2.在1个特征(1维)的问题里,超平面是一个点;在2个特征(2维)的问题里,超平面是一条线;在3个特征(3维)的问题里,超平面是一个面。超平面并不是指一个平面,只是一个代称,在n维问题里,超平面通常是n-1维的。

3.建立的两个平行于超平面穿过量类别离超平面最近的边界点的平面,称为“支持向量”,这些边界点称为“支持向量点”。

4.整个模型只受到“支持向量点”影响,其他点去掉与否都不影响。

5.这个算法的主要难点是如何“找到使得两支持矢量距离最远的超平面”,这里涉及到拉格朗日等概念。

6.如果无法用一个超平面来区分为两类,称为“线性不可分”问题,就涉及到要将“线性不可分”转为“线性可分”问题。通常是通过升维来进行,比如一个二维的非线性问题,可能通过映射到3维从而变得线性可分。

度量:两支持向量的最小距离,目标函数:min(两支持向量的距离)

1.Sigmoid函数是一个x值域是(-∞,+∞),y值域是(0,1)的单调递增函数;

2.预测y值>0.5为1类,<0.5为0类,y值也可以解释为为1和0类的概率;

3.同样使用“最小二乘”概念,求得最佳方程,得到目标函数;

4.要使得目标函数达到最小,需要采用一种称为“梯度下降”的算法,其过程大致为:在一个类似山脉的超平面上,从任一点出发,计算偏导数,沿着偏导数为负的方向前进一定距离(称为“学习速率”),直到初始点与移动后的点差值变化很小(称为“收敛”)为止。

度量:最小二乘,目标函数:最小二乘,目标函数解法:梯度下降

1.分类器集成方法是叠加多个同类或不同类的弱分类器(错误率较高),以达到降低错误率的目的。目前有两种方法,一种是bagging方法(代表是随机森林),另一种是boosting方法(代表是AdaBoost)。其区别在于,bagging方法每个弱分类器是并行,权重是一样的;而boosting方法每个弱分类器的串行的,权重不一样,其权重取决于其训练分类时的成功度。

2.本算法的两个难点在于,在迭代过程中如何调整下一次迭代的各样本的权重,以及如何计算每个分类器的权重。

3.注意AdaBoost算法要求分类标签是-1和1,不是0和1,多分类问题也还是需要处理为多个二分类问题。

4.第一次迭代每个样本的权重是一样的,第二次迭代根据第一次迭代预测分类结果是否正确重新调整权重,正确调整为下面左边的权重,错误调整为下面右边的权重(其中D是上一次迭代每个样本权重的向量,α是上一次迭代分类器的权重)。

5.每个分类器的权重为

其中ε是该分类器的错误率=未正确分类的样本数/总样本数。

6.每个分类器的权重*分类结果(-1或1)之和大于0,预测结果为1;小于0,预测结果为-1.

1.简单线性回归模型:y=β0+β1x+ε,β0称为截距,β1称为斜率,ε称为偏差。

2.该算法的难点在于找到一条最佳的直线,什么时候最佳呢?有一种称为“最小二乘法”的概念表示每个点到这条直线的距离平方和最小就是最佳;

3.根据“最小二乘法”,求得

4.1中的方程式是真实y值和真实x值,ε是表达在预测值上加的一些偏差,实际求得的y是期望值。

度量:最小二乘

1.多元回归模型:y=β0+β1x1+β2x2+...+βpxp+ε.

2.同样根据“最小二乘法”算得b0、b1、b2...,其中涉及到代数、矩阵运算。

1.需要给定划分为几个分类,有一个统计量SSE可以辅助测算划为分几类比较合理。

2.初始点的选择会影响结果。

度量:点与点的距离

(类似购买商品清单的数据)

1.关联规则有两部分,一是频繁项集挖掘,二是关联规则生成。

2.频繁项集挖掘的是通过计算项集的支持度(项集出现次数/事务次数)是否大于给定的最小支持度实现的;

那么该算法的难点就转化为如何快速判断所有项集的支持度是否大于最小支持度和所有规则的置信度是否大于最小置信度的问题。

3.Apriori的一个重要原理是,如果某个项集是频繁的,那么它的所有子集也是频繁的。这个观点直观上没什么用,但反过来就有用了,也就是如果一个项集是非频繁集,那么它的所有超集也是非频繁的。

所以在判断所有项集的支持度是否大于最小支持度时,可以从单个项集开始,如果单个项集支持度小于最小支持度,那么就不用判断叠加其他元素的项集了,依此类推完成判断完所有项集。

4.同理,如果某条规则不满足最小可信度要求,那么该规则的所有子集也就不满足最小可信度要求。

所以在判断所有规则的置信度是否大于最小置信度时,可以先1个频繁项集开始,先生成右侧包含1个元素的规则列表判断置信度,置信度小于最小置信度的节点下面几层右侧包含多个元素的置信度也很低,依此类推。(事实上这个过程我不太熟,后面再说)

度量:支持度,置信度

1.一个事务是类似一次购买商品清单的数据,所有事务样本就是一堆类似购买清单的数据。

2.元素项指的是每个商品,元素项集指的是元素项的组合(例如:多个商品,包括1个)。

3.支持度就是出现次数/总事务数,支持度指的是元素项集的支持度。

4.最小支持度是需要人为给定的,小于这个阈值的将去除。

5.频繁项集是事务中大于最小支持度的所有元素项集。

6.FP-tree是一个存储事务的存储结构,方便遍历,相比Apriori算法的多次遍历,FP-growth只需要遍历两次原始数据。

度量:支持度

2.理解上,比如二维数据散点图,第一个坐标轴就是覆盖数据的最长那条线A,第二个坐标轴是正交(垂直)于它的方差最大的那条线B,此时B的影响不是很大可以去掉,即转化成一维数据,更方便分类了。

2.计算过程涉及到协方差,大致过程:

3.其他降维技术还有因子分析、独立成分分析,PCA是应用范围最为广泛的。

优点:降低数据复杂性,保留最重要的几个特征。

缺点;不一定需要,可能损失有用信息。

1.理解上,例如用户是否看过图书的100w*1w大小的矩阵数据(行向量是用户,列向量是图书),事实上可以分解成三个小矩阵乘积的形式来近似。

其中,Σ只有对角元素,其余为0,对象元素是从大到小排列,这些对角元素称为奇异值。

2.仅需保留90%能量信息(用平方和度量)或上万维度时保留前两三千的奇异值即可近似于原始矩阵。

1.在EM算法目的的理解上,例如应用在高斯混合模型中:

假如从学校中分别抽取男100人,女100人,假设这两类人群分别都是服从高斯分布(正态分布,一般都符合正态分布)的,可以算出两类人群的均值和方差,这两样本均值就是对校园的两类人群总体的似然估计。

那么,假如我们不知道分男女,只是抽取了100人,那此时直接算均值和方差就不具有代表性了,因为其中有一个隐变量——性别,这实际是两个高斯分布混合在一起,那么EM算法就可以更好地进行参数估计。

2.EM算法分两步,第一步是期望步骤(E-step)——对极大似然取对数,第二步是最大化步骤(M-step)——对每个样例的每个可能类别z求联合分布概率和。

1.核心思想:

如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高;如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高。

THE END
1.独家菜鸟级机器学习入门(附代码实例)现在当这些算法需要训练(Train)和校对(Calibrate)的时候, 其实是需要去找出一组点之间的最小距离。让我们看图更能说清楚。 以上图为例。这是一个经典的线性回归(Simple Linear Regression)的例子。蓝点表示想要预测的数据。红线表示“最佳拟和线”,该线是机器学习https://mp.weixin.qq.com/s?__biz=MzI1MjQ2OTQ3Ng==&mid=2247496248&idx=1&sn=ea19a9160d85b92060eafd4eeef8ce36&chksm=e9e1fbb3de9672a56e3c7c35792536e5abd1cf536d829beeeed52e1182059642c88e2b4ac4f7&scene=27
2.67页PPT,学透机器学习算法应用及数据处理(附下载)作为AI的重要分支,机器学习在推荐系统、在线广告、金融市场分析、计算机视觉、语言学、生物信息学等诸多领域都取得了巨大的成功。机器学习并不是像我们字面理解的那样,让冷冰冰的机器去学习,或者狭义的理解为让机器人去学习。 机器学习,从本质上来说,可以理解为算法学习(Algorithm Learning)、模型学习(Model Learning)或https://www.jianshu.com/p/fd5cff6ce3bf
3.机器学习实习记录:探索机器学习算法的实践与应用机器学习在这篇文章中,我将分享我的机器学习实习经历,包括实践项目的详细描述以及相应的源代码。通过这些实践项目,我深入了解了机器学习算法的原理,并将其应用于不同的领域,以解决现实世界中的问题。 项目1:房价预测 在这个项目中,我使用了一个经典的机器学习算法——线性回归,来预测房屋的价格。首先,我收集了一个包含房屋https://download.csdn.net/blog/column/12438025/133230425
4.张量神经网络机器学习算法及其应用题目:张量神经网络机器学习算法及其应用报告人:谢和虎 研究员 中国科学院数学与系统科学研究院)时间:2023年9月19日(星期二)15:00-16:00地点:宁静楼117室报告摘要:本报告介绍我们最近设计和发展的张量神经网络及其相应的机器学习算法,然后介绍其在求解高维偏微分方https://math.tongji.edu.cn/info/1385/10895.htm
5.机器学习及其应用——汪荣贵杨娟薛丽霞编著深度凝练机器学习的现有知识体系,注重突出对基本理论与关键技术的介绍和讨论。 尽可能用朴实的语言深入浅出地介绍机器学习理论及相关算法设计技术。 在每个章节穿插相应的应用实例,使得广大读者能够比较系统地掌握机器学习应用技术。 本书教学资源,样书可添加小编微信13146070618索取 《机器学习及其应用》比较系统地介绍机器学http://www.cmpedu.com/books/book/5600562.htm
6.字节跳动AI高级产品经理田宇洲:AI产品经理需要掌握的核心算法这个问题我们拆解开看,先说AI产品经理,我个人接触到的AI产品经理可以分为两类,一类是将机器学习和深度学习能力产品化的产品经理,如阿里PI,第四范式先知平台的产品经理,或者BI系统中负责机器学习算法模块组件化抽象的产品经理;一类是AI解决方案产品经理,也就是将AI技术(机器学习,深度学习等技术)应用于业务或用户使用场https://maimai.cn/article/detail?fid=1246742214&efid=hW5NlFAEkS-MHjfZl5IAxg
7.机器学习(32)之典型相关性分析(CCA)详解文末有福利【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 人工智能与Python公开课 限时免费 文末领取 前言 典型关联分析(Canonical Correlation Analysis,简称CCA)是最常用的挖掘数据关联关系的算法之一。比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力https://cloud.tencent.com/developer/article/1085170
8.BoostKit大数据业界趋势鲲鹏大数据组件增强特性和典型配置业务场景延伸,数据量爆发式增长,使得开源大数据机器学习算法的应用场景广泛而多样。但随之也带来了更大的挑战,开源算法收敛速度慢,硬件匹配度不足,导致很多场景算不了、算不快、算得贵。 鲲鹏应用使能套件BoostKit提供基于开源算法深度优化的机器学习算法,为开发者提供极致性能的大数据分析体验。 https://developer.huawei.com/consumer/cn/blog/topic/03898238728230088
9.数字化观察(100)华夏银行吴永飞等:数字金融领域小样本学习技术的机器学习算法模型 传统的商业银行风控体系以定性风险管理为主,主要使用风控规则及客户评级等方法,辅以线下尽调的方法;传统风控模型对包含客户历史行为和相关活动的数据进行分析,但难以预测性地揭示未来风险的变化情况,且数据获取方式单一、定量分析结果相对较弱。数字经济时代下面向数字金融发展,商业银行越来越强调运用金融https://bank.hexun.com/2022-05-31/206058282.html
10.《常用算法之智能计算(三)》:机器学习计算从更广泛的意义上来看,机器学习是人工智能的一个子集。人工智能旨在使计算机更加智能化,而机器学习已经证明如何做到这一点。简而言之,机器学习是人工智能的应用,通过应用从数据中反复学习得到算法,可以改进计算机的功能,而无需进行明确的编程。 在给出机器学习计算各种算法之前,最好是先研究一下什么是机器学习和如何对http://www.kepu.net/blog/zhangjianzhong/201903/t20190327_475625.html