- 博客(25)
- 收藏
- 关注
原创 [LeetCode]动态规划中股票问题的通用解法
动态规划中股票问题的通用解法有一类动态规划的问题是给定一个股票价格序列,然后计算买卖股票所能获得的最大收益,这类问题通常有很多变种,例如只允许交易一次,允许交易多次或者增收交易税等。即问题的最大收益通常由交易的时间和允许的最大交易次数(每次交易指一次买与一次卖的一个组合)决定的。可以用T[i][k]表示在第i天结束的时候最多经过k次交易所能获得的最大收益,另外在第i天结束的时候可以有两种状...
2018-09-14 13:06:00
1962
原创 [最优化]凸集的定义与常见凸集
凸集的定义与常见凸集通常认为,如果某个实际问题可以表述为凸优化问题,那么事实上已经解决了这个问题,然而凸优化问题的识别还比较困难,本文将先介绍凸集的定义与常见凸集。仿射集如果集合 C⊆RnC⊆RnC\subseteq R^{n} 是仿射的,等价于:对于任意的 x1,x2∈Cx1,x2∈Cx_{1},x_{2}\in C 及 θ∈Rθ∈R\theta \in R 有 θx1+(1−θ)x...
2018-08-31 18:40:27
20485
2
原创 [机器学习]SVM的推导(3)
软间隔SVM的推导前文介绍了硬间隔SVM的相关推导,本文将继续介绍软间隔SVM的数学推导,即在样本不是线性可分的情况下,允许一部分样本错误分类的SVM。软间隔SVM允许一部分样本不满足约束:yi(w⋅xi)≥0yi(w⋅xi)≥0y_{i}(w\cdot x_{i})\ge 0可以将优化目标写为: minw,b12||w||2+C∑i=1mloss(yi(w⋅xi+b)−1)minw,b...
2018-08-24 10:50:36
354
原创 [机器学习]SVM的推导(2)
硬间隔SVM的SMO序列优化算法上一篇文章(1)我们讨论了硬间隔SVM的推导及其对偶形式,其对偶问题可以化简成以下形式: minαs.t.12∑i=1N∑j=1Nαiαjyiyjxi⋅xj−∑i=1Nαi∑i=1Nαiyi=0αi≥0i=1,2,...,Nminα12∑i=1N∑j=1Nαiαjyiyjxi⋅xj−∑i=1Nαis.t.∑i=1Nαiyi=0αi≥0i=1,2,...,N\b...
2018-08-18 16:54:25
353
原创 [机器学习]SVM的推导(1)
硬间隔的SVM推导SVM是机器学习中的一种经典方法,除了硬间隔SVM之外,还包括软间隔SVM,核技巧等SVM的变种,本文主要介绍硬间隔SVM的推导。假设两类样本点是可以被准确分开的,那么则可以使用硬间隔SVM来进行分类,假设分隔的超平面方程为Wx+b=0Wx+b=0Wx+b=0,则每个样本点xixix_{i}到该超平面的距离为|Wxi+b||Wxi+b||Wx_{i}+b|,如果设定与超平...
2018-08-10 22:36:53
472
原创 [最优化]求解线性方程组(3)
求解线性方程组(3)矩阵的伪逆这里所介绍的伪逆是Moore-Penrose逆矩阵,其定义为:给定矩阵A∈Rm∗nA∈Rm∗nA\in R^{m*n},如果矩阵A†∈Rn∗mA†∈Rn∗mA^{\dagger}\in R^{n*m}满足AA†A=AAA†A=AAA^{\dagger}A=A,且存在两个矩阵U∈Rn∗n,V∈Rm∗mU∈Rn∗n,V∈Rm∗mU\in R^{n*n},V\in ...
2018-07-26 22:24:16
1532
原创 [最优化]求解线性方程组(2)
求解线性方程组(2)线性方程组的最小范数解上一篇博文介绍了线性方程组的情况之一,即未知数数量小于方程个数的情况,介绍了最小二乘法,在本文中将介绍线性方程组的另一种情况,即方程个数小于未知数数量的情况,此时方程组有无限多的解,但是最接近原点的解,即范数最小的解只有一个,也就是这里将会介绍的线性方程组的最小范数解。考虑线性方程组Ax=bAx=bAx=b,其中A∈Rm∗n,m≤nA∈Rm...
2018-07-21 18:02:02
3954
原创 [最优化]求解线性方程组(1)
求解线性方程组(1)最小二乘分析在本文中将讨论线性方程组中的一种情况的求解,即考虑线性方程组 Ax=bAx=bAx=b其中,A∈Rm∗n,b∈Rm,m≥n,rank(A)=nA∈Rm∗n,b∈Rm,m≥n,rank(A)=nA\in R^{m*n},b\in R^{m},m\ge n,rank(A)=n,在这种情况下,未知数的数量小于方程的数量,所以在很大可能上bbb不在AA...
2018-07-20 21:17:02
2253
原创 [LeetCode]207. Course Schedule
该题目利用DFS和BFS来判断某个图是否能进行拓扑排序BFS的思路是先将给定的pair组转换成vector<unordered_set> 格式存放的图,然后计算每个节点的入度,先找到入度为0的节点,如果未找到直接返回false ,找到之后将该点的入度标记为-1,然后将其指向的节点的入度减1,循环n次,如果每次都能找到入度为0的节点,那么可以进行拓扑排序。class Solu...
2018-07-20 16:20:36
164
原创 [机器学习]机器学习中的数值计算(1)
机器学习中的数值计算机器学习算法通常需要大量的数值计算,即通过迭代求解近似值而非求得解析解。这些算法通常包括最优化和线性方程组的求解,在计算机中要通过有限位来表示各种浮点数是具有一定误差的,需要通过一些方法来保证我们的计算精度。上溢与下溢上溢(overflow)是具有破坏力的,当大量级的数被近似为−∞−∞-\infty或者∞∞\infty时会发生上溢,这会导致在下一步的计算中,数字变成...
2018-07-14 18:05:22
1722
原创 [机器学习]利用TensorFlow训练一个简单的神经网络
利用TensorFlow训练一个简单的神经网络我们在这里利用TensorFlow的Eager Execution 来构建模型,这样不用像以前一样创建Graph和Session了,可以使神经网络的训练更加方便快捷,下面以Iris数据集为例来训练一个神经网络,代码来自谷歌的教程。#先导入相关的库from __future__ import absolute_import,division...
2018-07-06 22:23:33
2110
原创 [机器学习]KITTI的雷达+摄像头数据融合
KITTI数据KITTI的数据集有很多,我们在这里选取了其中的raw_data(原始数据)进行融合,数据下载地址:http://www.cvlibs.net/datasets/kitti/raw_data.phpKITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。具体的传感器参数如下 :2...
2018-06-15 21:43:30
11847
9
原创 [最优化]不等式约束的优化问题求解
不等式约束的优化问题求解与前文讨论的只含等式约束的优化问题求解类似,含不等式约束的优化问题同样可以用拉格朗日乘子法进行求解 对于一般形式的优化问题: minimizef(x)subject toh(x)=0g(x)≤0minimizef(x)subject toh(x)=0g(x)≤0minimize\quad f(x)\\subject\ to\quad h(x...
2018-06-08 16:31:23
14679
原创 [C++]C++中的关联容器
关联容器关联容器支持高效的关键字查找和访问,两个主要的关联容器是set和map。map中的元素是一些键值对(key-value),关键字起着索引的作用,值则表示与索引相关联的数据,set中的元素只包含一个关键字。set支持高效的关键字查找操作,底层应该是用的哈希表来实现的。C++标准库提供了8个关联容器,这8个容器的不同体现在三个维度上:set或者map有序或者无序—有无unord...
2018-06-01 15:54:28
422
原创 [机器学习]神经网络反向传播的推导
神经网络反向传播的推导对于神经网络的训练过程而言,其反向传播算法是训练过程的核心,神经网络根据预测值y^y^\hat{y}与实际值yyy的偏差从后向前来计算损失函数对于各个参数的梯度,从而利用梯度下降的方法来优化训练神经网络的各个参数。神经网络的计算流程图如下: 从该流程图可以看到,如果我们要计算神经网络的参数W[1],b[1],W[2],b[2]W[1],b[1],W[2],b[2...
2018-06-01 13:20:32
701
1
原创 [C++]C++中的顺序容器
C++中的顺序容器概述一个容器就是一些特定类型对象的集合。顺序容器提供了控制元素存储和访问顺序的能力。 顺序容器类型vector:可变大小数组,支持快速随机访问deque:双端队列,支持快速随机访问list:双向链表,只支持双向顺序访问forward_list:单向链表,只支持单向顺序访问array:固定大小数组string:与vector类似,仅用于保存和字符选取...
2018-05-25 22:48:13
319
原创 [机器学习]决策树和随机森林算法简介
决策树和随机森林算法简介1-决策树1.1-决策树模型的结构决策树(decision tree)是一种分类与回归方法,本文主要讨论用于分类的决策树,决策树的结构呈树形结构,在分类问题中,其代表基于特征对数据进行分类的过程,通常可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型可读性好并且分类速度快。训练的时候,利用训练数据根据损失函数...
2018-05-24 21:22:21
1827
1
原创 [C++]C++中的IO类
C++中的IO类C++语言不直接处理输入输出,而是通过一组定义在标准库中的类型来处理IO。这些类型支持从设备读取数据,向设备写入数据的IO操作,设备可以是文件,控制台窗口等。还有一些类型允许内存IO,即从string读取数据,向string写入数据等。应用程序不只从控制台窗口进行IO操作,常常需要读写命名文件,并且使用IO操作处理string的字符会很方便,所以在istream和ostre...
2018-05-18 21:11:35
583
原创 [最优化]等式约束的优化问题求解
等式约束的优化问题求解基本概念本文将讨论下类形状的优化问题 minimizef(x)subject&nbsp;toh(x)=0minimizef(x)subject&nbsp;toh(x)=0minimize\quad f(x)\\subject\ to\quad h(x)=0 其中x∈Rn,f:Rn→R,h:Rn→Rm,h=[h1,...,hm]T,m≤nx∈Rn,f:Rn→...
2018-05-18 11:01:35
5781
1
原创 [C++]C++中的构造函数
C++中的构造函数每个类都分别定义了它的对象被初始化的方式,类通过一个或多个特殊的成员函数来控制其对象的初始化过程,这些函数就叫做构造函数(constructor)。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。构造函数的名字和类名相同,但其没有返回类型。类可以包括多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或参数类型上有所区...
2018-05-11 18:48:20
549
原创 [最优化]线性规划中的对偶问题
线性规划中的对偶问题每个线性规划问题都有一个与之对应的对偶问题,对偶问题也是一个线性规划问题,并且对偶问题的对偶问题是原问题。原问题的最优解可以由对偶问题得到,有时候利用对偶理论求解线性规划问题更加简单,也更能了解问题的本质。在对偶理论的启发下,单纯形法的性能得到了改进,也出现了一些求解线性规划问题的非单纯形法,本文暂不详解。对偶关系考虑如下形式的对偶问题 minimizecTxsu...
2018-05-11 13:38:34
16416
原创 [C++]C++函数中的参数传递
C++函数中的参数传递在C++程序中,调用函数的时候需要向函数传入一个参数,除了空参数(void)之外,参数传递分为引用传递和值传递两种引用传递和值传递当形参是引用类型时,称之对应的实参被引用传递,或者函数被传引用调用。和其他引用一样,引用形参也是它绑定的对象的别名;即引用形参是它对应的实参的别名。void reset(int &i){ i=0; //i...
2018-05-04 19:02:08
313
原创 [最优化]求解线性规划问题的单纯形算法
单纯形算法1947年,丹齐格提出了一种求解线性规划问题的方法,即今天所称的单纯形法,这是一种简洁且高效的算法,被誉为20世纪对科学发展和工程实践影响最大的十大算法之一。 上文提到线性规划问题的最优解一定是基本可行解,单纯形法的思路即在不同的基向量下求不同的基本可行解,然后找到最优的解。从几何的角度来看,也就是从一个极点转换到另一个极点,直至找到最优极点的过程。 那么这样的话可以把算法分成三...
2018-05-04 10:41:04
2194
原创 [最优化]线性规划概述
线性规划在最优化问题中有一类问题被称作线性规划问题,属于有约束下的优化问题,线性规划是在线性约束条件下(等式或不等式)求解线性目标函数极值的问题。线性规划问题的标准模型线性规划的标准模型为 minimize cTxcTxc^{T}x subject to Ax=bx≥0Ax=bx≥0Ax=b\\x\ge0 所有的线性规划问题都可以转化成以上的标准型,例如某线性规划问...
2018-04-27 16:26:11
1651
原创 [C++]谈一谈const关键字
C++中的const关键字const关键字的作用在编程的时候我们常常需要定义一种变量,但是这种变量的值是不变的,例如定义pi=3.14,e=2.72或者定义一种材料的弹性模量等,这时候需要用到const关键字const pi=3.14;const e=2.72;const E=2.3;另外还有一种需求,由于C++程序常由多个文件组成,有时候需要在一个文件里面定义cons...
2018-04-26 23:06:05
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人