泳鱼

Results 65 issues of 泳鱼

春秋季是求职的黄金时期,借这时机分享下程序员面试相关的感悟。 本文立意不仅于面试技巧,而贵在通过梳理面试过程,帮助大家系统地完善技能树,找到更有发展前景的工作平台。一场完整的面试通常包括:简历准备、笔试(或无)、面试。 ![](https://upload-images.jianshu.io/upload_images/11682271-82ba19cacac86bea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 1 简历准备 好的简历,就已经成功了一半。**简历的重要性不仅在展现个人形象,通常还会主导整场面试。** 面对海量的求职简历,面试官通常没有过多时间准备针对性的面试问题,这时简历就起着面试 **“发言稿”** 的作用。一份优秀的简历,主要从两个方面:简历排版及内容。 ## 1.1 简历排版 --层次感、突出重点 简历投递后,通常由HR进行初筛,面对着成百上千的简历,每份简历HR只有几秒钟浏览并判断这份简历是否合适。 那么如何设计简历,导向HR的正向判断呢? 我们先来看一个概念:**首因效应**,也叫优先效应或第一印象效应。在简历内容上,先看到的内容更容易被记住和重视。分析阅读如下简历的顺序习惯,我们通常由上往下,从左上角开始看,更侧重右边的内容。并按信息类别针对性地阅读。如下箭头阅读侧重的先后顺序。 ![](https://upload-images.jianshu.io/upload_images/11682271-3b3d45309b76c189.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 所以,我们的简历排版可以从以下两方面考虑: 1)层次感:模块化展示个人信息、工作经历、项目经验信息会更有层次感,内容更清晰。 2)突出重点:结合首因效应排版,并可以地将较优秀的方面(如名校学历、重点项目经验)放比较靠前显眼的位置,突出重点。 ## 1.2 简历内容 --经得起推敲、精炼 写简历的第一原则是要对简历内容负责,要经得起推敲。其次是简历要精炼表达。 简历内容主要有个人信息、工作经历(在校/实习经历)、项目经验(专业技能)、自我介绍(或其他): ### 1.2.1 工作经历...

神经网络(深度学习)学习到的是什么?一个含糊的回答是,学习到的是数据的本质规律。但具体这本质规律究竟是什么呢?要回答这个问题,我们可以从神经网络的原理开始了解。 ## 一、 神经网络的原理 神经网络学习就是一种特征的表示学习,把原始数据通过一些简单非线性的转换成为更高层次的、更加抽象的特征表达。深度网络层功能类似于“生成特征”,而宽度层类似于“记忆特征”,增加网络深度可以获得更抽象、高层次的特征,增加网络宽度可以交互出更丰富的特征。通过足够多的转换组合的特征,非常复杂的函数也可以被模型学习好。 ![](https://img-blog.csdnimg.cn/img_convert/cd308e9dfc9c1fb2027f7fad77a8d164.png) **可见神经网络学习的核心是,学习合适权重参数以对数据进行非线性转换,以提取关键特征或者决策。即模型参数控制着特征加工方法及决策**。 了解了神经网络的原理,我们可以结合项目示例,看下具体的学习的权重参数,以及如何参与抽象特征生成与决策。 ## 二、神经网络的学习内容 ### 2.1 简单的线性模型的学习 我们先从简单的模型入手,分析其学习的内容。像线性回归、逻辑回归可以视为单层的神经网络,它们都是广义的线性模型,可以学习输入特征到目标值的线性映射规律。 如下代码示例,以线性回归模型学习波士顿各城镇特征与房价的关系,并作出房价预测。数据是波士顿房价数据集,它是统计20世纪70年代中期波士顿郊区房价情况,有当时城镇的犯罪率、房产税等共计13个指标以及对应的房价中位数。 ![](https://img-blog.csdnimg.cn/img_convert/eff335b972c6e059674f610206fbbd61.png) ``` import pandas as pd import numpy as np from keras.datasets import boston_housing #导入波士顿房价数据集...

# 一、神经网络类别 一般的,神经网络模型基本结构按信息输入是否反馈,可以分为两种:前馈神经网络和反馈神经网络。 ### 1.1 前馈神经网络 前馈神经网络(Feedforward Neural Network)中,信息从输入层开始输入,每层的神经元接收前一级输入,并输出到下一级,直至输出层。整个网络信息输入传输中无反馈(循环)。即任何层的输出都不会影响同级层,可用一个有向无环图表示。 常见的前馈神经网络包括卷积神经网络(CNN)、全连接神经网络(FCN)、生成对抗网络(GAN)等。 ![](https://img-blog.csdnimg.cn/img_convert/6bba0348f1ccbfca787f3691dc7924fb.png) ### 1.2 反馈神经网络 反馈神经网络(Feedback Neural Network)中,神经元不但可以接收其他神经元的信号,而且可以接收自己的反馈信号。和前馈神经网络相比,反馈神经网络中的神经元具有记忆功能,在不同时刻具有不同的状态。反馈神经网络中的信息传播可以是单向也可以是双向传播,因此可以用一个有向循环图或者无向图来表示。 常见的反馈神经网络包括循环神经网络(RNN)、长短期记忆网络(LSTM)、Hopfield网络和玻尔兹曼机。 ![](https://img-blog.csdnimg.cn/img_convert/b89ad5e42be150fab63b902064d0e47e.png) # 二、经典神经网络模型介绍 ### 全连接神经网络(FCN) 全连接神经网络是深度学习最常见的网络结构,有三种基本类型的层: 输入层、隐藏层和输出层。当前层的每个神经元都会接入前一层每个神经元的输入信号。在每个连接过程中,来自前一层的信号被乘以一个权重,增加一个偏置,然后通过一个非线性激活函数,通过简单非线性函数的多次复合,实现输入空间到输出空间的复杂映射。 ![](https://img-blog.csdnimg.cn/img_convert/6bba0348f1ccbfca787f3691dc7924fb.png) ### 卷积神经网络(CNN) 图像具有非常高的维数,因此训练一个标准的前馈网络来识别图像将需要成千上万的输入神经元,除了显而易见的高计算量,还可能导致许多与神经网络中的维数灾难相关的问题。卷积神经网络提供了一个解决方案,利用卷积和池化层,来降低图像的维度。由于卷积层是可训练的,但参数明显少于标准的隐藏层,它能够突出图像的重要部分,并向前传播每个重要部分。传统的CNNs中,最后几层是隐藏层,用来处理“压缩的图像信息”。 ![](https://img-blog.csdnimg.cn/img_convert/0728625032c4c14c54c2580d174b1c09.png)...

>本文侧重于模型拟合能力的探讨。过拟合及泛化能力方面下期文章会专题讨论。 原理上讲,神经网络模型的训练过程其实就是拟合一个数据分布(x)可以映射到输出(y)的数学函数 f(x),而拟合效果的好坏取决于数据及模型。 那对于如何提升拟合能力呢?我们首先从著名的单层神经网络为啥拟合不了XOR函数说起。 ## 一、单层神经网络的缺陷 单层神经网络如逻辑回归、感知器等模型,本质上都属于广义线性分类器(决策边界为线性)。这点可以从逻辑回归模型的决策函数看出,决策函数Y=sigmoid(wx + b),当wx+b>0,Y>0.5;当wx+b

## 为什么要激活函数? 原理上来说,神经网络模型的训练过程其实就是拟合一个数据分布(x)可以映射到输出(y)的数学函数,即 y= f(x)。 拟合效果的好坏取决于数据质量及模型的结构,像逻辑回归、感知机等线性模型的拟合能力是有限的,连xor函数都拟合不了,那神经网络模型结构中提升拟合能力的关键是什么呢? ![](https://img-blog.csdnimg.cn/img_convert/5ede0fe9eded6f9449d45d1820af48fc.png) 搬出神经网络的万能近似定理可知,“一个前馈神经网络如果具有线性输出层和至少一层具有任何一种‘‘挤压’’ 性质的激活函数的隐藏层,只要给予网络足够数量的隐藏单元,它可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的Borel可测函数。”简单来说,前馈神经网络有“够深的网络层”以及“至少一层带激活函数的隐藏层”,既可以拟合任意的函数。 在此激活函数起的作用是实现特征空间的非线性转换,贴切的来说是,“数值上挤压,几何上变形”。如下图,在带激活函数的隐藏层作用下,可以对特征空间进行转换,最终使得数据(红色和蓝色线表示的样本)线性可分。 ![](https://img-blog.csdnimg.cn/img_convert/45dad1ae27b541b6f28db963996476f8.png) 而如果网络没有激活函数的隐藏层(仅有线性隐藏层),以3层的神经网络为例,可得第二层输出为: ![](https://img-blog.csdnimg.cn/img_convert/8c4b41f7c7fef725cbb02a34d46153f9.png) 对上式中第二层的输出a^[2]进行化简计算 ![](https://img-blog.csdnimg.cn/img_convert/2c08a6f549fc2290622dbb7b42ece8ae.png) 可见无论神经网络有多少层,输出都是输入x的线性组合,多层线性神经网络本质上还是线性模型,而其转换后的特征空间还是线性不可分的。 ## 如何选择合适的激活函数? 如果一个函数能提供非线性转换(即导数不恒为常数),可导(可导是从梯度下降方面考虑。可以有一两个不可导点, 但不能在一段区间上都不可导)等性质,即可作为激活函数。在不同网络层(隐藏层、输出层)的激活函数关注的重点不一样,隐藏层关注的是计算过程的特性,输出层关注的输出个数及数值范围。 那如何选择合适的激活函数呢?这是结合不同激活函数的特点的实证过程。 - sigmoid 与 tanh ![](https://img-blog.csdnimg.cn/img_convert/8d29d780630c89e848443fe15e5caeeb.png) ![](https://img-blog.csdnimg.cn/img_convert/8c44833d6aeed14c920e57a242040142.png) 从函数图像上看,tanh函数像是伸缩过的sigmoid函数然后向下平移了一格,确实就是这样,因为它们的关系就是线性关系。 ![](https://img-blog.csdnimg.cn/img_convert/3a39a316ec9e2794ade889b042cb2593.png) 对于隐藏层的激活函数,一般来说,tanh函数要比sigmoid函数表现更好一些。...

序列文章 上文[《[一文速览机器学习的类别(Python代码)](https://www.jianshu.com/p/fbe59dc46907)》](https://www.jianshu.com/p/fbe59dc46907) 提到逻辑回归并做了简单介绍。本文将从神经元到逻辑回归模型结构,并将其扩展到深度深度网络模型。 ## 一、谈谈智慧 对于人类智慧奥秘的探索,不同时代、学科背景的人对于智慧的理解及其实现方法有着不同的思想主张。有的主张用显式逻辑体系搭建人工智能系统,即符号主义。有的主张用数学模型模拟大脑组成以实现智慧,即联结主义,这也就是我们本文讨论的方向。 那大脑为什么能够思考?科学家发现,原因在于人体的神经网络,而神经网络的基本组成就是神经元: ![](https://img-blog.csdnimg.cn/img_convert/f8b12e5a3b40464f058634886e959531.png) 1、外部刺激通过神经元的神经末梢,转化为电信号,传导到神经元。 2、神经元的树突接收电信号,由神经元处理是否达到激活阈值再输出兴奋或者抑制电信号,最后由轴突将信号传递给其它细胞。 3、无数神经元构成神经中枢。神经中枢综合各种信号,做出判断。 4、 人体根据神经中枢的指令,对外部刺激做出反应。 ## 二、神经元 既然智慧的基础是神经元,而正因为神经元这些特点才使大脑具有强大的 “运算及决策的能力”,科学家以此为原理发明了人工神经元数学模型,并以神经元为基础而组合成人工神经网络模型。(注:下文谈到的神经元都特指人工神经元) ![](https://img-blog.csdnimg.cn/img_convert/fb5acecffcc506dd049fc30ddd267579.png) 如上图就是人工神经元的基本结构。它可以输入一定维数的输入(如:3维的输入,x1,x2, x3),每个输入都相要乘上相应的权重值(如:w0,w1,w2),乘上每一权重值的作用可以视为对每一输入的加权,也就是对每一输入的神经元对它的重视程度是不一样的。 接下来神经元将乘上权重的每个输入做下求和(也就是加权求和),并加上截距项(截距项b可以视为对神经元阈值的直接调整),最后由激活函数(f)非线性转换为最终输出值。 激活函数的种类很多,有sigmoid,tanh,sign,relu,softmax等等(下一专题会讨论下激活函数)。激活函数的作用是在神经元上实现一道非线性的运算,以通用万能近似定理——“如果一个前馈神经网络具有线性输出层和至少一层隐藏层,只要给予网络足够数量的神经元,便可以实现以足够高精度来逼近任意一个在 ℝn 的紧子集 (Compact subset) 上的连续函数”所表明,激活函数是深度神经网络学习拟合任意函数的前提。 ## 三、神经元到逻辑回归 单个神经元且其激活函数为sigmoid时,既是我们熟知的逻辑回归的模型结构。...

> 注:本文基于之前的文章做了些修改,重复部分可以跳过看。示例的项目为基于LR模型对癌细胞分类的任务。 随着人工智能时代的到来,机器学习已成为解决问题的关键工具。我们接下来会详细介绍机器学习如何应用到实际问题,并概括机器学习应用的一般流程。 ![](https://img-blog.csdnimg.cn/img_convert/d038027b3de5f0f90cbed41c8977fa99.png) ## 1.1 明确问题 明确业务问题是机器学习的先决条件,即抽象出该问题为机器学习的预测问题:需要学习什么样的数据作为输入,目标是得到什么样的模型做决策作为输出。 一个简单的新闻分类的场景,就是学习已有的新闻及其类别标签数据,得到一个文本分类模型,通过模型对每天新的新闻做类别预测,以归类到每个新闻频道。 ![](https://img-blog.csdnimg.cn/img_convert/060d85a5e96228a8d0075fdad7fabfe2.png) ## 1.2 数据选择 机器学习广泛流传一句话:“数据和特征决定了机器学习结果的上限,而模型算法只是尽可能逼近这个上限”,意味着数据及其特征表示的质量决定了模型的最终效果,且在实际的工业应用中,算法通常占了很小的一部分,大部分的工作都是在找数据、提炼数据、分析数据及特征工程。 数据选择是准备机器学习原料的关键,需要关注的是: ① 数据的代表性:数据质量差或无代表性,会导致模型拟合效果差; ② 数据时间范围:对于监督学习的特征变量X及标签Y,如与时间先后有关,则需要划定好数据时间窗口,否则可能会导致数据泄漏,即存在和利用因果颠倒的特征变量的现象。(如预测明天会不会下雨,但是训练数据引入明天温湿度情况); ③ 数据业务范围:明确与任务相关的数据表范围,避免缺失代表性数据或引入大量无关数据作为噪音。 ## 2 特征工程 特征工程就是对原始数据分析处理转化为模型可用的特征,这些特征可以更好地向预测模型描述潜在规律,从而提高模型对未见数据的准确性。特征工程按技术上可分为如下几步: ① 探索性数据分析:数据分布、缺失、异常及相关性等情况; ② 数据预处理:缺失值/异常值处理,数据离散化,数据标准化等; ③...

序列文章: 上一篇 [《白话机器学习概念》](https://mp.weixin.qq.com/s/wS40NkZwkPnJK-RciYLk-A) ## 一、 机器学习类别 机器学习按照学习数据经验的不同,即训练数据的标签信息的差异,可以分为监督学习(supervised learning)、非监督学习(unsupervised learning)、半监督学习(semi- supervised learning)和强化学习(reinforcement learning)。 ### **1.1 监督学习** 监督学习是机器学习中应用最广泛及成熟的,它是从有标签的数据样本(x,y)中,学习如何关联x到正确的y。这过程就像是模型在给定题目的已知条件(特征x),参考着答案(标签y)学习,借助标签y的监督纠正,模型通过算法不断调整自身参数以达到学习目标。 监督学习常用的模型有:线性回归、朴素贝叶斯、K最近邻、逻辑回归、支持向量机、神经网络、决策树、集成学习(如LightGBM)等。按照应用场景,以模型预测结果Y的取值有限或者无限的,可再进一步分为分类或者回归模型。 **分类模型** 分类模型是处理预测结果取值有限的分类任务。如下示例通过逻辑回归分类模型,根据温湿度、风速等情况去预测是否会下雨。 - 逻辑回归简介 逻辑回归虽然名字有带“回归”,但其实它是一种广义线性的分类模型,由于模型简单和高效,在实际中应用非常广泛。 逻辑回归模型结构可以视为双层的神经网络(如图4.5)。模型输入x,通过神经元激活函数f(f为sigmoid函数)将输入非线性转换至0~1的取值输出,最终学习的模型决策函数为Y=sigmoid(wx + b) 。其中模型参数w即对应各特征(x1, x2, x3...)的权重(w1,w2,w3...),b模型参数代表着偏置项,Y为预测结果(0~1范围)。 模型的学习目标为极小化交叉熵损失函数。模型的优化算法常用梯度下降算法去迭代求解损失函数的极小值,得到较优的模型参数。 ![](https://img-blog.csdnimg.cn/img_convert/8a3c30a9fa09b21f3a2173bb845e91f4.png)...

# 一、异常检测简介 异常检测是通过数据挖掘方法发现与数据集分布不一致的异常数据,也被称为离群点、异常值检测等等。![](https://upload-images.jianshu.io/upload_images/11682271-9e73016e04ae093b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 1.1 异常检测适用的场景 异常检测算法适用的场景特点有: (1)无标签或者类别极不均衡; (2)异常数据跟样本中大多数数据的差异性较大; (3)异常数据在总体数据样本中所占的比例很低。 常见的应用案例如: 金融领域:从金融数据中识别”欺诈用户“,如识别信用卡申请欺诈、信用卡盗刷、信贷欺诈等; 安全领域:判断流量数据波动以及是否受到攻击等等; 电商领域:从交易等数据中识别”恶意买家“,如羊毛党、恶意刷屏团伙; 生态灾难预警:基于天气指标数据,判断未来可能出现的极端天气; 医疗监控:从医疗设备数据,发现可能会显示疾病状况的异常数据; ![](https://upload-images.jianshu.io/upload_images/11682271-ffd5e7555dc99ff1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 1.2 异常检测存在的挑战 异常检测是热门的研究领域,但由于异常存在的未知性、异质性、特殊性及多样性等复杂情况,整个领域仍有较多的挑战: - 1)最具挑战性的问题之一是难以实现高异常检测召回率。由于异常非常罕见且具有异质性,因此很难识别所有异常。 - 2)异常检测模型要提高精确度(precision)往往要深度结合业务特征,否则效果不佳,且容易导致对少数群体产生算法偏见。 # 二、异常检测方法 按照训练集是否包含异常值可以划分为异常值检测(outlier detection)及新颖点检测(novelty detection),新颖点检测的代表方法如one...

# 一、大数据框架及Spark介绍 ## 1.1 大数据框架 2003年,Google公布了3篇大数据奠基性论文,为大数据存储及分布式处理的核心问题提供了思路:非结构化文件分布式存储(GFS)、分布式计算(MapReduce)及结构化数据存储(BigTable),并奠定了现代大数据技术的理论基础,而后大数据技术便快速发展,诞生了很多日新月异的技术。 ![](https://upload-images.jianshu.io/upload_images/11682271-6632ff07081c0bb9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 归纳现有大数据框架解决的核心问题及相关技术主要为: - 分布式存储的问题:有GFS,HDFS等,使得大量的数据能横跨成百上千台机器; - 大数据计算的问题:有MapReduce、Spark批处理、Flink流处理等,可以分配计算任务给各个计算节点(机器); - 结构化数据存储及查询的问题:有Hbase、Bigtable等,可以快速获取/存储结构化的键值数据; - 大数据挖掘的问题:有Hadoop的mahout,spark的ml等,可以使用分布式机器学习算法挖掘信息; ## 1.2 Spark的介绍 Spark是一个分布式内存批计算处理框架,Spark集群由Driver, Cluster Manager(Standalone,Yarn 或 Mesos),以及Worker Node组成。对于每个Spark应用程序,Worker Node上存在一个Executor进程,Executor进程中包括多个Task线程。 ![](https://upload-images.jianshu.io/upload_images/11682271-7083a750bc05d515.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 在执行具体的程序时,Spark会将程序拆解成一个任务DAG(有向无环图),再根据DAG决定程序各步骤执行的方法。该程序先分别从textFile和HadoopFile读取文件,经过一些列操作后再进行join,最终得到处理结果。 ![](https://upload-images.jianshu.io/upload_images/11682271-915b88a00ec35fed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) PySpark是Spark的Python...