浅谈AI落地 - 文章推荐 - 混合推荐模型

(4-2)混合推荐:模型层面的混合推荐 在推荐系统中,模型层面的混合推荐是指将多个推荐模型进行融合,以提供更准确和个性化的推荐结果。通过结合不同的推荐算法或模型,可以充分利用它们各自的优势,弥补各个模型的局限性,从而提高推荐系统的性能和效果。常见的模型层面混合推荐方法有:加权融合(Weighted Fusion)、集成学习(Ensemble Learning)、混合排序(Hybrid Ranking)和协同训练(Co-training)。 阅读详情

前言

曾在游戏世界挥洒创意,也曾在前端和后端的浪潮间穿梭,如今,而立的我仰望AI的璀璨星空,心潮澎湃,步履不停!愿你我皆乘风破浪,逐梦星辰!

项目介绍:个性化推荐系统

这个推荐系统项目旨在通过多种技术和方法提供 个性化的文章推荐,主要适用于文章类平台或信息服务平台。推荐系统结合了 深度协同过滤(NCF) 和 增量学习(SGDRegressor),同时融合了 内容推荐(基于文章的关键词、情感分析、互动数据等特征)与 协同过滤 结果,以实现更加精准和个性化的推荐。

项目功能

  • 文章内容特征提取:通过 TF-IDF 提取文章关键词,利用 TextBlob 进行情感分析,并计算文章长度、阅读时间等特征。

  • 基于协同过滤的推荐:通过 深度协同过滤(NCF) 模型学习用户和文章之间的潜在关系,进行个性化推荐。

  • 增量学习:通过 SGDRegressor 实现实时学习和模型更新,使得推荐系统能够根据新数据进行增量更新。

  • 混合推荐:结合 基于内容的推荐 和 协同过滤 结果,进一步优化推荐结果的准确性。

  • 分布式计算:使用 PySpark 对大规模用户行为数据进行分布式处理,提高系统的可扩展性。

项目架构

项目采用了模块化设计,代码划分为多个功能模块,方便维护和扩展。以下是项目的文件架构:

recommender_system/
│
├── data/
│   ├── __init__.py
│   ├── preprocess.py                # 数据预处理和特征工程
│   └── feature_engineering.py       # 提取文章特征,计算关键词、情感分析等
│
├── models/
│   ├── __init__.py
│   ├── ncf_model.py                # NCF模型定义(深度协同过滤)
│   ├── sgd_regressor.py            # 增量学习模型
│   └── hybrid_model.py             # 混合推荐模型
│
├── utils/
│   ├── __init__.py
│   ├── spark_utils.py              # PySpark相关的分布式计算辅助函数
│   └── logger.py                   # 日志记录功能
│
├── main.py                         # 主程序入口,执行推荐任务
├── config.py                       # 配置文件
└── requirements.txt                # 项目依赖包

文件与功能说明

1. data/ 文件夹

该文件夹用于存放所有与数据相关的操作,包括数据加载、预处理和特征提取。

  • preprocess.py:

    • 负责加载用户行为数据和文章数据。

    • 函数:

      • load_user_data(file_path)

      • load_article_data(file_path)

  • feature_engineering.py:

    • 提取文章的各种特征,包括关键词(TF-IDF)、情感分析、文章长度、互动数据等。

    • 函数:

      • extract_keywords(article_summaries)

      • get_sentiment(text)

      • get_article_length(article_summaries)

      • estimate_reading_time(article_lengths, average_reading_speed=300)

      • extract_article_features()

      • calculate_content_similarity(article_summaries)

2. models/ 文件夹

该文件夹用于存放所有与推荐模型相关的代码。

  • ncf_model.py:

    • 定义 深度协同过滤(NCF) 模型。

    • 包含用户和物品的嵌入层、隐藏层和前向传播。

  • sgd_regressor.py:

    • 定义 增量学习(SGDRegressor) 模型,用于实时更新用户评分预测。

    • 包含 fit 和 partial_fit 方法来处理增量学习。

  • hybrid_model.py:

    • 实现 混合推荐 模型,结合了 NCF 和 SGDRegressor 的预测结果,以及内容推荐结果。

    • 包含 hybrid_recommendation() 方法来计算最终的推荐分数。

3. utils/ 文件夹

该文件夹用于存放工具类,包含日志记录和 PySpark 分布式计算相关功能。

  • spark_utils.py:

    • 提供与 PySpark 相关的工具方法,如创建 Spark 会话和计算用户平均评分。

    • 函数:

      • create_spark_session()

      • calculate_user_avg_rating(spark, user_data_df)

  • logger.py:

    • 提供日志记录功能,方便调试和监控。

    • 函数:

      • setup_logger()

4. main.py
  • 主程序入口,执行推荐任务。

  • 加载数据,进行特征提取和模型训练,最终执行推荐计算。

  • 示例代码:

    • 加载数据并提取特征

    • 创建和训练模型

    • 调用混合推荐模型,获取推荐结果

5. config.py
  • 存储项目的配置文件,如数据路径、模型超参数等。

6. requirements.txt
  • 存储项目的依赖库,如 torch、transformers、sklearn、pyspark 等。


所有文件

data/preprocess.py:
import pandas as pd

# 读取用户行为数据和文章数据
def load_user_data(file_path):
    return pd.read_csv(file_path)

def load_article_data(file_path):
    return pd.read_csv(file_path)
data/feature_engineering.py:
import numpy as np
from textblob import TextBlob
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 提取文章的关键词
def extract_keywords(article_summaries):
    vectorizer = TfidfVectorizer(stop_words='english')
    tfidf_matrix = vectorizer.fit_transform(article_summaries)
    feature_names = vectorizer.get_feature_names_out()
    return tfidf_matrix, feature_names

# 计算情感分析
def get_sentiment(text):
    sentiment = TextBlob(text).sentiment.polarity
    return sentiment

# 计算文章长度
def get_article_length(article_summaries):
    return [len(summary.split()) for summary in article_summaries]

# 估算文章的阅读时间
def estimate_reading_time(article_lengths, average_reading_speed=300):
    return [length / average_reading_speed for length in article_lengths]

# 提取文章特征
def extract_article_features(article_summaries, article_engagement, article_multimedia, article_update_frequency):
    article_lengths = get_article_length(article_summaries)
    reading_times = estimate_reading_time(article_lengths)
    sentiments = [get_sentiment(summary) for summary in article_summaries]
    
    # Combine all features into one array
    extra_features = np.array([
        [sentiments[i], article_lengths[i], reading_times[i], article_multimedia[i], 
         article_engagement['likes'][i], article_engagement['comments'][i], 
         article_engagement['shares'][i], article_update_frequency[i]]
        for i in range(len(article_summaries))
    ])
    
    return extra_features

# 计算内容相似度
def calculate_content_similarity(article_summaries):
    vectorizer = TfidfVectorizer(stop_words='english')
    tfidf_matrix = vectorizer.fit_transform(article_summaries)
    similarity_matrix = cosine_similarity(tfidf_matrix)
    return similarity_matrix
models/ncf_model.py:
import torch
import torch.nn as nn

class NCF(nn.Module):
    def __init__(self, n_users, n_articles, embedding_dim=10):
        super(NCF, self).__init__()
        self.user_embedding = nn.Embedding(n_users, embedding_dim)
        self.article_embedding = nn.Embedding(n_articles, embedding_dim)
        self.fc1 = nn.Linear(embedding_dim * 2 + 8, 128)
        self.fc2 = nn.Linear(128, 64)
        self.fc3 = nn.Linear(64, 1)
    
    def forward(self, user_id, article_id, extra_features):
        user_embed = self.user_embedding(user_id)
        article_embed = self.article_embedding(article_id)
        x = torch.cat([user_embed, article_embed, extra_features], dim=1)
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        return self.fc3(x)
models/sgd_regressor.py:
from sklearn.linear_model import SGDRegressor
import numpy as np

class SGDModel:
    def __init__(self):
        self.model = SGDRegressor()

    def fit(self, user_article_data, ratings):
        self.model.fit(user_article_data, ratings)

    def partial_fit(self, user_article_data, ratings):
        self.model.partial_fit(user_article_data, ratings)

    def predict(self, user_article_data):
        return self.model.predict(user_article_data)
models/hybrid_model.py:
from .ncf_model import NCF
from .sgd_regressor import SGDModel

class HybridRecommendation:
    def __init__(self, n_users, n_articles, ncf_model, sgd_model, alpha=0.7):
        self.ncf_model = ncf_model
        self.sgd_model = sgd_model
        self.alpha = alpha
    
    def hybrid_recommendation(self, user_id, article_id, content_similarity, extra_features, user_avg_ratings):
        cf_score = self.ncf_model(user_id, article_id, extra_features)
        content_score = content_similarity[article_id, article_id]
        sgd_score = self.sgd_model.predict([[user_id, article_id]])[0]
        
        user_avg_rating = user_avg_ratings.get(user_id, 3.0)
        adjusted_cf_score = cf_score + (user_avg_rating - 3.0)
        
        final_score = self.alpha * adjusted_cf_score + (1 - self.alpha) * content_score + sgd_score
        return final_score
main.py:
from data.feature_engineering import extract_article_features, calculate_content_similarity
from models.ncf_model import NCF
from models.sgd_regressor import SGDModel
from models.hybrid_model import HybridRecommendation

# 假设我们已经加载了文章数据和用户行为数据
article_summaries = [
    "Learn the basics of Python programming for machine learning and AI.",
    "Understanding neural networks and how they power AI applications.",
    "A beginner's guide to artificial intelligence and its impact on society.",
    "Data science is the key to unlocking value from big data."
]
article_engagement = {
    'likes': [150, 200, 180, 220],
    'comments': [30, 40, 35, 50],
    'shares': [20, 15, 25, 30]
}
article_multimedia = [1, 0, 1, 0]
article_update_frequency = [3, 5, 2, 6]

# 提取文章特征
extra_features = extract_article_features(article_summaries, article_engagement, article_multimedia, article_update_frequency)

# 计算内容相似度
content_similarity = calculate_content_similarity(article_summaries)

# 初始化模型
n_users = 4  # 假设有4个用户
n_articles = 4  # 假设有4篇文章
ncf_model = NCF(n_users, n_articles, embedding_dim=10)
sgd_model = SGDModel()

# 训练增量学习模型(假设我们已经有用户行为数据)
sgd_model.fit(user_data[['user_id', 'article_id']].values, user_data['rating'].values)

# 创建混合推荐模型
hybrid_model = HybridRecommendation(n_users, n_articles, ncf_model, sgd_model, alpha=0.7)

# 假设每个用户的平均评分
user_avg_ratings = {0: 4.5, 1: 4.0, 2: 4.2, 3: 3.8}

# 测试混合推荐模型
user_id = 0  # 假设用户1
article_id = 1  # 假设文章2

final_score = hybrid_model.hybrid_recommendation(user_id, article_id, content_similarity, extra_features, user_avg_ratings)
print(f"Final recommendation score for user {user_id} and article {article_id}: {final_score}")

总结

这个推荐系统项目使用了 深度协同过滤(NCF)、增量学习(SGDRegressor)、内容推荐(基于 TF-IDF 和 情感分析)、分布式计算(PySpark),并结合了 混合推荐 模型来提高推荐质量。通过模块化设计,代码的可维护性和可扩展性得到了很好的保证,方便日后的扩展和修改。

浅谈大数据领域主数据管理的重要性和价值 在大数据时代,企业面临着数据爆炸式增长的挑战。数据来源多样化、数据格式复杂化、数据量急剧增加,这些都使得企业数据管理变得异常困难。主数据管理(Master Data Management, MDM)作为数据治理的核心组成部分,其重要性日益凸显。主数据管理的基本概念和原理主数据管理与大数据技术的关系主数据管理的实施方法和最佳实践主数据管理带来的业务价值和技术优势首先介绍主数据管理的基本概念和背景然后深入分析主数据管理的核心原理和技术架构接着通过实际案例展示主数据管理的实施方法。 阅读详情

相关推荐

OpenClaw智能体框架:Git+API Key+Serverless的工程化实践

智能体(Agent)是当前AI应用开发的核心范式,其本质是将大模型能力封装为可编排、可复用、可治理的服务单元。OpenClaw作为典型的智能体工作流编排框架,不依赖黑盒模型,而是基于Git版本控制实现Skill即插件、通过标准化API Key注入保障密钥安全、依托fal.ai等Serverless平台达成按需伸缩与成本可控。这种设计使开发者能聚焦业务逻辑而非基础设施,广泛适用于教育助教、客服自动化、多源信息聚合等需快速验证与弹性交付的场景。本文深入解析OpenClaw从环境初始化到生产部署的完整技术契约,尤

weixin_30416871的博客 315

混合模型的推荐算法(ACM暑校-案例学习)

单纯使用基于内容、基于知识或者协同滤波的推荐引擎已经越来越少了。 因为,基于内容的推荐技术面临“过度个性化缺少惊喜度”的缺点、基于协同过滤的推荐技术面临“冷启动”难题。因此,一种比较好的解决方案是融合多种推荐技术的优点,用基于内容的策略解决冷启动问题,用协同过滤策略解决用户惊喜度问题。博客旨在实践融合内容+协同过滤的混合推荐算法。 1. 简介:Netflix的成功 正如开篇提到的,混合推荐通过...

沈春旭的博客 7288

推荐系统——多任务学习与混合模型推荐系统

推荐系统(Recommendation System)是一种基于用户对产品、服务或信息等资源的喜好程度进行推荐的应用系统。通过分析用户历史行为数据及其他相关数据,推荐系统可以向用户提供最可能感兴趣的内容、服务或者产品。推荐系统的发展历史经历了多个阶段,其主要分为两大类:基于协同过滤和基于内容推荐。

AI天才研究院 582

【SGDRegressor函数及其参数详解】

属于scikit-learn的模块,该模块提供了各种线性模型用于回归和分类任务。它采用SGD算法来优化平方损失函数,从而为线性回归提供了一种灵活的方法。

武帝为此的博客 5201

探索Python中的推荐系统:混合推荐模型

混合推荐模型是一种将多个推荐算法或模型组合起来的方法,以综合利用各个模型的优势,从而提高推荐的准确性和多样性。通过混合多种推荐算法,可以弥补单一模型的不足,并实现更加全面和个性化的推荐。

Echo_Wish 865

一文读懂「MOE,Mixed Expert Models」混合专家模型

混合专家(Mixture of Experts,简称MoE)是一种集成学习方法,它通过将多个专业化的子模型(即“专家”)组合起来,形成一个整体模型,每一个“专家”都在其擅长的领域内做出贡献。而决定哪个“专家”参与解答特定问题的,是一个称为“门控网络”的机制。每个专家模型可以专注于解决特定的子问题,而整体模型则能够在复杂的任务中获得更好的性能。MoE提出的前提是如果有一个包括了多个领域知识的复杂问题,我们该使用什么样的方法来解决呢?

女王の专属领地 1万+

随机梯度下降法介绍及其参数讲解

随机梯度下降法 算法介绍 简单来说,梯度下降就是从山顶找一条最短的路走到山脚最低的地方。但是因为选择方向的原因,我们找到的的最低点可能不是真正的最低点。如图所示,黑线标注的路线所指的方向并不是真正的地方。 既然是选择一个方向下山,那么这个方向怎么选?每次该怎么走? 先说选方向,在算法中是以随机方式给出的,这也是造成有时候走不到真正最低点的原因。 如果选定了方向,以后每走一步,都是选择最陡的方向,直到最低点。 总结起来就一句话:随机选择一个方向,然后每次...

u013473512的博客 19万+

推荐系统中基于深度学习的混合协同过滤模型

推荐系统中基于深度学习的混合协同过滤模型各种算法介绍和应用场景

技术文章系列整理(持续更新)

本博客有很多关于性能及测试开发的文章。我试着对你可能感兴趣的一些重要文章进行分类。

7DGroup,让技术更有价值! 1万+

4.图像sensor的特性和驱动解析

例子:sensor驱动自己提供操作曝光时间的函数和获取曝光时间的函数,然后将这个函数注册到ISP库和3A算法库,3A算法库根据外部光照强度计算出一个Sensor曝光时间的设置值,ISP库得到这个设置值,然后通过Sensor之前注册的回调函数,把这个值设置到Sensor的硬件寄存器中去,实现整个过程。是为 ISP 配置正确的输入时序。(1)修改驱动源码(sambashar\Hi3518E_SDK_V1.0.3.0\package\mpp\component\isp\sensor\ar0130)

weixin_53762042的博客 3571

NX二次开发新建组件

NXOpen新建组件

qq_39541524的博客 330

大模型-训练-【篇一:预训练和post-training】

本文整理了大模型训练相关的面试题、技术原理及实践指南。核心内容包括:1)硬件配置与训练时间估算(如14B模型+20B token数据在32张A100上的训练时长);2)优化算法对比(Adam/AdamW区别、10种优化算法实现);3)训练框架选择(FSDP、DeepSpeed的ZeRO系列、Megatron 3D并行);4)微调技术(LoRA及其变种);5)训练技巧(梯度累积、超参数缩放定律等)。重点推荐了混合精度训练、分布式训练方法、位置编码等关键技术解析,并提供了多个开源项目的实践链接,适合大模型训练。

乐于创作,乐于分享,志于创作高价值博文 1110

危废焚烧优化控制系统设计与实现:基于数据驱动的控制参数预测

本文提出了一种基于数据驱动的危险废物焚烧过程优化控制方法。系统利用历史运行数据和实时监测数据,通过深度学习模型预测关键控制参数,实现焚烧过程的智能化控制。系统采用Python开发,结合TensorFlow/PyTorch框架,构建了完整的数据采集、预处理、特征工程、模型训练和实时预测闭环系统。该系统能够处理多变量非线性关系,适应工况变化,从历史数据中学习最优控制策略,相比传统PID控制方法具有显著优势。论文详细介绍了系统架构、算法设计和实现细节,为危废焚烧过程的优化控制提供了有效解决方案。

huanghm88的专栏 208

浅谈最近星某克被指“追杀式“营销的技术实现方式和商业价值利弊

本文从技术架构角度剖析星巴克App"追杀式"营销现象,探讨位置感知技术实现原理、数据隐私边界与用户体验权衡,强调技术创新应尊重用户隐私,在商业价值与用户权益间找到合理平衡。

六边形架构的博客 1051

三菱FX5U-PLC建立CClink的IO通讯

最新需要用三菱的FX5U的PLC搭建一个CClink通讯,PLC做主站,控制CClink从站的IO,下面2个输入模块AJ65SBTB1-32D,两个输出模块AJ65SBTB1-32T。3、在右侧的部件,选择网络模块:FX5-CCL-MS,CC-link主站模块。依次把加入两个AJ65SBTB1-32D,两个AJ65SBTB1-32T。7、基本设置,网络配置设置,链路刷新设置,设置好下面参数,应用。6、基本设置,网络配置设置,CC-Link配置设置。8、部件选择,模块,右键,添加模块标签。

wzz418550729的博客 1003

037、有源钳位反激变换器(ACF)原理

文章摘要 有源钳位反激变换器(ACF)是一种克服常规反激电路漏感能量处理瓶颈的高效解决方案。文章从实际炸机案例切入,指出RCD钳位电路在高压、宽范围、高功率场景下的局限性。ACF通过增加钳位管和钳位电容,将漏感能量回收而非消耗,实现效率提升2-3%、精准电压钳位和更好EMI性能。文章详细解析了ACF四阶段工作过程、关键波形特征,并指出设计陷阱:漏感需保持1%-3%特定范围、钳位电容ESR要求严格、需专用控制IC支持互补驱动。最后给出实用调试建议,强调ACF适用于65W+功率场景,低压验证后再逐步升压的调试方

Jack010169的博客 270

AI写作鉴别指南:技术内容创作中的人类经验与机器逻辑

在当今信息爆炸的时代,如何高效甄别技术内容的真实性与深度,已成为开发者和技术从业者的核心技能。这背后涉及对自然语言处理、大语言模型(LLM)等基础概念的理解。这些模型基于海量文本数据的概率统计生成内容,其底层原理决定了产出往往具有逻辑自洽但缺乏深度洞察的特点。从技术价值看,这种鉴别能力能帮助我们在AIGC(人工智能生成内容)泛滥的背景下,精准筛选出富含真实工程实践与独特经验的技术资料,避免被看似流畅却空洞的“正确废话”误导。在实际应用场景中,无论是评估技术博客、API文档,还是评审开源项目,这项技能都至关重

weixin_33937778的博客 347

全志T527-TP9930-Camera

TP9930 驱动模块主要实现将 4 路的 AHD/TVI/CVBS Camera 的数据转换为 BT656/BT1120 数据,从而实现在 T527 端来对数据进行处理和送显。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3245

年末总结 | 音视频开发进阶 2021 干货合集

是的,没错,今天就是 2021 年的最后一天了,公众号 音视频开发进阶 陪伴各位又走过了一年,并即将走崭新的 2022 年。在 2021 年里公众号音视频开发进阶一直保持着文章推送,...

音视频开发进阶 3724

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 154

Python 爬虫实战:淘宝直播间实时数据抓取(弹幕分析 + 流量监控)

随着电商直播的迅猛发展,淘宝直播已成为品牌推广和商品销售的重要阵地。通过爬取淘宝直播间的实时数据,包括弹幕互动和流量信息,可以帮助商家深入了解用户行为、优化直播策略,同时为市场分析和商业决策提供数据支持。本文将深入探讨如何利用 Python 爬虫技术实现对淘宝直播间实时数据的抓取,并进行弹幕分析和流量监控。

u014481728的博客 733

【推荐算法】混合推荐系统算法

混合推荐系统算法是一种结合了多种推荐技术的推荐系统,旨在克服单一推荐方法的局限性,提高推荐的准确性和用户满意度。它通常将不同的推荐策略,如基于内容的推荐、协同过滤以及基于模型的方法等,以不同的方式结合起来。

大雨淅淅的博客 5450

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

推荐算法中的混合推荐

各种推荐方法各有利弊,为了扬长避短,在实际中常常采用混合推荐(Hybrid Recommendation)。其中一个最重要的原则就是通过组合后能避免或弥补各自推荐技术的弱点; 加权式:加权多种推荐方法的结果 切换式:根据问题背景和实际情况或要求决定变换采用不同的推荐方法 混杂式:同时采用多种推荐方法给出多种推荐结果供用户参考 特征组合:组合来自不同推荐数据源的特征被另一种推荐算法所采...

tong987735780的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

推荐系统 --- 推荐算法 --- 混合推荐算法(一)

概述 优点 充分利用 用户画像、物品画像、群体数据、知识模型 四种信息源 多种算法融合的难点 有个算法可能只给出结果,不给分数,⽐如⽤决策树产⽣⼀些推荐结果; 每种算法给出结果时如果有分数,分数的范围不⼀定⼀样,所以不能互 相⽐较,⼤家各⾃家庭背景不⼀样; 即使强⾏把所有分数都归⼀化,仍然不能互相⽐较,因为产⽣的机制不 同,有的可能普遍偏⾼,有的可能普遍偏低。 并行式混合 概述 多种推荐算法的输出结果加以整合形成最终的输出 加权式 概述 推荐系统对多个推荐算法的计算结果进行加权平

micklongen的专栏 3936

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

推荐系统中所使用的混合技术介绍

出自:http://www.resyschina.com/2013/10/ensemble-recommendation.html 在推荐系统实际运用中,各种混合技术是其中一项极为重要的核心技术。在工程实践中我们发现,混合技术对提升推荐效果、改进推荐系统的性能等都有重要意义,因此本文对该专题进行如下的一些总结和介绍。 引言 在这个信息爆炸的时代,消费者面临众多选择、未知的领域

lanzily99的专栏 2601
上一篇: 浅谈AI工程落地 - 分布式训练 - Nvidia Megatron LM - 三种训练策略
下一篇: 浅谈AI - DeepSpeed - 单卡慎用!
栗子皮皮布丁
博客等级 码龄2年 204粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值