【NLP数据竞赛】“达观杯”文本智能处理挑战赛(四)线性回归LR+支持向量机SVM

一. 理论学习

1.逻辑回归(LR)

LR在【Datawhale-初级算法梳理】小组中有学习过,笔记见此处

2.支持向量机(SVM)

a) 简介

支持向量机(support vector machines, SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

b) 算法

SVM算法(线性可分支持向量机学习算法一一最大间隔法)

c) SVM的特点和不足

特点:非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射; 对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心; 支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量;少数的支持向量决定了样本结果,这使得算法有较高的“鲁棒”性。它属于凸优化问题,所以局部最优一定是全局最优解。

不足:

1、SVM对于大样本数据训练难以实施,由于SVM是借助二次规划来求解支持向量的,从而涉及到m阶矩阵的计算,从而消耗了很大的空间和时间。针对上述问题的改进方法为SMO算法。

2、经典的SVM只给出了二分类的算法,但实际中更多的是多分类问题,所以我们一般通过构造多个二分类支持向量机的组合来解决。主要有一对多模式,一对一模式和SVM决策树。

3、对缺失数据敏感,对参数和核函数的选择敏感,对于一个实际问题来说,核函数的选取带有一定的经验性,并没有一个合理的解释,所以在不同的领域还是没有很好的方法来解决核函数的选取问题。
 

二、 代码实践

1、逻辑回归代码

lr = LogisticRegression(C=120,dual=True)
lr.fit(x_train,y_train)
 
y_test = lr.predict(x_test)

2、SVM代码

params = {'penalty':['l2','l1'],'C':[2.0,3.0,5.0]}
svc = LinearSVC(dual=False)
clf = GridSearchCV(estimator=svc, param_grid=params, scoring = 'f1_macro', n_jobs=1, cv=3, verbose=3)
clf.fit(x_train,y_train)
print('最优参数:{}'.format(clf.best_params_))
 
y_test = clf.predict(x_test)

原博文链接:
https://blog.csdn.net/u012914436/article/details/89132931#逻辑回归(LR)模型
https://blog.csdn.net/hsk6543210/article/details/89220680

猜你喜欢

转载自blog.csdn.net/qq_35175666/article/details/89221382