迭代模型

Machine Learning第二课

爷,独闯天下 提交于 2020-02-14 04:22:19
本节课的主题 ( 1 ) Linear Regression ( 2 ) Gradient Descent ( 3 ) Normal Equation l Linear Regression 这节课用一个房价预测的例子来完整的过一遍有监督机器学习中预测模型的数学基础和数学理论支持。 首先先约定公式中的 Notation : m 训练集合中的样本个数 x 输入变量或特征 y 输出变量或目标结果 (x,y) 表示一个样本 ( ) 表示第i个样本 然后我们来看房价预测的例子,假设我们已知房子的大小以及其对应的价格,那么我们可以在二维空间上做出下面的图示。 问题是给出某个 size 预测对应的 price ,对于这个问题,根据上节课学到的知识,我们知道这是一个有监督学习问题,因为每个样本中都有明确的输入和输出,同时它又是一个回归问题,我们需要预测出一个实数,一个 price 值。确定了问题的一些特征后,我们接下来一个重要的工作便是考虑用什么数学模型或者 hypothesis 来表示这个问题。 而这个问题,我们如何来表示 h ?我们发现图中的点似乎都逼近于一条直线 ( 当然更像是一个二次函数 ) ,然后我们尝试用最简单的数学模型: 线性模型来表示这个 h ,所以 如果我们发现还有其他输入如房间个数,那么线性方程则变为 ,我们可以假设 =1 ,所以 那么我们的问题就转化为,根据已有的 (x,y

项目原型设计

只愿长相守 提交于 2020-02-13 20:53:24
作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目原型设计 团队目标 切实可行的计算机协会维修预约平台 开发工具 Axue RP 8 原型下载 修!咻咻!维修平台原型设计 PDF下载 修咻咻原型设计PDF 团队信息 队员学号 队员姓名 个人博客地址 备注 221600126 刘忠燏 http://www.cnblogs.com/Downstream-1998/ 221600207 黄权焕 https://www.cnblogs.com/hyry/ 队长 221600328 苏明辉 https://www.cnblogs.com/ahuigg/ 221600330 吴可强 https://www.cnblogs.com/masgak/ 221600331 向鹏 https://www.cnblogs.com/xiang-peng/ 团内分工 队员学号 队员姓名 分工 贡献度 221600126 刘忠燏 用户信息编辑页面原型的设计实现 19% 221600207 黄权焕 文章发布、维修场次通知、登录注册页面原型的设计实现,整理博客内容 20% 221600328 苏明辉 预约零件信息查看页面的设计实现、效能分析、PSP 20% 221600330 吴可强 预约人员信息查看页面的设计实现 19% 221600331 向鹏 用户预约页面原型的设计实现

【Machine Learning in Action --5】逻辑回归(LogisticRegression)

邮差的信 提交于 2020-02-13 20:49:53
1、概述   Logistic regression(逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。   在经典之作《数学之美》中也看到了它用于广告预测,也就是根据某广告被用 户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了。这就是为什么我们的电脑现在广告泛滥的 原因。还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性啊等等。这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只是这个错误发生的可能性太小了,小到千万年不遇,小到忽略不计而已),所以万物的发生都可以用可能性或者几率(Odds)来表达。“几率”指的是某事物发生的可能性与不发生的可能性的比值。 Logistic regression可以用来回归,也可以用来分类,主要是二分类。 2、基本理论 2.1Logistic regression和Sigmoid函数   回归:假设现在有一些数据点,我们用一条直线对这些点进行拟合(该条称为最佳拟合直线),这个拟合过程就称作回归。利用Logistic回归进行分类的思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。这里的“回归”一词源于最佳拟合,表示找到最佳拟合参数,使用的是最优化算法。   Sigmoid函数具体的计算公式如下:         z=w

讲透机器学习中的梯度下降

假装没事ソ 提交于 2020-02-12 09:58:31
本文始发于个人公众号: TechFlow,原创不易,求个关注 在之前的文章当中,我们一起推导了 线性回归 的公式,今天我们继续来学习上次没有结束的内容。 上次我们推导完了公式的时候,曾经说过由于有许多的问题,比如最主要的复杂度问题。随着样本和特征数量的增大,通过公式求解的时间会急剧增大,并且如果特征为空,还会出现公式无法计算的情况。所以和直接公式求解相比,实际当中更倾向于使用另外一种方法来代替,它就是今天这篇文章的主角——梯度下降法。 梯度下降法可以说是机器学习和深度学习当中最重要的方法,可以说是没有之一。尤其是在深度学习当中,几乎清一色所有的神经网络都是使用梯度下降法来训练的。那么,梯度下降法究竟是一种什么样的方法呢,让我们先从梯度的定义开始。 梯度的定义 我们先来看看维基百科当中的定义:梯度(gradient)是一种关于多元导数的概括。平常的一元(单变量)函数的导数是标量值函数,而多元函数的梯度是向量值函数。多元可微函数 \({\displaystyle f}\) 在点 \({\displaystyle P}\) 上的梯度,是以 \({\displaystyle f}\) 在 \({\displaystyle P}\) 上的偏导数为分量的向量。 这句话很精炼,但是不一定容易理解,我们一点一点来看。我们之前高中学过导数,但是高中时候计算的求导往往针对的是一元函数

机器学习基石10-Logistic Regression

烈酒焚心 提交于 2020-02-09 05:50:04
注: 文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳的权重向量 \(w\) ,获得最好的线性预测。本节课将介绍Logistic Regression逻辑回归问题。 一、Logistic Regression Problem 一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出 \(y\) 只有 \({0,1}\) 两种情况。 二元分类,一般情况下,理想的目标函数 \(f(x)>0.5\) ,则判断为正类 \(1\) ;若 \(f(x)<0.5\) ,则判断为负类 \(-1\) 。 但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题('soft' binary classification)。这个值越接近 \(1\) ,表示正类的可能性越大;越接近 \(0\) ,表示负类的可能性越大。 对于软性二分类问题,理想的数据是分布在 \([0,1]\) 之间的具体值,但是实际中的数据只可能是 \(0\) 或者

当下大部分互联网创业公司为什么都愿意采用增量模型来做开发

谁都会走 提交于 2020-02-08 03:36:29
增量模型与螺旋模型类似,都有迭代的过程,因此优点之一也是允许变更需求,通过向用户演示迭代所产生的部分系统功能,可以尽早地收集用户对于系统的反馈,及时改正对于用户需求的理解偏差,从而保证开发出来的系统真正的解决客户的问题,降低业务偏差的风险。 从软件统一开发过程来看,我们把软件开发生命周期划分为四个阶段,先启阶段确定项目开发的目标和范围,精化阶段确定系统架构和明确需求,构建阶段实现剩余的系统功能,产品化阶段完成软件的产品化工作,将系统移交给客户。其每个阶段的结束标志就是一个主要的里程碑,而每个里程碑都是商业上的决策点,如先启阶段结束后,我们就要决定这个项目是否可行。在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,这给互联网创业公司在资金的运转上提供了很大的便利。 从技术角度上考虑,在传统的开发项目中,由于要求一下子集成系统中所有的模块,集成阶段往往要占到整个项目很大的工作量(最高可达40%),这一阶段的工作经常是不确定并且非常棘手。在迭代方法中,集成可以说是连续不断的,每一次迭代都会增量式集成一些新的系统功能,要集成的元素都比过去少的多,所以工作量和难度都是比较低的。 从产品品质上分析,每次迭代都会产生一个可运行的系统,通过对这个可运行系统进行测试,我们在早期的迭代中就可以及时发现缺陷并改正

BP神经网络

纵饮孤独 提交于 2020-02-07 03:02:50
起源:线性神经网络与单层感知器 古老的线性神经网络,使用的是单层Rosenblatt感知器。该感知器模型已经不再使用,但是你可以看到它的改良版:Logistic回归。 可以看到这个网络,输入->加权->映射->计算分类误差->迭代修改W、b,其实和数学上的回归拟合别无二致。 Logistic回归对该模型进行了改良: 线性神经网络(回归)使用的LMS(最小均方)的数学原理其实可由最大似然估计+假设误差概率模型得到。(详见Andrew Ng视频) 在二类分类(误差非0即1)情况下,适用于连续型数据的最小均方显然不是很好的cost函数,会引起梯度过大。 仿照线性回归假设误差服从正态分布建立概率模型,Logistic回归假设误差服从二项分布建立概率模型。 Logistic函数的(0~1连续特性)在这里充当着,由输入评估概率的角色,而不是像下面的BP网络一样,起的是高维空间非线性识别作用。 该手法同样在RBM限制玻尔兹曼机中使用。 实际上,这两种模型的起源都是最小二乘法的线性回归。不同的是,早期的解决线性回归使用的矩阵解方程组,求得参数。 而基于梯度下降使目标函数收敛的数学方法,在计算神经科学领域,就变成神经网络了。 Part I :BP网络的结构与工作方式 BP网络中使用隐层(HideLayer)设定,目的是通过全连接的网络+非线性Sigmoid函数,疯狂地通过特征空间映射来区分非线性数据

【深度学习基础】从零开始的炼丹生活07——深度模型中的优化

喜夏-厌秋 提交于 2020-02-04 07:09:35
往期回顾: 04——从传统机器学习走向深度学习 05——深度前馈网络、神经网络概述 06——深度学习中的正则化 介绍了神经网络的基本构件和正则化策略之后,学习一下深度模型中的优化。先说一说传统的纯优化与机器学习中的优化的异同,再介绍一下神经网络中优化的挑战,最后说说基本的优化算法。(参考《深度学习》第8章) 一、机器学习中的优化 传统的优化方法是纯优化最小化目标 J 本身,而机器学习的优化是间接作用的。在机器学习问题中,我们关注某些性能度量 P ,其定义于测试集上并且是不可解的。因此机器学习希望通过降低代价函数 J(θ)来间接提高 P 。 1. 经验风险最小化 机器学习算法的目标是降低期望泛化误差 J ∗ ( θ ) = E ( x , y ) ∼ p d a t a L ( f ( x ; θ ) , y ) J^*(\theta)=\mathbb E_{(\bold {x,y})\sim p_{data}}L(f(x;\theta),y) J ∗ ( θ ) = E ( x , y ) ∼ p d a t a ​ ​ L ( f ( x ; θ ) , y ) 这被称为 风险 。此时数据取自真实的潜在分布,然而,我们遇到的问题通常并不清楚真实分布,只知道训练集中的样本。 我们将机器学习中的优化转换回一个优化问题的最简单方法就是最小化训练集上的期望损失,以训练集上的经验分布 p

软件生存周期模型之迭代模型

好久不见. 提交于 2020-02-01 15:52:45
什么是迭代模型 迭代式模型是是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。迭代的思想如图所示: 迭代和瀑布的区别 迭代模型同瀑布模型一样,项目也会遵循需求->分析->设计->开发->测试->发布的流程,但不同的是,在前期需求分析阶段,会将所有的需求按照核心功能点-模块-关联模块进行拆分并分期实现,然后以迭代的形式逐步完善功能,在每一次迭代完成后系统都是可以交付的原型,往往第一次迭代都是产品最核心的功能。 迭代和瀑布的最大的差别就在于风险的暴露时间上。“任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么您的计划自然会更趋精确。有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。”  由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来

Java8学习(4)-Stream流

℡╲_俬逩灬. 提交于 2020-02-01 14:44:00
Stream和Collection的区别是什么 流和集合的区别是什么? 粗略地说, 集合和流之间的差异就在于 什么时候 进行计算。集合是一个内存中的数据结构,它包含数据结构中目前所有的值--集合中的每个元素都得先计算出来才能添加到内存里。(你可以往集合里加东西或者删东西,但是不管什么时候,集合中的每个元素都是放在内存里的,元素都得计算出来才能成为集合的一部分。) 相比之下,流则是在概念上固定的数据结构(你不能添加或者删除元素),其元素则是 按需计算 的。这对编程有很大的好处。用户仅仅从流中提取需要的值,而这些值--在用户看不见的地方--只会 按需 生成。这是一种生产者 - 消费者的关系。从另一个角度来说,流就像一个延迟创建的集合:只有在消费者要求的时候才会计算值。 Stream是内部迭代 一个明显的区别是迭代方式不同。Collection需要手动 for-each 或者使用 Iterator 在外部迭代。而Stream则开启后可以直接对单个元素进行操作,内部帮你做好了迭代工作。 内部迭代的好处是可一个更好的并行。自己手写迭代需要处理好每次迭代的内容。为了提高执行效率,也许会把多个处理逻辑写到同一个遍历里。比如,有同事看到从scala转过来的同事的代码,说他写的代码经常重复好多次。scala是函数式语言,和流天然集成。而我们惯性的做法,还是把一堆操作逻辑写到同一个循环体中