标题:如何让一个程序学习用户行为
只看楼主
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
结帖率:84.62%
已结贴  问题点数:50 回复次数:12 
如何让一个程序学习用户行为
比如用户经常做某一件事情,做多了之后,程序就自动帮你做这件事。 最简单的办法应该是计数吧,用户每做一次,计数一次,当计数超过某一阀值时,程序就会自动执行这一动作。但是感觉这个方法好像有点问题,有什么更好的实现方法或思路吗?
搜索更多相关主题的帖子: 计数 如何 用户 
2012-07-16 15:31
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
得分:0 
这个思路没有问题,目前的智能行为添加就是按照这种思路。
只是不仅仅是计数,有一个特殊的专家规则,对大量数据作系列的处理,判断是否需要添加。
具体问题具体分析。
2012-07-16 15:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
这种问题太宽泛了,原则性的话其实你自己也知道,所以就不用说了。有针对性地说还差不多。

授人以渔,不授人以鱼。
2012-07-16 17:19
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:5 
需要生成配置文件,程序运行就读取。监控的行为越多,可以程序运行的会越慢。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2012-07-16 21:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:10 
一般的程序都不这么设计。好的实践经验一般是允许用户有强大灵活的配置能力,这样可以方便用户对程序做各种定制,这种方法有很多好处:
虽然对初学者来说配置起来可能会麻烦,但一是初学者要求不高,多半合理的默认配置可以满足需要。二是实在不行初学者也可以在身边找个高手配置一下。
另一方面配置文件可以随考随用,重装系统也不用重新学习。去别人家临时用一下,只要带个配置文件就行了(储存在网盘上也是个不错的选择)。

另外学习机制也有很多不好的地方。它很可能既记录你好的习惯,也记录你坏的习惯。而且如果它会自己学习,就意味着你可能不能全面的控制它的行为。
使用软件,至少按照现在的理念,最好是能把软件的一切行为置于用户的掌控之下。另外还会引发一大堆备份上的问题,重装软件或者重装系统就意味着重新学习肯定是受不了的。
而且楼上说的监控的行为多了,可能导致运行缓慢也是个问题。
不过现在也有一些软件和用户之前有一定的磨合机制(我感觉还称不上学习),会提供一些方便。但它只是软件中的一小类。

我这只是发表一下软件设计方面的事。如果是谈学习机制应该怎么实现,我就不是很懂了。
2012-07-16 22:18
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
得分:0 
比如我做一个模拟邮件应用程序,当用户经常的把某一个号码发来的邮件或者包含某些内容的邮件放入垃圾箱时,那么程序可以学习这一行为,自动把这一号码发来的邮件或包含某些内容的邮件放入垃圾箱,如果采用计数的办法,那么也就是说我每把一封邮件放入垃圾箱,都要记录对应的号码或内容和放入垃圾箱的次数,程序关闭时要把所有记录存入一个文件(txt文件就行吧),下次启动程序时,就要把记录读入内存?那程序是不是应该提供删除学习机制的功能?还有采用计数须要一个阀值,阀值也应该由用户自己设置吧?

[ 本帖最后由 绿茶盖儿 于 2012-7-16 23:50 编辑 ]
2012-07-16 23:43
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
得分:0 
回复 2楼 silent_world
如果按照我上面说的那个例子,你所说的专家规则是指?
2012-07-16 23:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:15 
回复 6楼 绿茶盖儿
这个例子,看你收件箱的设计了,由于邮件有分通讯簿中名录的邮件和陌生邮件的区别,故不能仅在通讯簿中拦截垃圾邮件,必须在收件箱中拦截陌生邮件,这样统计行为就必须在收件动作中。有两个方向:一是在收件箱中执行拖入垃圾箱事件发生时,写入垃圾邮件数据库中,针对邮箱号码统计,在外部配置文件中,有一个用户可调节的阀值,每次收邮件时针对邮箱号码统计一下是否满足条件;因为每次收件都做统计在一定程度上是慢的,所以直接检查黑名单会更快捷,所以二,是让用户可以针对邮箱号码作黑名单模版,指定某些规律的邮箱一概作黑名单处理。这样,最好有一个垃圾邮件管理模块,具有统计界面的,帮助用户确定阀值、总结垃圾邮件规律,自动形成配置文件,而不是手工写,不是所有用户都乐意自己编辑这种类似程序员才懂的配置文件。

授人以渔,不授人以鱼。
2012-07-17 00:11
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
得分:15 
回复 7楼 绿茶盖儿
好,就这个问题,我给你举个例子。
首先,你需要将邮件地址分类,一位数即可,如:陌生地址:1, 系统地址:2, 联系人:3, 权重联系人:4
其次,你将邮件本身分类:两位数即可,如:关于学习的01,生活的02,情书03,等等。
第三,邮件动作,如,打开 1, 删除2,加重3 等等。
这样,邮件拥有者的每次行为(动作 + 邮件地址 + 内容 + )可以分列为一个曲线。
如:1102,3408
去除直流分量,可以得到一个x轴平衡曲线。积累一定程度形成趋势(如一个月)。
按照上述组合一个专家库(用户行为库),再对积累每次数据取其互相关性(数学上有现成的公式)。
最后,对权重较大的行为作为自主行为智能化即可。

基本流程是这样,若有不清楚的地方,欢迎讨论。
2012-07-17 11:01
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
得分:0 
回复 9楼 silent_world
很感谢你,基本思路说的很清楚,但是如何形成曲线呢?1102,3408,2102……这样的数字序列如何形成曲线?你是指把1102,3408……这些值作为纵坐标,操作次数作为横坐标?那么得到的都是些离散点,如何生成曲线?
2012-07-17 20:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373510-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.339656 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved