AI 在 marketing 中有很多應用,例如 搜索,推薦系統,程序化廣告,市場預測,語音/文本識別(會話商務),防欺詐,網頁設計,商品定價,聊天機器人等。
其中很重要的一個部分叫 audience target,AI 可以應用在這里,可以對顧客和顧客的需求進行精準的定位,找到前20%最有價值的客戶,預測顧客下一次會買什么東西,這樣可以減少時間金錢等資源的消耗。
另一個應用是內容生成,輸入一個關鍵詞,從大量的數據里,找到和這個關鍵詞相關的段落文章等,融合成一段文字。
這個技術可以針對目標客戶生成能夠吸引他們的內容,找到能夠激發他們購買欲的單詞短語句子等,將流量轉化為銷量。很多公司都用這個技術,例如雅虎。還有一個是實時優化,當你通過電子郵件向你的客戶推送消息的時候,你要實時地分析他們喜歡什么,不喜歡什么。
一個人在不同的時間會使用電腦,手機,平板等不同的設備,AI 還可以被用來預測用戶在什么時間會使用什么設備,幫助公司在特定的設備上進行有效的推送。
1. 接下來看一下 audience targeting 的一個例子:
給定一個廣告,來看哪些顧客更有可能被轉化
用一個矩陣來表示用戶對一些廣告的評分,這里需要用到矩陣分解,即要把這個矩陣分成兩個矩陣的乘積,其中一個矩陣表示每個用戶對某些特征的喜好程度,另一個矩陣表示這些廣告在這些特征上的得分。
AI 可以將這個矩陣中空白的地方預測出來??梢灶A測用戶對未評分的廣告會打的分數。有了這個乘積得到的矩陣,就可以知道用戶對沒有評分過的廣告的評分。然后可以設定一個閾值,當評分高于這個閾值時,就推送這個廣告。
這里可以用 LightFM, 是一個python庫,有很多流行的推薦算法,可以生成 user 和 item 的矩陣表示,可以學習每個特征的 embedding ,然后再將 user 和 item 的兩個矩陣相乘得到一個分數。
還可以用神經網絡可以得到更有意義的表達。
TensorRec 是一個較新的基于 Tensorflow 搭建推薦系統的庫,可以根據用戶過去喜歡的廣告,生成一個可能喜歡的新廣告。
2. 那么具體如何做推薦呢?
第一步,將數據轉化為 feature tensor,為了做 embedding,這里可以用 word2vec。
第二步,將 user ,item tensor 轉化為 user~item 表達。當然因為這是個預測值,所以就會有 loss function,這里用梯度下降求得參數,使損失最小。
第三步,用 TensorRec 來進行推薦
整體流程為:
建立模型--數據--訓練模型--進行預測--最后用 Recall 進行評估:
3. 內容生成
前面提到的其中一個應用 內容生成,
當推薦系統建立之后,要推薦的內容也可以用 AI 自動生成。
這里用到 LSTM,
我們知道 RNN 很擅長預測序列,根據前面的幾個字預測緊接著的后面這個字是什么。不過當句子很長時,會有 vanishing gradient 問題。
而在 LSTM 中,有幾個 gate,它們可以追蹤 gradient,用來應對 vanishing gradient 問題,這樣 LSTM 就可以記憶很長的序列。
下面是部分代碼:
用 Keras 庫可以很簡單地就構建出復雜的神經網絡,很易讀,一行代表一層,
優化器用的是 RMSprop,
# build the model: a single LSTM
print('Build model...')
model = Sequential()
model.add(LSTM(128, input_shape=(maxlen, len(chars))))
model.add(Dense(len(chars)))
model.add(Activation('softmax'))
optimizer = RMSprop(lr=0.01)
model.compile(loss='categorical_crossentropy', optimizer=optimizer)
def sample(preds, temperature=1.0):
# helper function to sample an index from a probability array
preds = np.asarray(preds).astype('float64')
preds = np.log(preds) / temperature
exp_preds = np.exp(preds)
preds = exp_preds / np.sum(exp_preds)
probas = np.random.multinomial(1, preds, 1)
return np.argmax(probas)
def on_epoch_end(epoch, logs):
# Function invoked at end of each epoch. Prints generated text.
print()
print('----- Generating text after Epoch: %d' % epoch)
start_index = random.randint(0, len(text) - maxlen - 1)
for diversity in [0.2, 0.5, 1.0, 1.2]:
print('----- diversity:', diversity)
generated = ''
sentence = text[start_index: start_index + maxlen]
generated += sentence
print('----- Generating with seed: "' + sentence + '"')
sys.stdout.write(generated)
for i in range(400):
x_pred = np.zeros((1, maxlen, len(chars)))
for t, char in enumerate(sentence):
x_pred[0, t, char_indices[char]] = 1.
preds = model.predict(x_pred, verbose=0)[0]
next_index = sample(preds, diversity)
next_char = indices_char[next_index]
generated += next_char
sentence = sentence[1:] + next_char
sys.stdout.write(next_char)
sys.stdout.flush()
print()
print_callback = LambdaCallback(on_epoch_end=on_epoch_end)
model.fit(x, y,
batch_size=128,
epochs=60,
callbacks=[print_callback])
學習資源:
https://www.youtube.com/watch?v=FYMjXD3G__Y&t=548s
https://www.techemergence.com/artificial-intelligence-in-marketing-and-advertising-5-examples-of-real-traction/
https://econsultancy.com/blog/67745-15-examples-of-artificial-intelligence-in-marketing/