
机器学习
文章平均质量分 93
武子康
永远好奇,无限进步。
展开
-
大数据-271 Spark MLib - 基础介绍 机器学习算法 线性回归 场景 定义 损失 优化
线性回归(Linear Regression)是利用回归方程(函数)对一个或多个自变量和因变量之间关系进行建模的一种分析方式特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归如下图的例子:上面两个例子,我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。原创 2025-04-11 12:25:38 · 819 阅读 · 0 评论 -
大数据-270 Spark MLib - 基础介绍 机器学习算法介绍 WordCount 代码编写 三个测试案例
SparkMLib 是Spark的机器学习库(Machine Learning),封装了一些通用机器学习算法和工具,便于我们开展机器学习实践。常用算法:包括类、回归、聚类和协同过滤特征化工具:包括特征提取、转换、降维和选择工具管道:用于构建、评估和调整机器学习管道的工具持久化工具:保存和加载算法、模型、管道其他工具:线性代数、统计、数据处理等。原创 2025-03-10 14:18:43 · 7150 阅读 · 0 评论 -
大数据-216 数据挖掘 机器学习理论 - KMeans 基于轮廓系数来选择 n_clusters
有时间,当我们 n_cluster 选择不符合数据的自然分布,或者我们为了业务需求,必须要填入与数据的自然分布不合的 n_cluster,提前让迭代停下来反而能够提升模型的表现。初始质心放置的位置不同,聚类的结果很可能也会不一样,一个好的质心选择可以让 KMeans 避免更多的计算,让算法收敛稳定且更快。这个参数不常用到,默认 10 次,如果我们希望运行的结果来更加精确,那我们可以增加这个参数n_init的值来增加每个随机数种子下运行的次数。具体详细的内容不展示了,上述的图片已经都有了。原创 2024-11-09 09:08:24 · 5113 阅读 · 0 评论 -
大数据-215 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn cluster.cluster_centers_ inertia_
不同于分类模型和回归,聚类算法的模型评估不是一件简单的事,在分类中,有直接结果(标签)的输出,并且分类结果有正负之分,所以我们使用预测的准确度,混淆矩阵,ROC 曲线等等指标来进行评估,但无论如何评估,都是在”模型找到正确答案“的能力。轮廓系数有很多优点,它在有限的空间中取值,使得我们对模型的聚类效果有一个参考,并且,轮廓系数对数据的分布没有假设,因此在很多数据集上都表现良好,但它在每个簇的分割比较清洗时表现最好。其中轮廓系数是最常用的聚类算法的评价指标。观察一下不同的 K ,轮廓系数发生了什么变化?原创 2024-11-09 09:01:57 · 6003 阅读 · 0 评论 -
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
n_clusters 是 K-Means 中的 k ,表示着我们告诉模型我们要分几类,这是 K-Means当中唯一一个必填的参数,默认为 8 类,但通常我们聚类结果是一个小于 8 的结果,通常,在开始聚类的之前,我们并不知道 n_clusters 究竟是多少,因此我们要对它进行探索。但这样的结果,肯定与直接 fit 全部数据会不一致,有时候,当我们不要求那么精确,或者我们的数据量实在太大,那我们可以使用这样的做法。首先,我们来自己创建一个数据集,这样的数据集是我们自己创建的,所以是有标签的。原创 2024-11-08 10:15:28 · 5342 阅读 · 0 评论 -
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
我们需要定义一个两个长度相等的数组之间欧式距离计算函数,在不直接应用计算结果,只比较距离远近的情况下,我们可以用距离平方和代替距离进行比较,化简开平方运算,从而减少函数计算量。此外需要说明的是,涉及到距离计算的,一定要注意量纲的统一。在定义随机质心生成函数时,首先需要计算每列数值的范围,然后从该范围中随机生成指定个数的质心。如果量纲不统一的话,模型极易偏向量纲大的那一方。函数功能:K-均值聚类算法。原创 2024-11-08 09:27:49 · 4378 阅读 · 0 评论 -
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大家可以发现,我们的 Intertia 是基于欧几里得距离的计算公式得来的。第六次迭代之后,基本上质心的位置就不会再改变了,生成的簇也变得稳定,此时我们的聚类就完成了,我们可以明显看出,K-Means 按照数据的分布,将数据聚集成了我们规定的 4 类,接下来我们就可以按照我们的业务求或者算法需求,对四类数据进行不同的处理。我们认为,被分在同一个簇中的数据是有相似的,而不同的簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求定制不同的商业或者科技策略。原创 2024-11-07 09:17:24 · 5703 阅读 · 0 评论 -
大数据-211 数据挖掘 机器学习理论 - 逻辑回归 scikit-learn 实现 max_iter 分类方式选参数
因此,如果在max_iter红条的情况下,模型的训练和预测效果都已经不错了,那我们就不需要再增大max_iter中的数目了,毕竟一切都以模型的预测效果为基准,只要模型预测的效果好,运行又快,那就一切都好。如果模型有 T 类,我们每次在所有的 T 类样本里面选择两类样本出来,不防记为 T1 和 T2,把所有的输出为 T1 和 T2 的样本放在一起,把 T1 作为正例,T2 作为负例,进行二元逻辑回归,得到模型参数,我们一共需要 T(T-1)/2 次分类。哪个类别对应的 i 越大,就认为 y^属于哪个类别。原创 2024-11-07 09:01:45 · 4256 阅读 · 0 评论 -
大数据-210 数据挖掘 机器学习理论 - 逻辑回归 scikit-learn 实现 penalty solver
但随着C的逐渐变大,正则化的强度越来越小,模型在训练集和测试集上表现呈现了上升趋势,直到C=0.8左右,训练集上的表现依然走高,但模型在未知数据集上的表现就开始下跌,这时候就是出现了过拟合。正则化参数,LogisticRegression默认带了正则化项,penalty参数可选择的值有1和2,分别对应L1的正则化和L2的正则化,默认是L2的正则化。可以看出,当我们选择L1正则化的时候,许多特征的参数都被设置了0,这些特征在真正建模的时候,就不会出现在我们的模型当中了,而L2正则化是对所有特征都给出了参数。原创 2024-11-06 09:21:20 · 4307 阅读 · 0 评论 -
大数据-209 数据挖掘 机器学习理论 - 梯度下降 梯度下降算法调优
上节我们完成了如下的内容:分类技术是机器学习和数据挖掘应用中的重要组成部分,在数据学科中,约70%的问题属于分类问题。解决分类的算法也有很多,如:KNN,使距离计算来实现分类;决策树,通过构建直观易懂的树来实现分类。这里我们要展开的是Logistic回归,它是一种很常见的用来解决二元分类问题的回归方法,它主要是通过寻找最优参数来正确的分类原始数据。逻辑回归(Logistic Regression 简称LR),其实是一个很有误导性的概念,虽然它的名字中带有回归二字,但是它最擅长的方法是分类问题。LR分类器适原创 2024-11-06 09:12:31 · 3994 阅读 · 0 评论 -
大数据-208 数据挖掘 机器学习理论 - 岭回归 和 Lasso 算法 原理
此举看似简单,实则非常精妙,用一个满秩的对角矩阵和原系数矩阵计算进行相加的,实际上起到了两个作用,其一是使得最终运算结果(XTX + λI)满秩,即降低了原数据集特征列的共线性影响,其二也相当于对所有的特征列的因变量解释程度进行了惩罚,且λ越大惩罚作用越强。通过增大λ,我们可以为 w 的计算增加一个负项,从而限制参数估计中 w 的大小,而防止多重共线性引起的参数 w 被估计过大导致模型失准的问题,Lasso 不是从根本上解决多重共线性问题,是限制多重共线性带来的影响。原创 2024-11-05 09:40:02 · 5026 阅读 · 0 评论 -
大数据-207 数据挖掘 机器学习理论 - 多重共线性 矩阵满秩 线性回归算法
这种高度相关关系下,矩阵的行列式不为 0,但是一个非常接近 0 数,矩阵 A 的逆存在,不过接近于无限大。矩阵 A 中第一行和第三行的关系,被称为:精确相关关系,即完全相关,一行可使另一行为 0,在这种精确相关关系下,矩阵 A 的行列式为 0,则矩阵 A 的逆不可能存在。相对的,矩阵 C 的行之间结果相互独立,梯形矩阵看起来非常正常,它的对角线上没有任何元素特别接近于 0,因此其行列式也就不会接近0 或者为 0,因此矩阵 C 得出的参数向量 w 就不会有太大的偏差,对于我们拟合而言是比较理想的。原创 2024-11-05 09:30:33 · 7586 阅读 · 1 评论 -
大数据-206 数据挖掘 机器学习理论 - 多元线性回归 回归算法实现 算法评估指标
这里需要注意的是,当使用矩阵分解来求解多元线性回归方程时,必须添加一列全为 1 的列,用于表征线性方程截距W0。其中 m 为数据集样例个数,以及 RMSE 误差的均方根,为 MSE 开平方后所得结果。在回归分析中,SSR 表示聚类中类似的组间平方和概念,译为:Sum of squares of the regression,由预测数据与标签均值之间差值的平方和构成。结果为 0.91,能够看出最终拟合效果非常好,当然,我们也可以编写函数封装计算判断系数的相关操作,同样留一个调整回归函数的接口。原创 2024-11-04 09:34:47 · 4243 阅读 · 0 评论 -
大数据-205 数据挖掘 机器学习理论 - 线性回归 最小二乘法 多元线性
在正式进入到回归分析的相关算法讨论之前,我们需要对监督学习算法中的回归问题进一步进行分析和理解。虽然回归问题同属于有监督的学习范畴,但实际上,回归问题要远比分类问题更加复杂。首先关于输出结果的对比,分类模型最终输出结果为离散变量,而离散变量本身包含信息量较少,其本身并不具备代数运算性质,因此其评价指标体系也较为简单,最常用的就是混淆矩阵以及ROC 曲线。而回归问题最终输出的是连续变量,其本身不仅能够代表运算,且还具有更精致的方法,希望对事物运行的更底层原理进行挖掘。原创 2024-11-04 09:24:01 · 4493 阅读 · 0 评论 -
大数据-204 数据挖掘 机器学习理论 - 混淆矩阵 sklearn 决策树算法评价
也就是说,单纯的追求捕捉少数类,就会成本太高,而不顾及少数类,又会无法达成模型的效果。比如银行在判断一个申请信用卡的客户是否会违约行为的时候,如果一个客户被判断为会违约,这个客户的信用卡申请就会驳回,如果为了捕捉会违约的人,大量地将不会违约的客户判断为会违约的客户,就会有许多无辜的客户的申请被驳回。基于混淆矩阵,我们有一系列不同的模型评估指标,这些评估指标范围都在【0,1】之间,所以有11 和 00为分子的指标都是越来越接近 1 越好,所以 01 和 10 为分子的指标都是越来越接近 0 越好。原创 2024-11-02 09:06:17 · 4724 阅读 · 0 评论 -
大数据-203 数据挖掘 机器学习理论 - 决策树 sklearn 剪枝参数 样本不均匀问题
剪枝参数一定能够提升模型在测试集上的表现吗?调参是没有绝对的答案的,一切都需要看数据的本身。无论如何,剪枝参数的默认值会让树无尽的生长,这些树在某些数据集上可能非常巨大,对内存的消耗也非常巨大。属性是模型训练之后,能够调用查看的模型的各种性质,对决策树来说,最重要的是 feature_importances,能够查看各个特征对模型的重要性。原创 2024-11-02 08:59:01 · 4061 阅读 · 0 评论 -
大数据-202 数据挖掘 机器学习理论 - 决策树 sklearn 绘制决策树 防止过拟合
在每次分支的时候,不使用全部特征,而是随机选取一部分特征,从中选取不纯度相关指标最优的作为分支用的节点。我们之前提过,无论决策树模型如何进化,在分支上的本质都还是追求某个不纯度相关的指标的优化,而正如我们提到的,不纯度是基于节点计算出来的,也就是说,决策树在建树时,是靠优化节点来追求一棵优化的树,但是最优的节点是能够保证最优的树吗?另外,因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长会更加精细,因此在对于高维数据或者噪声很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。原创 2024-11-01 09:54:27 · 5003 阅读 · 0 评论 -
大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂
而训练集、测试集和验证集的划分通常遵照 6:2:2 的比例进行划分,当然也可以根据实际需求适当调整划分比例,但无论如何,测试集和验证集数据量都不宜过多也不宜过少,该二者数据集数据均不参与建模,若占比太多,则会对模型的构建过程造成较大的影响(欠拟合),而若划分数据过少,训练集数据量较大,则又可能造成过拟合,数据集的划分也是影响拟合度的重要因素。它的基本思想是通过一系列问题的分层次判断,将数据分割成越来越小的子集,直到达到预期的目标(如纯度较高的叶子节点,或预测值的误差足够小)。原创 2024-11-01 09:43:04 · 4141 阅读 · 0 评论 -
大数据-200 数据挖掘 机器学习理论 - 决策树 数据集划分 决策树生成 ID3 C4.5
而在信息熵指数的指导下,决策树生成过程的局部最优条件也非常好理解:即在选取属性测试条件(attribute test condition)对某节点(数据集)进行切分的时候,尽可能选取使得该节点对应的子节点信息熵最小的特征进行切分。同时我们知道,全局最优树没有办法简单高效的获得,因此此处我们仍然要以局部最优方法来指导建模过程,并通过优化条件的设置,最终在每一步都是局部最优的条件下逐步接近最可能的全局最优解的结果。分类后熵值最小的特征恰恰是分类结果一致的特征,而分类结果一致的特征必须是两类样本差异最大的特征。原创 2024-10-31 09:31:19 · 4916 阅读 · 0 评论 -
大数据-199 数据挖掘 机器学习理论 - 决策树 模型 决策与条件 香农熵计算
左图表示了特征空间的一个划分,假定现在只有 W10 和 W20 两个决策点,特征空间被决策点沿轴划分,并且相继划分相互正交,每个小矩形表示一个区域,特征空间上的区域构成了集合,X 取值为区域的集合。由于决策树表示一个条件概率的分布,所以深浅不同的决策树对应着不同的复杂度的概率模型,其中决策树的生成只考虑局部最优,相对的,决策树的剪枝则考虑全局最优。在每个节点应用一个测试,并根据测试的输出确定一个分支,这一过程从跟节点开始,并递归的重复,直至到达一个叶子节点,这是,该 leaf 的值形成输出。原创 2024-10-31 09:22:28 · 5228 阅读 · 0 评论 -
大数据-198 数据挖掘 机器学习理论 - scikit-learn 归一化 距离的惩罚
最近邻点距离远近修正在对未知分类过程中,一点一票的规则是 KNN 模型优化的一个重要步骤,也就是说,对于原始分类模型而言,在选取最近的 K 个元素之后,将参考这些点的所属类别,并对其进行简单计数,而在计数的过程中这些点一点一票,这些点每个点对分类目标点的分类过程中影响效力相同。但这实际上不公平的,就算是最近邻的 K 个点,每个点的分类目标点的距离仍然有远近之别,而近的点往往和目标分类点有更大的可能性属于同一类别(该假设也是 KNN 分类模型的基本假设)。真正正确的方式是,先分训练集和测试集,再归一化。原创 2024-10-30 09:33:31 · 4430 阅读 · 0 评论 -
大数据-197 数据挖掘 机器学习理论 - scikit-learn 泛化能力 交叉验证
在业务中,我们训练数据往往都是以往已经有的历史数据,但我们的测试数据却是新进入系统的数据,我们追求模型的效果,但是追求的是模型在未知数据集上的效果,在陌生的数据集上表现的能力被称为泛化能力,即我们追求的是模型的泛化能力。通常来说,我们认为经过验证集找出最终参数后的模型的泛化能力是增强了的,因此模型在未知数据(测试集)上的效果会更好,但尴尬的是,模型经过交叉验证在验证集上的调参之后,在测试集上的结果没有变好的情况时有发生。所有的交叉验证都是在分割训练集和测试集,只不过侧重的方向不同。原创 2024-10-30 09:26:32 · 4028 阅读 · 0 评论 -
大数据-196 数据挖掘 机器学习理论 - scikit-learn 算法库实现 案例1 红酒 案例 2 乳腺癌
KNN 中的一个超参数,所谓“超参数”,就是需要人为输入,算法不能通过直接计算得出这个参数,KNN 中的 K 代表的是距离需要分类的测试点 X 最近的 K 个样本,如果不输入这个值,那么算法中重要部分“选出 K 个最近邻”就无法实现。如果选择的 K值较小,就相当于较小的领域中的训练实例进行预测,这时候只有与输入实例较近的训练实例才会对预测结果起作用,但缺点是预测结果会对近邻的实例点非常敏感,如果近邻的实例点恰好是噪声,预测就会出错。从 KNN 的原理中可见,是否能够确认合适的 K 值对算法有极大的影响。原创 2024-10-29 09:18:56 · 5206 阅读 · 0 评论 -
大数据-195 数据挖掘 机器学习理论 - 监督学习算法 KNN 近邻 代码实现 Python
当然只对比一个样本是不够的,误差会很大,他们就需要找到离其最近的 K 个样本,并将这些样本称为【近邻】nearest neighbor,对这 K 个近邻,查看它们都属于任何类别(这些类别称为称为【标签】labels)。我们常说的欧拉公式,即“欧氏距离”,回忆一下,一个平面直角坐标系上,如何计算两点之间的距离?默认情况下,在计算距离时,权重都是相同的,但实际上可以针对不同的领居指定不同的距离权重,比如距离越近权重越高。所以,6、7、1 为最近的3个“数据点”的索引值,那么这些索引值对应的原数据的标签是什么?原创 2024-10-29 09:10:57 · 6948 阅读 · 1 评论 -
大数据-194 数据挖掘 机器学习理论 有监督、无监督、半监督、强化学习
从上图我们看出,对于复杂的数据,低阶多项式往往是欠拟合的状态,而高阶多项式则过分捕捉噪声数据的分布规律,而噪声数据之所以称为噪声,是因为其分布毫无规律可言,或者其分布毫无价值,因此就算高阶多项式在当前训练集上拟合度很高,但其捕捉到无用规律无法推广到新的数据集上,因此该模型在测试数据集上执行过程将会有很大误差,即模型训练误差很小,但泛化的误差会很大。机器学习是一种基于数据的学习方法,它依赖于大规模数据的分析,通过算法构建模型,使机器能够从数据中学习经验,进行预测、分类、聚类等操作,而无需人工明确设定规则。原创 2024-10-28 09:07:22 · 4671 阅读 · 0 评论