机器学习
文章平均质量分 81
Andy_shenzl
你看不懂的世界,背后都是原理
展开
-
遗传算法理解与代码实战(二)- demo(python+deap)
在DEAP库中,algorithmsbasecreator和tools是核心模块,它们提供了构建和运行进化算法所需的各种组件和工具。# 定义问题:求最大化问题# 定义适应度函数# 将二进制转换为十进制# 计算适应度# 将适应度函数与个体评估过程绑定这个与之前一样不过多介绍。原创 2024-03-07 15:16:43 · 1162 阅读 · 0 评论 -
遗传算法理解与代码实战(一)- demo(python手写代码)
适应度函数,计算个体的适应度x = int(''.join(str(gene) for gene in chromosome), 2)#转换成十进制# 选择函数,基于适应度进行选择# 交叉函数,随机选择交叉点,进行基因交换else:# 变异函数,随机翻转基因population: 这是一个参数,代表当前种群的个体集合。在遗传算法中,种群是所有可能的解决方案的集合。这里使用列表推导式来计算种群中每个个体的适应度值。原创 2024-03-07 11:08:11 · 1150 阅读 · 0 评论 -
机器学习理论介绍
机器学习,是一门研究如何让计算机从历史数据中去更好地学习,从而产生一个优秀模型可以提升系统某项性能的学科。但实际应用远远不是研究算法这么简单。原创 2022-12-19 12:39:16 · 686 阅读 · 0 评论 -
时间序列分析之ARIMA预测
ARIMA模型(Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型,时间序列预测分析方法之一。ARIMA(p,d,q)={AR(p),p阶自回归MA(q),q阶滑动平均d,平稳时的差分阶数AR(p), & \text{p阶自回归} \\MA(q), & \text{q阶滑动平均} \\d,& \text{平稳时的差分阶数} \\ARI。原创 2023-01-04 17:40:57 · 1634 阅读 · 0 评论 -
特征工程原理(二)-- 特征选择
特征选择是在数据分析和建模中最常用的特征降维手段。过程简单粗暴,即映射函数直接将不重要的特征删除,不过这样会造成特征信息的丢失,不利于模型的精度。当然,由于数据分析以抓住主要影响因子为主,变量越少越有利于分析,因此特征选择常用语统计分析模型中;在超高维数据分析或者建模预处理中也会经常使用。特征是否发散:如果一个特征不发散,也就是方差接近0,这就说明样本在这个特征上基本没差异,这个特征对于样本区分没有作用。特征与目标的相关性:与目标的相关性越高,特征应该优先选择。原创 2023-01-06 17:42:03 · 571 阅读 · 0 评论 -
时间序列分析原理
时间序列,是指将某种现象某一个统计指标在不同时间上的各个数值,按时间先后顺序排列而形成的序列生活中各领域各行业有很多时间序列的数据,销售额,顾客数,访问量,股价,油价,GDP,气温。。。平稳序列(stationary series)是基本上不存在趋势的序列。这类序列中的各观察值基本上在某个固定的水平上波动,虽然在不同的时间段波动的程度不同,但并不存在某种规律,其波动可以看成是随机的。严平稳:严平稳表示的分布不随时间的改变而改变。如:白噪声(正态),无论怎么取,都是期望为0,方差为1。原创 2023-01-03 16:21:48 · 1140 阅读 · 0 评论 -
自动机器学习-auto-sklearn
自动机器学习(AutoML) 旨在通过让一些通用步骤 (如数据预处理、模型选择和调整超参数) 自动化,来简化机器学习中生成模型的过程。AutoML是指尽量不通过人来设定超参数,而是使用某种学习机制,来调节这些超参数。这些学习机制包括传统的贝叶斯优化,多臂老虎机(multi-armed bandit),进化算法,还有比较新的强化学习。当我们提起AutoML时,我们更多地是说自动化数据准备(即数据的预处理,数据的生成和选择)和模型训练(模型选择和超参数调优)。原创 2022-12-21 09:00:34 · 1160 阅读 · 1 评论 -
时间序列分析之auto_arima自动调参
一般的流程需要先根据平稳性来确认差分的阶数d,然后根据平稳序列来观察ACF图和PACF图来确认p和q,当然中间还要根据网格训练查看AIC的值来确认,真个过程非常复杂,而且结果还不一定准确;max_p、max_q根据观察图给定一个上限,模型自行Fit,如果自己不去查看ACF和PACF图,随意写一个比较大的值,也是可以的,但是时间成本比较高;start_P、max_P、start_Q、max_Q,只能手动赋值了,如果有知道这个周期性P和Q的定阶方法的大佬请说一下。可以帮助我们进行定阶,确认模型的参数。原创 2023-01-03 17:32:40 · 1241 阅读 · 0 评论 -
特征工程原理(一)
在机器学习原理中讲过机器学习的基本流程,其中很重要的一个环节就是特征工程。原创 2023-01-05 17:20:09 · 754 阅读 · 0 评论 -
变分推断
背景频率角度–>优化问题回归问题:model:f(w)=WTxf(w)=W^Txf(w)=WTx策略:loss function:L(W)=∑i=1N∣∣WTxi−yi∣∣2L(W)=\sum_{i=1}^N||W^Tx_i-y_i||^2L(W)=∑i=1N∣∣WTxi−yi∣∣2,D=(xi,yi)D=(x_i,y_i)D=(xi,yi),w=arg minL(w)w=arg \,\,minL(w)w=argminL(w)–无约束优化算法:1. 解析解 ∂L∂w=0\fra原创 2020-08-21 14:44:25 · 304 阅读 · 0 评论 -
高斯混合模型及python代码
单高斯模型高斯模型是一种常用的变量分布模型,一维高斯分布的概率密度函数如下:f(x)=12πσexp(−(x−μ)22σ2)f(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})f(x)=2πσ1exp(−2σ2(x−μ)2)μ\muμ和σ2\sigma^2σ2分别是高斯分布的均值和方差。似然函数可写为:P(x∣θ)=∏i=1N[12πσexp(−(xi−μ)22σ2)]P(x|\theta)=\prod_{i=1}原创 2020-08-19 16:13:35 · 12535 阅读 · 5 评论 -
概率图模型之精确推断
引入通过概率图模型我们得到了定义的联合概率分布,通过联合概率分布我们一般可以计算变量的边际概率分布(积分或求和消去其他变量)和条件概率分布(概率的乘法公式),其中计算条件概率分布的过程即对应推断任务。在推断任务中我们是假定图结构固定已知,然而有一类问题则需要我们从数据出发而推断图本身,即结构学习(structure learning)。一般图结构学习均采用贪心搜索的策略,即定义⼀个可能结构的空间和用于对每个结构评分的度量,通过评分奖励精度高的结构,同时对结构的复杂度做出惩罚,然后添加或移除少量边进行下一原创 2020-08-14 15:52:48 · 1668 阅读 · 0 评论 -
概率图模型之表示(representation)
基础概率图模型(PGM/probabilistic graphical model)是一种用于学习带有依赖(dependency)的模型的强大框架。概率图模型(或简称图模型)在形式上是由图结构组成的。图的每个节点(node)都关联了一个随机变量,而图的边(edge)则被用于编码这些随机变量之间的关系。概率图模型可以简单的理解为“概率+结构”,即利用图模型来结构化各变量的概率并有效、清晰的描述变量间的相互依赖关系,同时还能进行高效的推理,因此在机器学习中概率图模型是一种应用广泛的方法。根据图是有向的还.原创 2020-08-13 17:47:12 · 1011 阅读 · 0 评论 -
隐马尔可夫模型之python实战
手写定义数据Hidden_states = ("box 1", "box 2", "box 3") # 隐状态集合Observations_states = ('red', 'white', 'red') # 观测状态集合Start_probability = {'box 1': 0.2, 'box 2': 0.4, 'box 3': 0.4} # 初始状态Hidden_transition_probability = { # 隐马尔可夫链中从当前盒子转移到其他盒子的概率 'box 1原创 2020-08-07 14:43:55 · 3305 阅读 · 9 评论 -
隐马尔可夫模型之预测算法
预测算法主要有两种:近似算法维特比算法近似算法近似算法的思想是,在每个时刻t选择在该时刻最有可能出现的状态it∗i_t^*it∗,从而得到一个状态序列I∗=(i1∗,i2∗,…,iT∗)I^*=(i_1^*,i_2^*,…,i_T^*)I∗=(i1∗,i2∗,…,iT∗),将它作为预测的结果。给定隐马尔可夫模型λ\lambdaλ和观测序列O,在时刻t处于状态qiq_iqi的概率γt(i)\gamma_t(i)γt(i)是γt(i)=αt(i)βt(i)P(O∣λ)=αt(i)βt原创 2020-08-06 17:39:13 · 3722 阅读 · 3 评论 -
隐马尔可夫模型之学习算法
学习算法隐马尔可夫模型的学习,根据训练数据是包括观测序列和对应的状态序列还是值有观测序列,可以分别由监督学习和无监督学习实现。监督学习建设已知训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2),……,(OS,IS)}\begin{Bmatrix} (O_1,I_1),(O_2,I_2),……,(O_S,I_S) \end{Bmatrix}{(O1,I1),(O2,I2),……,(OS,IS)},那么可以利用极大似然估计法来估计隐马尔可夫模型的参数。具体方法原创 2020-08-06 15:04:19 · 899 阅读 · 0 评论 -
隐马尔可夫模型之评估观察序列概率
问题我们已知HMM模型的参数λ=(A,B,Π)\lambda =(A,B,\Pi)λ=(A,B,Π)。其中????是隐藏状态转移概率的矩阵,????是观测状态生成概率的矩阵, Π\PiΠ是隐藏状态的初始概率分布。同时我们也已经得到了观测序列O={o1,o2,……,oT}O= \begin{Bmatrix} o_1,o_2,……,o_T \end{Bmatrix}O={o1,o2,……,oT},现在我们要求观测序列????在模型????下出现的条件概率P(O∣λ)P(O|\lambda)P(O∣λ)原创 2020-08-04 13:50:01 · 1199 阅读 · 0 评论 -
隐马尔可夫模型之HMM基础
算法输入:隐马尔可夫模型λ\lambdaλ,观测序列O;输出:观测序列概率P(O∣λ)P(O|\lambda)P(O∣λ)βT(i)=1,i=1,2,……,N\beta_T(i)=1,i=1,2,……,NβT(i)=1,i=1,2,……,N对t=T−1,T−2,……,1t=T-1,T-2,……,1t=T−1,T−2,……,1βt(i)=∑j=1Naijbj(ot+1)βt+1(j),i=1,2,……,N\beta_t(i)=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta原创 2020-08-04 13:46:36 · 864 阅读 · 0 评论 -
GBDT调参优化
1、scikit-learn GBDT类库概述在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegressor为GBDT的回归类。两者的参数类型完全相同,当然有些参数比如损失函数loss的可选择项并不相同。这些参数中,类似于Adaboost,我们把重要参数分为两类,第一类是Boosting框架的重要参数,第二类是弱学习器即CART回归树的重要参数。2、boosting框架参数GradientBoosting原创 2020-07-22 14:21:56 · 6275 阅读 · 4 评论 -
随机森林、极端随机森林以及深度森林代码
之前介绍了随机森林、极端随机森林以及深度森林的原理,本次介绍一下相关的代码本次实验全部使用糖尿病数据集数据导入import pandas as pdtrain = pd.read_csv("/Users/admin/Desktop/database/diabetes/diabetes_train.txt",header=None,index_col=False)test = pd.read_csv("/Users/admin/Desktop/database/diabetes/diabetes_t原创 2020-06-22 16:33:31 · 4039 阅读 · 1 评论 -
从随机森林到极端随机森林,再到深度森林
随机森林再介绍随机森林之前有必要介绍下集成算法的一些理论集成学习算法本身不算一种单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。可以说是集百家之所长,能在机器学习算法中拥有较高的准确率,不足之处就是模型的训练过程可能比较复杂,效率不是很高。目前常见的集成学习算法主要有2种:基于Bagging的算法和基于Boosting的算法,基于Bagging的代表算法有随机森林,而基于Boosting的代表算法则有Adaboost、GBDT、XGBOOST等。Bagging和Boosting都原创 2020-06-19 17:58:01 · 12739 阅读 · 4 评论 -
从XGboost到lightGBM
XGboostXGBoost是GBDT的一种高效实现,但是里面也加入了很多独有的思路和方法我们先回顾一下CART回归树CART回归树CART回归树是假设树的结构为二叉树,通过不断将特征进行分裂去完成整个树的构建。比如当前树结点是基于第j个特征值进行分裂的,设该特征值小于s的样本划分为左子树,大于s的样本划分为右子树,即R1(j,s)={x∣x(j)≤s} and R2(j,s)={x∣x(j)>s}R_1(j,s)=\begin{Bmatrix}x|x^{(j)}\leq s \end原创 2020-06-18 16:07:44 · 317 阅读 · 0 评论 -
adaboost与GBDT
adaboostAdaBoost是最著名的Boosting族算法,是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。开始时,所有样本的权重相同,训练得到第一个基分类器。从第二轮开始,每轮开始前都先根据上一原创 2020-06-17 11:42:08 · 235 阅读 · 0 评论 -
罗辑回归原理及源码实战
Logistic regression介绍Logistic regression模型是广义线性模型的一种,属于线性的分类模型。对于一个线性函数Wx+b=0Wx+b=0Wx+b=0通过对训练样本的学习,最终得到一个超平面,将不同的类区分开正负两个类别。一般使用阈值函数,将样本映射到不同的类别中,常见的阈值函数有sigmoid函数,其形如下:f(x)=11+e−xf(x)=\frac{1}{1+e^{-x}}f(x)=1+e−x1sigmoid图像如下[外链图片转存失败,源站可能有防盗链机制,建议将图原创 2020-06-15 17:26:44 · 291 阅读 · 0 评论 -
梯度下降-不同优化方法比较
前言上篇介绍了梯度下降的原理,接下来介绍下,除了SGD外,其他的优化算法,以及python简易实现代码虽然梯度下降算法效果很好,并且广泛使用,但同时其也存在一些挑战与问题需要解决:选择一个合理的学习速率很难。如果学习速率过小,则会导致收敛速度很慢。如果学习速率过大,那么其会阻碍收敛,即在极值点附近会振荡。学习速率调整(又称学习速率调度,Learning rate schedules)试图在每次更新过程中,改变学习速率,如退火。一般使用某种事先设定的策略或者在每次迭代中衰减一个较小的阈值。无论原创 2020-06-15 11:40:40 · 644 阅读 · 0 评论 -
梯度下降原理
概述在机器学习算法中,对于很多监督学习模型,需要对原始的模型构建损失函数lll,接下来便是通过优化算法对损失函数进行优化,以便寻找到最优的参数WWW。在求解机器学习参数的优化算法时,使用较多的就是基于梯度下降的优化算法(Gradient Descent,GD)梯度下降有很多优点,其中在梯度下降的求解过程中,只需要求解损失函数的一阶导数,计算的成本比较低,这使得梯度下降能在很多大规模数据集上得到应用。梯度下降法的含义是通过当前点的梯度方向寻找到新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,知道原创 2020-06-12 15:59:20 · 641 阅读 · 0 评论 -
正则化的理解
概述机器学习(有监督)的目的是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。用数学语言来说就是规则化参数的同时最小化误差。在实际进行算法学习时,我们一般把数据分为训练集和测试集。如果参数太多,会导致我们的模型复杂度上升,在训练集上得到最小化的误差,但是在预测新样本的时候却不理想,也就是我们说的过拟合。所以,我们需要保证模型简单的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现原创 2020-06-11 15:46:13 · 893 阅读 · 0 评论 -
协同过滤算法-简单的python实现demo
概述协同过滤(collaborative filtering)是推荐算法里面最经典也是最常用的。该算法通过分析用户的兴趣,在用户群中找到指定用户的相似用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户的喜好程度预测。比如,你现在想看一部电影,但是不知道具体看哪一部,你会怎么做?大部分人会问问周围的朋友,看看他们最近有什么好看的电影可以推荐给自己,而我们一般会倾向于从口味比较类似的朋友那里得到推荐信息。这就是协同过滤的核心思想。要实现协同过滤,需要一下几个步骤:收集用户便好找到相似的用原创 2020-05-26 11:52:31 · 1992 阅读 · 0 评论 -
PCA原理及python实战
背景在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律。多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的工作量。更重要的是在很多情形下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性。如果分别对每个指标进行分析,分析往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结...原创 2020-04-28 15:02:13 · 1108 阅读 · 3 评论 -
LDA-线性判别分析原理及实战
LDA,这里的LDA是指Linear Discriminant Analysis,即线性判别分析,不是主题模型的LDA主要是用来进行降维分析的一种方法,在工作学习中用的更多的可能是PCA来降维,LDA跟PCA的区别在于LDA是有监督的一种降维方法。背景为什么要降维呢?这里面涉及到另一个话题,叫维度灾难:http://www.visiondummy.com/2014/04/curse...原创 2020-04-26 14:08:28 · 1566 阅读 · 0 评论 -
深度森林原理及实现
目录背景级联森林多粒度扫描代码总结背景深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基于树的模型,其结构如图所示。级联森林上图表示gcFo...原创 2020-04-22 16:07:30 · 10833 阅读 · 3 评论 -
XGBoost原理及实战
概述XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。XGBoost是一种提升树模型,它是将许多树模型集成在一起,形成一个很强的分类器,所用到的树模型则是CART回归树模型。CARTCART算法之前文章已经说过,这里简单介绍下:CART回归树是假设树的结构为二叉树,通过不断将特征进行分裂去完成整个树的构建。比如当前...原创 2020-04-20 14:28:58 · 821 阅读 · 0 评论 -
python:dataframe与libsvm转换
首先我们看下目标数据2.000000 1.000000 38.500000 54.000000 20.000000 0.000000 1.000000 2.000000 2.000000 3.000000 4.000000 1.000000 2.000000 2.000000 5.900000 0.000000 2.000000 42.000000 6.300000 0.000000 0.0...原创 2020-03-19 10:47:48 · 2167 阅读 · 0 评论 -
item_based之python实战
目录基于物品的协同过滤python实现基于物品的协同过滤PS:为什么不用基于用户的算法1、冷启动问题,新用户没法推荐2、用户量大,计算速度慢,并且稀疏矩阵3、人是善变的,以前喜欢的现在不一定喜欢基于物品的协同过滤优势!计算性能高,通常用户数量远大于物品数量可预先计算保留,物品并不善变python实现基础数据处理,跟之前一样不多说...原创 2019-12-04 18:20:45 · 384 阅读 · 0 评论 -
推荐系统-SVD实战
SVD奇异值分解里具体说了SVD的基本原理解读,本次实战分析SVD的应用目录1、数据导入2、数据简单处理3、构造矩阵4、SVD计算数据:本次数据使用的是用户听音乐的数据,具体数据有需要的可以关注公众号:不懂乱问(Andy_shenzl)后台留言当然可以自己在网上下载。1、数据导入import pandas as pdimport numpy...原创 2019-11-28 18:28:39 · 978 阅读 · 1 评论 -
SVD奇异值分解
目录1、什么是SVDSVD定义SVD作用2、SVD数学知识回顾1. 回顾特征值和特征向量2. SVD的定义3. SVD计算举例1、简单理解2、python计算3、实际运用推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法。由于协同过滤算法不管是基于用户(user...原创 2019-11-27 18:19:02 · 974 阅读 · 0 评论 -
GBDT--提升树算法
今天在说一个Boosting的另一个算法GBDT,之前文章说了Adaboost,Adaboost主要是对分类错误的样本提升权重来进行训练数据,而本次要讲的GBDT主要是根据第一轮产生结果的残差,下一轮以本轮残差作为输入,尽量去拟合这个残差,使下一轮输出的残差不断变小。 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multip...原创 2018-09-22 17:04:41 · 559 阅读 · 0 评论 -
聚类分析python画树状图--Plotly(dendrogram)用法解析
1、前言聚类分析是机器学习和数据分析中非常常见的分类方法,当我们用到层次聚类(系统聚类)时,最常用的分析方法就是绘制树状图,比较常见的统计软件像SPSS、SAS、R等都可以直接绘制树状图,比较简单,今天主要介绍下python怎么绘制。2、Plotlypython绘制树状图主要介绍使用Plotly工具(当然也可能有其他方法)2.1 安装Plotlypip insta...原创 2018-08-18 11:55:34 · 35632 阅读 · 3 评论 -
混淆矩阵
在机器学习的二分类算法中,对于数据测试结果有下面4种情况,TP(TruePositive): 预测为正,实际为正FN(FalseNegative): 预测为负,实际为负TN(FalsePositive):预测为正,实际为负FP(TrueNegative): 预测为负,实际为正精确率、准确率:Accuracy=(TP+TN)/(TP+TN+FN+FP)精准率、查准率: ...原创 2018-08-18 17:29:51 · 709 阅读 · 0 评论 -
逻辑回归实战--R/python代码
逻辑回归实战--R/python代码 目录 逻辑回归1、R语言实现:1.1 传统统计学算法代码解析结果查看:1.2机器学习:2、python代码实现2.1传统统计学思想2.2 python机器学习思想总结:逻辑回归又称logistic回归分析,是一种广义的线性回归分析模型;与多重线性回归的最大区别就是因变量不同,多重线性回归因变量是连...原创 2018-08-19 10:36:08 · 3095 阅读 · 0 评论