精华内容
下载资源
问答
  • 请在留言讨论啊;

    请在留言讨论啊;

    展开全文
  • 支持向量机(SVM)

    2019-08-08 15:34:10
    在决定分离超平面时,只有支持向量起作用,但支持向量的个数一般很少,所以支持向量机由很少的训练样本确定(噪声影响很大)。 网址1:https://www.cnblogs.com/pinard/p/6097604.html 网址2:https:...

    在理解推导的过程中需要细心耐心。
    支持向量:在训练数据集的样本点与分离超平面距离最近的样本点。
    在决定分离超平面时,只有支持向量起作用,但支持向量的个数一般很少,所以支持向量机由很少的训练样本确定(噪声影响很大)。

    网址1
    网址2
    网址3

    展开全文
  • 支持向量机(二)

    2017-11-04 19:10:36
    1)训练好的模型的算法复杂度由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting(过拟合) 2)SVM训练出来的模型完全依赖于支持向量,即使训练集中所有非支持向量的点被去除,重复...
     一.理论
    1.总结
    1)训练好的模型的算法复杂度由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting(过拟合)
    2)SVM训练出来的模型完全依赖于支持向量,即使训练集中所有非支持向量的点被去除,重复训练过程,结果仍然会得到完全一样的模型。
    3)一个SVM如果训练得出的支持向量个数比较少,SVM训练出的模型比较容易被泛化。
    2.线性不可分的情况
    1)数据集在空间中对应的向量不可被一个超平面分开
    2)解决方法:
    a.利用一个非线性的映射把元数据集中的向量点转化到一个更高维度的空间中;

    b.在这个高维度的空间中找一个线性的超平面来根据线性可分的情况处理;


    3.如何利用非线性映射把原数据转化到高维中?

    1)将三维转化至六维


    2)思考
    如何选择合理的非线性转化把数据转到高维中?
    如何解决计算内积时算法复杂度非常高的问题?
    3)使用核方法
    4.核方法

    1)动机:在线性SVM转化为最优化问题时求解的公式计算都是以内积的形式出现的

    是把训练集中的向量点转化到高维的非线性映射函数,因为内积的算法复杂度非常大,所以我们利用核函数来取代计算非线性映射函数的内积。
    以下核函数和非线性映射函数的内积等同:

    2)常用的核函数(kernel functions)


    3)问题
    如何选择使用哪个核函数?
    根据先验知识,比如图像分类,通常使用RBF,文字不适用RBF
    尝试不同的kernel,根据结果准确度而定

    4)核函数举例


    5.SVM扩展可解决多个类别分类问题
    对于每个类,有一个当前类和其他类的二类分类器(one-vs-rest)

    二.实践

    1)代码

    # -*- coding: utf-8 -*-
    #使用SVM进行人脸识别
    from time import time #程序运行时间
    import logging  #打印程序信息
    import matplotlib.pyplot as plt #图形化


    from sklearn.cross_validation import train_test_split
    from sklearn.datasets import fetch_lfw_people
    from sklearn.grid_search import GridSearchCV
    from sklearn.metrics import classification_report
    from sklearn.metrics import confusion_matrix
    from sklearn.decomposition import RandomizedPCA
    from sklearn.svm import SVC


    print(__doc__)
    #打印程序进展信息
    logging.basicConfig(level=logging.INFO,format='%(asctime)s %(message)s')
    #下载数集
    lfw_people = fetch_lfw_people(min_faces_per_person =70,resize=0.4)
    #数据集中获取样本数量、高度、宽度
    n_samples,h,w = lfw_people.images.shape


    #获取数据
    X = lfw_people.data 
    #多少维度,特征值数量
    n_features = X.shape[1]
    #图片标记
    y = lfw_people.target
    target_names = lfw_people.target_names
    n_classes = target_names.shape[0]


    print("Total dataset size")
    print("n_samples:%d"%n_samples)
    print("n_features:%d"%n_features)
    print("n_classes:%d"%n_classes)
    #数据分为训练集和测试集
    X_train,X_test,y_train,y_test = train_test_split(
    X,y,test_size=0.25)


    n_components = 150


    print("Extracting the top %d eigenfaces from %d faces"
          %(n_components,X_train.shape[0]))
    #开始计时
    t0 = time()
    #高维的特征向量降维
    pca = RandomizedPCA(n_components = n_components,whiten=True).fit(X_train)
    print("done in %0.3fs"%(time()-t0))
    #人脸中提取特征值
    eigenfaces = pca.components_.reshape(n_components,h,w)


    print("Projecting the input data on the eigenfaces orthonormal basis")
    t0 = time()
    X_train_pca = pca.transform(X_train)
    X_test_pca = pca.transform(X_test)
    print("done is %0.3fs"%(time()-t0))


    #降维后的数据结合分类器进行分类
    print("Fitting the classifiter to the training set")
    t0 = time()
    param_grid = {"C":[1e3,5e3,1e4,5e4,1e5],
                  "gamma":[0.0001,0.0005,0.001,0.005,0.01,0.1],}
    clf = GridSearchCV(SVC(kernel="rbf",class_weight="auto"),param_grid)
    clf = clf.fit(X_train_pca,y_train)
    print("done is %0.3fs"%(time()-t0))
    print("Best estimator found by gird search")
    print(clf.best_estimator_)


    #测试集预测
    print("Predicting people's names on the test set")
    t0 = time()
    y_pred = clf.predict(X_test_pca)
    print("done is % 0.3fs"%(time()-t0))


    print(classification_report(y_test,y_pred,target_names=target_names))
    print(confusion_matrix(y_test,y_pred,labels=range(n_classes)))


    #结果显示
    def plot_gallery(images ,title,h,w,n_row=3,n_clo=4):
        plt.figure(figsize=(1.8*n_clo,2.4*n_row))
        plt.subplots_adjust(bottom=0,left=.01,right=.99,top=.90,hspace=.35)
        for i in range(n_clo*n_row):
            plt.subplot(n_row,n_clo,i+1)
            plt.imshow(images[0].reshape(h,w),cmp=plt.cm.gray)
            plt.title(title[i],size=12)
            plt.xticks()
            plt.yticks()
    def title(y_pred,y_test,target_names,i):
        pred_name = target_names[y_pred[i]].rsplit(" ",1)[-1]
        true_name = target_names[y_test[i]].rsplit(" ",1)[-1]
        return "predicted:%s\ntrue:   %s"%(pred_name,true_name)


    prediction_titles = [title(y_pred,y_test,target_names,i)
                    for i in range(y_pred.shape[0])]


    plot_gallery(X_test,prediction_titles,h,w)


    eigenfaces_titles = ["eigentitles %d"
                         %i for i in range(eigenfaces.shape[0])]
    plot_gallery(eigenfaces,eigenfaces_titles,h,w)


    plt.show()

    2)实验结果

    Total dataset size
    n_samples:1288
    n_features:1850
    n_classes:7
    Extracting the top 150 eigenfaces from 966 faces

    done is 33.550s
    Best estimator found by gird search
    SVC(C=1000.0, cache_size=200, class_weight='auto', coef0=0.0,
      decision_function_shape=None, degree=3, gamma=0.005, kernel='rbf',
      max_iter=-1, probability=False, random_state=None, shrinking=True,
      tol=0.001, verbose=False)
    Predicting people's names on the test set
    done is 0.097s
                       precision    recall  f1-score   support


         Ariel Sharon       1.00      0.54      0.70        24
         Colin Powell       0.81      0.82      0.81        61
      Donald Rumsfeld       0.81      0.81      0.81        21
        George W Bush       0.81      0.97      0.88       136
    Gerhard Schroeder       0.74      0.64      0.68        22
          Hugo Chavez       0.91      0.59      0.71        17
           Tony Blair       1.00      0.80      0.89        41


          avg / total       0.85      0.84      0.83       322


    [[13  3  1 ...,  0  0  0]
     [ 0 50  1 ...,  0  1  0]
     [ 0  3 17 ...,  0  0  0]
     ..., 
     [ 0  0  1 ..., 14  0  0]
     [ 0  1  0 ...,  2 10  0]
     [ 0  3  0 ...,  2  0 33]]

    3)数据加载位置

    runfile('E:/Python项目/MachineLearning/SVM/SVM03.py', wdir='E:/Python项目/MachineLearning/SVM')
    2017-11-04 22:16:49,322 Loading LFW people faces fromC:\Users\流浪者\scikit_learn_data\lfw_home

    在程序中:lfw_people = fetch_lfw_people(min_faces_per_person =70,resize=0.4)加载数据,可以考虑将数据在网站上下载至对应位置

    即将lfw_funneled文件夹复制在:C:\Users\流浪者\scikit_learn_data\lfw_home之下,形成


    展开全文
  • 支持向量机(SVM)--线性不可分

    千次阅读 2017-12-04 18:49:03
    1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting  1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量...

    1. SVM算法特性:

    这里写图片描述

    1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 
    1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。 
    1.3 一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。

    2. 线性不可分的情况(linearly inseparable case)

    这里写图片描述

    2.1 数据集在空间中对应的向量不可被一个超平面区分开 
    2.2 两个步骤来解决:

    • 利用一个非线性的映射把原数据集中的向量点转化到一个更高维度的空间中
    • 在这个高维度的空间中找一个线性的超平面来根据线性可分的情况处理

    这里写图片描述

    下图更容易理解,将一维数据映射到二维空间,就线性可分啦 
    这里写图片描述

    2.3 如何利用非线性映射把原始数据转化到高维中?

    这里写图片描述

    思考问题: 
    - 如何选择合理的非线性转化把数据转到高纬度中? 
    - 如何解决计算内积时算法复杂度非常高的问题?

    解决方法: 
    - 使用核方法(kernel trick)

    这里写图片描述

    这里写图片描述

    展开全文
  • SVM支持向量机 原理 推导 ...训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting SVM训练出来的模型完全依赖于支持向量(Support V...
  • 近年来,支持向量机(SVM)方法在电力系统...该方法较标准的支持向量回归算法,不仅可以提高预测性能,而且能够减少支持向量的个数。实际算例表明,该方法能够有效地提高预测精度,缩短预测时间,具有良好的泛化性能。
  • 1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量...
  • 训练好的模型的算法复杂度是由支持向量的个数决定的,若不是由数据的维度决定的。所以SVM不容易产生overfiting SVM训练出来的模型完全依赖于support vectors,即使训练集里面所有非支持向量的点都被去除,重复训练...
  • [img=https://img-bbs.csdn.net/upload/201504/16/1429195576_986229.png][/img]训练出模型文件怎么是这样呢?
  • 1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易·产生overfitting。 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors),及时训练集里面所有非...
  • 1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量...
  • 1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。 所有SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors),即使训练集里面所有非支持...
  • (1)训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的纬度决定的,所以SVM不太容易产生overfitting (2)SVM训练出来的模型完全依赖于支持向量(support vectors),即使训练集里面所有非支持...
  • 训练好的模型算法复杂度是由支持向量的个数决定,而不是数据维度决定,所以SVM不太容易过拟合。 SVM训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持点都去除,重复训练过程,结果模型完全一样 一个...
  • 1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量...
  • 1. SVM算法特性:1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集...
  • (1)训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定。所以,SVM不太容易产生overfitting。 (2)SVM训练出来的模型完全依赖于支持向量(Support Vectors),即使训练集里面所有非支持...
  • 1.SVM算法特性: 1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持向量的...
  • 1. SVM算法特性:1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting 1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面...
  • 采用该算法,分类的准确率可从基于无监督聚类的支持向量机算法的86.81%提升至95.43%,核函数计算量由原数量级109下降到106以下,采取限制密度聚类中的核心点ε-邻域内的反例百分比的方法,可以增加约简样本的个数,...
  • 与支持向量机(SVM)相比,相关向量机的优点在于其输出结果是一种概率模型,其相关向量的个数远远小于支持向量的个数,并且测试时间短.总结了相关向量机的基本原理及主要应用领域,详细阐述了相关向量机的模型结构以及分类...
  • PSO-SVM模型的评价结果与综合评价结果的相同率(注:该相同率是指两个评价结果相同的个数占所有评价样本数的百分比)达到95.56%,与SVM模型评价结果的相同率达到91.11%。结合研究区实际情况并分析三种评价结果得出,PSO-...
  • 支持向量机SVM

    2019-10-02 13:19:14
    支持向量机(SupportVectorMachine,SVM),集成了最大间隔超平面、Mercer核、凸二次规划、稀疏解和松弛变量等多项技术。 核表示方式将数据映射到高位空间来增加线性学习器计算能力。训练样本不会独立出现,而...
  • 支持向量机(三)

    2017-10-25 12:53:12
    现假设n表示特征变量的个数,m表示训练数据的个数,则: 当n>>m时,我们推荐使用不带核函数的支持向量机,即线性核函数。同时,我们也可以使用逻辑回归模型。 当n较小,而m适中时(如n = 1~1000,m = 10~10000),...
  • 目前,利用数据挖掘的方法进行暂态稳定评估的研究,对结果中不稳定样本被...对仿真系统的分析表明,文中提出的方法能够充分利用不同参数的支持向量机提供的有效信息,大量减少误判样本的个数,可以对应用数据挖掘理论进
  • 针对遗传算法(GA)与支持向量机(SVM)集成相结合的疾病诊断方法存在属性冗余的问题,提出了一种改进的约简和诊断乳腺癌决策方法。该方法将最小化约简属性个数、最大化区分矩阵可区别属性的个数以及最大化约简属性...
  • 支持向量机SVM中对偶问题

    千次阅读 2014-09-24 15:48:42
    6 拉格朗日对偶(Lagrange duality)  先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法,比如下面的最优化问题: ... L是等式约束的个数。  然后分别对w和求偏导,使得偏
  • 基于web日志特征,这里选取了四个特征,分别是:url长度、url中包含的第三方域名的个数、敏感字符的个数、敏感关键字的个数def get_len(url): return len(url) def get_url_count(url): if re.search('(https://)|...
  • 其基本思想是我们将数据集中的点在n维空间中表示出来,其中n表示数据中变量的个数。然后寻找一个超平面将其分成不同的类别。如下图所示: 工作原理 通常支持向量机采用超平面将数据进行分类,那么怎么确定一个...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

支持向量的个数