앞서 설명한 코사인 유사도를 기반으로해서 실제로 학생들 개인의 선호도를 분석해보는 수업을 계획했다.
학생들이 유튜브, 넷플릭스 등의 사이트 이용에 익숙하기에 학생들이 흥미도 가질 수 있고 인공지능 알고리즘의 수학적인 원리를 실제로 탐구해 볼 수 있는 아주 좋은 주제다.
근데 코사인 유사도를 가지고 이런 개인 선호도를 분석하고 분류하는 실습 수업을 진행하기는 어렵다. 왜냐면 자료의 성분이 많아질 수록 코사인 유사도를 계산하는데에는 많은 시간이 걸리기 때문이다. 어려운것은 아니고 단지 계산해야 할 것이 너무 많고 숫자도 너무 커진다. 그래서 내가 찾아 본 모든 인공지능 수학 교과서에는 손으로 계산해 볼 수 있는 아래 정도의 문제만을 다루고 있다.
이런 단순 계산 문제만 풀고 넘어간다면 학생들이 인공지능 수학이라는 교과에 전혀 흥미를 느끼지 못할 것이며 이런 수업 과정에서는 교사가 학생들을 평가할 거리가 전무하기에 세특에 녹일 수 있는 내용을 찾기 어려울 것이다.
그래서 이런 한계를 넘기 위해서는 인공지능 수학 과목은 공학도구의 적절한 사용이 필요하다고 생각한다. 일단 블록코딩으로 구현할까 생각했었는데 일단, 스프레드 시트(엑셀) 프로그램으로 간단히 코사인 유사도 계산기를 만들었다.
(차) 공학적 도구를 활용한 수업을 운영할 때에는 다음 사항에 유의한다.
① 공학적 도구를 활용하여 인공지능 기술을 직접 시연해 볼 수 있는 환경을 제공함으로써 인공지능에 활용되는 수학을 경험할 수 있는 기회를 제공한다.
②공학적 도구로 PC나 모바일 기기를 활용할 수 있으며, 설치형 또는 웹 기반의 소프트웨어를 사용하여 텍스트코딩을 다룰 수 있다.
③ 텍스트코딩을 다룰 때는 학생들이 직관적으로 이해할 수 있는 수준으로 작성된 프로그램의 코드를 제공하여 프로그래밍에 대한 부담을 느끼지 않게 하고, 제공된 프로그램 코드의 숫자를 학생이 부분적으로 수정하면서 자연스럽게 활용할 수 있도록 한다.
"수학과 교육과정 수정(2020.09.11)"
위의 교수 학습 방법에서 말하듯 공학도구를 적절하게 이용하는 것은 좋지만 처음부터 모든 것을 학생들이 만들도록 하면 이건 수학수업이라기 보다는 그냥 프로그래밍 수업이 되기에 주의해야 한다..
https://drive.google.com/file/d/13X8Mmf8OO1u9yXDa90tQQCX_oxC6vwXR/view?usp=sharing
Public Function cosyusa(데이터원 As String, 데이터투 As String) As Double
Dim i As Integer
Dim j As Integer
Dim firstV As Integer
Dim secondV As Integer
Dim 데이터원크기 As Double
Dim 데이터투크기 As Double
Dim 데이터원제곱의합 As Double
Dim 데이터투제곱의합 As Double
Dim 내적 As Double
Do While Sheets("데이터테이블").Range("a2").Offset(i) <> ""
If Sheets("데이터테이블").Range("a2").Offset(i) = 데이터원 Then
firstV = i
i = 0
Exit Do
End If
i = i + 1
Loop
Do While Sheets("데이터테이블").Range("a2").Offset(j) <> ""
If Sheets("데이터테이블").Range("a2").Offset(j) = 데이터투 Then
secondV = j
j = 0
Exit Do
End If
j = j + 1
Loop
Do While Sheets("데이터테이블").Range("B2").Offset(, i) <> ""
데이터원제곱의합 = 데이터원제곱의합 + (Sheets("데이터테이블").Range("b2").Offset(firstV, i)) ^ 2
데이터투제곱의합 = 데이터투제곱의합 + (Sheets("데이터테이블").Range("b2").Offset(secondV, i)) ^ 2
내적 = 내적 + Sheets("데이터테이블").Range("b2").Offset(firstV, i) * Sheets("데이터테이블").Range("b2").Offset(secondV, i)
i = i + 1
Loop
데이터원크기 = Sqr(데이터원제곱의합)
데이터투크기 = Sqr(데이터투제곱의합)
'' 이 부분만 학생이 완성하도록 하면 좋겠음!''''''''''''''''''''
'cosyusa = (코사인 유사도 함수가 반환할값을 직접 구해보자)
cosyusa = 내적 / (데이터원크기 * 데이터투크기)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Function
학생들은 Alt+F11 을 눌러 나오는 코드 중 데이터원크기, 데이터투크기, 내적을 계산하는 수식만 완성하게 하면 된다.
함수를 완성했으면 이제 cosyusa 라는 사용자 정의 엑셀함수가 하나 만들어 진 것이고 위와 같이 두개의 데이터명을 매개변수로 입력하면 이 두 자료에 대한 코사인 유사도를 계산한다.
그 다음은 이를 이용하여 실제 자료를 분석하는 것이다. 연수를 하면서 예시를 들기 위해 선생님들께 영화 선호도 설문조사 양식을 보냈고, 취합한 자료를 복사해 유사도 계산기 파일에 붙여넣기 했다. https://forms.gle/sxwcyb5KE6cs8DVe9
다음 단계는 [서로의관계는] 시트에 데이터명을 1행과 A열에 붙여넣기 한다. 이때 1행에 붙여넣기 할 때는 아래 그림과 같이 붙여 넣기 옵션 - 바꾸기를 선택하면 편하다.
이제 수식을 채워 관계표를 완성하자.
조건부 서식을 이용하면 데이터를 한눈에 시각화 하여 자신과 가장 유사도가 높은 사람은 누군지 가장 낮은 사람은 누군지 분석할 수 있고 이를 기반으로 자신이 안 본 영화가 있을 때 자신과 가장 유사도가 높은 사람의 선호도가 높은 영화를 추천할 수 있음을 알려 줄 수 있다.
학생들에게는 모둠(그룹) 별로 조사해보고 싶은 자료를 선택해서 그 자료에 대한 학급의 학생들의 유사도를 수학적으로 분석해 보도록 할 수 있을 것이다.
이제 다음 단계는 사람을 중심으로 데이터를 분석하는 것이 아니라 거꾸로 영화를 중심으로 어떤 영화가 서로 유사한지를 분석해 보는 것이다.
'수학 > 인공지능수학' 카테고리의 다른 글
고등학교 인공지능 수학 수업자료 6 (블록코딩으로 유클리드 거리 계산기 만들기 1차시) (2) | 2022.04.13 |
---|---|
고등학교 인공지능 수학 수업자료 5 (영화별 유사도 분석, 콘텐츠 기반 필터링) (3) | 2021.07.31 |
고등학교 인공지능 수학 수업자료 3 (유사도의 종류) (0) | 2021.07.27 |
고등학교 인공지능 수학 수업자료 2 (감정분석기 감성사전 업그레이드) (0) | 2021.07.26 |
고등학교 인공지능 수학 수업자료 1 (감정분석기) (3) | 2021.07.26 |