机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)

一、线性回归

1.线性回归的假设函数

1698827597271.png

2.线性回归的损失函数(Loss Function)

MSE(均方误差)J=12m∑i=1m(yi′−yi)2

通过梯度下降法或正规方程(θ=(xTx)−1xTy)求出使得代价函数最小的参数

两者区别

梯度下降 正规方程
需要选择学习率 不需要
当特征数量较大时也能较好适用(O(kn^2)) 需要计算(X^TX^-1),如果特征数量n较大则运算代价大,通常n小于10000时可接受(O(n^3))
适用于各种类型的模型 只适用于线性模型

3.简述岭回归与Lasso回归以及使用场景

目的:解决线性回归出现过拟合的情况;解决在通过正规方程方法求解 θ 的过程中出现的 XTX不可逆的情况

本质:约束(限制)要优化的参数

这两种回归均通过在损失函数中引入正则化项来达到目的:

(L2) 岭回归损失函数 J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2

(L1) Lasso回归损失函数 J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+λ∑j=1n|θj|

L1正则化容易得到稀疏矩阵

4.什么场景下用L1、L2正则化

L2正则化会使参数的绝对值变小,增强模型的稳定性(不会因为数据变化而产生很大的震荡);而L1正则化会使一些参数为0,可以实现特征稀疏,增强模型解释性。

5.什么是ElasticNet回归

综合了L1正则化项和L2正则化项

25e05cca0ab653c4b27b07c22dbc90c.png

6.ElasticNet回归的使用场景

使用Lasso回归太过(太多特征被稀疏为0),而岭回归正则化的不够(回归系数衰减太慢)的时候,可以考虑ElasticNet回归。

L1正则化和L2正则化分别是假设参数服从laplace分布和高斯分布。

线性回归中的残差服从均值为0的正态分布。

L2:权重衰减

7.线性回归要求因变量服从正态分布?(持保留态度)

假设线性回归的噪声服从均值为0的正态分布。 当噪声符合正态分布N(0, δ2 )时,因变量则符合正态分布N(ax(i)+b, δ2 ),其中预测函数y=ax(i)+b。这个结论可以由正态分布的概率密度函数得到。也就是说当噪声符合正态分布时,其因变量必然也符合正态分布。

在用线性回归模型拟合数据之前,首先要求数据应符合或近似符合正态分布,否则得到的拟合函数不正确。

二、逻辑回归(Logistics Regression)

1.本质:极大似然估计

逻辑回归是用来做分类算法的。把线性回归的结果Y代入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类。

2.激活函数:Sigmoid

3.损失函数:对数损失函数(log loss)

公式中的 y=1 表示的是真实值为1时用第一个公式, y=0 表示真实值为0时用第二个公式计算损失。

为什么要加上log函数呢?

当真实样本为1时,但h=0,那么log0=∞,即对模型最大的惩罚力度;当h=1时,那么log1=0,相当于没有惩罚,也就是没有损失,达到最优结果。把上面损失函数写成统一的形式:

4.代价函数:交叉熵(Cross Entropy):

最后按照梯度下降法,求解极小值点,得到想要的模型效果。

5.可以进行多分类吗?

可以 ,从二分类问题过度到多分类问题(one vs rest),思路步骤如下:

  1. 将类型class1看作正样本,其他类型全部看作负样本,可得到样本标记类型为该类型的概率p1。
  2. 然后再将另外类型class2看作正样本,其他类型全部看作负样本,同理得到p2。
  3. 以此循环,我们可以得到该待预测样本的标记类型分别为类型class i时的概率pi,最后取pi中最大的那个概率对应的样本标记类型作为待预测样本类型。


总之还是以二分类来依次划分,并求出最大概率结果。

6.逻辑回归优缺点

  • 能以概率的形式输出结果,而非只是0,1判定。
  • 可解释性强,可控度高,训练快。
  • 因为结果是概率,可以做ranking model(排序模型)。

  • 对模型中自变量多重共线性较为敏感。

7.逻辑回归有哪些应用

  • CTR预估/推荐系统的learning to rank/各种分类场景。
  • 某搜索引擎厂的广告CTR(点击率)预估基线版是LR。
  • 某电商搜索排序/广告CTR预估基线版是LR。
  • 某电商的购物搭配推荐用了大量LR。
  • 某现在一天广告赚1000w+的新闻app排序基线是LR。

8.逻辑回归为什么要对特征进行离散化。

  1. 非线性!逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合; 离散特征的增加和减少都很容易,易于模型的快速迭代;
  2. 速度快!稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
  3. 鲁棒性!离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄200岁”会给模型造成很大的干扰;
  4. 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
  5. 简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

手推(后续补上)

若要求多分类,需要把sigmoid换成softmax

实战中,设置 α=[0.001,0.003,0.01,0.03,0.1,0.3,1,...]

损失函数、代价函数、目标函数

损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。

代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。

目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)。对于目标函数来说在有约束条件下的最小化就是损失函数。

机器学习中的最优化方法

1.梯度下降法

优化思想:用当前位置负梯度方向作为搜索方向。

2.牛顿法

使用函数f(x)的泰勒级数的前几项来寻找f(x)的根

优:以本质上看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法更快。

缺:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hesssian矩阵的逆矩阵,计算较复杂。

3.拟牛顿法

本质思想:改善牛顿法内次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian(黑塞)矩阵的逆,从而简化运算的复杂度。

4.共轭梯度法

仅需利用一阶导数信息,但克服了梯度下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵的逆的特点。

三、支持向量机(SVM)

一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

函数间隔

给定一个超平面(w,b),定义该超平面关于样本点 (xi,yi) 的函数间隔为: γ=yi(wTxi+b) ,定义该超平面关于训练集T的函数间隔为:

几何间隔(geometrical margin)

1.损失函数:合页损失函数(Hinge loss)

SVM的损失函数就是合页损失函数+正则项

minw,b∑i=1N[1−yi(wTxi+b)]++λ||w||2

2.为什么要将求解SVM的原始问题转换为其对偶问题?

  1. 对偶问题更容易求解,
  2. 可以自然引入核函数,进而推广到非线性分类问题。

若原问题与对偶问题均存在可行解,则两者均存在最优解)。

3.支持向量

距离超平面最近的且满足一定条件的几个样本点。

4.带核的SVM为什么能分类非线性问题

核函数的本质是两个函数的内积,通过核函数将其映射到高维空间,在高维空间非线性问题转换为线性问题,SVM得到超平面是高维空间的线性分类平面,其分类结果也视为低维空间的非线性分类结果。

5.SVM的应用

SVM在很多诸如文本分类,图像分类,生物序列分析和生物数据挖掘,手写字符识别等领域有很多的应用

6. 如何选择核函数?

  • 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
  • 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
  • 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

7.LR和SVM的联系与区别

相同点

  • 如果不考虑核函数,都是线性分类器。
  • 都是监督学习算法。
  • 都是判别模型。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。

不同点

  • (本质区别):目标函数不同,逻辑回归是log loss,SVM采用的是hinge loss(铰链损失函数),这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
  • LR是参数模型,svm是非参数模型。
  • 与SVM相比,LR对异常数据更加敏感。
  • SVM的目标是结构风险最小化,逻辑回归目标函数是最小化先验概率。
  • 在训练集较小时,SVM较适用(基于距离分类),需要对数据先做归一化;LR则需要更多的样本(基于概率分类)
  • SVM只考虑支持向量(support vectors),也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。

8.加入松弛变量的SVM的训练误差可以为0吗?

使用SMO(序列最小优化算法)算法训练的线性分类器并不一定能得到训练误差为0的模型。这是由于优化目标改变了,并不再是使训练误差最小。

相关文章
|
1月前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
68 2
|
1月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
124 2
|
20天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
20天前
|
机器学习/深度学习 Python
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-4
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
23天前
|
机器学习/深度学习 数据采集 Python
Python机器学习面试:Scikit-learn基础与实践
【4月更文挑战第16天】本文探讨了Python机器学习面试中Scikit-learn的相关重点,包括数据预处理(特征缩放、缺失值处理、特征选择)、模型训练与评估、超参数调优(网格搜索、随机搜索)以及集成学习(Bagging、Boosting、Stacking)。同时,指出了常见错误及避免策略,如忽视数据预处理、盲目追求高精度、滥用集成学习等。掌握这些知识点和代码示例,能帮助你在面试中展现优秀的Scikit-learn技能。
34 5
|
1天前
|
监控 Java 应用服务中间件
Spring Boot 源码面试知识点
【5月更文挑战第12天】Spring Boot 是一个强大且广泛使用的框架,旨在简化 Spring 应用程序的开发过程。深入了解 Spring Boot 的源码,有助于开发者更好地使用和定制这个框架。以下是一些关键的知识点:
13 6
|
5天前
|
监控 Java 数据库连接
总结Spring Boot面试知识点
Spring Boot是一个基于Spring框架的开源项目,它简化了Spring应用的初始搭建以及开发过程。通过提供“约定优于配置”的方式,Spring Boot可以帮助开发者快速构建出生产级别的Spring应用。
13 0
|
7天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
32 7
|
7天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
12天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】支持向量机(SVM)在Python中的实践
【4月更文挑战第30天】SVM是一种高效的监督学习算法,适用于分类和回归,尤其擅长处理高维和非线性问题。通过寻找最大边际超平面来分隔数据,SVM具有高效性、鲁棒性、灵活性和稀疏性等特点。