Ⅰ 如何通過自學,成為數據挖掘「高手」
基礎篇:
1. 讀書《Introction to Data Mining》,這本書很淺顯易懂,沒有復雜高深的公式,很合適入門的人。另外可以用這本書做參考《Data Mining : Concepts and Techniques》。第二本比較厚,也多了一些數據倉庫方面的知識。如果對演算法比較喜歡,可以再閱讀《Introction to Machine Learning》。
2. 實現經典演算法。有幾個部分:
a. 關聯規則挖掘 (Apriori, FPTree, etc.)
b. 分類 (C4.5, KNN, Logistic Regression, SVM, etc.)
c. 聚類 (Kmeans, DBScan, Spectral Clustering, etc.)
d. 降維 (PCA, LDA, etc.)
e. 推薦系統 (基於內容的推薦,協同過濾,如矩陣分解等)
然後在公開數據集上測試,看實現的效果。可以在下面的網站找到大量的公開數據集:http://archive.ics.uci.e/ml/
3. 熟悉幾個開源的工具: Weka (用於上手); LibSVM, scikit-learn, Shogun
4. 到 https://www.kaggle.com/ 上參加幾個101的比賽,學會如何將一個問題抽象成模型,並從原始數據中構建有效的特徵 (Feature Engineering).
到這一步的話基本幾個國內的大公司都會給你面試的機會。
進階篇:
1. 讀書,下面幾部都是大部頭,但學完進步非常大。
a.《Pattern Recognition and Machine Learning》
b.《The Elements of Statistical Learning》
c.《Machine Learning: A Probabilistic Perspective》
第一本比較偏Bayesian;第二本比較偏Frequentist;第三本在兩者之間,但我覺得跟第一本差不多,不過加了不少新內容。當然除了這幾本大而全的,還有很多介紹不同領域的書,例如《Boosting Foundations and Algorithms》,《Probabilistic Graphical Models Principles and Techniques》;以及理論一些的《Foundations of Machine Learning》,《Optimization for Machine Learning》等等。這些書的課後習題也非常有用,做了才會在自己寫Paper的時候推公式。
2. 讀論文。包括幾個相關會議:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM;以及幾個相關的期刊:TKDD,TKDE,JMLR,PAMI等。跟蹤新技術跟新的熱點問題。當然,如果做相關research,這一步是必須的。例如我們組的風格就是上半年讀Paper,暑假找問題,秋天做實驗,春節左右寫/投論文。
3. 跟蹤熱點問題。例如最近幾年的Recommendation System,Social Network,Behavior Targeting等等,很多公司的業務都會涉及這些方面。以及一些熱點技術,例如現在很火的Deep Learning。
4. 學習大規模並行計算的技術,例如MapRece、MPI,GPU Computing。基本每個大公司都會用到這些技術,因為現實的數據量非常大,基本都是在計算集群上實現的。
5. 參加實際的數據挖掘的競賽,例如KDDCUP,或 https://www.kaggle.com/ 上面的競賽。這個過程會訓練你如何在一個短的時間內解決一個實際的問題,並熟悉整個數據挖掘項目的全過程。
6. 參與一個開源項目,如上面提到的Shogun或scikit-learn還有Apache的Mahout,或為一些流行演算法提供更加有效快速的實現,例如實現一個Map/Rece平台下的SVM。這也是鍛煉Coding的能力。
到這一步國內的大公司基本是想哪去哪,而且待遇也不差;如果英語好,去US那邊的公司難度也不大了。
Ⅱ 機器學習,數據挖掘的書有哪些
說到數據分析,人們往往會下意識地聯想到另一個耳熟能詳的名詞:數據挖掘。那麼,到底什麼是數據挖掘呢?顧名思義,數據挖掘就是對數據進行處理,並從中提取可用信息的過程。如果你剛好正在尋找這方面的入門書籍,那麼韓家煒老師寫的《數據挖掘:概念與技術》絕對是一個不錯的選擇。
· 更難能可貴的是,隨書還附帶了一批可運行的神經網路實例。試試親自上手改改代碼吧,相信你會有意外的收獲。
Ⅲ k-means演算法怎麼為對稱矩陣進行聚類
幾種典型的聚類融合演算法:
1.基於超圖劃分的聚類融合演算法
(1)Cluster-based Similarity Partitioning Algorithm(GSPA)
(2)Hyper Graph-Partitioning Algorithm(HGPA)
(3)Meta-Clustering Algorithm(MCLA)
2.基於關聯矩陣的聚類融合演算法
Voting-K-Means演算法。
3.基於投票策略的聚類融合演算法
w-vote是一種典型的基於加權投票的聚類融合演算法。
同時還有基於互信息的聚類融合演算法和基於有限混合模型的聚類融合演算法。
二、基於關聯矩陣的聚類融合演算法——Voting-K-Means演算法
Voting-K-Means演算法是一種基於關聯矩陣的聚類融合演算法,關聯矩陣的每一行和每一列代表一個數據點,關聯矩陣的元素表示數據集中數據點對共同出現在同一個簇中的概率。
演算法過程:
1.在一個數據集上得到若干個聚類成員;
2.依次掃描這些聚類成員,如果數據點i和j在某個聚類成員中被劃分到同一個簇中,那麼就在關聯矩陣對應的位置計數加1;關聯矩陣中的元素值越大,說明該元素對應的兩個數據點被劃分到同一個簇中的概率越大;
3.得到關聯矩陣之後,Voting-K-Means演算法依次檢查關聯矩陣中的每個元素,如果它的值大於演算法預先設定的閥值,就把這個元素對應的兩個數據點劃分到同一個簇中。
Voting-K-Means演算法的優缺點:
Voting-K-Means演算法不需要設置任何參數,在聚類融合的過程中可以自動地的選擇簇的個數 並且可以處理任意形狀的簇。因為Voting-K-Means演算法在聚類融合過程中是根據兩個數據點共同出現在同一個簇中的可能性大小對它們進行劃分的,所以只要兩個數據點距離足夠近,它們就會被劃分到一個簇中。
Voting-K-Means演算法的缺點是時間復雜度較高,它的時間復雜度是O(n^2);需要較多的聚類成員,如果聚類成員達不到一定規模,那麼關聯矩陣就不能准確反映出兩個數據點出現在同一個簇的概率。
package clustering;import java.io.FileWriter;import weka.clusterers.ClusterEvaluation;import weka.clusterers.SimpleKMeans;import weka.core.DistanceFunction;import weka.core.EuclideanDistance;import weka.core.Instances;import weka.core.converters.ConverterUtils.DataSource;import weka.filters.unsupervised.attribute.Remove;public class Votingkmeans2 extends SimpleKMeans { /** 生成的序列號 */ private static final long serialVersionUID = 1557181390469997876L; /** 劃分的簇數 */ private int m_NumClusters; /** 每個劃分的簇中的實例的數量 */ public int[] m_ClusterSizes; /** 使用的距離函數,這里是歐幾里德距離 */ protected DistanceFunction m_DistanceFunction = new EuclideanDistance(); /** 實例的簇號賦值 */ protected int[] m_Assignments; /** 設定聚類成員融合閥值 */ private final static double THREASOD = 0.5; /** 生成一個聚類器 */ public void buildClusterer(Instances data) throws Exception{ final int numinst = data.numInstances(); // 數據集的大小 double [][]association = new double[numinst][numinst]; // 定義並初始化一個關聯矩陣 int numIteration = 40; // 設置生成的聚類成員數 final int k = (int)Math.sqrt(numinst); // 設置K-Means聚類演算法參數——簇數 for(int i = 0; i < numIteration; i++) { if(data.classIndex() == -1) data.setClassIndex(data.numAttributes() - 1); // 索引是從0開始 String[] filteroption = new String[2]; filteroption[0] = "-R"; filteroption[1] = String.valueOf(data.classIndex() + 1);// 索引是從1開始 Remove remove = new Remove(); remove.setOptions(filteroption); remove.setInputFormat(data); /* 使用過濾器模式生成新的數據集;新數據集是去掉類標簽之後的數據集 */ Instances newdata = weka.filters.Filter.useFilter(data, remove); /* 生成一個K-Means聚類器 */ SimpleKMeans sm = new SimpleKMeans(); sm.setNumClusters(k); sm.setPreserveInstancesOrder(true); // 保持數據集實例的原始順序 sm.setSeed(i); // 通過設置不同的種子,設置不同的簇初始中心點,從而得到不同的聚類結果 sm.buildClusterer(newdata); int[] assigm = sm.getAssignments(); // 得到數據集各個實例的賦值 /* 建立關聯矩陣 */ for(int j = 0; j < numinst; j++) { for(int m = j; m < numinst; m++) { if(assigm[j] == assigm[m]) { association[j][m] = association[j][m] + 1.0 / numIteration ; } } } } System.out.println(); /* 將生成的關聯矩陣寫入.txt文件(註:生成的txt文本文件在e:/result.txt中) */ FileWriter fw = new FileWriter("e://result.txt"); for(int j = 0; j < numinst; j++) { for(int m = j; m < numinst; m++) { //由於關聯矩陣是對稱的,為了改進演算法的效率,只計算矩陣的上三角 String number = String.format("%8.2f", association[j][m]); fw.write(number); } fw.write("\n"); } /* 處理關聯矩陣,分別考慮了兩種情況 :1.關聯矩陣中某個元素對應的兩個數據點已經被劃分到了不同的簇中 * 2.兩個數據點中有一個或者兩個都沒有被劃分到某個簇中。 */ int[] flag = new int[numinst]; int[] flagk = new int[k]; int[] finallabel = new int[numinst]; for(int m = 0; m < numinst; m++) { for(int n = m; n < numinst; n++) { if(association[m][n] > THREASOD) { if(flag[m] == 0 && flag[n] == 0) { // 兩個數據點都沒有被劃分到某個簇中, int i = 0; // 將他們劃分到同一個簇中即可 while (i < k && flagk[i] == 1) i = i + 1; finallabel[m] = i; finallabel[n] = i; flag[m] = 1; flag[n] = 1; flagk[i] = 1; } else if (flag[m] == 0 && flag[n] == 1) { // 兩個數據點中有一個沒有被劃分到某個簇中, finallabel[m] = finallabel[n]; // 將他們劃分到同一個簇中即可 flag[m] = 1; } else if (flag[m] == 1 && flag[n] == 0) { finallabel[n] = finallabel[m]; flag[n] = 1; } else if (flag[m] == 1 && flag[n] == 1 && finallabel[m] != finallabel[n]) { // 兩個數據點已被劃分到了不同的簇中, flagk[finallabel[n]] = 0; // 將它們所在的簇合並 int temp = finallabel[n]; for(int i = 0; i < numinst; i++) { if(finallabel[i] == temp) finallabel[i] = finallabel[m]; } } } } } m_Assignments = new int[numinst]; System.out.println("基於關聯矩陣的聚類融合演算法——Voting-K-Means演算法的最終聚類結果"); for(int i = 0; i < numinst; i++) { m_Assignments[i] = finallabel[i]; System.out.print(finallabel[i] + " "); if((i+1) % 50 == 0) System.out.println(); } for(int i = 0; i < k; i++) { if(flagk[i] == 1) m_NumClusters++; } } /** * return a string describing this clusterer * * @return a description of the clusterer as a string */ public String toString() { return "Voting-KMeans\n"; } public static void main(String []args) { try {String filename="e://weka-data//iris.arff"; Instances data = DataSource.read(filename); Votingkmeans2 vk = new Votingkmeans2(); vk.buildClusterer(data); /* 要生成Voting-K-Means的聚類評估結果包括准確率等需要覆蓋重寫toString()方法; * 因為沒有覆蓋重寫,所以這里生產的評估結果沒有具體內容。 */ ClusterEvaluation eval = new ClusterEvaluation(); eval.setClusterer(vk); eval.evaluateClusterer(new Instances(data)); System.out.println(eval.clusterResultsToString()); } catch (Exception e) { e.printStackTrace(); }}}
分析代碼時注意:得到的類成員變數m_Assignments就是最終Voting-K-Means聚類結果;由於是採用了開源機器學習軟體Weka中實現的SimpleKMeans聚類演算法,初始時要指定簇的個數,這里是數據集大小開根號向下取整;指定的閥值為0.5,即當關聯矩陣元素的值大於閥值時,才對該元素對應的兩個數據點進行融合,劃分到一個簇中,考慮兩種情況,代碼注釋已有,這里不再詳述。但聚類融合的實驗結果並不理想,鶯尾花數據集irsi.arff是數據挖掘實驗中最常用的數據集,原數據集共有三個類;但本實驗進行四十個聚類成員的融合,其最終聚類結果劃分成兩個簇;其原因可能有兩個:一是演算法本身的問題,需要使用其他更加優化的聚類融合演算法;二是實現上的問題,主要就在聚類結果的融合上,需要進行一步對照關聯矩陣進行邏輯上的分析,找出代碼中的問題。關聯矩陣文本文件http://download.csdn.net/detail/lhkaikai/7294323
---------------------
本文來自 Turingkk 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/lhkaikai/article/details/25004823?utm_source=
Ⅳ 如何在WEKA中添加自己的演算法
1. 編寫新演算法,所編寫的新演算法必須符合Weka 的介面標准。在此以從Weka中文站上下載的一個演算法(模糊C均值聚類演算法:FuzzyCMeans)的添加為例說明其具體過程。
2. 由於FuzzyCMeans是聚類演算法,所以直接將FuzzyCMeans.java 源程序考到 weka.clusterers 包下
3. 再修改weka.gui.GenericObjectEditor.props ,在#Lists the Clusterers I want to choose from的weka.clusterers.Clusterer=\下加入:weka.clusterers.FuzzyCMeans
4. 相應的修改weka.gui.GenericPropertiesCreator.props ,此去不用修改,因為包weka.clusterers已經存在,若加入新的包時則必須修改這里,加入新的包
我試了一下,這樣加入之後,重新編譯,運行後,可以在weka的Explorer界面上的Cluster選項卡中的聚類演算法中找到剛剛新添加的FuzzyCMeans演算法。
添加過程簡單吧!關鍵問題是要弄清楚Weka的內核以及其介面標准,然後編寫出符合此規范的新演算法。
Ⅳ 數據精準營銷的七個關鍵要素
數據精準營銷的七個關鍵要素
說到大數據精準營銷,不得不先提個性化的用戶畫像,我們針對每一類數據實體,進一步分解可落地的數據維度,刻畫TA的每一個特徵,在聚集起來形成人群畫像。
01用戶畫像
用戶畫像是根據用戶社會屬性、生活習慣和消費行為等信息而抽象出的一個標簽化的用戶模型。具體包含以下幾個維度:
用戶固定特徵:性別,年齡,地域,教育水平,生辰八字,職業,星座
用戶興趣特徵:興趣愛好,使用APP,網站,瀏覽/收藏/評論內容,品牌偏好,產品偏好
用戶社會特徵:生活習慣,婚戀,社交/信息渠道偏好,宗教信仰,家庭成分
用戶消費特徵:收入狀況,購買力水平,商品種類,購買渠道喜好,購買頻次
用戶動態特徵:當下時間,需求,正在前往的地方,周邊的商戶,周圍人群,新聞事件如何生成用戶精準畫像大致分成三步。
1.採集和清理數據:用已知預測未知
首先得掌握繁雜的數據源。包括用戶數據、各式活動數據、電子郵件訂閱數、線上或線下資料庫及客戶服務信息等。這個是累積資料庫;這裡面最基礎的就是如何收集網站/APP用戶行為數據。比如當你登陸某網站,其Cookie就一直駐留在瀏覽器中,當用戶觸及的動作,點擊的位置,按鈕,點贊,評論,粉絲,還有訪問的路徑,可以識別並記錄他/她的所有瀏覽行為,然後持續分析瀏覽過的關鍵詞和頁面,分析出他的短期需求和長期興趣。還可以通過分析朋友圈,獲得非常清晰獲得對方的工作,愛好,教育等方面,這比個人填寫的表單,還要更全面和真實。
我們用已知的數據尋找線索,不斷挖掘素材,不但可以鞏固老會員,也可以分析出未知的顧客與需求,進一步開發市場。
2.用戶分群:分門別類貼標簽
描述分析是最基本的分析統計方法,描述統計分為兩大部分:數據描述和指標統計。數據描述:用來對數據進行基本情況的刻畫,包括數據總數,范圍,數據來源。指標統計:把分布,對比,預測指標進行建模。這里常常是Data mining的一些數學模型,像響應率分析模型,客戶傾向性模型,這類分群使用Lift圖,用打分的方法告訴你哪一類客戶有較高的接觸和轉化的價值。
在分析階段,數據會轉換為影響指數,進而可以做"一對一"的精準營銷。舉個例子,一個80後客戶喜歡在生鮮網站上早上10點下單買菜,晚上6點回家做飯,周末喜歡去附近吃日本料理,經過搜集與轉換,就會產生一些標簽,包括"80後""生鮮""做飯""日本料理"等等,貼在消費者身上。
3.制定策略:優化再調整
有了用戶畫像之後,便能清楚了解需求,在實際操作上,能深度經營顧客關系,甚至找到擴散口碑的機會。例如上面例子中,若有生鮮的打折券,日本餐館最新推薦,營銷人員就會把適合產品的相關信息,精準推送這個消費者的手機中;針對不同產品發送推薦信息,同時也不斷通過滿意度調查,跟蹤碼確認等方式,掌握顧客各方面的行為與偏好。
除了顧客分群之外,營銷人員也在不同時間階段觀察成長率和成功率,前後期對照,確認整體經營策略與方向是否正確;若效果不佳,又該用什麼策略應對。反復試錯並調整模型,做到循環優化。
這個階段的目的是提煉價值,再根據客戶需求精準營銷,最後追蹤客戶反饋的信息,完成閉環優化。
我們從數據整合導入開始,聚合數據,在進行數據的分析挖掘。數據分析和挖掘還是有一些區別。數據分析重點是觀察數據,單純的統計,看KPI的升降原因。而數據挖掘從細微和模型角度去研究數據,從學習集、訓練集發現知識規則,除了一些比較商業化的軟體SAS,WEKA功能強大的數據分析挖掘軟體,這邊還是更推薦使用R,Python,因為SAS,SPSS本身比較昂貴,也很難做頁面和服務級別的API,而Python和R有豐富的庫,可以類似WEKA的模塊,無縫交互其他API和程序,這里還需要熟悉資料庫,Hadoop等。
02數據細分受眾
「顛覆營銷」書中提到一個例子,可以引述一下,大家思考一個問題:如果你打算搜集200份有效問卷,依照以往的經驗,你需要發多少份問卷,才能達到這個目標?預計用多少預算和時間來執行?
以往的方法是這樣的:評估網路問卷大約是5%的回收率,想要保證收到200份的問卷,就必須有20倍的發送量,也就是發出4000份問卷,一個月內如果可以回收,就是不錯的表現。
但現在不一樣了,在執行大數據分析的3小時內,就可以輕松完成以下的目標:
精準挑選出1%的VIP顧客
發送390份問卷,全部回收
問卷寄出3小時內回收35%的問卷
5天內就回收了超過目標數86%的問卷數
所需時間和預算都在以往的10%以下
這是怎麼做到在問卷發送後的3個小時就回收35%?那是因為數據做到了發送時間的"一對一定製化",利用數據得出,A先生最可能在什麼時間打開郵件就在那個時間點發送問卷。
舉例來說,有的人在上班路上會打開郵件,但如果是開車族,並沒有時間填寫答案,而搭乘公共交通工具的人,上班路上的時間會玩手機,填寫答案的概率就高,這些都是數據細分受眾的好處。
03預 測
「預測」能夠讓你專注於一小群客戶,而這群客戶卻能代表特定產品的大多數潛在買家。
當我們採集和分析用戶畫像時,可以實現精準營銷。這是最直接和最有價值的應用,廣告主可以通過用戶標簽來發布廣告給所要觸達的用戶,這裡面又可以通過上圖提到的搜索廣告,展示社交廣告,移動廣告等多渠道的營銷策略,營銷分析,營銷優化以及後端CRM/供應鏈系統打通的一站式營銷優化,全面提升ROI。
我們再說一說營銷時代的變遷,傳統的企業大多還停留在「營銷1.0」時代,以產品為中心,滿足傳統的消費者需求,而進入「營銷2.0」,以社會價值與品牌為使命,也不能完全精準對接個性化需求。進入營銷3.0的數據時代,我們要對每個消費者進行個性化匹配,一對一營銷,甚至精確算清楚成交轉化率,提高投資回報比。
大數據下的營銷顛覆經典的營銷4P理論,Proct,Price,Place,Promotion,取而代之的是新的4P,People,Performance,Process,Prediction。在大數據時代,線下地理的競爭邊界早就不存在,比的是早一步的先知能力,利用大數據,從顧客真實交易數據中,預測下一次的購買時間。 營銷3.0時代關鍵詞就是「預測」。
預測營銷能夠讓你專注於一小群客戶,而這群客戶卻能代表特定產品的大多數潛在買家。以上圖為例,你可以將營銷活動的目標受眾鎖定為20萬潛在客戶或現有客戶,其中包括特定產品的大多數買家(4萬人)。你還可以撥出部分預算用於吸引更小的客戶群(比如20% 的客戶),而不是整個客戶群,進而優化你的支出。
過去我們看數據可能是被動的方式,但預測營銷強調是決策價值,比如購買時間,你該看的不是她最後的購買日期,而是下次購買的時間,看未來的存活概率,最後生成客戶終身價值(CLV)。預測營銷催生了一種新的數據驅動營銷方式,就是以客戶為中心,核心在於幫助公司完成從以產品或渠道為中心到以客戶為中心的轉變。
04精準推薦
大數據最大的價值不是事後分析,而是預測和推薦,我就拿電商舉例,"精準推薦"成為大數據改變零售業的核心功能。譬如服裝網站Stitch fix例子,在個性化推薦機制方面,大多數服裝訂購網站採用的都是用戶提交身形、風格數據+編輯人工推薦的模式,Stitch Fix不一樣的地方在於它還結合了機器演算法推薦。這些顧客提供的身材比例,主觀數據,加上銷售記錄的交叉核對,挖掘每個人專屬的服裝推薦模型。 這種一對一營銷是最好的服務。
數據整合改變了企業的營銷方式,現在經驗已經不是累積在人的身上,而是完全依賴消費者的行為數據去做推薦。未來,銷售人員不再只是銷售人員,而能以專業的數據預測,搭配人性的親切互動推薦商品,升級成為顧問型銷售。
05技術工具
關於預測營銷的技術能力,有幾種選擇方案:
1、使用預測分析工作平台,然後以某種方法將模型輸入活動管理工具;
2、以分析為動力的預測性活動外包給市場服務提供商;
3、評估並購買一個預測營銷的解決方案,比如預測性營銷雲和多渠道的活動管理工具。
但無論哪條路,都要確定三項基本能力:
1)連接不同來源的客戶數據,包括線上,線下,為預測分析准備好數據 ;
2)分析客戶數據,使用系統和定製預測模型,做高級分析 ;
3)在正確時間,正確客戶,正確的場景出發正確行為,可能做交叉銷售,跨不同營銷系統。
06預測模型
預測客戶購買可能性的行業標準是RFM模型(最近一次消費R,消費頻率F,消費金額M),但模型應用有限,本質是一個試探性方案,沒有統計和預測依據。「過去的成績不能保證未來的表現」,RFM只關注過去,不去將客戶當前行為和其他客戶當前行為做對比。這樣就無法在購買產品之前識別高價值客戶。
我們聚焦的預測模型,就是為了在最短時間內對客戶價值產生最大影響。這里列舉一些其他模型參考:
參與傾向模型,預測客戶參與一個品牌的可能性,參與定義可以多元,比如參加一個活動,打開電子郵件,點擊,訪問某頁面。可以通過模型來確定EDM的發送頻率。並對趨勢做預測,是增加還是減少活動。
錢包模型,就是為每個客戶預測最大可能的支出,定義為單個客戶購買產品的最大年度支出。然後看增長模型,如果當前的總目標市場比較小,但未來可能很大,就需要去發現這些市場。
價格優化模型,就是能夠去最大限度提升銷售,銷量或利潤的架構,通過價格優化模型為每個客戶來定價,這里需要對你想要的產品開發不同的模型,或者開發通用,可預測的客戶價格敏感度的模型,確定哪一塊報價時對客戶有最大的影響。
關鍵字推薦模型,關鍵字推薦模型可以基於一個客戶網路行為和購買記錄來預測對某個內容的喜愛程度,預測客戶對什麼熱點,爆款感興趣,營銷者使用這種預測結果為特定客戶決定內容營銷主題。
預測聚集模型,預測聚集模型就是預測客戶會歸為哪一類。
07AI在營銷領域的應用
去年人工智慧特別火,特別是深度學習在機器視覺,語言識別,游戲AI上的突飛猛進,以至於人們開始恐慌人工智慧是不是已經可以接管人類工作,我個人是對新技術有著強烈的興趣,也非常看好新科技,數據與現實的關聯。
我以前在國外零售店買單的時候經常被詢問「你有沒有購物卡」,當我說沒有收銀員會趕緊勸我免費開通,有打折優惠,只需要填個手機號和郵箱,後面就可以針對我的購買記錄做營銷活動,而當我下次進來,他們就讓我報出電話號碼做消費者識別,當時我想如果做到人臉識別,豈不是更方便,刷臉就可以買單。而這個場景在去年也有了實驗,螞蟻金服研發出了一個生物識別機器人,叫螞可Mark,據說其認臉能力已經超越了人類肉眼的能力。還有VR購物,Amazon推出的無收銀員商店Amazon Go,通過手勢識別,物聯網和後續數據挖掘等技術實現購物體驗。
針對營銷領域,主要有以下三種預測營銷技術:
1、無監督的學習技術
無監督學習技術能識別數據中的隱藏模式,也無須明確預測一種結果。比如在一群客戶中發現興趣小組,也許是滑雪,也許是長跑,一般是放在聚類演算法,揭示數據集合中 真實的潛在客戶。所謂聚類,就是自動發現重要的客戶屬性,並據此做分類。
2、 有監督的學習技術
通過案例訓練機器,學習並識別數據,得到目標結果,這個一般是給定輸入數據情況下預測,比如預測客戶生命周期價值,客戶與品牌互動的可能性,未來購買的可能性。
3、強化學習技術
這種是利用數據中的潛質模式,精準預測最佳的選擇結果,比如對某用戶做促銷應該提供哪些產品。這個跟監督學習不同,強化學習演算法無須僅需輸入和輸出訓練,學習過程通過試錯完成。
從技術角度看,推薦模型應用了協同過濾,貝葉斯網路等演算法模型。強化學習是被Google Brain團隊的負責人Jeff Dean認為是最有前途的AI研究方向之一。最近Google的一個AI團隊DeepMind發表了一篇名為《學會強化學習》的論文。
按團隊的話來說,叫做「學會學習」的能力,或者叫做能解決類似相關問題的歸納能力。除了強化學習,還在遷移學習。遷移學習就是把一個通用模型遷移到一個小數據上,使它個性化,在新的領域也能產生效果,類似於人的舉一反三、觸類旁通。
強化學習加上遷移學習,能夠把小數據也用起來,我認為是很激動人心的,通過AI來創造AI,數據科學家的部分工作也可以讓機器來實現了。