OushuDB入门(八)——AI篇

article/2025/8/23 9:55:19

一、OushuDB AI简介

        OushuDB可集成MADlib机器学习库作为其AI组件。现在OushuDB通过MADlib已经支持了大部分机器学习算法,正在研发一个新的组件以支持深度学习。OushuDB对MADlib进行了增强和优化,并在此基础上提出了AI-in-Database的概念。

        MADlib是Pivotal公司与伯克利大学合作开发的一个开源机器学习库,提供了多种数据转换、数据探索、统计、数据挖掘和机器学习方法,使用它能够简易地对结构化数据进行分析和挖掘。用户可以非常方便地将MADlib加载到数据库中,扩展数据库的分析功能。2015年7月MADlib成为Apache软件基金会的孵化器项目,经过两年的发展,于2017年8月毕业成为Apache顶级项目。其当前最新版本为MADlib 1.12,可以与PostgreSQL、Greenplum、HAWQ和OushuDB等数据库系统无缝集成。

1. 基本概念

        无论是经典的SAS、SPSS,还是时下流行的MATLAB、R、Python,所有这些机器学习或数据挖掘软件,都是自成系统的。具体说就是具有一套完整的程序语言及其集成开发环境,提供了丰富的数学和统计分析函数,具备良好的人机交互界面,支持从数据准备、数据探索、数据预处理,到开发和实现模型算法、数据可视化,再到最终结果的验证与模型部署到应用的全过程。它们都是面向程序员的系统或语言,重点在于由程序员自己利用系统提供的基本计算方法或函数,通过编程的方式实现所需的模型算法。表1给出了5种常用数据挖掘工具在功能、特点、适用场景方面的比较,从中可以看出,每种工具都有自己的特点和适应条件。

工具名称

功能

特点

适用场景

MATLAB

不仅具有较强的数据统计、科学计算功能,还具有金融、经济等众多的行业应用工具箱

擅长矩阵计算和仿真模拟;

具有丰富的数学函数,适合算法开发或自主的程序开发;

具有强大的绘图功能

适合学习研究算法和灵活的产品开发

SAS

功能强大的统计分析软件

具有较强的大数据处理能力;

支持二次开发

有一些行业标准,适合工业使用

SPSS

侧重统计分析

使用方便,但不适合自己开发代码,就是说扩展上受限,如果要求不高,已经足够

界面友好,使用简单,但功能强大,也可以编程,能解决大部分统计学问题,适合初学者

WEKA

具有丰富数据挖掘函数,包括分类、聚类、关联分析等主流算法

Java开发的开源数据分析、机器学习工具

适合于具有一定程序开发经验的工程师,尤其适合于用Java进行二次开发

R

类似MATLAB,具有丰富的数学和统计分析函数

开源并支持二次开发

适合算法学习、小项目的产品研发

表1 常用数据挖掘工具的比较
        MADlib具有与上述工具完全不同的设计理念,它不是面向程序员的,而是面向数据库开发或DBA的。如果用一句话说明什么是MADlib,那就是“SQL中的大数据机器学习库”。通常SQL查询能发现数据最明显的模式和趋势,但要想获取数据中最为有用的信息,需要的其实是完全不同的另一套技术,一套牢固扎根于数学和应用数学的技能,当然指的就是数据挖掘或机器学习,而具备这种技术的人才似乎只存在于学术界中。如果能将SQL的简单易用与数据挖掘的复杂算法结合起来,充分利用两者的优势和特点,那对于广大传统数据库应用技术人员来说,学习和从事数据挖掘工作的门槛将大大降低。现在,鱼和熊掌兼得的机会来了,DBAer不用现学Python、R或MATLAB,只要使用MADlib,用SQL就能实现简单的数据挖掘。

        对用户而言,MADlib仅提供了可在SQL查询语句中调用的函数。其中不但包括基本的线性代数运算和统计函数,而且还提供了常用的、现成的机器学习或数据挖掘模型函数。用户不需要深入了解算法的程序实现细节,只要搞清楚各函数中相关参数的含义,从而提供正确的入参,并且能够理解和解释函数的输出结果即可。这种使用方式无疑会极大地提高开发效率,节约开发成本。在MADlib的世界里,一切皆函数,就是这么简单。

        然而任何事物都具有两面性,MADlib提供了使用方便性,但相对于其它数据挖掘系统而言,灵活性、扩展性与功能完备性显然是其短板。这很好理解,首先,模型已经被封装在SQL函数中,性能优劣完全依赖于函数本身,基本没有留给用户进行性能调整的空间。其次,函数只能在SQL中调用,而SQL依赖于数据库系统,也就是说单独的MADlib函数库是无意义的,它必须与PostgreSQL、Greenplum、HAWQ或OushuDB等数据库系统结合使用。最后,既然MADlib是SQL中的机器学习库,注定它不关心数据可视化,本身不带数据的图形化表示功能。由此可见,MADlib作为工具,并不是传统意义上的数据挖掘系统软件,而只是一套可在SQL中调用的函数库,其出发点是让数据库技术人员用SQL快速完成简单的数据挖掘工作。

        即便如此,MADlib的易用性已经足以引起我们的兴趣。在了解了MADlib是什么及其优缺点后,用户就能根据自己的实际情况和需求,有针对性地选择和使用MADlib来实现特定业务目标。

2. 架构

        MADlib架构如图1所示。

图1 MADlib架构
        处于架构最上面一层是用户接口。如前所述,用户只需通过在SQL查询语句中调用MADlib提供的函数来完成数据挖掘的工作。当然这里的SQL语法要与特定数据库管理系统相匹配。最底层则是Greenplum、PostgreSQL等数据库管理系统,最终由它们处理查询请求。

        从图1中看到,MADlib系统架构自上至下由以下四个主要组件构成:
  • Python调用SQL模板实现的驱动函数
  • Python实现的高级抽象层
  • C++实现的核心函数
  • C++实现的低级数据库抽象层
 (1)Python驱动函数
        驱动函数是用户输入的主入口点,调用优化器执行迭代算法的外层循环。

(2)Python实现的高级抽象层
        高级抽象层负责算法的流程控制。与驱动函数一起实现输入参数验证、SQL语句执行、结果评估,并可能在循环中自动执行更多的SQL语句直到达到某些收敛标准。

(3)C++实现的核心函数
        这部分函数是由C++编写的核心函数,在内层循环中实现特定机器学习或数据挖掘算法。出于性能考虑,这些函数使用C++而不是Python编写。

(4)C++实现的低级数据库抽象层
        这些函数提供一个编程接口,将所有的Postgres数据库内核实现细节进行抽象。它们提供了一种机制,使得MADlib能够支持不同的后端平台,从而将关注点集中在内部功能而不是平台集成上。

3. 设计思想

        驱动MADlib架构的主要设计思想与Hadoop是一致的,体现在以下方面:
  • 操作数据库内的本地数据,不在多个运行时环境中进行不必要的数据移动。
  • 充分利用数据库引擎功能,但将数据挖掘逻辑从特定数据库的实现细节中分离出来。
  • 利用MPP无共享技术提供的并行性和可扩展性,如Greenplum、HAWQ或OushuDB数据库系统。
  • 执行的维护活动对Apache社区和正在进行的学术研究开放。

二、MADlib支持的模型类型

        MADlib支持以下常用的数据挖掘与机器学习模型类型,其中大部分模型都包含训练和预测两组函数。

 (1)回归
        如果所需的输出具有连续性,我们使用回归方法建立模型,预测输出值。例如,如果有真实的描述房地产属性的数据,我们就可以建立一个模型,预测基于房屋已知特征的售价。因为输出反应了连续的数值而不是分类,所以该场景是一个回归问题。

(2)分类
        如果所需的输出实质上是分类的,可以使用分类方法建立模型,预测新数据会属于哪一类。分类的目标是能够将输入记录标记为正确的类别。例如,假设有描述人口统计的数据,以及个人申请贷款和贷款违约历史数据,那么我们就能建立一个模型,描述新的人口统计数据集合贷款违约的可能性。此场景下输出的分类为“违约”和“正常”两类。

(3)关联规则挖掘
        有时又叫做购物篮分析或频繁项集挖掘。相对于随机发生,确定哪些事项更经常一起发生,指出事项之间的潜在关系。例如,在一个网店应用中,关联规则挖掘可用于确定哪些商品倾向于被一起售出,然后将这些商品输入到客户推荐引擎中,提供促销机会,就像著名的啤酒与尿布的故事。

(4)聚类
        识别数据分组,一组中的数据项比其它组的数据项更相似。例如,在客户细分分析中,目标是识别客户行为相似特征组,以便针对不同特征的客户设计各种营销活动,以达到市场目的。如果提前了解客户细分情况,这将是一个受控的分类任务。当我们让数据识别自身分组时,这就是一个聚类任务。

(5)主题建模
        主题建模与聚类相似,也是确定彼此相似的数据组。但这里的相似通常特指在文本领域中,具有相同主题的文档。

(6)描述性统计
        描述性统计不提供模型,因此不被认为是一种机器学习方法。但描述性统计有助于向分析人员提供信息以了解基础数据,为数据提供有价值的解释,可能影响数据模型的选择。例如,计算数据集中每个变量内的数据分布,可以帮助分析理解哪些变量应被视为分类变量,哪些变量是连续性变量,以及值的分布情况。描述性统计通常是数据探索的组成部分。

(7)模型验证
        如果不了解一个模型的准确性就开始使用它,很容易导致糟糕的结果。正因如此,理解模型存在的问题,并用测试数据评估模型的精度尤为重要。需要将训练数据和测试数据分离,频繁进行数据分析,验证统计模型的有效性,评估模型不过分拟合训练数据。N-fold交叉验证方法经常被使用。

三、MADlib的功能

        MADlib的功能特色如图2所示。

图2 MADlib功能
        下面基于MADlib 1.10版本,预览MADlib提供的具体模型算法或功能。
(1)Data Types andTransformations(数据类型与转换)
        Arraysand Matrices(数组与矩阵)
                ArrayOperations(数组运算)
                MatrixOperations(矩阵运算)
                MatrixFactorization(矩阵分解)
                        Low-rankMatrix Factorization(低阶矩阵分解)
                        SingularValue Decomposition(SVD,奇异值分解)
                Normsand Distance functions(范数和距离函数)
                SparseVectors(稀疏向量)
        DimensionalityReduction(降维)
                PrincipalComponent Analysis(PCA主成分分析)
                PrincipalComponent Projection(PCP主成分投影)
        Pivot(透视表)
        EncodingCategorical Variables(分类变量编码)
        Stemming(词干提取)

(2)Graph(图)
        SingleSource Shortest Path(单源最短路径)

(3)Model Evaluation(模型评估)
        CrossValidation(交叉验证)
        PredictionMetrics(指标预测)

(4)Statistics(统计)
        DescriptiveStatistics(描述性统计)
                Pearson’s Correlation(皮尔逊相关系数)
                Summary(摘要汇总)
        InferentialStatistics(推断性统计)
                HypothesisTests(假设检验)
        ProbabilityFunctions(概率函数)

(5)Supervised Learning(监督学习)
        ConditionalRandom Field(条件随机场)
        RegressionModels(回归模型)
                ClusteredVariance(聚类方差)
                Cox-ProportionalHazards Regression(Cox比率风险回归)
                ElasticNet Regularization(弹性网络回归)
                GeneralizedLinear Models(广义线性回归)
                LinearRegression(线性回归)
                LogisticRegression(逻辑回归)
                MarginalEffects(边际效应)
                MultinomialRegression(多分类逻辑回归)
                OrdinalRegression(有序回归)
                RobustVariance(鲁棒方差)
        SupportVector Machines(支持向量机)
        TreeMethods(树方法)
                DecisionTree(决策树)
                RandomForest(随机森林)

(6)Time Series Analysis(时间序列分析)
        ARIMA(自回归积分滑动平均)

(7)UnsupervisedLearning(无监督学习)
        AssociationRules(关联规则)
                AprioriAlgorithm(Apriori算法)
        Clustering(聚类)
                k-MeansClustering(k-Means)
        TopicModelling(主题模型)
                LatentDirichlet Allocation(LDA)
(8)Utility Functions(应用函数)
        DeveloperDatabase Functions(开发者数据库函数)
        LinearSolvers(线性求解器)
                DenseLinear Systems(稠密线性系统)
                SparseLinear Systems(稀疏线性系统)
        PathFunctions(路径函数)
        PMMLExport(PMML导出)
        Sessionize(会话化)
        TextAnalysis(文本分析)
                TermFrequency(词频)


四、安装与卸载MADlib

        在OushuDB中安装MADlib非常简单,下面简述在OushuDB 3.1.1上安装MADlib 1.11的过程。

1.  下载软件包

        从下面地址下载MADlib的rpm包:

http://yum.oushu-tech.com/oushurepo/yumrepo/release/ai/centos7/1.11.0/ai-1.11.0-652.el7.x86_64.rpm

2. 在OushuDB集群中的所有节点上安装MADlib rpm包

# 所有节点都执行
rpm - ivh ai-1.11.0-652.el7.x86_64.rpm

3. 在指定数据库中部署MADlib

su - gpadmin 
/usr/local/madlib/bin/madpack -p oushu -c gpadmin@localhost:5432/dm install
        该命令在OushuDB的dm数据库中建立madlib schema,-p参数指定平台为oushu。命令执行后可以查看在madlib schema中创建的数据库对象。
dm=# set search_path=madlib;
SET
dm=# \dtList of relationsSchema |       Name       | Type  |  Owner  |   Storage   
--------+------------------+-------+---------+-------------madlib | migrationhistory | table | gpadmin | append only
(1 row)dm=# \dsList of relationsSchema |          Name           |   Type   |  Owner  | Storage 
--------+-------------------------+----------+---------+---------madlib | migrationhistory_id_seq | sequence | gpadmin | heap
(1 row)dm=# select type,count(*)   
dm-#   from (select p.proname as name,  
dm(#                case when p.proisagg then 'agg'  
dm(#                     when p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype then 'trigger'  
dm(#                     else 'normal'  
dm(#                 end as type  
dm(#            from pg_catalog.pg_proc p, pg_catalog.pg_namespace n   
dm(#           where n.oid = p.pronamespace and n.nspname='madlib') t
dm-#  group by rollup (type);type  | count 
--------+-------agg    |   135normal |  1335|  1470
(3 rows)
        可以看到,MADlib部署应用程序madpack首先创建数据库模式madlib,然后在该模式中创建数据库对象,1.11版本包括一个表,一个序列,1335个普通函数,135个聚合函数。所有的机器学习和数据挖掘模型、算法、操作和功能都是通过调用这些函数实际执行的。
 

4. 验证安装

/usr/local/madlib/bin/madpack install-check -c /dm -s madlib -p oushu
        该命令通过执行27个模块的68个案例,验证所有模块都能正常工作。相同配置的集群下,该检查过程比HAWQ 2.1.1上的MADlib 1.10快了将近一倍。命令输出如下:
[gpadmin@hdp2~]$/usr/local/madlib/bin/madpack install-check -c /dm -s madlib -p oushu
madpack.py : INFO : Detected OUSHU version 3.1.
TEST CASE RESULT|Module: array_ops|array_ops.sql_in|PASS|Time: 7732 milliseconds
TEST CASE RESULT|Module: bayes|gaussian_naive_bayes.sql_in|PASS|Time: 11219 milliseconds
TEST CASE RESULT|Module: bayes|bayes.sql_in|PASS|Time: 33970 milliseconds
TEST CASE RESULT|Module: crf|crf_train_small.sql_in|PASS|Time: 11005 milliseconds
TEST CASE RESULT|Module: crf|crf_train_large.sql_in|PASS|Time: 13705 milliseconds
TEST CASE RESULT|Module: crf|crf_test_small.sql_in|PASS|Time: 9771 milliseconds
TEST CASE RESULT|Module: crf|crf_test_large.sql_in|PASS|Time: 10714 milliseconds
TEST CASE RESULT|Module: elastic_net|elastic_net_install_check.sql_in|PASS|Time: 481479 milliseconds
TEST CASE RESULT|Module: graph|sssp.sql_in|PASS|Time: 31614 milliseconds
TEST CASE RESULT|Module: graph|pagerank.sql_in|PASS|Time: 27443 milliseconds
TEST CASE RESULT|Module: linalg|svd.sql_in|PASS|Time: 35420 milliseconds
TEST CASE RESULT|Module: linalg|matrix_ops.sql_in|PASS|Time: 16492 milliseconds
TEST CASE RESULT|Module: linalg|linalg.sql_in|PASS|Time: 1217 milliseconds
TEST CASE RESULT|Module: prob|prob.sql_in|PASS|Time: 990 milliseconds
TEST CASE RESULT|Module: sketch|support.sql_in|PASS|Time: 118 milliseconds
TEST CASE RESULT|Module: sketch|mfv.sql_in|PASS|Time: 248 milliseconds
TEST CASE RESULT|Module: sketch|fm.sql_in|PASS|Time: 4441 milliseconds
TEST CASE RESULT|Module: sketch|cm.sql_in|PASS|Time: 14443 milliseconds
TEST CASE RESULT|Module: svm|svm.sql_in|PASS|Time: 82863 milliseconds
TEST CASE RESULT|Module: tsa|arima_train.sql_in|PASS|Time: 27969 milliseconds
TEST CASE RESULT|Module: tsa|arima.sql_in|PASS|Time: 30725 milliseconds
TEST CASE RESULT|Module: conjugate_gradient|conj_grad.sql_in|PASS|Time: 3450 milliseconds
TEST CASE RESULT|Module: knn|knn.sql_in|PASS|Time: 3986 milliseconds
TEST CASE RESULT|Module: lda|lda.sql_in|PASS|Time: 12444 milliseconds
TEST CASE RESULT|Module: stats|wsr_test.sql_in|PASS|Time: 2426 milliseconds
TEST CASE RESULT|Module: stats|t_test.sql_in|PASS|Time: 1873 milliseconds
TEST CASE RESULT|Module: stats|robust_and_clustered_variance_coxph.sql_in|PASS|Time: 9217 milliseconds
TEST CASE RESULT|Module: stats|pred_metrics.sql_in|PASS|Time: 11266 milliseconds
TEST CASE RESULT|Module: stats|mw_test.sql_in|PASS|Time: 1169 milliseconds
TEST CASE RESULT|Module: stats|ks_test.sql_in|PASS|Time: 1274 milliseconds
TEST CASE RESULT|Module: stats|f_test.sql_in|PASS|Time: 1355 milliseconds
TEST CASE RESULT|Module: stats|cox_prop_hazards.sql_in|PASS|Time: 18102 milliseconds
TEST CASE RESULT|Module: stats|correlation.sql_in|PASS|Time: 7285 milliseconds
TEST CASE RESULT|Module: stats|chi2_test.sql_in|PASS|Time: 1714 milliseconds
TEST CASE RESULT|Module: stats|anova_test.sql_in|PASS|Time: 873 milliseconds
TEST CASE RESULT|Module: svec_util|svec_test.sql_in|PASS|Time: 5192 milliseconds
TEST CASE RESULT|Module: svec_util|gp_sfv_sort_order.sql_in|PASS|Time: 1421 milliseconds
TEST CASE RESULT|Module: utilities|text_utilities.sql_in|PASS|Time: 2428 milliseconds
TEST CASE RESULT|Module: utilities|sessionize.sql_in|PASS|Time: 1920 milliseconds
TEST CASE RESULT|Module: utilities|pivot.sql_in|PASS|Time: 8198 milliseconds
TEST CASE RESULT|Module: utilities|path.sql_in|PASS|Time: 4032 milliseconds
TEST CASE RESULT|Module: utilities|encode_categorical.sql_in|PASS|Time: 3786 milliseconds
TEST CASE RESULT|Module: utilities|drop_madlib_temp.sql_in|PASS|Time: 260 milliseconds
TEST CASE RESULT|Module: assoc_rules|assoc_rules.sql_in|PASS|Time: 16333 milliseconds
TEST CASE RESULT|Module: convex|lmf.sql_in|PASS|Time: 25161 milliseconds
TEST CASE RESULT|Module: glm|poisson.sql_in|PASS|Time: 10049 milliseconds
TEST CASE RESULT|Module: glm|ordinal.sql_in|PASS|Time: 8566 milliseconds
TEST CASE RESULT|Module: glm|multinom.sql_in|PASS|Time: 8400 milliseconds
TEST CASE RESULT|Module: glm|inverse_gaussian.sql_in|PASS|Time: 9039 milliseconds
TEST CASE RESULT|Module: glm|gaussian.sql_in|PASS|Time: 9369 milliseconds
TEST CASE RESULT|Module: glm|gamma.sql_in|PASS|Time: 55457 milliseconds
TEST CASE RESULT|Module: glm|binomial.sql_in|PASS|Time: 15706 milliseconds
TEST CASE RESULT|Module: linear_systems|sparse_linear_sytems.sql_in|PASS|Time: 3093 milliseconds
TEST CASE RESULT|Module: linear_systems|dense_linear_sytems.sql_in|PASS|Time: 2671 milliseconds
TEST CASE RESULT|Module: recursive_partitioning|random_forest.sql_in|PASS|Time: 201184 milliseconds
TEST CASE RESULT|Module: recursive_partitioning|decision_tree.sql_in|PASS|Time: 43634 milliseconds
TEST CASE RESULT|Module: regress|robust.sql_in|PASS|Time: 32059 milliseconds
TEST CASE RESULT|Module: regress|multilogistic.sql_in|PASS|Time: 11548 milliseconds
TEST CASE RESULT|Module: regress|marginal.sql_in|PASS|Time: 44736 milliseconds
TEST CASE RESULT|Module: regress|logistic.sql_in|PASS|Time: 31461 milliseconds
TEST CASE RESULT|Module: regress|linear.sql_in|PASS|Time: 4470 milliseconds
TEST CASE RESULT|Module: regress|clustered.sql_in|PASS|Time: 17934 milliseconds
TEST CASE RESULT|Module: sample|sample.sql_in|PASS|Time: 520 milliseconds
TEST CASE RESULT|Module: summary|summary.sql_in|PASS|Time: 7028 milliseconds
TEST CASE RESULT|Module: kmeans|kmeans.sql_in|PASS|Time: 37665 milliseconds
TEST CASE RESULT|Module: pca|pca_project.sql_in|PASS|Time: 108473 milliseconds
TEST CASE RESULT|Module: pca|pca.sql_in|PASS|Time: 254640 milliseconds
TEST CASE RESULT|Module: validation|cross_validation.sql_in|PASS|Time: 17556 milliseconds
[gpadmin@hdp2~]$
        可以看到,所有案例都已经正常执行,说明MADlib安装成功。

5. 卸载MADlib

        卸载过程基本上是安装的逆过程。
(1)删除madlib模式
        使用SQL命令手工删除模式。
drop schema madlib cascade;
(2)删除其它遗留数据库对象
  • 删除模式:如果模型验证过程中途出错,数据库中可能包含测试的模式,这些模式名称的前缀都是madlib_installcheck_,只能手工执行SQL命令删除这些模式,如:
    drop schema madlib_installcheck_kmeans cascade;
  • 删除用户:如果存在遗留的测试用户,则删除它,如:
    drop user if existsmadlib_111_installcheck;
        安装好MADlib就可以开启机器学习之旅,调用各种函数完成算法提供的功能。各模块函数的使用方法及其示例参见专题“ MADlib——基于SQL的数据挖掘解决方案”。

参考:

  • MADlib——基于SQL的数据挖掘解决方案(2)——MADlib基础

http://chatgpt.dhexx.cn/article/tqtRyWpx.shtml

相关文章

朴实无华,总结200道往年BAT机器学习面试题

来源:CSDN 刷题,是面试前的必备环节。本文作者总结了往年BAT机器学习面试题,干货满满,值得收藏。 想要入职大厂可谓是千军万马过独木桥。 为了通过层层考验,刷题肯定是必不可少的。本文作者根据网络在线发布的BAT机器学…

2019年国内IT行业就业状况分析,你拖后腿了吗?

点击上方“后端技术精选”,选择“置顶公众号” 技术文章第一时间送达! 作者:刚入道的大学僧 本文系投稿,原文内容点击阅读原文直达 一、分析背景与分析目的 随着科技的迅速发展,计算机的普及及对人类生活的渗透&#x…

Deep Learning Methods for Remote Heart Rate Measurement:A Review and Future Research Agenda

前言 本文为一片远程心率监测综述的总结复述,本文为作者第一篇试写博客,欢迎大家提出宝贵意见。 文章主要内容:1.简述了有关远程心率监测的基础知识与相关概念。2.讨论了基于深度学习的远程心率检测方法的几个最新进展,并根据模型…

论文解读:基于共享混合深度学习架构的DNA形状特征预测转录因子结合位点

Predicting transcription factor binding sites using DNA shape features based on shared hybrid deep learning architecture 数据:https://github.com/wangguoguoa/CRPTS 表S1: Tables S1 表S2:S2 表S3:Table S3 目录 1 文章概述…

一文简单理解“推荐系统”原理及架构

本文主要介绍什么是推荐系统,为什么需要推荐系统,如何实现推荐系统的方案,包括实现推荐系统的一些常见模型,希望给读者提供学习实践参考。 为什么需要推荐系统 对于信息消费者,需要从大量信息中找到自己感兴趣的信息&a…

拉普拉斯, 高斯, 高尔顿, 皮尔逊, 戈塞特, 费歇尔对统计学的发展贡献

由于人类的统计实践是随着计数活动而产生的,因此,统计发展史可以追溯到远古的原始社会,也就是说距今足有五千多年的漫长岁月。但是,能使人类的统计实践 上升到理论上予以概括总结的程度,即开始成为一门系统的学科统计学…

css过渡 取消过渡_如何过渡到微服务架构

css过渡 取消过渡 获取完整的书 微服务和容器 建议零售价$ 39.99 看见 本文摘录自Parminder Singh Kocher撰写的Pearson Addison-Wesley的著作《微服务和容器》。 经皮尔逊(Pearson)许可在此处转载©2018。 有关更多信息,请访问notifyit…

从编解码、传输到基础架构 详解Bigo多媒体技术栈

本文来自Bigo多媒体技术团队的投稿,详细介绍了Bigo多媒体技术的前生今世,通过何种技术手段支撑起了BigoLive、Likee和imo三大业务。技术栈具体涉及编解码、传输、全球基础设施架构等三方面。如果你也有独到的经验与思考,欢迎通过contributeli…

推荐系统lambda架构学习笔记之推荐系统(一)

推荐系统 个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商(淘宝/京东)、资讯(今日头条/微博)、音乐(网易云音乐/QQ音乐)、短视频(抖音/快手)等热门应用中,推荐系统都是核心组件之一。 推荐…

极客星球 | 联邦学习与产品化之路

一、 背景——联邦学习与fate简介 1、联邦学习 联邦学习(Federated Learning)是一种新兴的人工智能基础技术,由谷歌最先提出于2016年,原用于解决安卓手机终端用户在本地更新模型的问题。其设计目标是在保障大数据交换时的信息安…

云效故障定位论文被ICSE2021 SEIP track收录

近期,由阿里云云效团队联合复旦大学CodeWisdom研究团队、阿里技术风险部安全生产团队,合作完成的论文《MicroHECL: High-Efficient Root Cause Localization in Large-Scale Microservice Systems》被ICSE 2021 SEIP track录用。本文针对大规模微服务系统…

简历项目-

文章目录 项目一:电商广告推荐系统一、数据集项目实现分析二、根据用户行为数据创建ALS模型并召回商品用户行为数据拆分(pv,fav,cart,buy)预处理behavior_log数据集根据用户对类目偏好打分训练ALS模型根据用户对品牌偏好打分训练ALS模型 三. …

【推荐系统算法学习笔记1】基本架构、专有名词、构建流程

文章目录 1.架构1.1 大数据框架:lambda 架构的1.2.基本概念 2. 推荐模型构建流程2.1 数据2.1.1 数据来源2.1.2 数据清洗、处理 2.2 特征工程2.3 算法(机器学习) 来源 1.架构 推荐算法架构 召回 协同过滤基于内容的基于隐语义的 排序 召回决定…

个性化推荐系统

一、系统架构 1、大数据Lambda架构 (1)Lambda系统架构提供了一个结合实时数据和Hadoop预先计算的数据环境和混合平台, 提供一个实时的数据视图 (2)分层架构 ----- 批处理层 a.数据不可变,可进行任何计算&#xff0c…

【推荐架构day1】推荐系统的基本原理及架构:信息与人的供需匹配

按:本文来自陈彩华的精分享,从WHY、What到How系统性地介绍一下推荐系统的基本原理。 为什么需要推荐系统 对于信息消费者,需要从大量信息中找到自己感兴趣的信息,而在信息过载时代,用户难以从大量信息中获取自己感兴趣…

CoAP学习笔记——CoAP资源发现

【 原文链接】 (2015年4月15日,ct表述错误,待修改) 更多CoAP文章请参考博文索引——【物联网学习笔记——索引博文】 CoAP协议专门为M2M通信设计(设备间通信),在设备通信过程中很少会有人的干预…

一个用来学习CoAP协议的小例子

1 CoAP简介 CoAP 是受限制应用协议的简称,是物联网应用层协议之一。物联网应用层协议主要还有HTTP和MQTT,这三种协议有各自不同的应用场景。其中HTTP和MQTT使用TCP作为传输层协议,而CoAP使用UDP作为传输层协议,如下图&#xff1a…

CoAP学习笔记(1)CoAP报文结构

CoAP报文结构 CoAP基于UDP的应用层协议,报文结构如下 Ver 版本号占2bit,固定为01T 报文类型,占2bit,CoAP中有4种报文类型,如下 类型描述T值CON报文Confirmable,需要被确认的报文T00NON报文Non-Confirma…

coap协议学习之搭建coap测试环境

本篇目标:简单初步认识coap,以及怎么去测试自己搭建的coap协议应用。 材料准备: 谷歌浏览器/火狐浏览器(55.0)与 copper插件linux系统(搭建在虚拟机下的 Ubantu)与 libcoap开源程序 COAP插件的…

【协议】MQTT、CoAP、HTTP比较,MQTT协议优缺点

目录 MQTT、CoAP、HTTP区别 1. 协议栈: 2. 请求方式 3. 通讯消息格式: 4. 使用特点与使用场景 5.客户端平台差异 6.防火墙容错 MQTT、CoAP、HTTP介绍 CoAP协议 简介 CoAP与MQTT的区别: HTTP协议 简介 HTTP与CoAP的区别 MQTT协…