不注册公司可以做网站吗,网站前端开发培训资料,海门市规划建设局网站,网站内容更新及时1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。 3.欢迎批评指正,欢迎互三,跪谢一键三连! 4.欢迎… 1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。 3.欢迎批评指正,欢迎互三,跪谢一键三连! 4.欢迎批评指正,欢迎互三,跪谢一键三连! 5.欢迎批评指正,欢迎互三,跪谢一键三连! 文章目录 1.环境前置说明1.`OC-SVM`简要总结2.`scikit-learn`中`One-Class SVM`常用方法及参数含义2.1 `One-Class SVM`中常用方法2.2 参数含义 3.`scikit-learn`中`One-Class SVM`实战测试3.1 训练、预测、边界距离计算3.2 训练集数据正常异常点占比分布3.3 测试集上预测3.4 训练集点位分布可视化3.5 测试集点位分布可视化 4 奇怪问题 1.环境前置说明 import sklearn
print( sklearn.__version__ )
# 0.19.2!python --version
# Python 3.7.0
# 版本过高,部署至生产环境会产生N多问题,暂时不使用过高版本,实战总结为主1.OC-SVM简要总结
OC-SVM(One-Class Support Vector Machine)是一种无监督学习算法,支持向量机(Support Vector Machine,SVM)的变体,广泛应用于异常检测、离群点检测、网络安全、图像处理等领域。它可以帮助识别潜在的异常情况,对于保护系统的安全和发现异常行为具有重要的作用。OC-SVM旨在通过仅使用正常数据来建模,识别出与正常模式不同的异常数据点。即仅使用正例样本来学习一个描述正例样本特征的超平面,并尽可能将负例样本远离该超平面(也可以仅使用负样本)。 工作原理及相关术语 数据映射:将正常数据映射到高维特征空间,使得正常数据点能够被一个超平面所包围(决策边界margin)。寻找最优超平面:通过最大化超平面与正常数据之间的间隔,寻找一个最优的分割超平面,使得异常点尽可能远离该超平面。即决策边界要尽可能远离正常数据点。异常检测:对于新数据点,通过计算其与超平面的距离,来判断该数据点是否为异常。距离较大的数据点更有可能是异常点。 模型重要参数 nu参数控制异常点的比例。它限制在模型中允许存在的异常点的比例。较小的nu值表示更少的异常点,较大的nu值表示更多的异常点。kernel参数定义了用于计算样本之间相似度核函数,例如线性核、高斯核等。 优缺点总结 [S] 不需要异常数据进行训练,只需要正常数据即可。[S] 对于高维数据和复杂的数据分布具有较好的适应性。[S] 调整模型参数控制异常点的检测灵敏度。[W] 在处理高维数据和大规模数据时,计算复杂度较高[W] 数据分布不均匀或存在噪声的情况,效果可能不理想[W] 需要谨慎选择模型参数,以避免过拟合或欠拟合的情况 TSNE t-SNE( t-distributed Stochastic Neighbor Embedding)是目前来说效果最好的数据降维与可视化方法,它能够将高维的数据降维到2维或3维,然后画成图的形式表现出来。目前来看,t-SNE是效果相对比较好,并且实现比较方便的方法。过于高维一般不使用,当数据维数过高时,两个矩阵的计算量是很大的。所以一般来说,我们会先用 PCA 降维到 10 维左右,再使用 t-SNE 降维到 2 或 3 维空间进行可视化。如果在低维空间中具有可分性,则数据是可分的;如果在高维空间中不具有可分性,可能是数据不可分,也可能仅仅是因为不能投影到低维空间。t-SNE(TSNE)的原理是将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似度由“学生t分布”表示。 2.scikit-learn中One-Class SVM常用方法及参数含义
2.1 One-Class SVM中常用方法
fit(X):输入训练样本进行训练。predict(X):返回预测值,+1就是正常样本,-1就是异常样本。decision_function(X):返回各样本点到超平面的函数距离(signed distance),正的为正常样本,负的为异常样本。set_params(**params):设置这个评估器的参数。get_params([deep]):获取这个评估器的参数。 | Methods defined here:| | decision_function(self, X)| Signed distance to the separating hyperplane.| | Signed distance is positive for an inlier and negative for an outlier.| | Parameters| ----------| X : array-like, shape (n_samples, n_features)| | Returns| -------| X : array-like, shape (n_samples,)| Returns the decision function of the samples.| | fit(self, X, y=None, sample_weight=None, **params)| Detects the soft boundary of the set of samples X.| | Parameters| ----------| X : {array-like, sparse matrix}, shape (n_samples, n_features)| Set of samples, where n_samples is the number of samples and| n_features is the number of features.| | sample_weight : array-like, shape (n_samples,)| Per-sample weights. Rescale C per sample. Higher weights| force the classifier to put more emphasis on these points.| | Returns| -------| self : object| Returns self.| | Notes| -----| If X is not a C-ordered contiguous array it is copied.| | predict(self, X)| Perform classification on samples in X.| | For an one-class model, +1 or -1 is returned.| | Parameters| ----------| X : {array-like, sparse matrix}, shape (n_samples, n_features)| For kernel="precomputed", the expected shape of X is| [n_samples_test, n_samples_train]| | Returns| -------| y_pred : array, shape (n_samples,)| Class labels for samples in X.| Methods inherited from sklearn.base.BaseEstimator:| | __getstate__(self)| | __repr__(self)| Return repr(self).| | __setstate__(self, state