当前位置:首页 » 操作系统 » 离线验证算法

离线验证算法

发布时间: 2023-12-11 16:06:02

⑴ 推荐算法简介

在这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:作为信息消费者,如何从大量信息中找到自己感兴趣的信息是一件非常困难的事情;作为信息生产者, 如何让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息 生产者的双赢。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用 户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息 个性化推荐的成功需要两个条件。第一是存在 信息过载 ,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐。第二用 户大部分时候没有特别明确的需求 ,因为用户没有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。

一个完整的推荐系统一般存在3个参与方:用户、物品提供者和提供推荐系统的网站。以图书推荐为例, 首先,推荐系统需要满足用户的需求,给用户推荐那些令他们感兴趣的图书。其次,推荐系统要让各出版社的书都能够被推荐给对其感兴趣的用户,而不是只推荐几个大型出版社的书。最后, 好的推荐系统设计,能够让推荐系统本身收集到高质量的用户反馈,不断完善推荐的质量,增加 用户和网站的交互,提高网站的收入。因此在评测一个推荐算法时,需要同时考虑三方的利益, 一个好的推荐系统是能够令三方共赢的系统。

推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。

2.1 离线实验

离线实验的方法一般由如下几个步骤构成: (1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集; (2) 将数据集按照一定的规则分成训练集和测试集; (3) 在训练集上训练用户兴趣模型,在测试集上进行预测; (4) 通过事先定义的离线指标评测算法在测试集上的预测结果。

从上面的步骤可以看到,推荐系统的离线实验都是在数据集上完成的,也就是说它不需要一个实际的系统来供它实验,而只要有一个从实际系统日志中提取的数据集即可。这种实验方法的 好处是不需要真实用户参与,可以直接快速地计算出来,从而方便、快速地测试大量不同的算法。它的主要缺点是无法获得很多商业上关注的指标,如点击率、转化率等,而找到和商业指标非常相关的离线指标也是很困难的事情

2.2 用户调查

3.3 在线实验

在完成离线实验和必要的用户调查后,可以将推荐系统上线做 AB测试 ,将它和旧的算法进行比较。 AB测试 是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,并对不同组用户采取不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法的好坏。 AB测试的优点是可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。 AB测试的缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果。因此一般不会用 AB测试测试所有的算法,而只是用它测试那些在离线实验和用户调查中表现很好的算法。其次, 一个大型网站的AB测试系统的设计也是一项复杂的工程。

一般来说,一个新的推荐算法最终上线,需要完成上面所说的3个实验。 1)首先,需要通过离线实验证明它在很多离线指标上优于现有的算法。 2)然后,需要通过用户调查确定它的用户满意度不低于现有的算法。 3)最后,通过在线的AB测试确定它在我们关心的指标上。

本节将介绍各种推荐系统的评测指标。这些评测指标可用于评价推荐系统各方面的性能。这 些指标有些可以定量计算,有些只能定性描述,有些可以通过离线实验计算,有些需要通过用户 调查获得,还有些只能在线评测。

(1) 用户满意度

用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。

在在线系统中,用户满意度主要通过一些 对用户行为的统计得到 。比如在电子商务网站中,用户如果购买了推荐的商品,就表示他们在一定程度上满意。因此,我们可以 利用购买率度量用 户的满意度 。此外,有些网站会通过设计一些用户 反馈界面收集用户满意度 。比如在视频网站中,都有对推荐结果满意或者不满意的 反馈按钮 ,通过统计两种按钮的单击情况就可以度量系统的用户满意度。更一般的情况下,我们可以用 点击率、用户停留时间和转化率等指标度量 用户的满意度。

(2) 预测准确度

预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标

在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。 预测准确度指标有分为以下几种:

评分预测:

预测用户对物品评分的行为成为评分预测,在评分预测中,预测准确度一般通过均方根误差RMSE和平均绝对误差MAE计算,对于测试集中的一个用户u和物品i,令[图片上传失败...(image-62a797-1560412790460)] 是用户u对物品i的实际评分,而[图片上传失败...(image-28cfbc-1560412790460)] 是推荐算法给出的预测评分,那么RMSE定义为:

其中T为样本个数

MAE采用绝对值计算预测误差,它的定义为:

TopN推荐

网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。 令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。那么,推荐结果的召回率定义为:

推荐结果准确率定义:

(3) 覆盖率

覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合U,推荐系统给每个用户推荐一个长度为N的物品集合R(u)。那么推荐系统的覆盖率可以通过下面的公式计算:

I为总物品数

此外,从上面的定义也可以看到,热门排行榜的推荐覆盖率是很低的,它只会 推荐那些热门的物品,这些物品在总物品中占的比例很小。一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。

但是上面的定义过于粗略。覆盖率为100%的系统可以有无数的物品流行度分布。为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的 物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。因此, 可以通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比 较平,那么说明推荐系统的覆盖率较高,而如果这个分布较陡峭,说明推荐系统的覆盖率较低。 在信息论和经济学中有两个着名的指标可以用来定义覆盖率。第一个是信息熵:

其中:n代表推荐列表中物品类别个数,p(i)代表每个类别的所占的比率

第二个指标是基尼系数:

(4) 多样性

为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性推荐列表的好处用一句俗话表示就是(不在一棵树上吊死)。尽管用户的兴趣在较长的时间跨度中是一样的。但具体到用户访问推荐系统的某一时刻,其兴趣往往是单一的,那么如果推荐列表只能覆盖用户的一个兴趣点,而这个兴趣点不是用户这个时刻的兴趣点,推荐结果就不会让用户满意。反之如果推荐列表表较多样,覆盖用户绝大多数的兴趣点,那么久会增加用户找到感兴趣物品的概率。因此给用户的推荐列表也需要满足用户广泛的兴趣,即具有多样性。

多样性描述了推荐列表中物品两两之间的不相似性,因此,多样性和相似性是对应的。假设s(i, j) ∈Î[0,1] 定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:

而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:

(5) 新颖性

新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中 实现新颖性 的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。比如在一个视 频网站中,新颖的推荐不应该给用户推荐那些他们已经看过、打过分或者浏览过的视频。 评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越 可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。

(6) 惊喜度

惊喜度(serendipity)是最近这几年推荐系统领域最热门的话题。如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。提高推荐惊喜度需要提高推荐结果的用户满意度,同时降低推荐结果和用户历史兴趣的相似度。

(7) 信任度

度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。 提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度(transparency), 而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用 户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络 信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的 好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较信任

(8) 实时性

在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效 性时就将它们推荐给用户。 推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的 行为变化。实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推 荐系统处理物品冷启动的能力。

(9) 健壮性

健壮性(即robust,鲁棒 性)指标衡量了一个推荐系统抗击作弊的能力。算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法 给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后 利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表 的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算 法比较健壮

(10) 商业目标

很多时候,网站评测推荐系统更加注重网站的商业目标是否达成,而商业目标和网站的盈利模式是息息相关的

(11) 总结

上一节介绍了很多评测指标,但是在评测系统中还需要考虑评测维度,比如一个推荐算法, 虽然整体性能不好,但可能在某种情况下性能比较好,而增加评测维度的目的就是知道一个算法 在什么情况下性能最好。这样可以为融合不同推荐算法取得最好的整体性能带来参考。

一般来说,评测维度分为如下3种。 1) 用户维度 :主要包括用户的人口统计学信息、活跃度以及是不是新用户等。 2) 物品维度 :包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。 3) 时间维度 :包括季节,是工作日还是周末,是白天还是晚上等。 如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推 荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。

⑵ 网络安全干货知识分享 - Kali Linux渗透测试 106 离线密码破解

前言

最近整理了一些 奇安信&华为大佬 的课件资料+大厂面试课题,想要的可以私信自取, 无偿赠送 给粉丝朋友~

1. 密码破解简介

1. 思路

目标系统实施了强安全措施

安装了所有补丁

无任何已知漏洞

无应用层漏洞

攻击面最小化

社会 工程学

获取目标系统用户身份

非授权用户不受信,认证用户可以访问守信资源

已知用户账号权限首先,需要提权

不会触发系统报警

2. 身份认证方法

证明你是你声称你是的那个人

你知道什么(账号密码、pin、passphrase)

你有什么(令牌、token、key、证书、密宝、手机)

你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)

以上方法结合使用

基于互联网的身份验证仍以账号密码为主要形式

3. 密码破解方法

人工猜解

垃圾桶工具

被动信息收集

基于字典暴力破解(主流)

键盘空间字符爆破

字典

保存有用户名和密码的文本文件

/usr/share/wordlist

/usr/share/wfuzz/wordlist

/usr/share/seclists

4. 字典

1. 简介

键盘空间字符爆破

全键盘空间字符

部分键盘空间字符(基于规则)

数字、小写字母、大写字符、符号、空格、瑞典字符、高位 ASCII 码

2. crunch 创建密码字典

无重复字符

crunch 1 1 -p 1234567890 | more

1

必须是最后一个参数

最大、最小字符长度失效,但必须存在

与 -s 参数不兼容(-s 指定起始字符串)

crunch 4 4 0123456789 -s 9990

读取文件中每行内容作为基本字符生成字典

crunch 1 1 -q read.txt

1

字典组成规则

crunch 6 6 -t @,%%^^ | more

-t:按位进行生成密码字典

@:小写字母 lalpha

,:大写字母 ualpha

%:数字 numeric

^:符号 symbols

输出文件压缩

root@kali:~# crunch 4 5 -p dog cat bird

1

-z:指定压缩格式

其他压缩格式:gzip、bzip2、lzma

7z压缩比率最大

指定字符集

root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab

1

随机组合

root@kali:~# crunch 4 5 -p dog cat bird

1

crunch 5 5 abc DEF + !@# -t ,@^%,

在小写字符中使用abc范围,大写字符使用 DEF 范围,数字使用占位符,符号使用!@#

占位符

转义符(空格、符号)

占位符

root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird

1

任何不同于 -p 参数指定的值都是占位符

指定特例

root@kali:~# crunch 5 5 -d 2@ -t @@@%%

1

2@:不超过两个连续相同字符

组合应用

crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -

crunch 10 10 12345 –stdout | airolib-ng testdb -import passwd -

3. CUPP 按个人信息生成其专属的密码字典

CUPP:Common User Password Profiler

git clone https://github.com/Mebus/cupp.git

python cupp.py -i

4. cewl 通过收集网站信息生成字典

cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt

-m:最小单词长度

-d:爬网深度

-e:收集包含email地址信息

-c:每个单词出现次数

支持基本、摘要 身份认证

支持代理

5. 用户密码变型

基于 cewl 的结果进行密码变型

末尾增加数字串

字母大小写变化

字母与符号互相转换

字母与数字互相转换

P@$w0rd

6. 使用 John the Ripper 配置文件实现密码动态变型

2. 在线密码破解

1. hydra

简介

密码破解

Windows 密码破解

Linux 密码破解

其他服务密码破解

图形化界面

xhydra

HTTP表单身份认证

密码破解效率

密码复杂度(字典命中率)

带宽、协议、服务器性能、客户端性能

锁定阈值

单位时间最大登陆请求次数

Hydra 的缺点

稳定性差,程序时常崩溃

速度控制不好,容易触发服务屏蔽或锁死机制

每主机新建进程,每服务新建实例

大量目标破解时性能差

2. pw-inspector

Hydra 小工具 pw-inspector

按长度和字符集筛选字典

pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l

pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u

pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5

3. mesa

Mesa 的特点

稳定性好

速度控制得当

基于线程

支持模块少于hydra(不支持RDP)

WEB-Form 支持存在缺陷

查看支持的模块

参数

-n:非默认端口

-s:使用SSL连接

-T:并发主机数

mesa -M ftp -q

3. 离线密码破解

1. 简介

身份认证

禁止明文传输密码

每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)

服务器端用户数据库应加盐加密保存

破解思路

嗅探获取密码HASH

利用漏洞登陆服务器并从用户数据库获取密码HASH

识别HASH类型

长度、字符集

利用离线破解工具碰撞密码HASH

优势

离线不会触发密码锁定机制

不会产生大量登陆失败日志引起管理员注意

2. HASH 识别工具

1. hash-identifier

进行 hash 计算

结果:

进行 hash 识别

2. hashid

可能识别错误或无法识别

3. HASH 密码获取

1. sammp2

Windows HASH 获取工具

利用漏洞:Pwmp、fgmp、 mimikatz、wce

物理接触:sammp2

将待攻击主机关机

使用 Kali ISO 在线启动此主机

发现此 windows 机器安装有两块硬盘

mount /dev/sda1 /mnt

将硬盘挂载

cd /mnt/Windows/System32/config

切换目录

sammp2 SYSTEM SAM -o sam.hash

导出密码

利用 nc 传输 HASH

HASH 值:

2. syskey 工具进行密码加密

使用 syskey 进行加密(会对 SAM 数据库进行加密)

重启需要输入密码才能进一步登录

使用 kali iso live

获取到 hash 值

hashcat 很难破解

使用 bkhive 破解

使用 Bootkey 利用RC4算法加密 SAM 数据库

Bootkey 保存于 SYSTEM 文件中

bkhive

从 SYSTEM 文件中提取 bootkey

Kali 2.0 抛弃了 bkhive

编译安装 :http://http.us.debian.org/debian/pool/main/b/bkhive/

在windows的 kali live 模式下,运行

sammp2 SAM key (版本已更新,不再支持此功能)

建议使用 Kali 1.x

1. Hashcat

简介

开源多线程密码破解工具

支持80多种加密算法破解

基于CPU的计算能力破解

六种模式 (-a 0)

0 Straight:字典破解

1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21)

2 Toggle case:尝试字典中所有密码的大小写字母组合

3 Brute force:指定字符集(或全部字符集)所有组合

4 Permutation:字典中密码的全部字符置换组合(12 21)

5 Table-lookup:程序为字典中所有密码自动生成掩码

命令

hashcat -b

hashcat -m 100 hash.txt pass.lst

hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d

结果:hashcat.pot

hashcat -m 100 -a 3 hash -i –increment-min 6 –increment-max 8 ?l?l?l?l?l?l?l?l

掩码动态生成字典

使用

生成文件

计算 hash 类型

结果 MD5

查看 MD5 代表的值

进行破解

2. oclhashcat

简介

号称世界上最快、唯一的基于GPGPU的密码破解软件

免费开源、支持多平台、支持分布式、150+hash算法

硬件支持

虚拟机中无法使用

支持 CUDA 技术的Nvidia显卡

支持 OpenCL 技术的AMD显卡

安装相应的驱动

限制

最大密码长度 55 字符

使用Unicode的最大密码长度 27 字符

关于版本

oclHashcat-plus、oclHashcat-lite 已经合并为 oclhashcat

命令

3. RainbowCrack

简介

基于时间记忆权衡技术生成彩虹表

提前计算密码的HASH值,通过比对HASH值破解密码

计算HASH的速度很慢,修改版支持CUDA GPU

https://www.freerainbowtables.com/en/download/

彩虹表

密码明文、HASH值、HASH算法、字符集、明文长度范围

KALI 中包含的 RainbowCrack 工具

rtgen:预计算,生成彩虹表,时的阶段

rtsort:对 rtgen 生成的彩虹表行排序

rcrack:查找彩虹表破解密码

以上命令必须顺序使用

rtgen

LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、RIPEMD160

rtgen md5 loweralpha 1 5 0 10000 10000 0

计算彩虹表时间可能很长

下载彩虹表

http://www.freerainbowtables.com/en/tables/

http://rainbowtables.shmoo.com/

彩虹表排序

/usr/share/rainbowcrack

rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt

密码破解

r crack *.rt -h

rcrack *.rt -l hash.txt

4. John

简介

基于 CPU

支持众多服务应用的加密破解

支持某些对称加密算法破解

模式

Wordlist:基于规则的字典破解

Single crack:默认被首先执行,使用Login/GECOS信息尝试破解

Incremental:所有或指定字符集的暴力破解

External:需要在主配配文件中用C语言子集编程

默认破解模式

Single、wordlist、incremental

主配置文件中指定默认wordlist

破解Linux系统账号密码


破解windows密码

Johnny 图形化界面的john

5. ophcrack

简介

基于彩虹表的LM、NTLM密码破解软件

彩虹表:http://ophcrack.sourceforge.net/tables.php

热点内容
奇骏哪个配置性价比 发布:2024-11-29 22:25:21 浏览:702
汉娜数据库 发布:2024-11-29 22:25:17 浏览:703
服务器和收银机怎么连接 发布:2024-11-29 22:24:11 浏览:608
关键词排名源码 发布:2024-11-29 22:22:03 浏览:72
禅道服务器ip是什么 发布:2024-11-29 22:22:02 浏览:808
参贪心算法 发布:2024-11-29 21:54:24 浏览:340
php统计数组元素 发布:2024-11-29 21:46:08 浏览:195
健康和解压哪个重要 发布:2024-11-29 21:40:07 浏览:749
联通网的密码去哪里找 发布:2024-11-29 21:38:57 浏览:849
jscookie加密 发布:2024-11-29 21:33:03 浏览:40