web应用程序和web网站_使用推荐引擎个性化您的Web应用程序

news/2024/5/9 13:32:44/文章来源:https://blog.csdn.net/cuxiong8996/article/details/107155046

web应用程序和web网站

为了在快速发展的全球行业中保持相关性,技术专业人员必须跟踪IT的重大趋势,并找到方法将重要的趋势纳入其公司的技术产品组合中。 这样的趋势之一就是使用推荐引擎来驱动用户探索您的网站或企业的其他产品。 这些引擎根据各种模式向用户提供建议,并有助于指导用户根据其特定的用户习惯来考虑他们可能不会意识到的产品。

一些非常受欢迎的网站广泛使用了推荐引擎。 例如,访问Amazon或Netflix的访客经常会看到个性化的建议,例如“如果您喜欢该商品,您可能也会喜欢它……”。这些网站使用建议来帮助将用户(和收入)吸引到其他方面它们以智能,有意义的方式提供,专门针对用户和用户的喜好进行量身定制。

即使您的公司不提供书籍或电影,也可能有很多理由实施类似的事情。 您可以推荐企业提供的相关产品,特别是如果您拥有广泛的产品组合。 您可以为更抽象的概念提供建议,例如您希望用户访问的相关页面,热门服务列表,适用的教育机会,特殊优惠或访问有用的技术支持文档。

通过建议的个性化设置,无需尝试猜测您广泛的用户群感兴趣的内容,而是使您能够毫不扰动和明智地识别单个用户的喜好,并使用此信息来自定义每个用户的体验。 根据过去的行为推荐一种新选择的任务是在许多应用程序和行业中都有广泛的用途,因此,本文将始终引用此示例。

Apache Mahout是一个开源推荐引擎,可以很好地应用这些概念,它虽然小巧但功能强大,足以在中小型商业案例中实施。 本文概述了如何使用用于WebSphere软件V8.0.3的IBM Rational Application Developer将Apache Mahout V0.5与IBM WebSphere Application Server V8集成。 它从对推荐引擎的概述开始,从高层次描述了Apache Mahout,解释了如何将其与WebSphere Application Server和Rational Application Developer集成,然后提供了一些后续步骤,以查找有关该技术的更多信息。

推荐引擎概述

推荐引擎的主要目的是对现有数据进行推断,以显示对象之间的关系。 对象可以是很多东西,包括用户,项目,产品等。 关系提供对象之间的相似度或归属度。 例如,关系可以表示用户对项目的喜欢程度(标量),或者指示用户是否对特定页面添加了书签(二进制)。

为了提出建议,建议引擎执行几个步骤来挖掘数据。 最初,您从代表对象及其关系的输入数据开始。 输入数据由对象标识符和与其他对象的关系组成。 图1从高层次显示了这一点。

图1.大图
图1.大图

考虑用户对项目的评分。 推荐引擎使用此输入数据来计算对象之间的相似度。 根据数据大小或特定算法,计算对象之间的相似性可能会花费大量时间。 诸如Apache Hadoop之类的分布式算法可用于并行化相似度的计算。 有多种类型的算法可以计算相似度。 最后,使用相似性信息,推荐引擎可以基于请求的参数发出推荐请求。

可能您认为推荐引擎会有所帮助,但由于您认为推荐引擎太复杂而无法使用。 推荐引擎领域实际上很大,并且可能非常复杂。 幸运的是,有可用的工具可以轻松地在单个文章的时间和空间内显示必要的概念。 更好的是,一旦授课,这些相同的工具可用于将课程应用于现实世界。 Apache Mahout的设计师将可伸缩性和可用性作为项目的核心部分,因此您可以根据需要扩展构建解决方案。

当您决定开始个性化您的应用程序并想要使用推荐引擎时,需要做出一些重要的决定:

  • 适用哪种算法

    您需要做出的最重要的决定是将哪种算法应用于数据。 算法的选择取决于您要识别的内容以及在数据中指定的关系类型。 用于建议的一些常用方法包括:

    • 协作过滤:这种方法依赖于用户之间的社交互动。 这些建议基于其他用户提供的评级。
    • 聚类:使用这种方法,推荐引擎会尝试根据用户或项目本身之间的相似性来构建推荐。
    • 分类:此方法使用通用属性将项目自动分组到类别中。 在分类中,计算机尝试对所有项目进行分类。

    本文将重点讨论协作过滤,以帮助您了解用户的社交方面; 这也是向Web应用程序添加建议的良好起点。

    协作过滤是一种简单且流行的技术。 这很容易,因为您的客户为您完成了重要的工作-他们决定了您要突出显示的内容的标准。 协同过滤分析来自其他用户或项目的评级以提出建议。 协作过滤中有两种方法:它们之间的主要区别在于每种方法都可以随着系统中用户数量的增长而扩展:

    • 基于用户的推荐

      通过查看每个用户评分项目的共性,这种推荐可以在用户之间建立相似性。 例如,如果项目是课程,则两个用户上相同的课程就可以认为他们非常相似。 在另一个极端,如果他们不采取任何类似的做法,它们的相似性将很低。 为了提出建议,算法依赖于类似用户对那些用户未修课的课程的评分。 此建议是最基本的建议; 但是,它的主要局限在于,为了产生相似性,它需要将每个用户与每个其他用户进行比较。 对于用户数量少的应用程序,这是可以接受的,但是如果用户数量增加,则执行此评估的时间将成倍增加。

    • 基于项目的推荐

      另一方面,基于项目的推荐始于查看与用户关联的项目。 对于与用户关联的每个项目,算法都会计算出与集合中其他项目的相似程度,以构建推荐列表。 为了确定用户喜欢推荐项目的可能性,该算法查看用户对该项目给出的评级,并对每个推荐项目给出加权评级。 基于项目的建议的主要问题是,它需要为每个可用项目建立相似性索引。 但是,项目更改的频率要比用户更改的频率低,因此,使用此类建议可以离线预先计算相似度并在特定时间更新它们是可行的。

  • 如何将流程扩展到您的用户

    计算用户和项目之间相似度的实际过程是一个过程密集型操作。 根据数据集的大小,操作可能需要几毫秒到几分钟的时间。 使用基于Web的应用程序时,如果用户需要等待较长时间才能收到建议,则响应时间成为问题。

    虽然可以实时计算用户和项目之间的相似度,但是在使用较大的数据集时,需要仔细评估这一点。 对于基于用户和基于项目的推荐方法,最佳实践建议如果数据集较大(例如,超过100万个评分),则脱机执行这些计算。 在不经常添加新项目或用户仅偶尔对项目进行评分的情况下,使用离线计算变得可行,因为仅在添加新项目或对项目应用新评分时才需要计算相似度。 在这种情况下,推荐引擎可以使用最终会保持一致的相似性来工作。

    一种用于离线预先计算相似性的方法是利用产品的分布式计算功能,例如Apache Hadoop,这是MapReduce技术的开源实现。 这就是为什么您会经常听到与推荐引擎一起提到的那些系统的原因。 如果您要基于大量分散的数据进行推荐,则需要精简数据,而这些系统使您能够做到这一点。

    幸运的是,Apache Mahout提供了可以提交给Apache Hadoop的作业,以帮助您计算相似性。 一旦计算完成,就可以将结果加载到所需的数据源中,以便Web应用程序可以使用它。

  • 数据存储在哪里

    最后,您需要确定数据的存储位置。 该数据可以包含原始输入数据或具有脱机流程已经计算出的相似性的数据,例如Apache Hadoop。 如果数据源是大量原始数据存档,那么您可能需要对其进行挖掘以获取一些内容以供推荐引擎使用。 您可以将数据集存储在文件系统或分布式数据源中。 如果数据集较小,则可以让程序从文件系统读取数据并将其存储在工作内存中。 但是,如果数据集很大,则可能要考虑使用数据库管理系统,例如IBMDB2®,Apache Derby等。 如果选择分布式数据源,则将要确保正确配置了正确的查询优化设置(例如索引)。

    但这并不需要那么复杂。 为简单起见,在这里假设您的数据池足够小以适合小型数据库,例如Apache Derby,这是WebSphere Application Server V8附带的基于Java™的开源数据库管理系统。 重要的是,在继续采用该方法时,您需要根据特定数据确定是否需要使用分布式文件系统或传统的关系数据库管理系统。

示例场景

如developerWorks文章Apache Mahout简介中所述,Apache Mahout项目的目标是构建可扩展的机器学习库。 Apache Mahout是在Apache Hadoop之上实现的,但不仅限于分布式文件系统。

这使我们成为本文的重点,即Apache Mahout提供的用于将数据处理为建议的机器学习算法。 就本文而言,我们将重点介绍Apache Mahout当前实现的基于用户的过滤机器学习任务。 在本示例中使用社交引用,因为有很多方法可以获取此数据,并且数据很容易登录到数据库中。

假设您要创建一个Web应用程序,使用户能够基于其他用户提供的评级来获得项目推荐。 可用的数据集包含用户对项目的评分。 为了简单起见,本文附带的示例数据是通用的,因为我们仅使用用户和项目的标识符。 在现实世界的应用程序中,您需要在显示给用户之前用其显示名称替换推荐项目的唯一标识符。

图2.示例拓扑
图2.流程图

因此,如图2所示,用户将在应用程序中请求servlet。 该应用程序将调用推荐引擎,以为用户提供一组推荐。 推荐引擎将从数据源检索数据并实时计算相似度。

配置开发环境

要执行本文概述的步骤,您将需要按照以下说明设置开发环境:

  1. 下载Apache Mahout
    1. 访问Apache Mahout网站,并下载最新版本的Apache Mahout。 在撰写本文时,最新版本为0.5(mahout-distribution-0.5.zip)。
    2. 将存档的内容提取到已知位置。 这些内容文件将在以后引用。
  2. 创建Java EE应用程序项目
    1. 启动WebSphere Application V8.0.3的Rational Application Developer。
    2. 切换到Java EE透视图。
    3. 选择文件>新建>企业应用程序项目
    4. 对于项目名称,输入RecommenderApp
    5. 确保将目标运行时设置为WebSphere Application Server v8.0 ,然后单击Next
    6. 在下一个面板上,单击New module ...,然后从弹出窗口中选择Only Web module并将其名称设置为RecommenderWeb
    7. 单击确定 ,然后单击完成
  3. 用样本数据创建并填充数据库

    Apache Derby是基于Java的数据库,它使用文件存储进行存储。 在本示例中使用Apache Derby,因为它包含在Rational Application Developer中。

    1. 选择窗口>显示视图>数据源资源管理器
    2. 右键单击数据库连接,然后选择新建...
    3. 对于JDBC驱动程序,选择Derby 10.5-Embedded JDBC Driver Default
    4. 由于Derby将数据库存储在文件系统中,因此您需要指定其驻留位置。 对于数据库位置,输入用于数据库的路径和名称。 对于此示例, PREFERENCES用作数据库名称。
    5. 将用户名和密码字段留空,然后单击完成

    接下来,您将使用脚本定义数据模型(清单1)。 该脚本首先创建一个称为PREFERENCES的模式和一个名为aste_preferences的表。 该表包含用户对每个项目的所有评分。 它包含四列:user_id,item_id,首选项和时间戳。 表中的每个元组表示用户user_id已对项目item_id进行了排名,并为其赋予了优先级。

    清单1.数据源模式
    CREATE SCHEMA PREFERENCES;
    CREATE TABLE PREFERENCES.taste_preferences (	user_id BIGINT NOT NULL,item_id BIGINT NOT NULL,preference FLOAT NOT NULL,"timestamp" BIGINT,PRIMARY KEY (user_id, item_id));

    由于需要对数据库进行大量访问,因此还必须定义两个索引以加快搜索时间(清单2),这一点非常重要。

    清单2.表索引SQL
    CREATE INDEX PREFERENCES.user_id_idx ON PREFERENCES.taste_preferences ( user_id );
    CREATE INDEX PREFERENCES.item_id_idx ON PREFERENCES.taste_preferences ( item_id );

    接下来,创建数据模型:

    1. 下载createtable.sql( 本文随附 )并将其保存在RecommenderWeb项目中。
    2. 从Java EE角度来看,右键单击RecommenderWeb项目,然后选择Refresh 。 现在应该显示出createtable.sql脚本。
    3. 右键单击createtable.sql脚本,然后选择“ 执行SQL文件”
    4. 确认服务器类型设置为Derby _10.x ,连接配置文件和数据库名称正确,然后单击“ 确定”
    5. 您可以通过查看SQL Results视图来验证脚本是否成功完成(图3)。
      图3.创建表后SQL Results视图
      图3.创建表后SQL Results视图

    现在您已经创建了表,您可以向其中加载一些数据:

    1. 下载文件u.data ( 本文随附 )。 这是从MovieLens数据集中以逗号分隔的大约1万个用户评分的列表。 与使用SQL脚本一样,将此文件保存到RecommderWeb项目。
    2. 从Java EE角度来看,右键单击RecommenderWeb项目,然后选择Refresh 。 现在应显示u.data文件。
    3. 在“数据源资源管理器”视图中,展开数据库连接>偏好>偏好>模式>偏好>表
    4. 右键单击表TASTE_PREFERENCES,然后选择“ 加载...”。
    5. 对于输入文件,单击浏览并导航到RecommenderWeb文件夹,然后选择u.data并单击确定
    6. 对于列定界符,选择制表符 。 确保选中了替换现有数据 ,然后单击完成
    7. 现在应该开始加载过程。 加载整个数据集最多可能需要60秒。 您可以从“ SQL结果”视图中验证加载是否成功完成(图4)。
      图4.将数据加载到数据库后SQL Results视图
      图4.加载的数据
    8. 您可以通过右键单击TASTE_PREFERENCES表并选择Data> Sample Contents来验证加载的数据
    9. 通过选择“ 数据源资源管理器”视图并展开“ 数据库连接”,断开与数据库的连接
    10. 右键单击选择选择断开连接

    现在,您已经完成了数据存储和示例数据的创建。

  4. 配置Apache Mahout库

    为了开发推荐程序代码,您需要将所需的Apache Mahout库导入您的企业应用程序。 (如果要在环境中的多个企业项目之间共享Apache Mahout库,则建议的方法是配置共享库。)

    1. 展开EAR Projects ,右键单击RecommenderApp ,然后选择Import> Import...。
    2. 选择常规>文件系统 ,然后单击下一步
    3. 在“从目录”中,浏览到您提取Apache Mahout文件的位置,然后单击“ 确定”
    4. 从导入对话框中选择下表中列出的文件:
      图书馆名称 位置
      mahout-core-0.5.jar mahout-distribution-0.5 /
      mahout-core-0.5-job.jar mahout-distribution-0.5 /
      slf4j-jcl-1.6.0.jar mahout-distribution-0.5 / lib
    5. 点击完成
    6. 现在将这些引用添加到Web应用程序,以便您可以定义用于编译的类路径。 右键单击RecommenderWeb项目,然后选择“ 属性”
    7. 选择“ Java构建路径” ,然后单击“ 添加JAR”。
    8. 从弹出对话框中,展开RecommenderApp ,选择mahout-core-0.5.jarmahout-core-0.5-job.jar并单击OK (图5)。
      图5. RecommenderWeb项目的Java Build Path编辑器
      RecommenderWeb项目的Java构建路径编辑器
    9. 在RecommenderWeb项目中,展开WebContent> META-INF并双击MANIFEST.MF
    10. Dependencies> Jar或Module下,在所有三个库旁边放置一个复选标记(图6)。
      图6. RecommenderWeb项目的依赖项编辑器
      RecommenderWeb项目的依赖项编辑器
    11. 保存并关闭编辑器。

至此,您已经完成了开发环境的配置,并准备开始编写推荐代码。

构建推荐引擎

接下来,您将创建该servlet,该servlet将处理来自Apache Mahout的推荐引擎代码。

  1. 创建一个Servlet类

    首先创建代表您的Web应用程序的servlet类。

    1. 右键单击RecommenderWeb项目,然后选择“ 新建”>“ Servlet”
    2. 对于Java Package,输入com.ibm.sample.recommender
    3. 对于类名,输入TestServlet
      图7.创建Servlet –指定类文件目标面板
      创建Servlet –指定类文件目标面板
    4. 单击下一步
    5. 在下一个面板上,接受默认值,然后单击Next
    6. 在下一个面板上,取消选中doPost并单击Finish (图8)。
      图8. Create Servlet –指定要生成面板的方法存根
      创建Servlet –指定方法存根以生成面板

    完成此步骤后,您将拥有一个空的servlet类,您可以在其中添加推荐引擎的代码。

  2. 导入源代码

    本文包含 servlet类的示例源代码,包含在文件snippet1.txt中。 下载此文件,并使用它替换TestServlet.java源文件的内容。

    现在是检查代码的重要部分以帮助您了解正在执行的工作的好时机。

    1. 创建数据模型

      以前,您创建了数据库并加载了数据集。 在此步骤中,您将定义一个数据模型对象,该对象通过使用JDBC调用提供对此数据集的访问。 Apache Mahout仅为MySQL和PostgreSQL数据源提供JDBC实现类。 如果要使用其他数据源,则有以下三种选择:

      • 使用GenericJDBCDataModel类,并在构造函数方法中提供所有需要SQL查询。
      • 扩展AbstractJDBCDataModel来为您的数据源添加一个实现。
      • 尝试使用现有的实现之一来验证它是否兼容。

      对于Derby而言,PostgreSQL实现是兼容的,因此可以在这里使用(清单3)。 但是,对于更健壮的实现,您可能希望选择扩展AbstractJDBCDataModel实现的第二个选项。

      清单3.数据模型定义
      private @Resource (name="jdbc/taste") DataSource tasteDS;dataModel = new PostgreSQLJDBCDataModel(tasteDS,
      "PREFERENCES.TASTE_PREFERENCES", 
      "USER_ID", "ITEM_ID", "PREFERENCE",
      "TIMESTAMP");

      org.apache.mahout.cf.taste.model.DataModel接口类表示由相似性和推荐类访问的数据模型。 此接口有不同的实现(文件,JDBC等)。 为了管理应用程序初始化后使用的数据,可以使用下表中显示的方法。

      方法名称 描述
      FastIDSet
      getItemIDsFromUser(long userID)
      返回用户表示偏好的商品的所有商品ID
      Float getPreferenceValue(long userID, long itemID) 给定用户对给定项目的偏好值;如果不存在,则为null
      int getNumUsers() 该模型已知的用户总数。
      void setPreference(long userID, long itemID, float value) 为用户设置特定的首选项(项目加等级)。
      void removePreference(long userID, long itemID) 删除用户的特定首选项。
    2. 产生用户相似度

      定义数据模型后,接下来要做的就是计算数据的相似性。 Apache Mahout提供了几种算法来计算用户之间的相似度。 其中包括:City Block相似度,Euclidean距离相似度,LogLikelihood相似度,Pearson相关相似度,SpearmanCorrelation相似度,TanimotoCoefficient相似度,UncenteredCosine相似度等。 (有关这些算法的更多信息,请参见Mahout发行版中包含的javadoc文档。)

      随着项目数量和评分的增加,计算用户之间相似度的过程的时间也会增加。 因此,您应该离线处理大型数据集的相似度计算; 例如,通过为Apache Mahout创建作业。 然后,可以将这些离线任务的相似性结果包括在数据模型中。

      本文中使用的示例利用了PearsonCorrelationSimilarity算法,该算法实时执行计算,而无需执行脱机计算。

      因此,让我们为您的数据模型执行相似度计算:

      UserSimilarity similarity = new
      PearsonCorrelationSimilarity(dataModel);

      现在,相似性变量包含数据模型中所有可用用户的相似性信息。

    3. 定义用户社区

      基于用户的推荐算法利用用户邻域来指定应将哪些用户视为给定用户。 本示例使用NearestNUserNeighborhood实现,该实现使您可以指定邻域中应包含多少用户的限制。 在此示例中,邻居的成员资格由五个最相似的用户组成,因此邻居定义如下:

      UserNeighborhood neighborhood = new NearestNUserNeighborhood(5, similarity, dataModel);

      社区中的成员被认为与用户非常相似。 因此,随着成员的增加,推荐项目的数量也会增加,因为更多的成员会推荐更多的项目。

    4. 提出建议

      现在您已经计算了用户之间的相似度并指定了用户的邻域,您可以继续进行并提出用户建议。 Apache Mahout提供了Recommender界面来访问用户的建议:

      Recommender recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);

      定义了荐荐者后,您可以通过调用荐荐(long,int)方法并传递用户ID和要接收的推荐项目的最大数量来提出建议。 从那里,您可以使用Iterator处理每个建议。

      清单4显示了如何为用户提取推荐。

      清单4.通过建议进行迭代
      java.util.List<RecommendedItem> list = recommender.recommend(USER_ID, 10);
      Iterator<RecommendedItem>iter = list.iterator();while ( iter.hasNext()) {RecommendedItem item = iter.next();out.println("<tr><td>" + 
      item.getItemID() + "</td><td>" + item.getValue()  + "</td></tr>");
      }

      因此,总而言之,基于用户的推荐首先从数据集中计算出用户之间的相似度,然后使用邻域项来指定应将哪些用户视为与当前用户相似。 利用该信息,推荐器算法能够基于相似用户已对哪些项目进行评分来做出推荐,并使用此信息来估计当前用户可能喜欢这些项目的程度。

    5. 在Web应用程序中测试引擎

      在WebSphere Application Server V8中测试应用程序之前,您需要在服务器上配置数据源并为该数据源定义JNDI参考,以便Servlet可以访问它。

      要配置数据源:

      1. 在“服务器”视图中,右键单击位于localhost的WebSphere Application Server,然后选择启动
      2. 服务器启动后,右键单击服务器,然后选择管理>运行管理控制台
      3. 如果启用了身份验证,请在控制台打开时输入您的用户ID和密码。 单击登录
      4. 展开资源> JDBC> JDBC提供程序
      5. 对于作用域,请选择“ 服务器作用域”。
      6. 点击新建...
      7. 输入值,如图9所示。
        图9.新建JDBC提供程序面板
        新的JDBC提供程序面板
      8. 单击下一步
      9. 验证配置,然后单击完成
      10. 返回JDBC Providers列表,单击Derby JDBC Provider
      11. 在“其他属性”下,单击“ 数据源”
      12. 点击新建...
      13. 对于JNDI名称,输入jdbc/taste (图10)。
        图10.数据源JDNI名称定义面板
        数据源JDNI名称定义面板
      14. 单击下一步
      15. 对于数据库名称,输入您创建的用于加载数据模型的Derby数据源的文件路径位置。 取消选中在包含的托管持久性(CMP)中使用此数据源 (图11)。
        图11.数据库名称规范面板
        数据库名称规范面板
      16. 单击下一步
      17. 对于步骤3,将安全配置保留为空白,然后单击下一步
      18. 对于步骤4,验证定义的设置,然后单击完成
      19. 单击保存保存配置。

      这些都是您需要在WebSphere Application Server V8上进行的所有更改。 数据源绑定信息已经在Servlet代码中使用Servlet 2.5批注定义(请参阅snippet1.txt),因此不必在Web模块部署描述符中对其进行配置。 最后一步是将应用程序安装到服务器:

      1. 在“服务器”视图中,右键单击WebSphere Application Server V8测试服务器,然后选择“ 添加或除去...”。
      2. 选择RecommenderApp并单击添加
      3. 点击完成

      而已。 现在已经安装了该应用程序,您终于可以进行测试了。

      要测试该应用程序:

      1. 从“服务器”视图启动WebSphere Application Server V8测试服务器(如果尚未启动)。
      2. 展开Dynamic Web Projects> RecommenderWeb> RecommenderWeb> Servlet (图12)。
        图12. Dynamic Web Projects视图
        动态Web项目视图
      3. 右键单击TestServlet,然后选择“运行方式”>“在服务器上运行”
      4. 在本地主机上选择WebSphere Application Server V8,然后单击Finish
      5. 内部浏览器不应启动,并且可以显示推荐结果(图13)。
        图13.建议结果
        推荐结果

从示例中可以看到,您要为其检索推荐的用户是用户400。该用户已对22项进行了评分。 基于数据模型和推荐算法,Apache Mahout能够推荐一组项目以及该用户可能给他们的预测等级。

从这往哪儿走

既然您对推荐引擎有所了解,那么下一步呢?

对于初学者,您可以开始看到已经包含推荐引擎的产品所提供的额外价值。 例如,IBM WebSphere Portal和IBM WebSphere Commerce Suite包括推荐引擎作为其基本产品的一部分。 通过此类软件产品,IBM在管理有关在线隐私,性能和集成的问题的同时,改善了这些领域的支持。 (如果您需要考虑任何“构建或购买”决策,请牢记这些产品的内置功能。)

本文没有讨论一个可能的大流程,即使用map reduce作业处理大量数据。 此处未解决,但IBM已解决。 IBM的大数据计划可以帮助管理某些应用程序所需的大量数据。 如前所述,由于极大地增加了用户数量的资源限制,此处介绍的示例解决方案无法扩展到某个点。 大的处理问题变得越来越普遍,不需要停止进度。 使用大数据计划,没有理由受到任何规模的处理的阻碍。

您不需要大型数据中心即可使用Apache Mahout。 当然,有了云计算,您不需要任何解决方案的数据中心。 云计算与推荐引擎空间没有直接关系,但是值得一提的是,IBM的云计划可以使您有能力以其他方式无法尝试的方式来尝试其中的某些事情。

结论

您可以看到,推荐引擎可以根据用户的个人特征或行为,通过将用户吸引到其他产品或Web产品,从而为您的Web应用程序添加强大的新维度。 本文简要介绍了推荐引擎使用的技术,以及如何使它们更具可伸缩性。 您还了解了Apache Mahout如何利用这些技术并将其集成到Web应用程序中。 通过将这些概念集成到IBM WebSphere Application Server中,您了解了可以扩展现有Web应用程序并对其进行有效的个性化设置。


翻译自: https://www.ibm.com/developerworks/websphere/techjournal/1109_zegarra/1109_zegarra.html

web应用程序和web网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_764041.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐16个国外的源码下载网站

本文转载自&#xff1a; https://www.cnblogs.com/lhb25/archive/2011/04/20/2013129.html 作者&#xff1a;lhb25 转载请注明该声明。如今&#xff0c;网上有很多的源代码下载网站&#xff0c;分析和学习别人的代码也是提高自己编程能力的方法之一。今天本文向大家推荐16个国…

网站建设过程中的:重要页面、关键页面、过程页面、结果页面

网站的页面类型和等级可做归类。 有些是“重要页面”&#xff0c;有些是“关键页面”&#xff0c;有些是“过程页面”&#xff0c;有些是“结果页面”。 这些根据页面存在的目的和作用分门别类。 “重要页面”和“关键页面”等级高于“过程页面”和“结果页面” 用户行为分析这…

大型网站服务器架构

QQ游戏于前几日终于突破了百万人同时在线的关口&#xff0c;向着更为远大的目标迈进&#xff0c;这让其它众多传统的棋牌休闲游戏平台黯然失色&#xff0c;相比之下&#xff0c;联众似乎已经根本不是QQ的对手&#xff0c;因为QQ除了这100万的游戏在线人数外&#xff0c;它还拥有…

大型网站系统架构分析

千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理&#xff1a;负载量不大的情况下selec…

(转)网站加速--动态应用篇 (上)

--提升性能的同时为你节约10倍以上成本From: http://blog.sina.com.cn/iyangjian一, 引子二&#xff0c;总体结构图三&#xff0c;系统结构综述四&#xff0c;环境配置以及底层基础类库五, Memcache & Mysql 常用场景案例六&#xff0c;更多待续 ......-------------------…

宝塔如何备份网站_如何使用宝塔面板创建定时任务?

大家在使用宝塔面板时都可能会遇到需要使用定时任务的功能,在其进行操作网站程式时,例如文件备份、木马查杀&#xff0c;释放内存等都会用到定时任务&#xff0c;而用好定时任务功能可以使你工作效率事半功倍。而今天要教给大家的就是如何在SugarHosts云服务器上使用宝塔面板创…

网站 服务器 和 空间大小,网站服务器和空间大小

网站服务器和空间大小 内容精选换一换问题现象下载云主机文件到主机网盘&#xff0c;即下载文件到用户个人主机网盘时&#xff0c;提示下载失败错误。上传文件失败&#xff0c;提示/3.0/h5FileService/upload-403&#xff1a;服务错误&#xff0c;请稍后重试。从本地上传文件到…

寻找网页设计灵感的27个最佳网站推荐

今天&#xff0c;本文要向大家推荐的是27个寻找网页设计灵感的最佳网站。设计师们可通过这些网站收集的优秀网页设计作品来获取灵感&#xff0c;进而设计出更加时尚、更有创意的作品。如果你有收藏这个列表中遗漏的网站&#xff0c;欢迎在评论中与大家分享。 CSS Nature Design…

linux创建ftp挂载硬盘,FTP架设 - 用Ubuntu Server架设基于独立硬盘的Windows文件共享和FTP服务器_服务器应用_Linux公社-Linux系统门户网站...

之前将storage文件夹(背后是挂载的整块新硬盘)通过samba服务与Windows共享。之所以先共享&#xff0c;是为了完成FTP后方便文件管理。软件&#xff1a;vsftpd目标&#xff1a;让用户登录FTP后可以上传文件(主要用于iPhone照片备份)&#xff0c;不同用户备份在各自的文件夹下。W…

搜java题的公众号_微信公众号seo排名|搜一搜排名优化提高,公众号排名技术,专业优化公众号排名,搜一搜排名...

引流的渠道多种多样&#xff0c;有最近很热门的视频、小程序、公众号起名、菜单布局等等&#xff0c;由于渠道太多咱们无法一一讲解清楚。今天这里就以公众号长尾词文章来给大家重点介绍一下如何抓住这一块流量&#xff1f;掌握好排名规律之后无论你做哪一个平台&#xff0c;都…

服务器快照能代替网站备份吗,云服务器的快照就是备份吗

云服务器的快照就是备份吗 内容精选换一换云服务器备份有配额限制&#xff0c;且受云硬盘备份的配额限制影响&#xff0c;云服务器备份会同时占用云硬盘备份的配额。当云硬盘备份的配额不足时&#xff0c;无法进行云服务器备份。在进行云服务器备份时&#xff0c;系统会自动调整…

Node.js 推荐20多个学习网站及图书

Node.js 推荐20多个学习网站及书籍Web 开发人员对 Node.js 日益增多&#xff0c;更多的公司和开发者开始尝试使用 Node.js 来实现一些对实时性要求高&#xff0c;I/O密集型的业务。 介绍了很不错的书籍和案例&#xff0c;可以提高nodejs开发进度&#xff0c; Node.js Node 官…

网络爬虫爬取策略,注意爬虫爬取网站的频率

网络爬虫&#xff08;web crawler&#xff09;又称为网络蜘蛛&#xff08;web spider&#xff09;是一段计算机程序&#xff0c;它从互联网上按照一定的逻辑和算法抓取和下载互联网的网页,是搜索引擎的一个重要组成部分。一般的爬虫从一部分 start url开始&#xff0c;按照一定…

不修改代码就能优化ASP.NET网站性能的一些方法

阅读目录 开始配置OutputCache启用内容过期解决资源文件升级问题启用压缩删除无用的HttpModule其它优化选项本文将介绍一些方法用于优化ASP.NET网站性能&#xff0c;这些方法都是不需要修改程序代码的。 它们主要分为二个方面&#xff1a; 1. 利用ASP.NET自身的扩展性进行优化。…

另类设计:15个现代简约设计风格网站设计实例

设计师在很多时候想通过使用很多的设计元素或复杂的调色板使一个网站脱颖而出&#xff0c;往往会导致一个网站过度设计&#xff0c;而忽视了最重要的内容。大多数时候&#xff0c;你会发现它更好的做法是采取简约的做法。因此&#xff0c;今天&#xff0c;我们收集了15个新鲜的…

php mysql创建连接_使用PHP和MySQL创建动态网站

php mysql创建连接在你开始前 本教程向您展示如何使用两个开放源代码&#xff0c;跨平台的工具创建动态网站&#xff1a;PHP和MySQL。 先决条件 本教程针对PHP和MySQL的新手开发人员&#xff0c;没有任何先决条件。 简介和安装 网络不再是静态的。 它是动态的。 随着Web信…

网上授课系统java,基于java的校园网络教学网站系统

建立校园精品课程网站&#xff0c;尽可能提高优质教学的利用率&#xff0c;对实现人才培养&#xff0c;促进社会经济发展都能起到十分重要的作用。也可以引导用户主动年该学习&#xff0c;提高学习效率&#xff0c;更为教学双方提供一个进行写作学习和交流的平台。设计开发了创…

100个网站需要的服务器配置,100并发服务器需要什么配置

100并发服务器需要什么配置 内容精选换一换压测是需要模拟用户实际业务操作的真实使用场景&#xff0c;那么并发用户数是模拟一定数量用户操作的一个配置。例如&#xff0c;游戏网站某个时间点进行竞技活动&#xff0c;那么这个时候对设备的要求肯定是最高的。并发用户数就是模…

vue遇到ie兼容问题如何处理_网站遇到降权情况如何处理

在做网站优化的时候&#xff0c;都会遇到过网站降权的情况发生&#xff0c;而网站降权的原因有很多&#xff0c;不一定是黑帽造成的&#xff0c;也有可能是优化过度造成。 那么&#xff0c;网站遇到降权情况如何处理呢&#xff1f;接下来就了解一下吧&#xff01; 1、做好数据分…

计算机安全证书有问题怎么办,此网站的安全证书有问题如何取消 此网站的安全证书有问题解决方法...

安全证书是用来唯一确认安全电子商务交易方身份的工具。持卡人安全证书是付款卡的一种电子表示。由于它由证书管理中心做了数字签名&#xff0c;因此&#xff0c;任何第三方都无法修改证书的内容。相信大家在第一次访问一些网站时&#xff0c;自动为用户安装此网站的安全证书&a…