机器学习在商业系统应该是用的最多了,和传统人工区分开,因为数据集量级太大和复杂度太高,机器可以发现人难以发现的模型,基于模型的方式处理可以避免人的情感偏见。人工也是不可以完全抛开的,比如监督式的学习,靠人工;来标记数据,训练模型。文本标记和文本的情感标识别,还有就是破解验证码时基于CNN大量的训练集要靠人来处理,也是醉了,那是很累啊。模型出来后,可以做成服务整合到其他系统中,
机器学习应用在:
- 个性化
根据各个因素改变用户的体验和呈现给用户的内容。包含了用户的行为数据和外部因素。推荐也是个性化一种,向用户呈现感兴趣的内容类表,推荐是显式的,个性化也有隐式的,比如是搜索这块,基于用户的数据改变用户的搜索结果,突然想起某度的的竞价排名。一般应该是基于地理位置、搜索历史、推荐数据等。
- 目标营销和客户细分
从用户群找出营销对象,推荐和个性化是一对一的,而客户细分是将用户分成不同的组,基于用户的特征,行为数据,比如聚类,了解用户的共性和同组用户之间的相似性,及其差异。是种广泛的营销,帮助制定营销策略。
- 预测建模和分析
也覆盖以上,预测建模是表示其他做预测的模型,借助数据创建一个模型。比如创建一个回归模型来预测电影的市场表现。分类模型来对只有部分数据的新电影来自动的分配标签和关键字和分类。第一次接触预测是参加电信的一个比赛,代码在这里可以看看https://github.com/jinhang/TianYiBeiBigDataMatch
一般两种模型,监督学习和无监督学习。具体区分是是否要标记数据。
构建一个数据驱动的机器学习系统
1、 数据获取
这里涉企技术也很多,数据可以从来自浏览器里的用户活动、APP里的日志、API上的日志等。这些数据可能是在文件系统HDFS等中,关系型数据库中Mysql等,非关系型数据库中,Hbase等,搜素引擎中,solr、elasticsearch,流数据系统,Kafka、Flume等,当然spark可以接受这些。
2 、数据清理转换
数据过滤:满足特定条件的数据
处理数据流失、不完整或有缺陷:过滤非正规的数据,填写缺失值(比如平均值填写缺失点)
- 处理可能异常、错误、异常值
异常的数据可能不利于模型的训练的。
- 合并数据源
将来自不同地方的数据合并
- 数据汇总
数据预处理后将其转换成适合学习的形式,一般是数组等。
- 类别用编码对应数值
- 文本中提取有用信息
- 处理图像音频
- 数值数据转换成类别数据减少某个量的可能值数目,比如将年龄分段表示
- 数值特征正则化、标准化处理、保证一个模型输入不同的变量值域一样
- 特征工程师对现有的变量组合转化新特征。比如得到平均数
这些东西用强大的Spark API是可以完成的,不行还有Python嘛。
3、模型训练个测试回路
通过测试集测试得到的模型,含有最佳的参数和最好的表现。
4、部署和整合
可以整合进J2ee的项目,提高服务给APP等。
5、模型监控和反馈
监控在新数据环境也就是生产环境下的表现,一般是部署多个模型紧贴业务测试,不一定准确度高的就业务表现好,然后折中处理,对于模型反馈是用户的行为对模型的反馈过程,在推荐系统中,推荐实际限制了用户可选项,影响了用户的选择,这种反馈会影响模型的训练数据,最后降低准确率。为了降低这种影响,用无偏见的数据来训练,比如没有使用推荐的用户,为了达到平衡需求划分出来的客户数据,对于提高系统稳定性是很好解决办法。