孤立森林算法_图像算法 面试积累

1. VGG中为什么用 3*3的卷积?

  VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)
  目的是: 1 VGG中,使用了3个3x3卷积核来代替7x7卷积核,使用了2个3x3卷积核来代替5*5卷积核,目的训练降低参数
          2 采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式

2. SVM中什么时候用线性核什么时候用高斯核?

SVM支持向量机,一般用于二分类模型,支持线性可分和非线性划分。SVM中用到的核函数有线性核linear、
多项式核函数pkf以及高斯核函数rbf。当训练数据线性可分时,一般用线性核函数,直接实现可分;
当训练数据不可分时,需要使用核技巧,将训练数据映射到另一个高维空间,使再高维空间中,数据可线性划分,

但需要注意的是,若样本n和特征m很大时,且特征m>>n时,需要用线性核函数,因为此时考虑高斯核函数的映射后空间维数更高,
更复杂,也容易过拟合,此时使用高斯核函数的弊大于利,选择使用线性核会更好;若样本n一般大小,特征m较小,
此时进行高斯核函数映射后,不仅能够实现将原训练数据再高维空间中实现线性划分,而且计算方面不会有很大的消耗,
因此利大于弊,适合用高斯核函数;若样本n很大,但特征m较小,同样难以避免计算复杂的问题,因此会更多考虑线性核。

2.2 多态 (子类继承父类, 并且覆写父类方法,java中 将子类的对象赋给父类的引用)

import 

3. __init__.py的作用

Python杂谈: __init__.py的作用​www.cnblogs.com python 中的__init__.py的用法与个人理解​www.cnblogs.com
1d814451edda8f04258aaf9ed8623b87.png
1.标识该目录是一个python的模块包(module package)
2.配合__all__ 关联了一个模块列表,控制模块导入 from ... import *
  __init__.py 修改为 __all__ = ['subpackage_1', 'subpackage_2']

总结:__init__.py 文件就是一个正常的python代码文件,因此可以将初始化代码放入该文件中
我们可以组织一个package

3.2 明确函数形参的 数据类型 方便自己阅读代码

# py 没有具体的参数类型这种写法能起到类似多态的作用,使得函数不必指定具体的对象类型,增加了灵活性。

4.k-means算法的步骤,及有缺点以及与DBSCAN的区别

https://www.cnblogs.com/hugechuanqi/p/10509307.html​www.cnblogs.com
k-means优点:
1.原理比较简单,实现也是很容易,收敛速度快, 聚类效果较优
2.算法的可解释度比较强,主要需要调参的参数仅仅是簇数k。

k-means缺点:
1.K值的选取不好把握
2.对噪音和异常点比较的敏感
3.采用迭代方法,得到的结果只是局部最优,对于不是凸的数据集比较难收敛。

5. canny 边缘检测步骤

图像处理:Canny边缘检测算法原理(一)_YBAdiam的博客-CSDN博客​blog.csdn.net
bde81e20658be05523477c552008061c.png

6.dlib (hog +svm) hog 特征提取步骤

HOG特征提取原理_沈春旭的博客-CSDN博客​blog.csdn.net
70f8b068beb32e7f52dfdfb8d59bedae.png
HOG特征提取算法的实现过程:
HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口):
1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);
2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);
目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;
3)计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。
4)将图像划分成小cells(例如6*6像素/cell);
5)统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;
6)将每几个cell组成一个block(例如3*3个cell/block),一个block内所有cell的特征descriptor串联
   起来便得到该block的HOG特征descriptor。
7)将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG
   特征descriptor了。这个就是最终的可供分类使用的特征向量了。

bea0e139fe77cbe185262097a3b80c70.png
目标检测的图像特征提取之(三)Haar特征_liulina603的专栏-CSDN博客​blog.csdn.net
09ccf7b168330dc75525e43e9904bbe3.png
Haar特征:Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。
特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。
核心思想是通过 差分提取特征

06160fb6719c1df216ae7bfb1a066272.png

Isolation Forest

异常检测iforest算法介绍_u010569893的博客-CSDN博客​blog.csdn.net
d9d6dbc0f84f115a9b2ecb412fc361ea.png
Isolation Forest 孤立森林 属于unsupervised的方法,即不需要有标记的训练: 异常检测方法,
iForest 适用于连续数据的异常检测,将异常定义为 容易被孤立的离群点。 具体的,确定一个维度的特征,
并在最大值和最小值之间随机选择一个值 x ,然后按照小于 x 和 大于等于x 可以把数据分成左右两组。
然后再随机的按某个特征维度的取值把数据进行细分,重复上述步骤,直到无法细分,
直到数据不可再分。直观上,异常数据较少次切分就可以将它们单独划分出来,而正常数据恰恰相反。
sklearn.ensemble.IsolationForest
contamination:默认为auto,数据集中异常样本的比例

优点:高精准度
缺点: iForest不适用于特别高维的数据

11516fba11901693c4ba2a0881e2e242.png

One-Class SVM

Python机器学习笔记:One Class SVM​www.cnblogs.com
481360162ca544f2d437d941524e2993.png
One-Class SVM 是一种novelty detection方法:它的训练集不应该掺杂异常点,因为模型可能会去匹配这些异常点。
但在数据维度很高,或者对相关数据分布没有任何假设的情况下,OneClassSVM也可以作为一种很好的outlier detection方法。

novelty(奇异) detection:当训练数据中没有离群点,我们的目标是用训练好的模型去检测另外发现的新样本
outlier(异常) detection:当训练数据中包含离群点,模型训练时要匹配训练数据的中心样本,忽视训练样本中的其他异常点

算法的思路非常简单,就是寻找一个超平面将样本中的正例圈出来,预测就是用这个超平面做决策,
在圈内的样本就认为是正样本。由于核函数计算比较耗时,在海量数据的场景用的并不多
class sklearn.svm.OneClassSVM(kernel=’rbf’, degree=3, ...)  rbf: 高斯核函数

4caff62b535709c8cd7129b32e62468e.png

RF与GBDT之间的区别与联系

相同点:
1)都是由多棵树组成
2)最终的结果都由多棵树共同决定

不同点:
1)组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成
2)组成随机森林的树可以并行生成(Bagging), GBDT只能串行生成(Boosting)
3)随机森林的结果是多数表决表决的,而GBDT则是多棵树加权累加之和
4)随机森林对异常值不敏感,而GBDT对异常值比较敏感
5)随机森林是减少模型的方差(高方差/过拟合),而GBDT是减少模型的偏差(高偏差/欠拟合)
6)随机森林不需要进行特征归一化,而GBDT则需要进行特征归一化

谈谈你对重写,重载理解

谈谈你对重写,重载理解
    函数重载 Overload:
    必须在同一个类中进行
    在一个类中,同名的方法如果有不同的参数列表(参数类型不同、
                           参数个数不同甚至是参数顺序不同)则视为重载
    重载的时候,返回值类型可以相同也可以不相同

    函数重写 Override:
    必须发生于父类与子类之间(继承)
    子类 在方法名,参数列表,返回类型都相同的情况下, 对方法体进行修改或重写,这就是重写
    使用virtual声明之后能够产生多态(如果不使用virtual,那叫重定义)

设计模式基本原则

设计模式基本原则:   最终目的:高内聚,低耦合
 1)  开放封闭原则  (OCP,Open For Extension, Closed For Modification Principle)
     类的改动是通过增加代码进行的,而不是修改源代码。
 3)  依赖倒置原则 (DIP,Dependence Inversion Principle)
     依赖于抽象(接口),不要依赖具体的实现(类),也就是针对接口编程。
 7)  迪米特法则(LOD,Law of Demeter)
     一个对象应当对其他对象尽可能少的了解,从而降低各个对象之间的耦合,提高系统的可维护性。

 设计模式 的核心是多态的应用:
        C++多态成立的三个条件:
         1 要有继承
         2 有virtual重写
         3 要有父类指针(父类引用)指向子类对象  Animal * animal = new Cat;

C++ 与 python 单例模式实现

/** 单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法
class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值