0


考研复试问题/面试问题——机器学习(1)(入门系列)

目录

奥卡姆剃刀原理

若非需要,勿增实体,当所有的理论都能解释现象,那么就选择最简单的。

没有免费的午餐定理(NFL原则)

不好比较哪个算法好、如果a算法在某方面比B算法表现良好的话,必存在其他问题使B比A的表现好。

什么是机器学习?

我们日常中的程序就像命令一样指导计算机去做什么,而机器学习是以数据而非命令为基础的非显示编程,前者注重因果,后者注重关联。机器学习是人工智能的核心,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构从而不断改善自身的性能。
从实践的意义上来说,机器学习算法利用已有数据或经验(有标签和无标签的样本),训练某种模型,并利用此模型对未来数据进行预测(标记新样本数据)。
应用场景:搜广推(搜索+广告+推荐)

监督学习和无监督学习的区别(根据有无标签进行分类)

有监督学习:数据集由目标值和特征值组成,或者说是有标签的数据,模型从目标值中去学习,常见的有线性回归、逻辑回归、神经网络
无监督学习:无监督学习的训练集中没有人为的标注的结果,学习模型就是为了推断出数据的一些内在结构。常见的有聚类、异常检测、降维,
半监督学习(SSL):为了减少监督学习中给训练数据做标记的工作量,是监督学习与无监督学习相结合的一种学习方法,训练数据中有部分数据是有标记的,有部分数据没有标记

机器学习常见问题(根据功能进行分类)

回答思路:定义+常见应用+常见算法

(1)回归

是一种监督学习算法。给定一个样本特征,希望预测其对应的属性值, 如果预测值是连续的实数, 这就是一个回归问题,在回归问题中,我们学习出拟合样本分布的曲线。例如房屋价格预测。回归问题常用的算法有线性回归、岭回归、回归树模型KNN(K近邻)算法等。
Sklearn:

(2)分类

是一种监督学习算法。给定一个样本特征,希望预测其对应的属性值, 如果是离散的, 那么这就是一个分类问题,包括二分类、多分类、多标签分类。分类问题中,我们学习出来一条「决策边界」完成数据区分,对于大多数实际应用,模型会通过softmax函数输出每一个类别的概率,然后选取置信度(概率)最大的类别输出。例如判断是否为垃圾邮件、是否患癌症等
常用的算法包括: KNN(K近邻)算法、逻辑回归算法、朴素贝叶斯算法、决策树模型、随机森林分类模型、GBDT模型、XGBoost模型、支持向量机(SVM)模型、神经网络等

(3)聚类

是一种无监督学习算法,给定一组样本特征, 我们没有对应的属性值 , 而是想发掘这组样本在多维空间的分布, 比如分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。其目的是将相似的数据点划分到同一类别中,从而形成多个互不相同的类别。常见的应用如谷歌新闻聚类、DNA序列检测、根据顾客行为进行市场分类、天文数据分析。常用的算法为K-means算法、层次聚类、DBSCAN

(4)降维

是一种无监督学习算法,如果我们想用维数更低的子空间来表示原来高维的特征空间, 那么这就是降维问题。例如主成分分析法PCA

你认为你本科学的数学有哪些会用到机器学习中?

(1)函数:
针对不同的问题和任务需要选取恰当的模型,模型就是一组函数的集合,例如线性回归中的多元线性函数、逻辑回归中的s型函数、神经网络中的激活函数。
判断这个函数的好坏,需要一个衡量标准,也就是我们通常说的损失函数(Loss Function),它也需要依据具体问题而定,如回归问题一般采用欧式距离,分类问题一般采用交叉熵代价函数。
如何确定参数使代价函数最小可以使用梯度下降算法,最小二乘法等和其他一些技巧(tricks)
(2)线性代数:矩阵化vectorization,比方说现在某个线性回归特征值和样本很多,当我们在计算预测值和真实值差的平方的时候,采用循环和矩阵乘法所需要的时间差距很大。我表达不太准确,但是我之前调用过time函数看过他们之间的差距,dot函数时候numpy库里的,numpy底层是由c++实现的,加上一些硬件支持会快很多。
(3)概率论:正态分布
(4)统计学:比方说逻辑回归里的代价函数就根据极大似然估计的统计原理推导出来的,误差=均差+偏差
(5)优化:优化中的凸优化和微积分中的偏导数衍生出梯度下降的方法得到代价函数最小值
(6)信息论:熵、基尼系数

机器学习开发流程

首先确定系统的架构,这决定了需要选择什么样的机器学习模型以及需要收集什么样的数据
接下来的开发流程主要分为五步,分别是:数据收集和预处理、特征工程、模型的选择和训练、模型评估和优化以及模型测试。
(1)数据收集和预处理:确定需要哪些数据来训练你的学习器。收量足够数量的猫狗图片作为训练数据集,可以从公共数据集中获取,也可以自己收集标注。对数据进行数据编码、无量纲化等预处理操纵,并将数据集分为训练集和测试集,
(2)特征工程:
(3)模型的选择和训练:模型的选择需要我们掌握各个模型的特点,根据需要完成的任务目标选择合适的学习模型,并在训练集上进行训练。
(4)模型评估和优化: 从训练集中划分出验证集,使用验证集对训练好的模型进行评估,如计算准确率,精确率,召回率等指标。也可以绘制学习曲线,观察偏差和方差,并且进行误差分析,根据诊断结果调整模型,对训练过程进行优化,如调整学习率、增加正则化项、修改网络结构、增加样本数量等,以提高模型性能。因此这个过程中可能需要去收集更多的数据,即重新进行第前四步,通常要在这个循环中进行多次迭代才能达到想要的性能。
(5)模型测试:使用测试集对模型进行最终测试,得到最终的识别效果。
最后,在生产环境中部署,部署之后意味着用户可以使用它了,部署之后要确保你可以持续监控系统的性能和维护系统,如果系统在实践中性能不好就要回到第一步。

数据预处理

定义:从数据中检测、纠正、删除损坏的不准确的或者不适用于模型记录的过程
目的:去除噪音,让数据适应模型,匹配模型的需求
方法:数据清理,数据集成,数据变换,数据编码、数据归约、特征提取、缺失值/异常值的处理
数据预处理可以通过sklearn来实现:
(1)模块preprocessing:几乎包含数据预处理的所有内容。
(2)模块Impute:填补缺失值专用。
(3)模块feature_selection:包含特征选择的各种方法的实践》
(4)模块decomposition:包含降维算法

(1)数据清理

清洗“脏数据”,包括检查数据一致性,处理无效值和缺失值等。impute.SimpleImputer缺失值填补

(2)数据集成

(3)数据变换

包括数据无量纲化(标准化和归一化)和正则化
不属于同一量纲指的是特征的规格不一样,不能够放在一起比较。数据无量纲化(标准化和归一化)可以解决这一问题,将不同规格的数据转换为统一规格,或者是将不同分布的数据转换为某个特定分布的需求。
线性的无量纲化包括中心化处理(让所有的记录减去一个固定值)和缩放处理(除以一个固定值)例如归一化是将数据按最小值中心化,再按极差缩放,数据收敛到[0,1]之间

特征缩放的原因:为了使不同的特征值对输出的影响相近。特征值取值范围差异较大时会使梯度下降运行很慢,通过重新缩放这些特征,使它们具有相近的尺度(无量纲化:包括归一化、标准化。),使梯度下降时参数的更新更加容易、有效,可显著加快梯度下降的速度。

preprocessing.MinMaxScaler:归一化,将原始数据映射到一个区间内(通常是[0,1]),异常值可能会影响归一化。数据预处理代码_
归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。

preprocessing.StandardScaler:标准化,数值服从正态分布,平均为0,标准差为1。
标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。
标准化方式:L1L2范数标准化、(L1范数生成稀疏矩阵,L2可以利用正则化防止过拟合)

(4)数据编码

包括离散数据编码(定性特征转化为定量特征,定性特征不能直接使用)、连续数据编码(信息冗余)

连续数据编码
sklearn.preprocessing.Binarize定量特征二值:核心在于设定一个阈值,将连续性变量根据阈值转化为二进制离散变量(大于阈值的赋值为1,小于等于阈值的赋值为0)。
preprocessing.KBinsDiscretizer:设置多个阈值将连续型变量根据阈值转换成K进制离散变量。

离散数据编码
preprocessing.LabelEncoder:标签专用,能够将分类转换为分类离散数值
preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类离散数值
preprocessing.OneHotEncoder:把离散数值转换成独热编码,创建哑变量

常见编码方式
(1)手动为每一种定性值直接指定一个定量值,但是这种方式过于灵活,增加了调参的工作。
(2)哑编码(dummy encoding):基于数据集的某一特征的N个状态值,用N-1位编码来作区别
婴儿 幼儿 少年 青年 中年 老年
10000 01000 00100 00010 00001 00000
前五个状态每一个状态位代表当前状态是否激活,1为激活,0为未激活。五个状态位都为未激活的状态,则默认为第六个状态。
对于线性模型来说,使用哑编码后的特征可达到非线性的效果。)
(3)独热编码(one-hot encoding):基于数据集的某一特征的N个状态值,用N位编码来作区别
婴儿 幼儿 少年 青年 中年 老年
100000 010000 001000 000100 000010 000001
其中每一个状态位代表当前状态是否激活,1为激活,0为未激活。

(5)数据归约

寻找依赖于发现目标的数据的有用特征,以缩减数据规模,从而在尽可能保持数据原貌的前提下,最大限度地精简数据量。

特征工程

特征值可能存在的问题/为什么需要特征工程?
特征之间有相关性,特征和标签无关,特征太多或太少,或者干脆就无法表现出应有的数据现象或无法展示数据的真实面貌,信息利用率低(不同的机器学习算法和模型对数据中信息的利用是不同的,对定量变量多项式化,或者进行其他的转换,都能达到非线性的效果。)
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

定义:特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,其本质是一项工程活动,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。

目的:降低计算成本,提升模型上限(最大限度地从原始数据中提取特征以供算法和模型使用。

方法:特征提取、特征预处理、特征升维、特征降维

(1)特征提取(特征编码)

属于数据预处理:将任意数据转换为可用于机器学习的数字特征。例如字典型特征提取、文本型特征提取。

(2)特征预处理

预先处理,包括归一化标准化、异常样本清洗、样本数据不平衡问题处理。

(3)特征创造(特征升维)

在现有的少量特征的基础之上,创造新的特征。

(4)特征选择(特征降维)

在现有的海量特征的基础之上,选择有限的、少部分的特征。
降低的对象是多维数组。降低的是特征的个数,得到一组“不相关”的主变量的过程


本文转载自: https://blog.csdn.net/llittleSun/article/details/130142174
版权归原作者 阿慧吖 所有, 如有侵权,请联系我们删除。

“考研复试问题/面试问题——机器学习(1)(入门系列)”的评论:

还没有评论