机器学习之路

常用机器学习算法

2022-02-13  本文已影响0人  Nefelibatas

常用机器学习算法

常用预测(分类,回归)模型:

分类算法:LR , SVM,KNN

矩阵分解:FunkSVD,BiasSVD,SVD++

FM模型:FM, FFM, DeepFM, NFM,AFM

树模型:GBDT, XGBoost, LightGBM, CatBoost,NGBoost

Attention模型:DIN, DIEN, DSIN

LR工具

from sklearn.linear_model.logistic import LogisticRegression

参数

常用方法

fit(X, y, sample_weight=None)

fit_transform(X, y=None, **fit_params)

predict(X) # 用来预测样本,也就是分类

predict_proba(X) # 输出分类概率。返回每种类别的概率,按照分类类别顺序给出。

score(X, y, sample_weight=None) # 返回给定测试集合的平均准确率(mean accuracy)

模型参数配置

model.fit(X_train, y_train)
predict = model.predict_proba(test)[:, 1]
test['Attrition']=predict
# 转化为二分类输出
test['Attrition']=test['Attrition'].map(lambda x:1 if x>=0.5 else 0)
test[['Attrition']].to_csv('submit_lr.csv')

SVM

sklearn中支持向量分类主要有三种方法:SVC、NuSVC、非线性

LinearSVC(解决线性)

sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, 

probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, 

max_iter=-1, decision_function_shape='ovr', random_state=None) </pre>

NuSVC

sklearn.svm.NuSVC(nu=0.5, kernel='rbf', degree=3, gamma='auto', coef0=0.0, 

shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, 

verbose=False, max_iter=-1, decision_function_shape='ovr', random_state=None) 

非线性

sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', dual=True, tol=0.0001, C=1.0, 

multi_class='ovr', fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, 

random_state=None, max_iter=1000)

常用参数:

C,惩罚系数,类似于LR中的正则化系数,C越大惩罚越大

nu,代表训练集训练的错误率的上限(用于NuSVC)

kernel,核函数类型,RBF, Linear, Poly, Sigmoid,precomputed,默认为RBF径向基核(高斯核函数)

gamma,核函数系数,默认为auto

degree,当指定kernel为'poly'时,表示选择的多项式的最高次数,默认为三次多项式 probability,是否使用概率估计

shrinking,是否进行启发式,SVM只用少量训练样本进行计算

penalty,正则化参数,L1和L2两种参数可选,仅LinearSVC有

loss,损失函数,有‘hinge’和‘squared_hinge’两种可选,前者又称L1损失,后者称为L2损失

tol: 残差收敛条件,默认是0.0001,与LR中的一致

SVM工具

概述

SVC,Support Vector Classification,支持向量机用于分类

SVR,Support Vector Regression,支持向量机用于回归

sklearn中支持向量分类主要有三种方法:SVC、NuSVC、LinearSVC

基于libsvm工具包实现,台湾大学林智仁教授在2001年开发的一个简单易用的SVM工具包

SVC,C-Support Vector Classification,支持向量分类

NuSVC,Nu-Support Vector Classification,核支持向量分类,和SVC类似,不同的是可以使用参数来控制支持向量的个数

LinearSVC,Linear Support Vector Classification

线性支持向量分类,使用的核函数是linear

libsvm中自带了四种核函数:线性核、多项式核、RBF以及sigmoid核

Kernel 核的选择技巧的:

SVM思想

一些线性不可分的问题可能是非线性可分的,也就是在高维空间中存在分离超平面(separating hyperplane)

使用非线性函数从原始的特征空间映射至更高维的空间,转化为线性可分问题。

image-20220212162450722.png

模型参数配置

model = LinearSVC(max_iter=1000,
 random_state=33,
 verbose=True,
 )
model.fit(X_train, y_train)
predict = model.predict(test)
print(predict)
test1['Attrition']=predict
test1[['Attrition']].to_csv('submit_svc.csv')

总结

每种模型都有适用的场景

可以使用LR模型作为预测的Baseline

FM衍生模型在推荐系统,尤其是CTR预估中有广泛应用,弥补了LR模型的不足(需要人工组合特征,耗费大量时间和人力)

Attention机制,对于Diversity多样性的情况,Attention机制可以提升效率,并且得出更好的结果

Tree Ensemble模型,比如GBDT,使用广泛,因为训练模型更可控

对于 LR 模型,如果欠拟合,需要增加feature,才能提高准确率。

而对于 tree-ensemble 来说,解决方法是训练更多的决策树 tree,Kaggle比赛中使用很多。

上一篇 下一篇

猜你喜欢

热点阅读