机器学习|算法工程师面试--常见问题及其回答
常见问题及其回答
- 1.请你介绍一下你熟悉的机器学习模型或算法(以逻辑回归为例)
- LR的原理
- 损失函数
- 求解方法
- 2.请你介绍"KNN算法或模型原理"(一般是简历上的)?
- KNN概述 (有监督算法,分类算法)
- KNN优点
- KNN缺点
- 3.请描述一下KNN算法和K-Means算法有什么区别?
- 4.KNN与K-Means的应用场景?
- 5.在项目(/将订单分配给车辆的过程)中,你使用什么算法的时候,遇到了哪些问题?最终如何解决的?
1.请你介绍一下你熟悉的机器学习模型或算法(以逻辑回归为例) LR的原理 ??逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层逻辑函数, g ( z ) = 1 1 + e ? z {\rm{g}}(z) = \frac{1}{{1 + {e^{ - z}}}} g(z)=1+e?z1?,即:先把特征线性求和 z = w 0 + w 1 ? x 1 + . . . , + w n ? x n {\rm{z}} = {w_0} + {w_1}*{x_1} + ..., + {w_n}*{x_n} z=w0?+w1??x1?+...,+wn??xn?,然后使用函数g(z)作为假设函数来预测。
??逻辑回归用来分类0/1问题,也就是预测结果属于0或者属于1的二值分类问题,有模型:
p ( y = 1 ∣ x ) = g ( w T x ) = 1 1 + e ? w T x p(y = 1|x) = g({w^T}x) = \frac{1}{{1 + {e^{ - {w^T}x}}}} p(y=1∣x)=g(wTx)=1+e?wTx1?
p ( y = 0 ∣ x ) = 1 ? g ( w T x ) = e ? w T x 1 + e ? w T x p(y = 0|x) = 1 - g({w^T}x) = \frac{{{e^{ - {w^T}x}}}}{{1 + {e^{ - {w^T}x}}}} p(y=0∣x)=1?g(wTx)=1+e?wTxe?wTx?
损失函数 【机器学习|算法工程师面试--常见问题及其回答】??对于训练数据集,特征数据 x = { x 1 , x 2 , . . . , x m } x = \{ {x_1},{x_2},...,{x_m}\} x={x1?,x2?,...,xm?}和对应的分类标签 y = { y 1 , . . . , y m } {\rm{y}} = \{ {y_1},...,{y_m}\} y={y1?,...,ym?}。假设m个样本相互独立,那么它们的联合分布为各边缘分布的乘积,得到似然函数:
L ( w ) = ∏ i = 1 m g ( w T x ) y i ? ( 1 ? g ( w T x ) ) 1 ? y i L(w) = {\prod\limits_{i = 1}^m {g({w^T}x)} ^{{y_i}}}*{(1 - g({w^T}x))^{1 - {y_i}}} L(w)=i=1∏m?g(wTx)yi??(1?g(wTx))1?yi?
取对数:
e ( w ) = ln ? L ( w ) = ∑ i = 1 m y i ? ln ? g ( w T x ) + ( 1 ? y ) ln ? ( 1 ? g ( w T x ) ) e(w) = \ln L(w) = \sum\limits_{i = 1}^m {{y_i}*\ln g({w^T}x)} + (1 - y)\ln (1 - g({w^T}x)) e(w)=lnL(w)=i=1∑m?yi??lng(wTx)+(1?y)ln(1?g(wTx))
求解方法 ??与线性回归类似,我们使用梯度上升的方法(类似与梯度下降方法),那么随机梯度上升更新规则为: w : = w + α ? ? w e ( w ) w: = w + \alpha *{\nabla _w}e(w) w:=w+α??w?e(w)
? ? w j e ( w ) = ? ? w j { ∑ i = 1 m { y i l n ?? g ( w T x i ) + ( 1 ? y i ) l n ?? ( 1 ? g ( w T x i ) ) } ?????????????????????????? = ? ? w j ∑ i = 1 m [ y i g ( w T x i ) ? 1 ? y i 1 ? g ( w T x i ) ] g ( w T x i ) ′ ?????????????????????????? = ? ? w j ∑ i = 1 m [ y i ? g ( w T x i ) ] ( w T x i ) ′ ?????????????????????????? = ∑ i = 1 m [ y i ? g ( w T x i ) ] w j \begin{array}{l} \frac{\partial }{{\partial {w_j}}}e(w) = \frac{\partial }{{\partial {w_j}}}\{ \sum\limits_{i = 1}^m {\{ {y_i}ln\; g({w^T}{x_i})} + (1 - {y_i})ln\; (1 - g({w^T}{x_i}))\} \\ \; \; \; \; \; \; \; \; \; \; \; \; \; = \frac{\partial }{{\partial {w_j}}}\sum\limits_{i = 1}^m {[\frac{{{y_i}}}{{g({w^T}{x_i})}} - \frac{{1 - {y_i}}}{{1 - g({w^T}{x_i})}}]g({w^T}{x_i})'} \\ \; \; \; \; \; \; \; \; \; \; \; \; \; = \frac{\partial }{{\partial {w_j}}}\sum\limits_{i = 1}^m {[{y_i} - g({w^T}{x_i})]({w^T}{x_i})'} \\ \; \; \; \; \; \; \; \; \; \; \; \; \; = \sum\limits_{i = 1}^m {[{y_i} - g({w^T}{x_i})]{w_j}} \end{array} ?wj???e(w)=?wj???{i=1∑m?{yi?lng(wTxi?)+(1?yi?)ln(1?g(wTxi?))}=?wj???i=1∑m?[g(wTxi?)yi???1?g(wTxi?)1?yi??]g(wTxi?)′=?wj???i=1∑m?[yi??g(wTxi?)](wTxi?)′=i=1∑m?[yi??g(wTxi?)]wj??
2.请你介绍"KNN算法或模型原理"(一般是简历上的)? KNN概述 (有监督算法,分类算法) ??KNN是通过测量不同特征值之间的距离进行分类,它的思想是:如果一个样本在特征空间中的k个最相似(即:特征空间中最邻近)的样本中大多数属于某个类别,则该样本也属于这个类别。其算法描述为:
- 计算测试数据与各个训练数据之间的距离 ;
- 按照距离的递增关系进行排序;
- 选择距离最小的k个点;
- 确定前k个点所在类别的出现频率;
- 返回前k个点出现频率最高的类别作为测试数据的预测分类。
?2.可用于非线性分类 。
?3.适用于样本容量比较大的类域的自动分类。
KNN缺点 ?1.计算量大,分类速度慢
?2.KNN在对属性较多的训练样本进行分类时,由于计算量大而使其效率大大降低效果。
?3.K值难以确定?:目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整K值。?
?4.对不平衡样本集比较敏感:当样本不平衡时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。
3.请描述一下KNN算法和K-Means算法有什么区别? 不同点:
KNN | K-Means |
---|---|
1)KNN是分类算法 | 1)K-Means是聚类算法 |
2)监督学习 | 2)非监督学习 |
3)喂给它的数据是带label的数据,已经是完全正确的数据 | 3)喂给它的数据是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序后有序 |
K的含义:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的k个数据点,这k个数据点,类别c点的个数最多,就把x的label设为c | k是人工固定好的数字,假设数据集合可以分为k个簇,由于是依靠人工定好,需要一点为先验知识 |
4.KNN与K-Means的应用场景? ??KNN是分类或者回归问题,对于类域的交叉或者重叠较多的待分样本集更适用。
??K-Means是聚类问题,通常用于维数、数值都很小且连续的数据集。
??应用领域:
????KNN:文本分类、模式识别、聚类分析和多分类领域等。
????K-Means:物品传输优化、客户分类和乘车数据分析等。
5.在项目(/将订单分配给车辆的过程)中,你使用什么算法的时候,遇到了哪些问题?最终如何解决的? ??在将订单分配给车辆的应用场景中,我使用了K-Means算法,但是K-Means是以Cluster为中心进行聚类的,不能保证行驶路线最短,最终采用了KNN算法解决的,下一个加入到车辆的订单是距离车辆已分配的客户中心最近的订单。
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习