Interview
文章平均质量分 85
默一鸣
韬光养晦
展开
-
面试题集锦——不断更新
1、关于线程和进程的面试题秒杀多线程 面试题汇总http://blog.csdn.net/morewindows/article/details/7392749上面的第一章的回答http://blog.csdn.net/dazhong159/article/details/7948327其他的一些相关回答http://www.tuicool.com/articles/JJvQVny原创 2015-11-26 22:15:30 · 940 阅读 · 0 评论 -
机器学习中过拟合原因和防止过拟合的方法
过拟合原因:由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合,如1、比如数据不够,2、训练太多拟合了数据中的噪声或没有代表性的特征也就是模型太复杂 所以防止过拟合的方法:1.获取更多的数据 1).从数据源获得更多的真实数据 2).数据增强 3).根据当前数据集生成数据2.使用合适的模型 ...原创 2018-04-03 14:16:31 · 2521 阅读 · 0 评论 -
L1和L2正则化原理及分析
正则化是指在优化目标函数或代价函数是,在目标函数后面加上一个正则项。正则项通常有L1正则项和L2正则项。1. L1正则 L1正则是基于L1范数和项,即参数的绝对值和参数的积项,即: C=C0+λn∑w|w|C=C0+λn∑w|w|其中C0代表原始的代价函数,n是样本的个数,λ就是正则项系数,权衡正则项与C0项的比重。后面那一项即为L1正则项。 在计算梯度时,w的梯度变为: ...原创 2018-08-25 01:13:28 · 10340 阅读 · 0 评论 -
理解 LSTM 网络
本文译自 Christopher Olah 的博文Recurrent Neural Networks人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传统的神经网络并不能做到这点,看起来也像是一种巨大的弊...转载 2018-01-12 16:45:52 · 557 阅读 · 0 评论 -
期望风险,经验风险和结构化风险,以及交叉验证
损失函数0-1损失函数平方损失函数绝对损失函数对数损失函数损失函数的期望(风险函数或期望损失)学习的目标是选择期望风险最小的模型。由于联合分布 是未知的, 不能直接计算。实际上,如果知道联合分布 ,可以直接从联合分布直接求出条件概率分布 ,也就不需要学习了。正因为不知道联合概率分布,所以才需要学习。一方面根据期望风险最小学习模型要用到联合分布,另一方面联...原创 2018-08-29 18:49:57 · 1338 阅读 · 0 评论 -
DNN中的trick
1:优化器。机器学习训练的目的在于更新参数,优化目标函数,常见优化器有SGD,Adagrad,Adadelta,Adam,Adamax,Nadam。其中SGD和Adam优化器是最为常用的两种优化器,SGD根据每个batch的数据计算一次局部的估计,最小化代价函数。学习速率决定了每次步进的大小,因此我们需要选择一个合适的学习速率进行调优。学习速率太大会导致不收敛,速率太小收敛速度慢。因此SGD通常训...原创 2018-08-29 19:00:35 · 1339 阅读 · 0 评论 -
RF,GBDT,XGBOOST, LightGBM的对比和分析
1.概述RF、GBDT和都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善单个学习器的泛化能力和鲁棒性。 xgboost和lightgbm是gbdt的优秀工程实现及优化改进。2.集成学习方法bootstrap, boosting, bagging, stacking集成算法原理介绍详细的bootstrap3.各种实例解析...原创 2018-08-29 23:05:21 · 5305 阅读 · 0 评论 -
GBDT详细分析 未完
GBDT是boosting策略和决策树的结合,GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法所谓的Gradient B...原创 2018-09-08 00:28:27 · 1251 阅读 · 1 评论 -
背包问题总结
前面是转载来的背包9讲,非常详细,后面有几个lintcode上的题目前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作一份较为完善的NOIP难度的动态规划总结,名为《解动态规划题的基本思考方式》。现在你看到的是这个写作计划最先发布的一部分。背包问题是一个经典的动态规划模型。它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少...原创 2018-09-12 02:27:25 · 19833 阅读 · 0 评论 -
bootstrap, boosting, bagging, stacking原理
Bootstraping: 名字来自成语“pull up by your own bootstraps”,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想和基本步骤如下: (1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。 (2) 根据抽出的样本计算给定的统...原创 2018-08-25 01:08:42 · 2050 阅读 · 0 评论 -
机器学习面试问题汇总(不断更新)
算法leetcode 最优解,多版本解及简单思路分析各种基本算法c++实现(排序算法,树的遍历,链表操作)判断链表是否有环及相关扩展(待写)判断图是否有环二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)Best Time to Buy and Sell Stock I / II / III / IV / with cooldown / with Trans...原创 2018-08-25 00:39:20 · 862 阅读 · 0 评论 -
C++运算符重载总结
c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。1.一般运算符重载在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。成员函数的形式比较简单,原创 2016-07-06 21:41:44 · 543 阅读 · 0 评论 -
字符串逆序等面试题
几点说明1. 所有题目全部来自网络,书籍,或者我自己的面试经历,本人只是负责搜集整理。在此对原作者表示感谢!2. 我已经尽力确保文字及程序的正确性,但我毕竟是凡人,如果您发现了文章中的错误,或者有更好的解法,请一定留言相告,以免误导大家!3. 所有代码都采用C/C++编写很早就准备写一个字符串系列的面试题,本来已经写好了,大概有十几道题,但是写完才发现,文章好长,连我自己都没有耐心原创 2016-03-12 12:16:22 · 780 阅读 · 1 评论 -
堆和栈的区别 (转贴)
堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可转载 2016-07-09 19:20:01 · 581 阅读 · 1 评论 -
c++中引用和指针的区别
指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法。1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针原创 2016-03-12 11:23:07 · 691 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2016-03-07 21:27:06 · 515 阅读 · 0 评论 -
c++中的参数传递问题
众所周知,在C++中调用函数时有三种参数传递方式: (1)传值调用; (2)传址调用(传指针); (3)引用传递; 实际上,还有一种参数传递方式,就是全局变量传递方式。这里的“全局”变量并不见得就是真正的全局的,所有代码都可以直接访问的,只要这个变量的作用域足够这两个函数访问就可以了,比如一个类中的两个成员函数可以使用一个成员变量实现参数传递,或者使用static关键字定义,或者使原创 2015-12-13 00:07:32 · 4165 阅读 · 1 评论 -
浏览器访问网页的详细内部过程
我们来看当我们在浏览器输入http://www.mytest.com:81/mytest/index.html,幕后所发生的一切。首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程原创 2015-06-15 20:21:32 · 1541 阅读 · 0 评论 -
从输入网址到显示网页的全过程分析
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:原创 2015-06-15 20:18:56 · 2957 阅读 · 0 评论 -
c++中运算符重载
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; dou转载 2015-03-23 21:25:44 · 761 阅读 · 0 评论 -
最长增长子序列(串),最大公共子序列(串),
300. Longest Increasing Subsequence子序列,不需要连续的。思路一:传统的dp,dp[i]表示前i个数且以第i个数字结尾的最长增长子序列,遍历数组,dp[i] = max(dp[i], dp[j] + 1) if nums[i] > nums[j], j from 0 to i思路二:维护一个数组,vec[i]表示,当递增序列长度是i的时候最后一...原创 2018-09-22 00:01:08 · 446 阅读 · 0 评论