文章目录
-
-
- SVM
- **balance的方法**
- 逻辑回归和SVM的联系
- 朴素贝叶斯
- 逻辑回归和线性回归
- KNN
- KD树
- 决策树
- 随机森林
- GBDT
- Shrinkage
- 最小二乘法
- 和随机森林的区别
- EM
- Bagging
- Boosting
- 凸集
- 凸函数
- daBoost
- 分类回归的区别
- 生成模型和判别模型的区别
- 过拟合
- 样本不均衡
- 深度学习的实质
- 激活函数
- 特征选择
- 垃圾邮件分类
- 梯度下降
- 牛顿迭代
- L1和L2的区别
- 高斯核
- 线性核
- 逻辑回归和线性回归的区别
- 集成学习
- EM算法
- 归一化
- 完整的机器学习流程
- new和malloc的区别
- hash冲突解决方法
- 熵值
- 卷积
- 池化
- 梯度下降的困难
- 牛顿法
- python内存管理
- 损失函数
- 有什么要问的
-
https://yoyoyohamapi.gitbooks.io/mit-ml/content/逻辑回归/articles/多分类问题.html
- pac overfitting解决,如何从100个特征中选20个特征,有哪些方法
- 垃圾短信多分类任务(如何分开发票,广告,商铺信息等),有什么思路
- 6现在做的机器学习相关项目
- 7是否上过相关公开课,详细说明
- 8自己的长处
- 9未来工作意向 L1正则和L2正则的区别
- 朴素贝叶斯为什么被称为“朴素”?
- 请详细介绍一下朴素贝叶斯分类器。
- 什么是深度学习?深度学习和机器学习的区别是什么?
- 在无监督学习中,如何进行文件聚类?
- 如何找到与某些查询语句/搜索相关的文件?
- 解释下TF-IDF技术。
- 根据我的经验来看,TF-IDF技术在文件分类或聚类上效果并不好,你将如何改进?
- 什么是word2vec模型?
- 解释下python中的可变对象和不可变对象。
- 你在python中使用过什么数据结构?
- 解释一下支持向量机(SVM)如何学习非线性边界。
- 训练决策树时,其参数是什么?
- 在决策树的某个节点处进行分割,其分割标准是什么?
- 基尼系数的计算公式是什么?
- 熵的计算公式是什么?
- 决策树如何决定在哪个特征处必须进行分割?
- 如何利用数学计算收集来的信息?
- 简述随机森林的优点。
- 简述boosting算法。
- 梯度提升算法(gradient boosting)是怎样工作的?
- 简述AdaBoost算法工作原理。
- SVM中用到了哪些内核?SVM的优化技术有哪些?
- SVM如何学习超平面?论述下其数学运算细节。
- 谈一谈无监督学习?都有哪些算法?
- 如何定义K-Means聚类算法中K的值?
- 列举至少3中定义K-Means聚类算法中K的方法。
- 除此之外你还知道哪些聚类算法?
- 介绍一下DB-SCAM算法。
- 简述下分层凝聚聚类(Hierarchical Agglomerativeclustering)的工作原理。
- 解释一下主成分分析算法(PCA),简述下使用PCA算法的数学步骤。
- 20.使用 PCA算法有哪些缺点?
- 谈谈卷积神经网络的工作原理?详细说明其实现细节。
- 解释一下卷积神经网络中的反向传播。
- 你如何部署机器学习模型?
- 我们大部分情况下都要用C++从零开始搭建一个机器学习模型,这一点你能做到吗?
- 在不平衡数据集中,你会选择什么模型:随机森林还是Boosting?为什么?
- 你所了解的Boosting技术有哪些?
- 采用监督学习解决分类问题,你会选择哪个模型?假设有 40-50个分类!
- 你怎样使用合奏(Ensemble)技术?
- 简述支持向量机(SVM)的工作原理。
- 什么是Kernel?简单介绍一下。
- 如何实现非线性回归?
- 什么是Lasso回归和Ridge回归?
- Sigmoid 函数的范围是什么?
- 说出scikit-learn能够实现逻辑回归的包的名称。
- 标准正态分布的均值和方差分别是多少?
- 你在Python中都使用什么数据结构?
- 文本分类的方法有哪些?你会怎么做分类?
- 解释TF-IDF技术及其缺点,如何克服TF-IDF的缺点?
- 什么是双词搭配(Bigrams)和三词搭配(Trigrams)?用一个文本语句解释一下双词搭配和三词搭配的TF-IDF技术。
- 举例说明word2vec有哪些应用。
- 如何设计一个神经网络?如何做到“深度”?这是一个基础的神经网络问题。
- 简述LSTM的工作原理。它是如何记住文本的?
- 什么是朴素贝叶斯分类器?
- 抛10次硬币,4次是正面的概率是多少?
- 如何获取Python列表中元素的索引?
- 如果合并两个pandas数据集?
- 从用户行为来看,你需要模拟一个欺诈活动,你会如何解决这个问题?这是可能是一个异常检测问题或分类问题!
- 决策树和随机森林,你更喜欢哪一个?
- 逻辑回归和随机森林有什么区别?
- 你会用决策树还是随机森林来解决分类问题?随机森林有什么优点?
SVM
Support Vector Machine,希望求得每没类元素最近的距离最远,
- 训练数据线性可分:硬间隔最大化
- 训练集近似线性可分:软间隔最大化
- 线性不可分:和技巧及软间隔最大化
- 离散集合:核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积
- 和方法:隐式的从高维的特征空间中学习线性支持向量机。
感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求解最优分离超平面。
一个点距离分离平面的远近可以表示分类预测的确信程度,在超平面wx+b=0确定的情况下,|wx+b|能够相对的表示点x距离超平面的远近,而wx+b的符号与标记y的符号是否一致能够表示分类是否正确。
函数间隔就是y(wx+b),但是随着w的改变,可能平面不变,但是函数间隔会变,因此几何间隔提取出了真正的距离,除以一个权重的值。
逻辑回归是一种分类的方法,主要用于二分类,从训练数据特征学习出一个0/1分类模型,以一个线性组合作为自变量,使用逻辑函数将自变量映射到(0,1)上,LR分类器实际上就是求解一组权值,带入逻辑函数中,得到一个类别为1和类别为0的概率。
可以用梯度下降求解
balance的方法
调整正、负样本在求cost时的权重,比如按比例加大正样本cost的权重。然而deep learning的训练过程是on-line的因此你需要按照batch中正、负样本的比例调整。
做训练样本选取:如hard negative mining,只用负样本中的一部分。
做训练样本选取:如通过data augmentation扩大正样本数量。
两个都是线性分类器
逻辑回归和SVM的联系
1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。
区别
1、LR是参数模型,SVM是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
5、logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。
- 数据方面
- Linear SVM不直接依赖数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance一般需要先对数据做balancing。
- Linear SVM依赖数据表达的距离测度,所以需要对数据先做normalization;LR不受其影响
- 过拟合方面
- LR容易欠拟合,准确度低。
- SVM不太容易过拟合:松弛因子+损失函数形式
- 注意SVM的求解方法叫拉格朗日乘子法,而对于均方误差的优化方法是最小二乘法。
- 选择:
- 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
- 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
- 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
- svm适合处理的数据
- 高维稀疏,样本少。
- 【参数只与支持向量有关,数量少,所以需要的样本少,
- 由于参数跟维度没有关系,所以可以处理高维问题】
优点:
- 使用核函数可以向高维空间进行映射
- 使用核函数可以解决非线性的分类
- 分类思想很简单,就是将样本与决策面的间隔最大化
- 分类效果较好
缺点:
- 对大规模数据训练比较困难
- 无法直接支持多分类,但是可以使用间接的方法来做
SVM多分类的问题:
- 直接法:直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,计算复杂度比较高,实现起来困难
- 简介法:
- 一对多:其中某个类为一类,剩下n-1一个类为另一个类,一次遍历所有的类,每个类都有单独成为一个类的机会,训练和类别数量相等的分类器,最后在测试的时候将分类器取最大值为分类器。
- 一对一:每两个类都拿出来训练一个分类器,但是最后代价太大。
朴素贝叶斯
时间A和B同时发生的概率为A发生的情况下发生B或者B发生的情况下发生A,对于给出的待分类项,求解在此项目条件下各个目标类别出现的概率,哪个最大就认为此待分类项属于哪个类别。
假如现在有样本x=(a1,a2,a3…,an),有分类目标Y={y1,y2,…,yn}
那么max(P(y1|x),P(y2|x)…)就是分类结果
P(yi|x)=P(x|yi)*P(yi)/P(x),而样本可以看成由特征组成,因此可以把x换成对特征求相同值以后的求和
相当于从样本中统计出来
P(ai|yi)代表该类别下该特征出现的概率
P(yi)代表全部类别中,该类别出现的概率
- 如果输入是连续值,考虑满足高斯分布,用高斯分布的概率来做
- 如果某个类别中某个特征没有出现,会导致0,引入拉普拉斯校验,对于每类别下面的所有划分计数加一。
- 要求特征之间独立,可以使用DAG进行概率图的描述
优点:对小规模数据表现好,适合多分类任务,适合增量训练
缺点:对于输入的数据很敏感
逻辑回归和线性回归
逻辑回归是一个线性的二分类问题,主要是计算在某个样本特征下事件发生的概率
线性函数+sigmoid函数求得,这个线性和函数权重的特征值的累加以及加上偏置求出来的,所以训练其实就是在训练这个权重。
所以求解问题就变成了这个最大似然函数的最优化问题,这里通常会采样随机梯度下降法和拟牛顿迭代法来进行优化
如果类别之间是否互斥(比如音乐只能属于古典音乐、乡村音乐、摇滚月的一种)就用softmax 否则类别之前有联系