机器学习面试

机器学习超详细实践攻略(9):手把手带你使用决策树算法与调参

[亡魂溺海] 提交于 2020-01-17 09:46:10
决策树算法在工业中本身应用并不多,但是,目前主流的比赛中的王者,包括GBDT、XGBOOST、LGBM都是以决策树为积木搭建出来的,所以理解决策树,是学习这些算法的基石,今天,我们就从模型调用到调参详细说说决策树的使用方法。 一、什么是决策树 既然要用决策树,那么我们首先要知道决策树的基本原理。 初听到决策树这个名字的时候,我觉得他是一种最不像机器学习算法的算法。因为这不就是编程里最基本的if-else选择语句嘛,还能有多厉害? 而且我们生活中的和决策树相关的例子比比皆是,假如你出去买东西,如果价格合适,那就买下来,如果价格太高,那就和商家讨价还价,如果商家同意打折,那就买下来,如果商家不同意便宜点,那就放下东西走人。这就会构建出下图这样的一个决策树。 别急,决策树算法之所以能成为机器学习十大算法,必然有其过人之处。仔细想想,决策树算法并不是单纯地进行决策,而是通过数据集让程序学会像人一样做这一系列的决策过程。 所以决策树算法的核心是要解决两个问题: 1)如何从数据集中找出最佳分枝? 2)如何在合适的时候让决策树停止生长,防止过拟合? 几乎所有与决策树有关的模型调整方法,都逃不开这两个核心问题。 关于第一个问题,一个数据集必然给出了很多的特征,先按照哪个特征来高效地划分数据集,是决策树需要解决的最大问题。当然,我们完全可以按照特征从头到尾顺次来划分数据集,但是,这样做其实并不好

机器学习算法

妖精的绣舞 提交于 2019-12-28 13:06:15
最近,机器学习岗位越来越火爆,那么自然对算法的一些能力要求也是越来越高,想要在求职者中脱颖而出,起步自然非常重要。 我和小伙伴们一起研讨了 2019 年校招的一些算法面试,有些是亲自经历的,也有伙伴分享的。总结了在所做过的项目中大家应该能牢记于心的点、在机器学习算法、数据结构和代码中出现频率最高的问题。希望大家能通过该调研报告,对自己的情况查漏补缺,了解自己需要提升的方向。 友情提示:本文文字内容过多,可能引发视觉不适,敬请见谅。 项目 介绍机器学习项目的时候,项目中的损失函数、如何优化、怎么训练模型的、用的什么数据集能够十分清晰的描述出来。对自己做过的项目要自信一些,在讲解的过程中不要自己有一些疑惑或者模棱两可的说法。以下是几个在介绍自己项目时需要注意的点。 准备细节:一旦被问倒了,面试官在心里就认为你没做过。在面试前,应当适当的准备项目描述的一些说辞。很多同学在准备的过程中,会局限于项目具体完成了哪些业务,以及代码实现中的各种细节。事实上,这并不是一个非常好的回答,这相当于把后继提问权直接交给面试官,很可能在中间环节被面试官直接打断,提问中间他感兴趣的某些细节。因此,建议大家按照以下的方式进行介绍: 讲述项目的基本情况,项目的背景、规模、用时、用到的技术以及各个模块。重点突出自己比较熟悉的技术,防止在面试官打断的提问的时候,问到自己最薄弱的环节。 主动说出自己做了哪些事情

入门人工智能

情到浓时终转凉″ 提交于 2019-12-27 20:53:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、引言 1、什么是人工智能? 如果你是一个新技术的爱好者或者从事工科学习的学生,你一定听说过人工智能(AI),对于什么是人工智能,百度是这样子给出的定义: 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。 人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。 2017年12月,人工智能入选“2017年度中国媒体十大流行语”。 ---

机器学习项目ipynb

笑着哭i 提交于 2019-12-20 01:34:58
文章目录 100天机器学习 (翻译+ 实操) 机器学习 黄博士 100天机器学习 (翻译+ 实操) https://github.com/LiuChuang0059/100days-ML-code 机器学习 Machine-Learning讲解常见的机器学习算法 https://github.com/GreedyAIAcademy/Machine-Learning 此项目是机器学习(Machine Learning)、深度学习(Deep Learning)、NLP面试中常考到的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识。 https://github.com/NLP-LOVE/ML-NLP 黄博士 吴恩达机器学习https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes 统计学习方法https://github.com/fengdu78/lihang-code 来源: CSDN 作者: 选西瓜专业户 链接: https://blog.csdn.net/todingdong/article/details/103613684

BAT机器学习面试1000题系列

本小妞迷上赌 提交于 2019-12-06 14:35:20
几点声明: 1、本文的内容全部来源于七月在线发布的BAT机器学习面试1000题系列; 2、文章中带斜体的文字代表是本人自己增加的内容,如有错误还请批评指正; 3、原文中有部分链接已经失效,故而本人重新加上了新的链接,如有不当,还请指正。(也已用斜体标出) 4、部分答案由于完全是摘抄自其它的博客,所以本人就只贴出答案链接,这样既可以节省版面,也可以使排版更加美观。点击对应的问题即可跳转。 最后,此博文的排版已经经过本人整理,公式已用latex语法表示,方便读者阅读。同时链接形式也做了优化,可直接跳转至相应页面,希望能够帮助读者提高阅读体验,文中如果因为本人的整理出现纰漏,还请指出,大家共同进步! 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。 扩展: 支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

机器学习面试--算法评价指标

匿名 (未验证) 提交于 2019-12-03 00:41:02
机器学习分为三个阶段 : 第一阶段: 学习模型 。采用学习算法,通过对训练集进行归纳学习得到分类模型; 第二阶段: 测试模型 。将已经学习得到的分类模型用于测试集,对测试集中未知类别的实例进行分类。 第三阶段: 性能评估 。显然,通过测试集产生的分类未必是最佳的,这就导致对测试集的分类可能产生错误。而人们希望尽量得到信呢个最佳的分类模型,就是的对分类器性能评价至关重要。只有通过优秀的评价标准才能选择出性能更好的分类器。 不同机器学习算法的评价指标: 回归是对连续的实数值进行预测,即输出值是连续的实数值,而分类中是离散值。 (1)平均绝对误差(Mean Absolute Error,MAE)又被称为 l1 范数损失(l1-norm loss) (2)平均平方误差(Mean Squared Error,MSE)又被称为 l2 范数损失(l2-norm loss) 计算公式 : Accuracy = (TP+TN)/(TP+TN+FP+FN) 在 正负样本不平衡 的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用Accuracy,即使全部预测成负类(不点击)Accuracy也有 99% 以上,没有意义。 定义 :正确分类的正例个数占分类为正例的实例个数的比例,也称 查准率 。 计算公式 : TP/(TP+FP) 定义

达到年薪 40W 必需掌握的技术

匿名 (未验证) 提交于 2019-12-03 00:32:02
很多人在问我,程序员如何拿高薪,如何做到年薪40W+,其实总结出来还是一句话,你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢?下面是我的一个总结技术。 必需掌握的 Java 技术知识点 掌握Java编程语言,包含io/nio/socket/multi threads/collection/concurrency等功能的使用; 熟练掌握jvm(sun hotspot和ibm j9)内存模型、gc垃圾回收调优等技能; 精通JVM,JMM,MVC架构,熟练使用struts2。 熟练使用spring、struts、ibatis构建应用系统。 熟练使用Servlet,jsp,freemark等前端技术。 熟练使用axis搭建基于SOAP协议的WebService服务接口。 熟练使用MAVEN构建项目工程。 熟练使用tomcat等web服务。 熟练使用mysql等关系型数据库,熟悉mysql集群搭建。 熟练使用redis等NOSQL技术。 熟悉tcp、http协议。 熟悉nginx、haproxy等配置。 熟悉javascript、ajax等技术。 熟悉主流分布式文件系统FastDFS等。 熟悉JMS,可熟练使用ActiveMQ。 底层计算机理解内存管理/数据挖掘系统 可靠性和可用性如何理解~ jsp和sever lap对比 数据库到界面,字符集转化

数据挖掘(机器学习)面试--SVM面试常考问题

匿名 (未验证) 提交于 2019-12-03 00:22:01
转自 https://blog.csdn.net/szlcw1/article/details/52259668 应聘数据挖掘工程师或机器学习工程师,面试官经常会考量面试者对SVM的理解。 以下是我自己在准备面试过程中,基于个人理解,总结的一些SVM面试常考问题(想到会再更新),如有错漏,请批评指正。(大神请忽视) 转载请注明出处:blog.csdn.net/szlcw1 SVM的原理是什么? SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机) (1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机; (2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机; (3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。 注:以上各SVM的数学推导应该熟悉: 硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量) --- 非线性支持向量机(核技巧)。 SVM为什么采用间隔最大化? 当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。 感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。 线性可分支持向量机 利用间隔最大化求得最优分离超平面 ,这时,解是唯一的

Spark大数据处理系列之Machine Learning

匿名 (未验证) 提交于 2019-12-02 23:34:01
Spark的机器学习库(Spark MLlib),包括各种机器学习算法:协同过滤算法、聚类算法、分类算法和其他算法。在前面的《Spark大数据处理》系列文章,介绍Apache Spark框架,介绍如何使用Spark SQL库的SQL接口去访问数据,使用Spark Streaming进行实时流式数据处理和分析。在本篇文章,作者将讨论机器学习概念以及如何使用Spark MLlib来进行预测分析。后面将会使用一个例子展示Spark MLlib在机器学习领域的强悍。Spark机器学习API包含两个package:spark.mllib 和spark.ml。 spark.mllib 包含基于弹性数据集(RDD)的原始Spark机器学习API。它提供的机器学习技术有:相关性、分类和回归、协同过滤、聚类和数据降维。spark.ml提供建立在DataFrame的机器学习API,DataFrame是Spark SQL的核心部分。这个包提供开发和管理机器学习管道的功能,可以用来进行特征提取、转换、选择器和机器学习算法,比如分类和回归和聚类。本篇文章聚焦在Spark MLlib上,并讨论各个机器学习算法。下篇文章将讲述Spark ML以及如何创建和管理数据管道。 机器学习和数据科学 机器学习是从已经存在的数据进行学习来对将来进行数据预测,它是基于输入数据集创建模型做数据驱动决策。数据科学是从海里数据集

笔记 :归纳总结 (一)

孤街浪徒 提交于 2019-11-28 13:09:57
原文: http://blog.gqylpy.com/gqy/480 置顶:来自一名75后老程序员的武林秘籍——必读 (博主推荐) 来,先呈上武林秘籍链接: http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我会画原理图,会画 PCB,会模拟,会数字!玩过 PLC,玩过单片机,会用汇编,会用 C!玩过 ARM,比如 PLC,STM32,和时下正在起飞的 NXP RT1052!搞过 DSP,比如 TMS320F28335!搞过 FPGA,不管 Xilinx 还是 Altera,也不管是 Verilog 还是 VHDL,或者直接画数字电路图!我懂嵌入式系统,比如 uCOS 和 Linux!我懂开源的硬件,比如 Arduino 和树莓派!我也搞软件,学了一堆上位机的语言C#,JAVA,Python,Kotlin,Swift!会写爬虫工具,又自学写APP,不管Android 还是 IOS! 可是这一切有什么用呢?土鸡瓦狗!不值一提!干技术的永远就是最苦逼的那个人! 我相信看到这里的你,应该是个 IT