Machine Learning
kakak_
这个作者很懒,什么都没留下…
展开
-
LDA
线性判别分析(Linear Discriminant Analysis, LDA)LDA是一种监督学习的降维技术,它的数据集的每个样本是有类别输出的。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想:“投影后类内方差最小,类间方差最大”。将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。瑞利商????(????,????)R(A,x)=xHAxxHxR(A,x) = \frac{x^HAx}{x^Hx}R(A,x)=原创 2020-06-14 17:35:01 · 160 阅读 · 0 评论 -
Sklearn.model_selection.GridSearchCV
sklearn.model_selection.GridSearchCV具体在scikit-learn中,主要是使用网格搜索,即GridSearchCV类。estimator :即调整的模型param_grid:即要调参的参数列表,以dict呈现。cv: S折交叉验证的折数,即将训练集分成多少份来进行交叉验证。默认是3,。如果样本较多的话,可以适度增大cv的值。获取最好的模型gri...原创 2020-04-03 11:38:10 · 595 阅读 · 0 评论 -
Sklearn.datasets
为方便验证算法,调试参数常常使用机器学习算法的随机数据生成np.random.rand(d0,d1,...,dn)rand(d_0, d_1, ..., d_n)rand(d0,d1,...,dn) 用来生成d0∗d1...∗dnd_0*d_1 ...*d_nd0∗d1...∗dn维的数组。数组的值在[0,1)之间。randn(d0,d1,...,dn)randn(d_0,...原创 2020-04-02 16:20:44 · 184 阅读 · 0 评论 -
Sklearn.metrics
sklearn.metrics评价模型好坏的指标原创 2020-03-18 10:46:03 · 1868 阅读 · 0 评论 -
Metrics
F1scoreF1score(以下简称F1)是用来评价二元分类器的度量,它的计算方法如下:F1是用来衡量二维分类的。micro F1score,和macro F2score则是用来衡量多元分类器的性能。假设对于一个多分类问题,有三个类,分别记为1、2、3,TPi是指分类i的True Positive;FPi是指分类i的False Positive;TNi是指分类i的True N...原创 2020-02-16 23:34:32 · 224 阅读 · 0 评论 -
PCA
主成分分析(Principal components analysis)PCA:找出数据里最主要的特征,用数据里最主要的特征来代替原始数据。使数据从n维降到n’维损失尽可能的小。如从2维到1维,找到某一维度方向,它可以代表这两个维度的数据。????1明显比????2好,第一种解释是样本点到这个直线的距离足够近,第二种解释是样本点在这个直线上的投影能尽可能的分开。n’从1维推广到任意维,则希望降维的标...原创 2020-04-06 14:08:46 · 137 阅读 · 0 评论 -
Sklearn.decomposition
最常用的PCA:sklearn.decomposition.PCA主要用于非线性数据的降维的KernelPCA为解决单机内存限制的IncrementalPCA,有时候样本量可能是上百万+,维度可能也是上千,直接去拟合数据可能会让内存爆掉, 此时IncrementalPCA先将数据分成多个batch,然后对每个batch依次递增调用partial_fit函数,这样一步步的得到最终的样本最优降维...原创 2020-04-06 18:53:49 · 3371 阅读 · 0 评论 -
XGBoost
从GBDT到XGBoostXGBoost相对GBDT的优化算法:在算法的弱学习器模型选择上,GBDT只支持CART回归树,XGBoost还可以使用很多其他的弱学习器。在算法的优化方式上,GBDT的损失函数只对误差部分做负梯度(一阶泰勒)展开,而XGBoost损失函数对误差部分做二阶泰勒展开,更加准确。算法运行效率:对每个弱学习器(如决策树)建立过程中做并行选择,找到合适的子树分裂特征和...原创 2020-03-31 14:57:28 · 175 阅读 · 0 评论 -
sklearn.tree: Decision Trees
sklearn.treescikit-learn决策树算法类库内部实现是使用了调优过的CART树算法,既可以做分类,又可以做回归。DecisionTreeClassifier特征选择标准criterion可以使用"gini"或者"entropy",前者代表基尼系数,后者代表信息增益。一般说使用默认的基尼系数"gini"就可以了,即CART算法。除非你更喜欢类似ID3, C4.5的...原创 2020-03-20 10:51:06 · 332 阅读 · 0 评论 -
Sklearn.xgboost
sklearn.XGBoost并不是sklearn中有xgboost类库,而是xgboost具有sklearn风格的API接口。XGBoost类库除了支持决策树作为弱学习器外,还支持线性分类器,以及带DropOut的DART决策树,不过通常情况下,使用默认的决策树弱学习器即可。对于sklearn风格的接口,主要有2个类可以使用,一个是分类用的XGBClassifier,另一个是回归用的XGB...原创 2020-04-01 13:12:47 · 540 阅读 · 0 评论 -
Sklearn.ensemble.GradientBoosting
在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegressor为GBDT的回归类。两者的参数类型完全相同。GBDT类库boosting框架参数n_estimators: 弱学习器的最大迭代次数,或最大的弱学习器个数。一般来说n_estimators太小,容易欠拟合,n_estimator...原创 2020-03-28 18:35:43 · 2552 阅读 · 0 评论 -
Boosting GBDT
梯度提升树(Gradient Boosting Decison Tree, GBDT)GBDT是集成学习Boosting家族的成员,也是使用前向分布算法迭代,但是迭代思路和传统的Adaboost有很大的不同。弱学习器也限定了只能使用CART回归树模型。Adaboost利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT假设前一轮迭代得到的强学习器...原创 2020-03-28 17:58:56 · 211 阅读 · 0 评论 -
sklearn.ensemble.AdaBoost
scikit-learn中Adaboost类库有AdaBoostClassifier和AdaBoostRegressor两个。AdaBoostClassifier使用了两种Adaboost分类算法的实现,SAMME和SAMME.R。而AdaBoostRegressor则使用了原理中Adaboost回归算法的实现,即Adaboost.R2。AdaBoost框架参数base_estim...原创 2020-03-28 11:09:42 · 454 阅读 · 0 评论 -
Boosting Adaboost
在boosting系列算法中, Adaboost是最著名的算法之一。Adaboost既可以用作分类,也可以用作回归。分类训练集样本:T={(x,y1),(x2,y2),...(xm,ym)}T=\{(x_,y_1),(x_2,y_2), ...(x_m,y_m)\}T={(x,y1),(x2,y2),...(xm,ym)}训练集在第k个弱学习器的输出权重为D(k)=(wk...原创 2020-03-27 18:59:01 · 154 阅读 · 0 评论 -
Sklearn.ensemble.RandomForest
在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是RandomForestRegressor。当然RF的变种Extra Trees,分类类ExtraTreesClassifier,回归类ExtraTreesRegressor。RF框架参数n_estimators: 最大的弱学习器的个数。一般来说n_estimators太小,容易欠拟合,...原创 2020-03-30 12:51:47 · 317 阅读 · 0 评论 -
Bagging Random Forest
Bagging集成学习的两个流派,一个是boosting派系,各个弱学习器之间有依赖关系。另一个是bagging流派,各个弱学习器之间没有依赖关系,可以并行拟合。随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法。...原创 2020-03-30 12:29:11 · 184 阅读 · 0 评论 -
LightGBM
LightGBM更快的训练速度和更高的效率: LightGBM使用基于直方图的算法。例如,它将连续的特征值分桶(buckets)装进离散的箱子(bins),这是的训练过程中变得更快。更低的内存占用:使用离散的箱子(bins)保存并替换连续值导致更少的内存占用。更高的准确率(相比于其他任何提升算法) : 它通过leaf-wise分裂方法产生比level-wise分裂方法更复杂的树,这就是实现更高准确率的主要因素。然而,它有时候或导致过拟合,但是我们可以通过设置 max-depth 参数来防止过拟合的发原创 2020-05-28 20:01:36 · 273 阅读 · 0 评论 -
Ensemble learning
集成学习(ensemble learning):通过构建并结合多个机器学习器来完成学习任务。集成学习:1. 得到若干个个体学习器;2.选择一种结合策略,将这些个体学习器集合成一个强学习器。个体学习器所有的个体学习器都是一个种类的,或者说是同质的。所有的个体学习器不全是一个种类的,或者说是异质的。目前来说,同质个体学习器的应用是最广泛的,一般常说的集成学习的方法都是指的同质个体学...原创 2020-03-27 11:09:21 · 224 阅读 · 0 评论 -
Decision Trees
sklearn.tree决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。构造决策树的关键步骤是分裂属性,就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别...原创 2020-03-19 14:55:06 · 309 阅读 · 0 评论 -
Sklearn.svm
Sklearn.svmscikit-learn中SVM的算法库分为两类,一类是分类的算法库,包括SVC, NuSVC,和LinearSVC 。另一类是回归算法库,包括SVR, NuSVR,和LinearSVR 。SVM和NuSVM区别仅仅在于对损失的度量方式不同,NuSVM有一个参数来控制训练集训练的错误率或支持向量的百分比。LinearSVM仅支持线性核函数,不支持各种低维...原创 2020-03-24 13:57:29 · 668 阅读 · 0 评论 -
SVM regression
SVM回归模型损失函数对于回归模型,要让训练集中的每个点(????????,????????)尽量拟合到一个线性模型???????? =????∙????(????????)+????。定义一个常量????>0,对于某一个点, SVM回归模型的损失函数为:err(xi,yi)={0∣yi−w∙ϕ(xi)−b∣≤ϵ∣yi−w∙ϕ(xi)−b∣−ϵ∣yi−w∙ϕ(xi)−b∣>ϵerr(x_i,y_i) = \begin{cases} 0 ...原创 2020-03-24 11:34:08 · 1622 阅读 · 0 评论 -
SVM-SMO
关于????向量的函数SVM优化目标函数KKT条件:????????(????∙????(????????)+????)≥1−????????????????≥0,????????≥0????=∑????????????????????(????????),∑????????????????=0, ????−????????−????????=0(0≤????????≤????)????????(????????(????????????(????????)+????)−1+??????原创 2020-03-23 14:30:07 · 742 阅读 · 1 评论 -
Kernel SVM
软间隔SVM仍存在的问题线性可分SVM的硬间隔最大化和软间隔最大化的算法,它们对线性可分的数据有很好的处理,但是对完全线性不可分的数据没有办法。在多项式回归中,通过高维映射,可将多项式回归转化为线性回归。所以二维不是线性的数据,将其映射到了五维以后,就变成了线性的数据。对于SVM线性不可分的低维特征数据,可以将其映射到高维,就能线性可分,此时就可以运用前两篇的线性可分SVM的算法思想了...原创 2020-03-23 11:26:30 · 462 阅读 · 0 评论 -
Linear SVM
线性最大间隔可分SVM存在的问题线性可分SVM对于存在异常点的非线性数据集是不可使用的线性可分SVM对部分情况会严重影响我们模型的泛化预测效果线性分类SVM的软间隔对训练集里面的每个样本(????????,????????)引入了一个松弛变量????????≥0:为了使误分类的点尽可能的少,每个松弛变量????????对应了一个代价????????,C是协调两者关系的正则化惩罚系数:目标函数的优化将软间隔最大化...原创 2020-03-22 14:33:51 · 1102 阅读 · 0 评论 -
SVM
SVM感知机在三维空间或者更高维的空间,感知机的模型就是尝试找到一个超平面,能够把所有的二元类别隔离开。-对于这个分离的超平面,我们定义为????????????+????=0。在超平面上方????=1,在超平面下方????=−1。-点到平面的距离 (w:ABC;x:x0, y0, z0 )点x到超平面的相对距离 d = |????????????+????|函数间隔 ????′ = ????(????????????+????)点到超平面的真正距离即几何间隔 ???? =...原创 2020-03-22 12:12:11 · 821 阅读 · 0 评论 -
sklearn.naive_bayes
sklearn.naive_bayes在scikit-learn中,常用的3种朴素贝叶斯分类算法:GaussianNB(高斯朴素贝叶斯)、MultinomialNB(多项式朴素贝叶斯)、BernoulliNB(伯努利朴素贝叶斯)这三个类适用的分类场景各不相同,一般来说如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。如果样本特征的分布大部分是多元离散值,使用Mult...原创 2020-03-18 12:08:09 · 544 阅读 · 0 评论 -
Naive_bayes
机器学习分类算法多使用判别方法,直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(x)Y=f(x)Y=f(x),要么是条件分布P(Y∣X)P(Y|X)P(Y∣X)朴素贝叶斯却是生成方法,直接找出特征输出Y和特征X的联合分布P(X)P(Y)P(X)P(Y)P(X)P(Y),然后用P(Y∣X)=P(X,Y)/P(X)P(Y|X) = P(X,Y)/P(X)P(Y∣X)=P(X,Y)/P...原创 2020-04-08 13:04:10 · 150 阅读 · 0 评论 -
Sklearn.cluster
KMeansn_clusters: 即k值,一般需要多试一些值以获得较好的聚类效果。max_iter: 最大的迭代次数,一般如果是凸数据集的话可以不管这个值,如果数据集不是凸的,可能很难收敛,此时可以指定最大的迭代次数让算法可以及时退出循环。n_init:用不同的初始化质心运行算法的次数。由于K-Means是结果受初始值影响的局部最优的迭代算法,因此需要多跑几次以选择一个较好的聚类效果...原创 2020-04-08 18:35:49 · 853 阅读 · 0 评论 -
sklearn.neighbors
sklearn.neighbors.KNeighborsClassifiersklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’,metric_params=None, n_jobs=Non...原创 2020-03-17 12:41:23 · 1883 阅读 · 0 评论 -
KNN
K近邻法(k-nearest neighbors)KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同。KNN做分类时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。KNN做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。KNN对于k值的选择,一般根据样本的分布,通过交叉验证选择一个合适的k值。...原创 2020-04-07 16:47:46 · 687 阅读 · 0 评论 -
K-means
K-Means算法是无监督的聚类算法,存在有大量的变体。K-Means对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。假设簇划分为(C1,C2,...Ck)(C_1,C_2,...C_k)(C1,C2,...Ck),最小化平方误差E:E=∑i=1k∑x∈Ci∣∣x−μi∣∣22E = \sum\limits...原创 2020-04-07 12:05:59 · 107 阅读 · 0 评论 -
Sklearn.logistic_regression
在scikit-learn中,与逻辑回归有关的主要有3个类,LogisticRegression, LogisticRegressionCV 和logistic_regression_path。LogisticRegression和LogisticRegressionCV的主要区别是LogisticRegressionCV使用交叉验证来选择正则化系数C,而LogisticRegression需...原创 2020-03-26 19:11:47 · 362 阅读 · 0 评论 -
Logistic regresion
回归和分类线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数????,满足????=????????。此时Y是连续的,所以是回归模型。如果Y是离散的,需要对Y再做一次函数转换,变为????(????)。令????(????)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。逻辑回归是分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。二元逻辑回归模型...原创 2020-03-26 12:47:02 · 143 阅读 · 0 评论 -
Sklearn.linear_model.SGDClassifier
SGD主要应用在大规模稀疏数据问题上。该模块的分类器用mini-batch来做梯度下降可轻松解决:超过10510^5105的训练样本、超过10510^5105的features。如果特征数量大到和样本数量差不多,或者特征数量远远大于样本数量,则选用LR或者线性核的SVM;(eg.n=10000,m=10-1000)如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;(eg.n=1-1000,m=10-10000)如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。.原创 2020-05-09 09:10:42 · 1463 阅读 · 0 评论 -
Sklearn.linear_model
线性回归场景根据 ????=???????? 得到输出向量????和输入特征????之间的线性关系,求出线性回归系数????。其中????的维度为mx1,????的维度为mxn,而????的维度为nx1。m代表样本个数,n代表样本特征的维度。定义一个损失函数,一个极小化损失函数的优化方法,以及一个验证算法的方法。损失函数的不同,损失函数的优化方法的不同,验证方法的不同,就形成了不同的线性回归算法。1.LinearRegressi...原创 2020-03-25 14:47:20 · 1253 阅读 · 0 评论 -
Linear regression
线性回归回归模型和损失函数对于n维特征的样本数据,使用线性回归模型:hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxnh_\theta(x_1, x_2, ...x_n) = \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n}hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn其中???????? (i ...原创 2020-03-25 12:16:59 · 150 阅读 · 0 评论 -
ML- error Cost Function
ERROR基于预测值(y_hat)和原始值(y)之间的误差(点对点)MAE(平均绝对误差)Mean absolute error该统计参数计算的是拟合数据和原始数据对应点的绝对误差的平均值可以更好地反映预测值误差的实际情况SSE(和方差、误差平方和)The sum of squares due to error该统计参数计算的是拟合数据和原始数据对应点的误差的平方和...原创 2020-03-20 12:12:31 · 321 阅读 · 0 评论 -
ML- error Loss Function
ERROR损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差。Loss Function回归损失 L(y,f(x))=y−f(x)L(y,f(x)) =y-f(x)L(y,f(x))=y−f(x)残差 ????−????(????)来度量二者的不一致程度。平方损失函数(quadratic loss function)L(y,f(x))=(y−f(x))2L(y,f(...原创 2020-03-24 18:18:08 · 276 阅读 · 0 评论