Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
1,65 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN KHAI PHÁ DỮ LIỆU ĐỀ TÀI: PHÂN LOẠI KHÁCH HÀNG BẰNG K-NEAREST NEIGHBOR Sinh viên thực : PHẠM THỊ HUYỀN HOÀNG NGỌC LONG Giảng viên hướng dẫn : NGUYỄN THỊ THANH TÂN Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D14CNPM5 Khóa : 2019-2024 Hà Nội tháng 06 năm 2022 PHIẾU CHẤM ĐIỂM STT Họ tên Hoàng Ngọc Long 19810310284 Phạm Thị Huyền 19810310303 Họ tên giảng viên Giảng viên chấm 1: Giảng viên chấm 2: Nội dung thực Chữ ký Điểm Chữ ký Ghi MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 1.1 Khái niệm bản: 5 1.1.1 Khai phá liệu ? 1.1.2 Khai phá tri thức từ CSDL: 1.1.3 Các ứng dụng khai phá liệu: 1.1.4 Các bước trình khai phá liệu: 1.2 Một số kỹ thuật khai phá liệu: 1.2.1 Kỹ thuật khai phá luật kết hợp 1.2.2 Kỹ thuật phân lớp 1.2.3 Kỹ thuật phân cụm CHƯƠNG 2: GIẢI THUẬT K-NEAREST NEIGHBORS (KNN) 2.1 Tổng quan KNN: 2.2 Mơ tả thuật tốn KNN: 2.3 Ưu, nhược điểm thuật toán: CHƯƠNG 3: THỰC NGHIỆM 3.1 Bộ liệu khách hàng Credit Card Customer: 11 11 3.1.1 Phát biểu toán: 11 3.1.2 Yêu cầu: 11 3.1.3 Thông tin tổng quan liệu: 11 3.1.4 Thực nghiệm: 12 3.2 Bộ liệu Telco Customer Churn: 14 3.2.1 Phát biểu toán: 14 3.2.2 Yêu cầu: 14 3.2.3 Thông tin tổng quan liệu 14 3.2.4 Thực nghiệm: 15 LỜI NÓI ĐẦU Trong thời buổi đại ngày nay, công nghệ thông tin ứng dụng khơng ngừng phát triển, lượng thông tin sở liệu thu thập lưu trữ tích lũy ngày nhiều lên Con người mà cần có thông tin với tốc độ nhanh để đưa định dựa lượng liệu khổng lồ có Các phương pháp quản trị khai thác sở liệu truyền thống ngày không đáp ứng thực tế, thế, khuynh hướng kỹ thuật Kỹ thuật phát tri thức khai phá liệu nhanh chóng phát triển Khai phá liệu nghiên cứu, ứng dụng nhiều lĩnh vực khác nước giới Ở Việt Nam, kỹ thuật nghiên cứu dần đưa vào ứng dụng Khai phá liệu bước quy trình phát tri thức Hiện nay, người khơng ngừng tìm tịi kỹ thuật để thực khai phá liệu cách nhanh có kết tốt Trong tập lớn này, chúng em tìm hiểu trình bày kỹ thuật khai phá liệu để phân lớp liệu tổng quan khai phá liệu, với đề tài “Phân loại khách hàng giải thuật K-NN” Trong trình làm tập lớn này, chúng em xin gửi lời cảm ơn đến cô giáo Nguyễn Thị Thanh Tân Cô tận tình hướng dẫn chi tiết cho chúng em, kiến thức thầy cung cấp hữu ích Chúng em mong nhận góp ý từ cô Chúng em xin chân thành cảm ơn! CHƯƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 1.1 Khái niệm bản: 1.1.1 Khai phá liệu ? Khai phá liệu trình xác định mẫu tiềm ẩn có tính hợp lệ, lạ, có ích hiểu khối liệu lớn 1.1.2 Khai phá tri thức từ CSDL: - Khai phá tri thức từ CSDL gồm bước B1: Lựa chọn CSDL B2: Tiền xử lý B3: Chuyển đổi B4: Khai phá liệu B5: Diễn giải đánh giá Khai phá liệu bước trình khai phá tri thức từ CSDL Hình 1.1: Quá trình khai phá tri thức 1.1.3 Các ứng dụng khai phá liệu: Phát tri thức khai phá liệu liên quan đến nhiều ngành, nhiều lĩnh vực: thống kê, trí tuệ nhân tạo, sở liệu, thuật tốn, tính tốn song song tốc độ cao, thu thập tri thức cho hệ chuyên gia, quan sát liệu Đặc biệt phát tri thức khai phá liệu gần gũi với lĩnh vực thống kê, sử dụng phương pháp thống kê để mơ hình liệu phát mẫu, luật Ngân hàng liệu (Data Warehousing) cơng cụ phân tích trực tuyến (OLAP- On Line Analytical Processing) liên quan chặt chẽ với phát tri thức khai phá liệu Khai phá liệu có nhiều ứng dụng thực tế, ví dụ như: - Bảo hiểm, tài thị trường chứng khốn: phân tích tình hình tài dự báo giá loại cổ phiếu thị trường chứng khoán Danh mục vốn giá, lãi suất, liệu thẻ tín dụng, phát gian lận, - Thống kê, phân tích liệu hỗ trợ định - Điều trị y học chăm sóc y tế: số thơng tin chuẩn đoán bệnh lưu hệ thống quản lý bệnh viện Phân tích mối liên hệ triệu chứng bệnh, chẩn đoán phương pháp điều trị (chế độ dinh dưỡng, thuốc, ) - Sản xuất chế biến: Quy trình, phương pháp chế biến xử lý cố Text mining Web mining: Phân lớp văn trang Web, tóm tắt văn bản, - Lĩnh vực khoa học: Quan sát thiên văn, liệu gene, liệu sinh vật học, tìm kiếm, so sánh hệ gene thông tin di truyền, mối liên hệ gene số bệnh di truyền, - Mạng viễn thơng: Phân tích gọi điện thoại hệ thống giám sát lỗi, cố, chất lượng dịch vụ, 1.1.4 Các bước trình khai phá liệu: Bước thứ nhất: Hình thành, xác định định nghĩa tốn Là tìm hiểu lĩnh vực ứng dụng từ hình thành tốn, xác định nhiệm vụ cần phải hoàn thành Bước định cho việc rút tri thức hữu ích cho phép chọn phương pháp khai phá liệu thích hợp với mục đích ứng dụng chất liệu Bước thứ hai: Thu thập tiền xử lý liệu Là thu thập xử lý thơ, cịn gọi tiền xử lý liệu nhằm loại bỏ nhiễu (làm liệu), xử lý việc thiếu liệu (làm giàu liệu), biến đổi liệu rút gọn liệu cần thiết, bước thường chiếm nhiều thời gian tồn qui trình phát tri thức Do liệu lấy từ nhiều nguồn khác nhau, khơng đồng nhất, … gây nhầm lẫn Sau bước này, liệu quán, đầy đủ, rút gọn rời rạc hoá Bước thứ ba: Khai phá liệu, rút tri thức Là khai phá liệu, hay nói cách khác trích mẫu hoặc/và mơ hình ẩn liệu Giai đoạn quan trọng, bao gồm công đoạn như: chức năng, nhiệm vụ mục đích khai phá liệu, dùng phương pháp khai phá nào? Thơng thường, tốn khai phá liệu bao gồm: tốn mang tính mơ tả - đưa tính chất chung liệu, toán dự báo - bao gồm việc phát suy diễn dựa liệu có Tuỳ theo tốn xác định mà ta lựa chọn phương pháp khai phá liệu cho phù hợp Bước thứ tư: Sử dụng tri thức phát Là hiểu tri thức tìm được, đặc biệt làm sáng tỏ mô tả dự đốn Các bước lặp lặp lại số lần, kết thu được lấy trung bình tất lần thực Các kết trình phát tri thức đưa vào ứng dụng lĩnh vực khác kết dự đoán 1.2 Một số kỹ thuật khai phá liệu: 1.2.1 Kỹ thuật khai phá luật kết hợp Trong khai phá liệu, mục đích luật kết hợp tìm mối quan hệ đối tượng khối lượng lớn liệu Để khai phá luật kết hợp có nhiều thuật toán, dùng phổ biến thuật toán Apriori Đây thuật toán khai phá tập phổ biến liệu giao dịch để phát luật kết hợp dạng khẳng định nhị phân sử dụng để xác định, tìm luật kết hợp liệu giao dịch Ngồi ra, cịn có thuật toán FP-growth, thuật toán Partition,… 1.2.2 Kỹ thuật phân lớp Trong kỹ thuật phân lớp gồm có thuật tốn: - Phân lớp định (giải thuật ID3, J48): phân lớp liệu dựa việc lập nên định, nhìn vào định định liệu thuộc phân lớp - Phân lớp dựa xác suất (Naïve Bayesian): dựa việc giả định thuộc tính độc lập mạnh với qua việc sử dụng định lý Bayes - Phân lớp dựa khoảng cách (giải thuật K – láng giềng): làm láng giềng làm, liệu phân vào lớp k đối tượng gần với liệu - Phân lớp SVM: phân lớp liệu dựa việc tìm siêu phẳng “tốt nhất” để tách lớp liệu không gian nhiều chiều 1.2.3 Kỹ thuật phân cụm Phân cụm liệu cách phân bố đối tượng liệu vào nhóm/ cụm cho đối tượng cụm giống phần tử khác cụm, gồm có số phương pháp phân cụm như: + Phân cụm phương pháp K-mean: tìm tâm cụm mà khoảng cách tâm đến đối tượng, liệu khác ngắn + Phân cụm đồ thị Ngoài ra, khai phá liệu có nhiều kỹ thuật, kỹ thuật đơn giản khai phá liệu mà chúng em tìm hiểu CHƯƠNG 2: GIẢI THUẬT K-NEAREST NEIGHBORS (KNN) 2.1 Tổng quan KNN: Bài toán phân loại liệu toán thường gặp sống kĩ thuật, có nhiều cách tiếp cận giải thuật đưa để giải toán phân lớp Một số thuật tốn láng giềng gần K-NN (KNearest Neighbors) Thuật toán K- láng giềng gần ( viết tắt K-NN) thuật toán có mục đích phân loại lớp cho mẫu ( Query Point) dựa thuộc tính mẫu sẵn có ( Training Data) , mẫu nằm hệ gọi không gian mẫu Một đối tượng phân lớp dựa vào K láng giềng K số nguyên dương xác định trước thực thuật toán Người ta thường dùng khoảng cách Euclidean để tính khoảng cách đối tượng với mẫu mới, sau chuẩn đốn mẫu thuộc phân lớp dựa vào số k láng giềng xác định trước có khoảng cách gần mẫu so với mẫu khác 2.2 Mô tả thuật tốn KNN: Các mẫu mơ tả n – chiều thuộc tính số Mỗi mẫu đại diện cho điểm chiều không gian n – chiều Theo cách tất mẫu lưu trữ mơ hình khơng gian n – chiều Các bước thực Thuật tốn KNN mơ tả sau: - Xác định giá trị tham số K ( số láng giềng gần nhất) - Tính khoảng cách đối tượng cần phân lớp (Query Point) với tất đối tượng mẫu có sẵn (Training Data) ( Thường sử dụng khoảng cách Euclidean) - Sắp xếp khoảng cách theo thứ tự tăng dần xác định K láng giềng gần với Query Point - Lấy tất lớp K láng giềng gần xác định - Dựa vào phần lớn lớp láng giềng gần để xác định lớp cho Query Point 2.3 Ưu, nhược điểm thuật toán: Ưu điểm: - Đơn giản, thích hợp với hệ thống nhỏ - Dễ hiểu, dễ cài đặt Nhược điểm: - Thích hợp cho khả phân loại liệu khơng có khả phân tích liệu để tìm thơng tin có giá trị - Nếu tập liệu lớn phải nhiều thời gian để chạy chương trình CHƯƠNG 3: THỰC NGHIỆM 3.1 Bộ liệu khách hàng Credit Card Customer: link: https://www.kaggle.com/sakshigoyal7/credit-card-customers 3.1.1 Phát biểu toán: Bài toán phân loại khách hàng dự đoán khách hàng tiếp tục sử dụng dịch vụ ngân hàng hay dừng dùng dịch vụ tín dụng ngân hàng - Input: Dữ liệu khách hàng khứ ghi lại - Output: Loại khách hàng theo liệu khách hàng 3.1.2 Yêu cầu: - Lấy liệu khách hàng Trích chọn liệu đặc trưng từ tập liệu lấy Làm liệu Tiến hành huấn luyện liệu Trực quan hóa liệu 3.1.3 Thơng tin tổng quan liệu: Bộ liệu bao gồm đặc trưng khách hàng: CLIENTNUM: Id khách hàng Attrition_Flag: Customer_Age: Tuổi khách hàng Gender: Giới tính Depentdent_count: Số lượng người phụ thuộc Education_level: Trình độ giáo dục Marital_Status: Tình trạng nhân Income_Category: Khoảng thu nhập Card_Category: Loại thẻ tín dụng Month_on_book: Số tháng sử dụng dịch vụ ngân hàng Total_Relationship_Count: Months_Inactive_12_mon: Số tháng dừng hoạt động thẻ 12 tháng cuối Contacts_Counts_12_mon: Số lần liên lạc 12 tháng cuối Credit_Limit: Giới hạn tín dụng Total_Revolving_Bal: Tổng số dư thẻ tín dụng Avg_Open_To_Buy: Có thể mua hạn mức tín dụng Total_Amt_Chng_Q4_Q1: Thay đổi số tiền giao dịch Total_Trans_Amt: Tổng lượng tiền giao dịch Total_Trans_Ct: Số lượng giao dịch thực Total_Ct_Chng_Q1_Q4: Avg_Utilization_Ratio: Trung bình tỉ lệ sử dụng thẻ Hình 3.1: Dữ liệu cụ thể 3.1.4 Thực nghiệm: # IMPORT CÁC THƯ VIỆN import pandas as pd import numpy as np import matplotlib.pyplot as plt from pandas.plotting import scatter_matrix from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix,classification_report # ĐỌC FILE CSV df = pd.read_csv('BankChurners.csv') # TIỀN XỬ LÝ DỮ LIỆU df = df.drop(['Naive_Bayes_Classifier_Attrition_Flag_Card_Category_ Contacts_Count_12_mon_Dependent_count_Education_Level_Months_I nactive_12_mon_1', 'Naive_Bayes_Classifier_Attrition_Flag_Card_Category_Contacts_ Count_12_mon_Dependent_count_Education_Level_Months_Inactive_1 2_mon_2','CLIENTNUM'],axis = 1) df['Gender'] = df["Gender"].apply(lambda x: if x == "M" else 0) df = pd.get_dummies(df, columns = ['Marital_Status','Income_Category']) df['Education_Level'] = df['Education_Level'].map({'Unknown':0,'Uneducated':1,'High School':2,'College':3,'Graduate':4,'PostGraduate':5,'Doctorate':6}) df['Card_Category'] = df['Card_Category'].map({'Blue':1,'Silver':2,'Gold':3,'Platinu m':4}) df['Attrition_Flag'] = df['Attrition_Flag'].map({'Existing Customer':0,'Attrited Customer':1}) print(' -Data Cleaned \n',df.head(),'\n') print(' -Correlation -\n',df.corr(),'\n') X = df.drop(['Attrition_Flag'],axis = 1) y = df['Attrition_Flag'] # GIẢM CHIỀU DỮ LIỆU X = PCA(1).fit_transform(X) # CHIA TRAIN DATA VÀ TEST DATA X_train,X_test,y_train,y_test train_test_split(X,y,random_state =6,test_size = 0.2) # XÁC ĐỊNH SỐ K n_number = range(1,20,2) accuracy = [] for n in n_number: clf = KNeighborsClassifier(n).fit(X_train,y_train) predict = clf.predict(X_test) acc = accuracy_score(predict,y_test) accuracy.append(acc) plt.plot(n_number,accuracy) plt.grid() = plt.ylabel("Accuracy") plt.xlabel("Number of neighbors") plt.show() # TẠO MODEL VÀ HUẤN LUYỆN DATA clf = KNeighborsClassifier(11).fit(X_train,y_train) predicted = clf.predict(X_test) # ĐÁNH GIÁ MƠ HÌNH print(' Confusion Matrix \n',confusion_matrix(predict,y_test),'\n') print(' -Accuracy -\n',accuracy_score(predict,y_test),'\n') print(' Classification Report \n',classification_report(predict,y_test),'\n') # TRỰC QUAN HÓA DỮ LIỆU fig, (ax1,ax2) = plt.subplots(1,2) ax1.scatter(X_test,y_test,label = 'red') ax1.set_xlabel('X test') ax1.set_ylabel('y test') ax1.set_title('Actual') 'actual',alpha = 0.5,c = ax2.scatter(X_test,predicted,label = 'predicted',alpha = 0.5) ax2.set_xlabel('X test') ax2.set_ylabel('y predicted') ax2.set_title('Predicted') plt.show() 3.2 Bộ liệu Telco Customer Churn: link: https://www.kaggle.com/blastchar/telco-customer-churn 3.2.1 Phát biểu toán: Bài toán phân loại khách hàng dự đoán khách hàng tiếp tục sử dụng dịch vụ công ty hay dừng dùng dịch vụ tín dụng cơng ty - Input: Dữ liệu khách hàng khứ ghi lại - Output: Loại khách hàng theo liệu khách hàng 3.2.2 Yêu cầu: - Lấy liệu khách hàng Trích chọn liệu đặc trưng từ tập liệu lấy Làm liệu Tiến hành huấn luyện liệu Trực quan hóa liệu 3.2.3 Thông tin tổng quan liệu Bộ liệu bao gồm đặc trưng khách hàng: customerID: id khách hàng gender: giới tính SeniorCitizen: Dân cư lâu năm Partner: Có người hay khơng Dependents: Có người phụ thuộc hay không tenure: số tháng sử dụng dịch vụ cơng ty PhoneService: Có sử dụng dịch vụ điện thoại khơng MultipleLines: Có sử dụng dịch vụ viễn thông điện tử không InternetService: OnlineService: OnlineBackup: DeviceProtection: TechSupport: StreamingTV: StreamingMovies: Contract: loại hợp đồng ngắn hạn hay dài hạn PaperlessBilling: PaymentMethod: phương thức toán MonthlyCharges: Số tiền trả theo tháng TotalCharges: Tổng số tiền chi trả Churn: Kết luận có phải churn hay khơng Hình 3.2 Dữ liệu cụ thể 3.2.4 Thực nghiệm: IMPORT CÁC THƯ VIỆN import pandas as pd import numpy as np import matplotlib.pyplot as plt from pandas.plotting import scatter_matrix from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix,classification_report ĐỌC FILE CSV df = pd.read_csv('Telco-Customer-Churn.csv') TIỀN XỬ LÝ DỮ LIỆU df = df.drop(['customerID'],axis = 1) def value_count(columns): return df[column].value_counts() for column in df.columns: print(value_count(column)) print("\n") def mapCategoryDatatype(columns:list): for column in columns: if df[column].nunique() == 2: df[column] = df[column].map({'Yes':1,'No':0}) else: df[column] = df[column].map({'Yes':2,'No':1,'No phone service':0,'No internet service':0}) series_need_to_map = ['Partner','Dependents','PhoneService','MultipleLines','Online Security','OnlineBackup','DeviceProtection','TechSupport','Str eamingTV','StreamingMovies','PaperlessBilling','Churn'] mapCategoryDatatype(series_need_to_map) df = pd.get_dummies(df,columns = ['Contract','PaymentMethod','InternetService']) df['gender'] = df['gender'].map({'Male':1,'Female':0}) df['TotalCharges'] = pd.to_numeric(df['TotalCharges'],errors = 'coerce') df['MonthlyCharges'] = pd.to_numeric(df['TotalCharges'],errors = 'coerce') df = df.dropna() CHIA TEST, TRAIN DATA X = df.drop(['Churn'],axis = 1) y = df['Churn'] from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test = train_test_split(X,y,random_state =6,test_size = 0.2) print("X_train shape: {}, X_test: {}, y_train: {}, y_test: {}".format(X_train.shape,X_test.shape,y_train.shape,y_test.sha pe)) CHỌN SỐ K TỐT NHẤT n_number = range(1,30,2) accuracy = [] for n in n_number: clf = KNeighborsClassifier(n).fit(X_train,y_train) predict = clf.predict(X_test) acc = accuracy_score(predict,y_test) accuracy.append(acc) plt.plot(n_number,accuracy) plt.grid() plt.show() TẠO MƠ HÌNH HUẤN LUYỆN clf = KNeighborsClassifier(15).fit(X_train,y_train) churn_predicted = clf.predict(X_test) ĐÁNH GIÁ MƠ HÌNH print("Accuracy: \n",accuracy_score(y_test,churn_predicted),'\n') print("Confusion Matrix:\n",confusion_matrix(y_test,churn_predicted),'\n') print("Classification Report: \n", classification_report(y_test,churn_predicted),'\n')