python机器学习(一)算法学习的步骤、机器学习的应用及流程(获取数据、特征工程、模型、模型评估)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

机器学习入门

机器学习中需要理论性的知识如数学知识为微积分(求导过程线性回归的梯度下降法)线性代数(多元线性回归高纬度的数据矩阵等)概率论(贝叶斯算法)统计学(贯穿整个学习过程)算法根据数学基础一步步的推导出来的。
需要编程语言把学到的知识应用到实践中python语言的语法比较简单第三方库比较丰富可以在各行各业发挥作用很方便的对数据进行分析和处理进行模型的训练。
机器学习算法的学习主线为K近邻算法、线性回归算法、梯度下降法策略、逻辑回归算法、决策树算法、集成算法于随机森林、支持向量机(SVM)、贝叶斯算法、聚类算法、降维算法等。算法间的关联度比较低 不要因为一个算法的不理解而放弃整个阶段的学习。

算法学习的四大步骤

  • 第一步掌握经典的算法(推导的原理、代码的实现)
  • 第二步读懂算法代码知道算法是怎么由数学实现的通过代码实现推导的过程
  • 第三步写出经典的算法。自己尝试去模仿写一下。
  • 第四步改算法。通常不需要我们从0到1去构建算法看懂别人的算法原理基于别人的文献去改一些算法。

发展方向

1.python数据分析师
2.AI基础

人工智能的分支

人工智能的应用已经渗透到我们的生活当中现在仍处于弱人工智能的阶段(基于数据去做决策的如AI推荐系统AI智能回复等并不是人工智能的思考能力强人工智能是指机器具备了人的思考能力)机器学习是AI方向的基础。人工智能会替代一些重复性的劳动工作如高铁站的检票员银行的柜员等。
1950年初人工智能(Artifical Intelligence)已经出现应用在有钱人的娱乐世界下棋的领域如五子棋飞旗国际象棋围棋等。到1980年代的时候出现了机器学习(Machine Learning)西方互联网发展的比较迅速作为人工职能的分支机器学习实现了自动识别垃圾邮件。到2010年随着时代的发展业务量增多如上班的人脸打卡系统购物网站的智能客服等等出现了深度学习(Deep Learning)用来解决图像识别的问题。
人工智能、机器学习、深度学习的关系
人工智能是一个更加广泛的词语机器学习是实现人工智能的一个途径深度学习是机器学习的一个分支社会需求的发展导致深度学习(神经网络算法)慢慢发展壮大可以解决实际的需求。

人工智能必备三要素

数据弱人工智能需要数据(经验)来判断如等公交时对公交车到达时间的判断。对于机器而言也需要大量的数据做支撑。
算法合适的算法
计算力计算的能力处理大量的数据。可以放到服务器上运行真实的数据和代码。
CPU办公使用商务本对文件进行读写操作轻薄方便携带运行的数据量小。
GPU游戏本对大量数据进行计算和处理笨重运行的数据量大。
服务器云服务器和部署的服务器数据量比较大。

机器学习应用

机器学习是从数据中自动分析获取模型并利用模型对未知数据进行预测。应用的方面图像识别、推荐系统、自动驾驶。

图像识别

小孩看到小猫咪2-3次就可以分辨出猫和其他动物机器则需要大量的算法去训练才可以识别。人可以快速的去学习去识别人的学习能力比算法要好很多。机器去学习的时候需要提取出来猫的特征比如耳朵尖尖的眼睛圆圆的嘴巴鼻子等。然后对特征进行归纳机器根据特征来判断是不是猫咪根据特征进行分类建立模型当有新的图片输入机器就利用建立的模型来判断是否是猫咪。
图像识别其实是把图像数据化的过程特征值需要不停的调试筛选核实检验等。
在这里插入图片描述

推荐系统

推荐系统在生活中无处不在打开一个软件就会出现被推荐的现象是非常成功的商业模式可以根据我们浏览过的数据、加购的数据、购买的数据以及其他的数据来推荐给用户所需要的产品。每个人打开应用软件显示的内容是不一样的可以说是千人千面。
比如在某宝(某东、某团)上买了一款手机会给你推荐跟手机相关联的产品比如充电器手机壳钢化膜等等跟产品相关的其他产品使用关联算法促进你的消费。如沃尔玛超市的线下推荐系统根据女孩买纸巾的习惯判断女孩是否怀孕从而推荐婴幼儿产品。
在这里插入图片描述

自动驾驶

不论是国内还是国外目前自动驾驶都已经达到了一定的水平。国内的百度、阿里、腾讯都在研发自动驾驶目前还是处于辅助的地位还不能大面积普及通过车载摄像头和车载雷达搜集周围的信息导入到模型中进行训练、决策对事物进行精准的定位。受限于网络的延迟还没有被完全的全部应用。
在这里插入图片描述

机器学习的流程

历史数据好比人的经验把数据进行清洗和规范化并不是每个数据都是有用的需要提取特征归纳偏好特征然后训练出模型通过模型评估对模型的质量进行检验模型评估后比较好的才会使用新的数据进行测试预测相应的结果。不论使用哪个算法流程是基本一致的。
在这里插入图片描述

获取数据(历史数据)

  1. 第一种数据有目标值而且是连续的。
    如楼房的位置、楼层、大小、朝向等等都会影响到房子的价格房子的价格是有目标值(标签值)的根据层数的不同房子的价格是连续的发生变化。
  2. 第二种数据有目标值是离散的。
    动作片和爱情片根据打斗的次数进行区分类型是有明确的目标的要么是动作片要么是爱情片是离散的数据。
    在统计学中连续的通常是数值离散的通常是分类。
  3. 第三种数据没有明确的目标值我们可以根据自己想要的样子把数据聚在一起化分成想要的类型。
    前两种数据有特征值和目标值可以通过特征进行推理有目标值有评判标准来衡量最终的结果目标值是有标签的分为连续和离散的第三种只有特征值没有明确的目标值怎么划分都可以没有对错之分只要能划分到一起就可以。

一行数据我们称之为一个样本如需要分析的每一部电影一列数据我们称之为一个特征如每部电影的打斗次数、接吻次数、类型等构成了历史数据部分。
根据上述的分析大致分为两类数据类型第一类为特征值+目标值目标值来衡量最终的结果分为连续和离散第二类只有特征值没有明确的目标值怎么划分都可以没有对错的评判标准。

数据基本处理

数据刚获取下来往往会有很多问题我们要对数据进行最基本的处理。
在这里插入图片描述
在上图数据中可以明显的看到NaN、缺失值、单位、每列表示的意义等信息都要进行处理。
对于列名缺少数据标注不知道每一列数据表示的意义有大量的缺失值数据的单位不一致。比如对餐饮的评价口味是按百分制服务是按五分制如果要做综合打分的话要统一计分方式需要一个归一化的过程。
坚持的原则是完全合一

  • 完整性单条数据是否存在空值统计的字段是否完善。
  • 全面性观察某一列的全部数值在excel种选中一列可以看到该列的平均值、最大、最小值等通过观察判断数据是否有问题如数据差异性大、单位统一、数据定义、单位标识、数据本身等。
  • 合法性数据的类型、内容、大小的合法性。如数据种是否存在非ASCII字符性别除了男女之外填写了未知、不明确等年龄超过150岁或者小于0等如果不处理这些不合法的数据就会干扰正常数据。
  • 唯一性数据是否存在重复记录行数据和列数据均需要是唯一的如一个人不能重复记录多次一个人的体重也不能在列指标中重复记录多次等。

特征工程(非常重要)

特征工程是使用专业背景知识和技巧处理数据使得特征能在机器学习算法上发挥更好的作用的过程提炼出比较重要的特征然后再进行处理和择优。
比如生物学的学生学习python和机器学习需要观察白细胞和红细胞的个数这时就要区分二者的差别。根据观察归纳白细胞和红细胞的特征然后去建立特征。面积大的是白细胞小的是红细胞周长大的是白细胞短的是红细胞白细胞不圆红细胞比较圆圆里面粗糙的是白细胞平滑的是红细胞。
在这里插入图片描述
根据特征进行红白细胞的划分并不说建立的所有特征都可以拿到算法里去使用的我们要提取偏好更加优异的特征去训练算法。
特征工程的内容包括如下

  • 特征提取计算机看不懂分析出来的特征将文本信息转为计算机可读懂的数字计算机只能读懂二进制数。适用于分类型、离散型的数据。
  • 特征预处理通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程。比如同是80分的两个项目但是总分不一致一个是满分100一个满分720此时要对数据进行归一化及标准化。适用于连续性的数据。
  • 特征降维在某些限定条件下降低随机变量(特征)个数得到一组“不相关”主变量的过程。从多变少、从高维变低维、把相关性变为不相关性的过程。

如特征的提取非常的好数据很完美则模型建立的很差最终预测的结果也会非常好如果特征数据非常差模型建立的再好最终得到的结果也不会很差。

模型

模型即为机器学习算法选择合适的算法就要了解机器学习算法的分类根据数据集组成的不同主要划分为

监督学习(Supervised learning)
无监督学习(Unsupervised learning)
半监督学习(Semi-Supervised learning)
强化学习(Reinforcement learning)

在课程中主要学习监督学习无监督学习掌握经典的算法。

监督学习

监督学习简单理解就是有目标值又主要分为回归问题和分类问题。
房价、电影的预测数据就是有明确的目标值。下图展示的回归问题训练出来的模型是 y=kx+b把x和y作为数据进行传入训练出k=2当x为3时可以预测y为6。回归算法分为线性回归(一元、多元)、岭回归。
还有分类问题如下图预测红白细胞如label0为白细胞label1为红细胞有明确的目标值或者是红细胞或者白细胞通过一条线把红细胞和白细胞分割开有点号和叉号相互分布在其他区域这为误差。分类问题的算法K-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络。
在这里插入图片描述

无监督学习

无监督学习意味着输入数据没有被标记也没有确定的结果(无具体目标)。样本数据类别未知需要根据样本间的相似性对样本集进行分类(趋向于聚类的过程)试图使类内差距最小化类间差距最大化。如对不同的图形本身没有分类可以根据图形间的间距来进行划分距离比较近的划分为一类使用的算法是K-means、Dbscan、PCA降维手段。

总结
监督学习有标签(目标值)可以做分类或者回归
无监督学习没有标签(无目标值)可以做聚类

半监督学习

半监督学习可以简单理解为一部分数据有目标而另一部分数据无目标。主要用于监督学习效果不能满足需求时使用半监督学习来增强学习效果。

增强学习

增强学习主要用于自动进行决策并可以做连续决策。整个过程都是动态的上一步数据的输出就是下一步数据的输入。
好比人类进行的动作用于阿尔法狗下棋的时候不停的快速的进行决策。告诉模型下棋的规则让自己跟自己去博弈但只用三天时间就打败了下棋第一人时间越长就越厉害。

模型评估(非常重要)

模型训练出来并不是直接使用而是要进行模型评估对于比较优秀的模型才会真实的投入使用模型评估是非常重要的。
模型评估是模型开发过程中不可或缺的一部分有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。
模型评估是用来评估模型误差的大小在模型中放入测试数据得到预测结果跟真实结果的差异即为误差误差越小模型越优秀。

误差主要分为

  • 经验误差在训练集上的误差相当于课后做章节练习
  • 泛化误差对未知数据上的误差相当于学习后期末考试

思考只有一个包含m个样例的数据集x为特征y为目标 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . , ( x m , y m ) } D= \{ (x_1,y_1),(x_2,y_2),.....,(x_m,y_m) \} D={(x1,y1),(x2,y2),.....,(xm,ym)}此时这个数据可能既要去训练模型又要去测试这个模型的好坏这样可靠吗
这样是不可靠的好比在考试前做了一套一模一样的考试题此时的考试就没有作用了一组数据既做训练又做测试就会失去原本的效果。我们需要对数据进行划分分为训练集和测试集。一部分数据用于测试一部分用于训练。

经验误差

保留测试集的方法

  • 留出法股票10年的历史数据进行模型训练前8年做训练集后2年做测试集。数据分布的不是很均匀比如股票前8年亏损后2年盈利打破了原有连续数据的分布。也可以73分等。

留出法的实现方式
1.直接划分为以N成训练集与M成测试集
2.每层数据随机抽取N成训练集与随机抽取M成测试集。
在这里插入图片描述

  • K折交叉验证把每一份数据均做一次测试集把测试结果求平均得到返回结果。适合在数据量小的情况下使用对计算力要求比较高如把数据集D分为10等份前9份作为训练集最后1份作为测试集得到测试结果1将1-8份和第10份作为训练集第9份作为测试集得到测试结果2依次类推最后把2-10份作为训练集第1份作为测试集得到测试结果10把得到的10个结果进行平均返回结果。

K折交叉验证的实现方式把数据集分为10份每次从数据集中选取9份为训练集1份作为测试集去训练模型得到测试结果最后把得到的10次的测试结果进行平均得到返回结果。但是此方法适合在数据量比较少的情况下进行。当数据量比较大时对电脑的计算力要求比较高。
在这里插入图片描述

  • 自助法(有放回的抽取样本)给定包含m个样本的数据集D对它采样得到数据集D’每次随机从D中挑选一个样本拷贝到D’再将该样本放回初始数据集D中使得该样本下次采样时仍有可能被采到执行m次后就得到一个包含m个样本的数据集D’这就是自主采样的结果。

留出法和K折交叉验证法的缺陷
从原样本中保留了一部分样本数据作为测试集导致训练集的数据小于原集合样本数据的规模不同会有偏差
自助法是随机的有放回的抽取样本去构建训练集保留了数据的随机性训练集和测试集不影响原本的个数解决了留出法和K折交叉验证法的缺陷。

比如有10个数原样本为{1,2,3,4,5,6,7,8,9,10}可直接进行训练
随机有放回的抽取  {2,2,3,5,4,6,7,8,2,1}可以出现重复值
选中的概率为1/10
没有选中的概率为 1-1/10
10次未选中的概率为 (1-1/10)^10
m次就为(1-1/m)^m

自助法的实现过程中D中有一部分样本在D’中多次出现另一部分样本不出现。那么样本m在采样中始终不被采到的概率是 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1m1)m取极限得到 lim ⁡ n → + ∞ ( 1 − 1 m ) m = 1 e \lim_{n\rightarrow+\infty} (1-\frac{1}{m})^m=\frac{1}{e} n+lim(1m1)m=e1

三种方法用于训练集和测试集的划分。
训练集好比课本知识验证集好比作业或模拟考试用于调参比如在集成算法中调出最优的参数测试集好比是考试。验证集、训练集均可进行调参训练集调参的样本数量会比较大速度会受影响抽取验证集进行调参会大大减少对速度的影响它们三者是622的划分样本集。

性能度量

性能度量是评估模型的指标在预测任务中给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),.....,(x_m,y_m)\} D={(x1,y1),(x2,y2),.....,(xm,ym)}x为特征y为目标值其中 y i y_i yi(第i个样本的y值)是 x i x_i xi的真实值 f ( x i ) f(x_i) f(xi)为预测值。如果需要评估该模型的性能我们需将真实值 y i y_i yi与预测值 f ( x i ) f(x_i) f(xi)进行比较。误差为预测值与真实值之间的差距。
回归任务中最常用的性能度量是"均方误差"(Mean Squared Error) M S E = ∑ i = 1 m ( f ( x i ) − y i ) 2 m MSE=\frac{\displaystyle \sum^{m}_{i=1}(f(x_i)-y_i)^2}{m} MSE=mi=1m(f(xi)yi)2
例如
数据集为{(1,2),(2,4),(3,5)}
预测值为{(1,3),(2,4),(3,6)}
均方误差为((3-2)^2+(4-4)^2+(6-5)^2)/3

更一般的对于数据分别D和概率密度函数p(.)均方误差可描述为 M S E = ∫ x → d ( f ( x ) − y ) 2 p ( x ) d x MSE={\displaystyle \int_{x \to d}(f(x)-y)^2}p(x)dx MSE=xd(f(x)y)2p(x)dx
通常数据并不是只有真实值和预测值还有概率的问题假如出现的概率为 0.30.50.2均方误差就为((3-2)^2*0.3+(4-4)^2-0.5+(6-5)^2*0.2)/3

  • 错误率
    分类错误的样本数占样本总数的比例,如有5个样本有2个样本分类错误错误率为2/5
    E ( f ; D ) = 1 m ∑ i = 1 m I I ( f ( x i ) ≠ y i ) E(f;D)=\frac{1}{m}\displaystyle \sum^{m}_{i=1}\Iota\Iota({f(x_i) \neq y_i}) E(f;D)=m1i=1mII(f(xi)=yi)
    当预测值不等于真实值的时候说明分类错误出现一次计分为1分类正确计分为0公式为将计分求和代表总的出错除以总样本的数据。
  • 精准率
    分类正确的样本数占样本总数的比例 a c c ( f ; D ) = 1 m ∑ i = 1 m I I ( f ( x i ) = y i ) = 1 − E ( f ; D ) acc(f;D)=\frac{1}{m}\displaystyle \sum^{m}_{i=1}\Iota\Iota({f(x_i) = y_i})=1-E(f;D) acc(f;D)=m1i=1mII(f(xi)=yi)=1E(f;D)
    预测值与真实值完全相同的话计分为1将计分求和除以总个数就是精准率也可以写为1-错误率。
    常用的错误率和精准率不能满足所有的需求比如有以下数据
    数据集 D = [1,2,3,4,5,6,7,8,9,10]做一下二分类如果数据为5是正确的结果为1不为5则是错误的结果为0分类有明确的类别错误率为9/10。
    单看这两个指标会存在一个问题模型很一般结果却很好。这时还需要其他的指标如查准率和查全率。
    在这里插入图片描述
    真实情况和预测结果都分为正例和反例。
    假如有100个样本数据真实情况 y y y 为1,0,1…其中正例60个反例40个预测数据 y ~ \tilde{y} y~为0,1,0,1…其中正例70个反例30个。此时真实情况中整理为60反例为40预测结果中正例为70个反例为30个假如真正例为50个则假正例就为70-50=20个假反例为60-50=10个假正例为30-10=20个。
    此时查准率为50/(50+20)查全率为50/(50+10)
  • 查准率
    正确预测为正占全部预测为正的比例 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
    也即是预测的结果中有多少是真实的。
  • 查全率
    正确预测为正占全部正样本的比例 R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
    也即是真实情况中有多少是预测出来的。

泛化误差

预测数据集的误差泛化误差的评估标准为拟合情况。拟合情况为模型评估用于评价训练好的模型的表现效果其表现效果大致可分为两类欠拟合、过拟合。

欠拟合

比如现在训练来人脸识别的模型把人脸的图片传进去提取特征建立数据特征机器学习到的人的特征为 眼睛、鼻子、嘴巴把有类似特征的图片传进去后也识别为了人。由于机器学习的人的特征太少所以有眼睛、鼻子、嘴巴特征的都被识别成了人也就将猩猩也识别成了人。
在这里插入图片描述

过拟合

所建的机器学习模型或深度模型的训练样本中表现的过于优越导致在验证数据集以及测试数据集中表现不佳。
在这里插入图片描述
由于机器学习的特征很多并且单一提取的特征过于优越认为人都是黄皮肤的若有黑皮肤的留学生进行识别则会将其归类为未知这也就是过拟合。

小结

进行模型训练需要准备的工作
1.要有历史数据

  • 对数据的划分
    • 连续的数据(如1-10)+有目标值的数据(有明确的目标如标签)
    • 离散的数据(分类的类别)+有目标值的数据
    • 无目标值的数据。
  • 数据表中行列的意义在一组数据中
    • 行代表样本一行代表一组样本
    • 列代表特征比如预测房价要知道房子的面积、地理位置、楼层等均为该房子所具备的特征。

获取到的历史数据不能直接进行模型训练如爬虫中得到的数据有些内容没有显示完全经过数据分析进行处理保存的时候就会有缺失值记录的数据也会有缺失值所以要对数据进行基本的处理。
2.数据处理
要求数据坚持的原则是完全合一

  • 完指整个数据要是完整的(行列标签完整)
  • 全指数据没有缺失值的对缺失值进行处理(数据清洗)
  • 合指数据一定要合法合乎常理有效的(如年龄不为负值等)
  • 一指数据要唯一要对数据进行去重归一化(量纲不同时)单位不同时进行统一单位。

3.特征工程(偏好归纳)
数据的特征并不是每一个都是我们想要的并非都对算法模型有作用我们要进行降维所以我们要选择对算法模型有用的最优特征。这个步骤重中之重有专业的人士去做。
4.算法模型

  • 有监督有目标的每时每刻都在目标的监督下工作
  • 无监督没有目标的
  • 半监督二者混合
  • 强化有非常快速的学习方式如阿尔法狗的算法作为了解。

5.模型评估
有了模型之后并不是立即传入数据进行预测结果还要进行模型评估现有的模型能否满足要求。

  • 经验评估如培养学生进行知识点的授课然后进行练习考核等不停的测试才能知道学生的学习的情况。将整体的数据集划分为训练集(课本知识)、测试集(考试测试)和验证集(练习)对三个类型的划分有三种方式。
    • 留出法从整体的数据样本中留出一部分作为测试或者验证集第一种是直接切断从10个样本中切出622会导致不同时间段中数据呈现的周期不一样第二种是分层每次都从数据集中选取60%作为数据。
    • k折交叉验证法1.将数据等分未k份2.每1份轮着做测试集3.对结果求均值。
      缺点数据量比较大的话会特别浪费时间
    • 自助法有放回的随机抽样。
  • 泛化评估
    • 欠拟合提取的特征少
    • 过拟合提取的特征过于优越
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6