[LeetCode] Maximum Product Subarray的4种解法

leetcode每日解题思路 221 Maximal Square

LeetCode:Subsets I II

(2)数学题或者"智力"题。

如果一个女生说,她集齐了十二个星座的前男友,我们应该如何估计她前男友的数量?

如何理解矩阵的「秩」?:

  • 「秩」是图像经过矩阵变换之后的空间维度
  • 「秩」是列空间的维度

矩阵低秩的意义?:低秩表征着一种冗余程度。
秩越低表示数据冗余性越大,因为用很少几个基就可以表达所有数据了。相反,秩越大表示数据冗余性越小。

一个m*n的矩阵,如果秩很低(秩r远小于m,n),则它可以拆成一个m*r矩阵和一个r*n矩阵之积(类似于SVD分解)。后面这两个矩阵所占用的存储空间比原来的m*n矩阵小得多。

如何理解矩阵特征值?:

VD的效果就是..用一个规模更小的矩阵去近似原矩阵...

这里A就是代表图像的原矩阵..其中的尤其值得关注,它是由A的特征值从大到小放到对角线上的..也就是说,我们可以选择其中的某些具有“代表性”的特征值去近似原矩阵!

为什么梯度反方向是函数值下降最快的方向?

导数的几何意义可能很多人都比较熟悉: 当函数定义域和取值都在实数域中的时候,导数可以表示函数曲线上的切线斜率。 除了切线的斜率,导数还表示函数在该点的变化率。

将上面的公式转化为下面图像为:

(3)机器学习基础

逻辑回归SVM决策树

逻辑回归和SVM的区别是什么?各适用于解决什么问题?

这两种算法都是基于回归的概念。

逻辑回归相对容易理解,就是通过Sigmoid函数将线性方程ax+b对应到一个隐状态P,P=S(ax+b),然后根据发生概率(p)与没有发生概率(1-p)的大小决定因变量的取值,0或者1。具体操作就是p除以1-p再取对数,这个变换增加了取值区间的范围;改变了函数值与自变量间的曲线关系,根据大量实验数据,这个变换往往能使函数值和自变量之间呈线性关系。

SVM则是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题.简单地说,就是升维和线性化。作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归)。一般的升维都会带来计算的复杂化,但SVM方法巧妙地应用核函数的展开定理简化了计算,不需要知道非线性映射的显式表达式

。简单来说,SVM是在高维特征空间中建立线性学习机,几乎不增加计算的复杂性,并且在某种程度上避免了“维数灾难”,这一切要归功于核函数的展开和计算理论.

综上所述,逻辑回归和SVM都可以用于分类问题的解决,其主要区别就在于映射函数选择上的不同,逻辑回归常用于处理大数据,而SVM则正好相反。

SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。

而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重,两者的根本目的都是一样的。

svm考虑局部(支持向量),而logistic回归考虑全局

1.损失函数不一样,逻辑回归的损失函数是log loss,svm的损失函数是hinge loss
2.损失函数的优化方法不一样,逻辑回归用剃度下降法优化,svm用smo方法进行优化
3.逻辑回归侧重于所有点,svm侧重于超平面边缘的点
4.svm的基本思想是在样本点中找到一个最好的超平面

Linear SVM 和 LR 有什么异同?

相同点:

1,LR和SVM都是分类算法。
2,如果不考虑核函数,LR和SVM都是线性分类算法,即分类决策面都是线性的。
3,LR和SVM都是监督学习算法。

不同点:

1,本质上是其loss function不同。
2,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。
线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。
3,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
​这个问题理解起来非常简单。分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​
4,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
5,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!

本节来自算法比较-SVM和logistic回归,该博客里有些写的并不准确,具有参考价值。

在Andrew NG的课里讲到过:
1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

SVM(支持向量机)属于神经网络范畴吗?

可以说神经网络是通过多个感知器(Perceptron)的组合叠加来解决非线性的分类问题. 而SVM通过核函数视图非线性的问题的数据集转变为核空间中一个线性可分的数据集.
另外, 神经网络非常依赖参数. 比如学习率, 隐含层的结构与节点个数. 参数的好坏会极大影响神经网络的分类效果. 而SVM是基于最大边缘的思想, 只有少量的参数需要调整.

如何理解决策树的损失函数?

各种机器学习的应用场景分别是什么?例如,k近邻,贝叶斯,决策树,svm,逻辑斯蒂回归和最大熵模型。

主成分分析,奇异值分解

SVD 降维体现在什么地方?

为什么PCA不被推荐用来避免过拟合?:

PCA是一种无监督学习,其存在的假设是:方差越大信息量越多。但是信息(方差)小的特征并不代表表对于分类没有意义,可能正是某些方差小的特征直接决定了分类结果,而PCA在降维过程中完全不考虑目标变量的做法会导致一些关键但方差小的分类信息被过滤掉。

随机森林,GBDT, 集成学习

为什么说bagging是减少variance,而boosting是减少bias?

基于树的adaboost和Gradient Tree Boosting区别?

机器学习算法中GBDT和XGBOOST的区别有哪些?

为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?

过拟合

机器学习中用来防止过拟合的方法有哪些?

1 获取更多数据,2 数据增强&噪声数据3 简化模型.

提前终止,L1和L2正则化 

正则化的一个最强大最知名的特性就是能向损失函数增加“惩罚项”(penalty)。所谓『惩罚』是指对损失函数中的某些参数做一些限制。最常见的惩罚项是L1和L2:

  • L1惩罚项的目的是将权重的绝对值最小化
  • L2惩罚项的目的是将权重的平方值最小化

Dropout-深度学习

机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?

(4)深度学习基础

卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batch normalization,各类经典的网络结构,各类优化方法

卷积神经网络工作原理直观的解释?

卷积神经网络的复杂度分析:时间和空间,以及影响。

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

bp算法中为什么会产生梯度消失?

梯度下降法是万能的模型训练算法吗?

LSTM如何来避免梯度弥散和梯度爆炸?

sgd有多种改进的形式(rmsprop,adadelta等),为什么大多数论文中仍然用sgd?

你有哪些deep learning(rnn、cnn)调参的经验?

Adam那么棒,为什么还对SGD念念不忘 (1)

Adam那么棒,为什么还对SGD念念不忘 (2)

全连接层的作用是什么?

深度学习中 Batch Normalization为什么效果好?

为什么现在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上调整的?

Krizhevsky等人是怎么想到在CNN里用Dropout和ReLu的?

AI涉及到数学的一些面试题汇总的更多相关文章

  1. 收藏所用C#技术类面试、笔试题汇总

    技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补 ...

  2. C/C++ 经典面试题汇总

    面试题1:变量的声明和定义有什么区别 ? 为变量分配地址和存储空间的称为定义,不分配地址的称为声明.一个变量可以在多个地方声明,但是只在一个地方定义.加入extern修饰的是变量的声明,说明此变量将在 ...

  3. Linux面试题汇总答案

    转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...

  4. Python面试题汇总

    原文:http://blog.csdn.net/jerry_1126/article/details/44023949 拿网络上关于Python的面试题汇总了,给出了自认为合理的答案,有些题目不错,可 ...

  5. iOS常见面试题汇总

    iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...

  6. 【2017年新篇章】 .NET 面试题汇总(二)

    本次给大家介绍的是我收集以及自己个人保存一些.NET面试题第二篇 第一篇文章请到这里:[2017年新篇章] .NET 面试题汇总(一) 简介 此次包含的不止是.NET知识,也包含少许前端知识以及.ne ...

  7. 转:.NET 面试题汇总(二)

    目录 本次给大家介绍的是我收集以及自己个人保存一些.NET面试题第二篇 简介 1.接口 2.您在什么情况下会用到虚方法或抽象类,接口? 3.重载(Overload )和覆写(Override)的区别 ...

  8. Linux面试题汇总答案(转)

    转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...

  9. Java面试题汇总---升级版(附答案)

    前几天写了Java面试题汇总---基础版,总结了面试中常见的问题及答案,那我今天基于昨天的话题做一次升级,也就是说,求职者除了要学习了解哪些常见的基础面试题之外,还得准备些什么呢? 对有工作经验的求职 ...

随机推荐

  1. 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest

    2014-2015 ACM-ICPC, Asia Tokyo Regional Contest A B C D E F G H I J K O O O O   O O         A - Bit ...

  2. 【电脑】xshell报:需要Xmanager软件来处理X11转发请求

    https://www.netsarang.com/zh/xmanager/ 下载了就好了 我的图片出不来,下了就好了.

  3. 修改MyEclipse/Eclipse左侧文字大小(MacOS/Windows)

    一.Windows 首先找到 Eclipse/MyEclipse 的安装目录,然后找到如下目录: \plugins\org.eclipse.ui.themes_1.1.200.v20160815-05 ...

  4. 配置Maven环境变量-Eclipse/Idea添加Maven

    1. 文件下载 官网下载地址:http://maven.apache.org/download.cgi 下方有我提供的下载链接. 由于下载缓慢,提供一份我的下载链接:https://www.lanzo ...

  5. Spring和SpringMVC总结篇

    作者:肥宅兜链接:https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1.为什么使用Spring ? 方便解耦,简化开发;通过Spring提供的Io ...

  6. 二分法构造AVL树

    public class ConvertSortedArrayToBinarySearchTree { public static TreeNode sortedArrayToBST(int[] nu ...

  7. python入门之作用域

    作用域的分类 1.全局作用域 全局可以调用的名字就存在于全局作用域 内置名称空间 + 全局名称空间 2.局部作用域 局部可以调用的名字就存放于局部作用域 局部名称空间 3. global 声明全局变量 ...

  8. MD5加盐与安全

    PHP开发者对md5()这个函数是熟悉不过了,很多开发者都使用md5('abc123')对用户密码进行加密处理,这样做没有错,但是安全性还是很低的,因为很多网站的用户数据都是用md5进行加密处理的,所 ...

  9. Sitecore 8.2 数据库权限设置

    在我的一个项目中,客户决定改变基础设施.在这个过程中,我得到了一些新的东西需要学习.在本文中,我将分享有关Sitecore数据库权限的经验. 在将数据库从一个服务器移动到另一个服务器时,您需要检查提供 ...

  10. Java开发笔记(一百四十五)FXML布局的伸展适配

    前面介绍了FXML的基本格式及其控制器的用法,算是打通了FXML方式的编码流程.程序界面通常保持固定尺寸,不过有时也允许用户拖曳窗口大小,不拖不打紧,一拖就可能坏事.像之前的登录窗口,没拖的时候界面如 ...