读书程序

手把手构建人工智能产品

##/*-------------------------------------*/
##/* 手把手构建人工智能产品
##https://www.cnblogs.com/by-dream/p/9403984.html
##https://www.cnblogs.com/ywl925/archive/2012/11/21/2780861.html
##/*-------------------------------------*/
#第三章--排序任务评估指标--DCG--P105
"""
DCG是这样一个指标:项目得分和一个权重的乘积,该权重和项目位置排序成反比
问题:
理解项目位置排序成反比中log的作用
1、如果score得分很高,位置却靠后
2、如果score得分很低,位置却靠前
"""
import math

def dcg(score,rank):
    score_0=score[0] #score_0为序列第一项的得分
    dcg_sum=score_0
    count=1
    for i in score[1:]:
        count+=1
#        print(i/math.log(count,2))
        dcg_sum+=(i/math.log(count,2))
#        print(dcg_sum)
    return dcg_sum
        

score_list=[3,1,2,3,2]
rank=[i for i in range(1,len(score_list)+1)]

dcg_value=dcg(score_list,rank)
print(dcg_value)

24.872442982665962
"""
假设搜索回来的5个结果,其相关性分数分别是 3、2、3、0、1、2

  那么 CG = 3+2+3+0+1+2

  可以看到只是对相关的分数进行了一个关联的打分,并没有召回的所在位置对排序结果评分对影响。而我们看DCG:

i	reli	log2(i+1)	reli /log2(i+1)
1	3	1	3
2	2	1.58  	1.26
3	3	2	1.5
4	0	2.32	0
5	1	2.58	0.38
6	2	2.8	0.71
  所以 DCG  = 3+1.26+1.5+0+0.38+0.71 = 6.86
"""
score_list=[3,2,3,0,1,2]
rank=[1,2,3,4,5,6]

log_list=[math.log(i+1,2) for i in rank]

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#做一下对数函数的图
x=[i for i in range(2,100)]
y_t=[(math.log(i,2)) for i in x]

y=[1/i for i in y_t]
log_data=pd.DataFrame()
log_data['x']=x
log_data['y']=y

log_data = log_data.set_index(keys=['x'])
ax=log_data['y'].plot(kind='line',
   style = '--o',color='c',figsize=(10,10))
plt.show()

构建用户画像中所用到的AI算法

##/*-------------------------------------*/
##/* 构建用户画像中所用到的AI算法
##http://www.woshipm.com/user-research/2856287.html
##/*-------------------------------------*/
"""
 时间衰减因子
时间衰减因子体现了标签的热度随着时间逐渐冷却的过程,它来源于牛顿冷却定律。

图16-牛顿冷却定律原始公式
定律描述的是物体的冷却速度与其当前温度和室温之间的温差成正比。
运用于新闻领域,一条新闻可能在今天它的“温度”是最高的,但是随着时间,这条新闻会逐渐的变成和普通新闻一样的“温度”。
经过对牛顿冷却定律的推导,我们得出了以下公式:

图17-冷却系数计算公式
将公式翻译成中文:当前温度=原始温度 X exp(-冷却系数 X 间隔时间)

运用于标签的翻译:当前权重=原始权重 X exp(-冷却系数 X 间隔时间)

如:将用户发生行为的当日该偏好的权重设置为1,10天后设置为0.2,也就是经过9天后权重会衰减是0.2,将已知变量代入到图13的公式中,经过指数的运算得到冷却系数,从而得到时间衰减因子。
"""
import math

math.exp( x )

0.2=math.exp(-1* x*9 )

math.log(0.2)/(-9)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值